@elliemae/ds-tabs 2.3.0-alpha.8 → 2.3.0-next.2

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 (174) hide show
  1. package/cjs/DSTabs.js +45 -0
  2. package/cjs/DSTabsCTX.js +30 -0
  3. package/cjs/DSTabsDatatestid.js +18 -0
  4. package/cjs/DSTabsTypes.js +2 -0
  5. package/cjs/config/useCrossRef.js +17 -0
  6. package/cjs/config/useTabs.js +51 -0
  7. package/cjs/defaultProps.js +27 -0
  8. package/cjs/exportsRelated/DSTab.js +32 -0
  9. package/cjs/index.js +17 -0
  10. package/cjs/parts/carousel/Carousel.js +69 -0
  11. package/cjs/parts/carousel/styles.js +65 -0
  12. package/cjs/parts/carousel/useCarousel.js +78 -0
  13. package/cjs/parts/carousel/useCarouselCallbacks.js +72 -0
  14. package/cjs/parts/tabBar/TabBar.js +168 -0
  15. package/cjs/parts/tabBar/styles.js +200 -0
  16. package/cjs/parts/tabBar/useTabBar.js +87 -0
  17. package/cjs/parts/tabsContent/TabsContent.js +49 -0
  18. package/cjs/parts/tabsContent/styles.js +15 -0
  19. package/cjs/parts/tabsPanel/TabsPanels.js +77 -0
  20. package/cjs/parts/tabsPanel/styles.js +25 -0
  21. package/cjs/propTypes.js +33 -0
  22. package/cjs/utils/constants.js +28 -0
  23. package/cjs/utils/helpers.js +75 -0
  24. package/cjs/utils/hooks/useKeyboardNavigation.js +61 -0
  25. package/cjs/utils/hooks/useTabsCallbacks.js +41 -0
  26. package/esm/DSTabs.js +35 -0
  27. package/esm/DSTabsCTX.js +25 -0
  28. package/esm/DSTabsDatatestid.js +14 -0
  29. package/esm/DSTabsTypes.js +1 -0
  30. package/{dist/esm → esm}/config/useCrossRef.js +4 -6
  31. package/esm/config/useTabs.js +47 -0
  32. package/{dist/esm → esm}/defaultProps.js +8 -9
  33. package/esm/exportsRelated/DSTab.js +21 -0
  34. package/esm/index.js +4 -0
  35. package/esm/parts/carousel/Carousel.js +61 -0
  36. package/esm/parts/carousel/styles.js +54 -0
  37. package/{dist/esm → esm}/parts/carousel/useCarousel.js +34 -15
  38. package/{dist/esm → esm}/parts/carousel/useCarouselCallbacks.js +28 -20
  39. package/esm/parts/tabBar/TabBar.js +159 -0
  40. package/esm/parts/tabBar/styles.js +186 -0
  41. package/{dist/esm → esm}/parts/tabBar/useTabBar.js +35 -27
  42. package/esm/parts/tabsContent/TabsContent.js +40 -0
  43. package/esm/parts/tabsContent/styles.js +7 -0
  44. package/esm/parts/tabsPanel/TabsPanels.js +67 -0
  45. package/esm/parts/tabsPanel/styles.js +17 -0
  46. package/esm/propTypes.js +28 -0
  47. package/esm/utils/constants.js +20 -0
  48. package/{dist/esm → esm}/utils/helpers.js +28 -23
  49. package/esm/utils/hooks/useKeyboardNavigation.js +57 -0
  50. package/esm/utils/hooks/useTabsCallbacks.js +37 -0
  51. package/package.json +70 -72
  52. package/types/DSTabs.d.ts +14 -0
  53. package/types/DSTabsCTX.d.ts +4 -0
  54. package/types/DSTabsDatatestid.d.ts +12 -0
  55. package/types/DSTabsTypes.d.ts +205 -0
  56. package/types/config/useCrossRef.d.ts +2 -0
  57. package/types/config/useTabs.d.ts +2 -0
  58. package/types/defaultProps.d.ts +2 -0
  59. package/types/exportsRelated/DSTab.d.ts +14 -0
  60. package/types/index.d.ts +5 -0
  61. package/types/parts/carousel/Carousel.d.ts +3 -0
  62. package/types/parts/carousel/styles.d.ts +9 -0
  63. package/types/parts/carousel/useCarousel.d.ts +2 -0
  64. package/types/parts/carousel/useCarouselCallbacks.d.ts +2 -0
  65. package/types/parts/tabBar/TabBar.d.ts +2 -0
  66. package/types/parts/tabBar/styles.d.ts +7 -0
  67. package/types/parts/tabBar/useTabBar.d.ts +2 -0
  68. package/types/parts/tabsContent/TabsContent.d.ts +2 -0
  69. package/types/parts/tabsContent/styles.d.ts +1 -0
  70. package/types/parts/tabsPanel/TabsPanels.d.ts +2 -0
  71. package/types/parts/tabsPanel/styles.d.ts +2 -0
  72. package/types/propTypes.d.ts +54 -0
  73. package/types/tests/DSTabs.callbacks.test.d.ts +1 -0
  74. package/types/tests/DSTabs.func.test.d.ts +1 -0
  75. package/types/tests/DSTabs.keyboard.test.d.ts +1 -0
  76. package/types/tests/DSTabs.test.d.ts +1 -0
  77. package/types/utils/constants.d.ts +18 -0
  78. package/types/utils/helpers.d.ts +9 -0
  79. package/types/utils/hooks/useKeyboardNavigation.d.ts +2 -0
  80. package/types/utils/hooks/useTabsCallbacks.d.ts +2 -0
  81. package/dist/cjs/DSTabs.js +0 -63
  82. package/dist/cjs/DSTabs.js.map +0 -7
  83. package/dist/cjs/DSTabsCTX.js +0 -56
  84. package/dist/cjs/DSTabsCTX.js.map +0 -7
  85. package/dist/cjs/DSTabsDatatestid.js +0 -46
  86. package/dist/cjs/DSTabsDatatestid.js.map +0 -7
  87. package/dist/cjs/DSTabsTypes.js +0 -27
  88. package/dist/cjs/DSTabsTypes.js.map +0 -7
  89. package/dist/cjs/config/useCrossRef.js +0 -44
  90. package/dist/cjs/config/useCrossRef.js.map +0 -7
  91. package/dist/cjs/config/useTabs.js +0 -68
  92. package/dist/cjs/config/useTabs.js.map +0 -7
  93. package/dist/cjs/defaultProps.js +0 -53
  94. package/dist/cjs/defaultProps.js.map +0 -7
  95. package/dist/cjs/exportsRelated/DSTab.js +0 -46
  96. package/dist/cjs/exportsRelated/DSTab.js.map +0 -7
  97. package/dist/cjs/index.js +0 -38
  98. package/dist/cjs/index.js.map +0 -7
  99. package/dist/cjs/parts/carousel/Carousel.js +0 -77
  100. package/dist/cjs/parts/carousel/Carousel.js.map +0 -7
  101. package/dist/cjs/parts/carousel/styles.js +0 -79
  102. package/dist/cjs/parts/carousel/styles.js.map +0 -7
  103. package/dist/cjs/parts/carousel/useCarousel.js +0 -80
  104. package/dist/cjs/parts/carousel/useCarousel.js.map +0 -7
  105. package/dist/cjs/parts/carousel/useCarouselCallbacks.js +0 -89
  106. package/dist/cjs/parts/carousel/useCarouselCallbacks.js.map +0 -7
  107. package/dist/cjs/parts/tabBar/TabBar.js +0 -171
  108. package/dist/cjs/parts/tabBar/TabBar.js.map +0 -7
  109. package/dist/cjs/parts/tabBar/styles.js +0 -294
  110. package/dist/cjs/parts/tabBar/styles.js.map +0 -7
  111. package/dist/cjs/parts/tabBar/useTabBar.js +0 -100
  112. package/dist/cjs/parts/tabBar/useTabBar.js.map +0 -7
  113. package/dist/cjs/parts/tabsContent/TabsContent.js +0 -53
  114. package/dist/cjs/parts/tabsContent/TabsContent.js.map +0 -7
  115. package/dist/cjs/parts/tabsContent/styles.js +0 -39
  116. package/dist/cjs/parts/tabsContent/styles.js.map +0 -7
  117. package/dist/cjs/parts/tabsPanel/TabsPanels.js +0 -79
  118. package/dist/cjs/parts/tabsPanel/TabsPanels.js.map +0 -7
  119. package/dist/cjs/parts/tabsPanel/styles.js +0 -45
  120. package/dist/cjs/parts/tabsPanel/styles.js.map +0 -7
  121. package/dist/cjs/propTypes.js +0 -58
  122. package/dist/cjs/propTypes.js.map +0 -7
  123. package/dist/cjs/utils/constants.js +0 -56
  124. package/dist/cjs/utils/constants.js.map +0 -7
  125. package/dist/cjs/utils/helpers.js +0 -88
  126. package/dist/cjs/utils/helpers.js.map +0 -7
  127. package/dist/cjs/utils/hooks/useKeyboardNavigation.js +0 -77
  128. package/dist/cjs/utils/hooks/useKeyboardNavigation.js.map +0 -7
  129. package/dist/cjs/utils/hooks/useTabsCallbacks.js +0 -60
  130. package/dist/cjs/utils/hooks/useTabsCallbacks.js.map +0 -7
  131. package/dist/esm/DSTabs.js +0 -34
  132. package/dist/esm/DSTabs.js.map +0 -7
  133. package/dist/esm/DSTabsCTX.js +0 -27
  134. package/dist/esm/DSTabsCTX.js.map +0 -7
  135. package/dist/esm/DSTabsDatatestid.js +0 -17
  136. package/dist/esm/DSTabsDatatestid.js.map +0 -7
  137. package/dist/esm/DSTabsTypes.js +0 -2
  138. package/dist/esm/DSTabsTypes.js.map +0 -7
  139. package/dist/esm/config/useCrossRef.js.map +0 -7
  140. package/dist/esm/config/useTabs.js +0 -39
  141. package/dist/esm/config/useTabs.js.map +0 -7
  142. package/dist/esm/defaultProps.js.map +0 -7
  143. package/dist/esm/exportsRelated/DSTab.js +0 -17
  144. package/dist/esm/exportsRelated/DSTab.js.map +0 -7
  145. package/dist/esm/index.js +0 -9
  146. package/dist/esm/index.js.map +0 -7
  147. package/dist/esm/parts/carousel/Carousel.js +0 -48
  148. package/dist/esm/parts/carousel/Carousel.js.map +0 -7
  149. package/dist/esm/parts/carousel/styles.js +0 -50
  150. package/dist/esm/parts/carousel/styles.js.map +0 -7
  151. package/dist/esm/parts/carousel/useCarousel.js.map +0 -7
  152. package/dist/esm/parts/carousel/useCarouselCallbacks.js.map +0 -7
  153. package/dist/esm/parts/tabBar/TabBar.js +0 -149
  154. package/dist/esm/parts/tabBar/TabBar.js.map +0 -7
  155. package/dist/esm/parts/tabBar/styles.js +0 -265
  156. package/dist/esm/parts/tabBar/styles.js.map +0 -7
  157. package/dist/esm/parts/tabBar/useTabBar.js.map +0 -7
  158. package/dist/esm/parts/tabsContent/TabsContent.js +0 -24
  159. package/dist/esm/parts/tabsContent/TabsContent.js.map +0 -7
  160. package/dist/esm/parts/tabsContent/styles.js +0 -10
  161. package/dist/esm/parts/tabsContent/styles.js.map +0 -7
  162. package/dist/esm/parts/tabsPanel/TabsPanels.js +0 -50
  163. package/dist/esm/parts/tabsPanel/TabsPanels.js.map +0 -7
  164. package/dist/esm/parts/tabsPanel/styles.js +0 -16
  165. package/dist/esm/parts/tabsPanel/styles.js.map +0 -7
  166. package/dist/esm/propTypes.js +0 -29
  167. package/dist/esm/propTypes.js.map +0 -7
  168. package/dist/esm/utils/constants.js +0 -27
  169. package/dist/esm/utils/constants.js.map +0 -7
  170. package/dist/esm/utils/helpers.js.map +0 -7
  171. package/dist/esm/utils/hooks/useKeyboardNavigation.js +0 -48
  172. package/dist/esm/utils/hooks/useKeyboardNavigation.js.map +0 -7
  173. package/dist/esm/utils/hooks/useTabsCallbacks.js +0 -31
  174. package/dist/esm/utils/hooks/useTabsCallbacks.js.map +0 -7
@@ -0,0 +1,168 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('core-js/modules/esnext.async-iterator.map.js');
7
+ require('core-js/modules/esnext.iterator.map.js');
8
+ var React = require('react');
9
+ var Carousel = require('../carousel/Carousel.js');
10
+ var useTabBar = require('./useTabBar.js');
11
+ var styles = require('./styles.js');
12
+ var DSTabsCTX = require('../../DSTabsCTX.js');
13
+ var useKeyboardNavigation = require('../../utils/hooks/useKeyboardNavigation.js');
14
+ var helpers = require('../../utils/helpers.js');
15
+ var constants = require('../../utils/constants.js');
16
+ var useTabsCallbacks = require('../../utils/hooks/useTabsCallbacks.js');
17
+ var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
18
+ var jsxRuntime = require('react/jsx-runtime');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
23
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
+
25
+ var _StyledRequiredMark;
26
+ const TabBar = () => {
27
+ const {
28
+ tabsRef,
29
+ focusableTabsRef,
30
+ tabsListRef,
31
+ tabsRefAsArray,
32
+ carouselOnlyListRef,
33
+ actualActiveTab,
34
+ props: {
35
+ type,
36
+ fixedTabsHeaders,
37
+ withCarousel,
38
+ isDSMobile,
39
+ showSeparator,
40
+ children: tabs
41
+ }
42
+ } = React.useContext(DSTabsCTX.DSTabsContext);
43
+ const {
44
+ lastTabInternalRef,
45
+ firstSubtabInternalRef
46
+ } = React.useContext(DSTabsCTX.DSTabsCrossRefContext);
47
+ const {
48
+ handleOnTabChange
49
+ } = useTabsCallbacks.useTabsCallbacks();
50
+ const {
51
+ handleOnKeyDown
52
+ } = useKeyboardNavigation.useKeyboardNavigation();
53
+ const {
54
+ indicatorStyle,
55
+ mobileGradients,
56
+ updateMobileGradients,
57
+ updateIndicatorStyle
58
+ } = useTabBar.useTabBar();
59
+ const renderTabs = React.useMemo(() => {
60
+ const availableTabIndexes = [];
61
+ return React__default["default"].Children.map(tabs, (tab, index) => {
62
+ const {
63
+ tabId = '',
64
+ title = '',
65
+ style,
66
+ required = false,
67
+ disabled = false,
68
+ ref,
69
+ onClick,
70
+ onKeyDown
71
+ } = tab.props;
72
+ if (!disabled) availableTabIndexes.push(index);
73
+ return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabButton, {
74
+ role: "tab",
75
+ ref: t => {
76
+ if (tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {
77
+ tabsRefAsArray.current[index] = t;
78
+ if (!disabled && !focusableTabsRef.current.includes(t)) focusableTabsRef.current.push(t);
79
+ tabsRef.current[index] = t;
80
+
81
+ if (type === constants.TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {
82
+ firstSubtabInternalRef.current = t;
83
+ }
84
+
85
+ if (type !== constants.TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {
86
+ lastTabInternalRef.current = t;
87
+ }
88
+
89
+ if (ref) ref.current = t;
90
+ }
91
+ },
92
+ type: "button",
93
+ "aria-controls": tabId,
94
+ "aria-selected": actualActiveTab === tabId,
95
+ "aria-disabled": disabled,
96
+ "aria-labelledby": "".concat(tabId, "-label"),
97
+ isDSMobile: isDSMobile,
98
+ fixedTabsHeaders: fixedTabsHeaders,
99
+ tabType: type,
100
+ title: title,
101
+ "data-required": required,
102
+ "data-tab-id": tabId,
103
+ "data-index": index,
104
+ withCarousel: withCarousel,
105
+ isActive: actualActiveTab === tabId,
106
+ disabled: disabled,
107
+ showSeparator: showSeparator && type !== constants.TabTypes.NORMAL,
108
+ "data-testid": type === constants.TabTypes.NORMAL ? DSTabsDatatestid.DSTabsDatatestid.TAB_BUTTON : DSTabsDatatestid.DSTabsDatatestid.SUBTAB_BUTTON,
109
+ id: "".concat(tabId, "-label"),
110
+ onClick: e => {
111
+ if (!disabled) {
112
+ handleOnTabChange(tabId, e);
113
+ updateIndicatorStyle();
114
+ }
115
+
116
+ if (onClick && !disabled) onClick(tabId, e);
117
+ },
118
+ onFocus: e => {
119
+ if (withCarousel) helpers.centerTab({
120
+ e,
121
+ listRef: carouselOnlyListRef
122
+ });
123
+ },
124
+ onKeyDown: e => {
125
+ if (e.key === 'Enter') e.stopPropagation();
126
+ if (!disabled) handleOnKeyDown(e);
127
+ if (onKeyDown && !disabled) onKeyDown(e);
128
+ },
129
+ style: style,
130
+ children: [title, required && (_StyledRequiredMark || (_StyledRequiredMark = /*#__PURE__*/_jsx__default["default"](styles.StyledRequiredMark, {}, void 0, "\u25CF")))]
131
+ }, tabId);
132
+ });
133
+ }, [tabs, actualActiveTab, isDSMobile, fixedTabsHeaders, type, withCarousel, showSeparator, tabsRefAsArray, focusableTabsRef, tabsRef, firstSubtabInternalRef, lastTabInternalRef, handleOnTabChange, updateIndicatorStyle, carouselOnlyListRef, handleOnKeyDown]);
134
+
135
+ if (type === constants.TabTypes.SUBTABS && !isDSMobile) {
136
+ return /*#__PURE__*/jsxRuntime.jsx(styles.StyledSubTabsList, {
137
+ withCarousel: withCarousel,
138
+ "data-testid": DSTabsDatatestid.DSTabsDatatestid.SUB_TAB_LIST,
139
+ ref: tabsListRef,
140
+ role: "tablist",
141
+ children: withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {}, void 0, renderTabs) : renderTabs
142
+ });
143
+ }
144
+
145
+ return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabList, {
146
+ withCarousel: withCarousel,
147
+ ref: tabsListRef,
148
+ role: "tablist",
149
+ "data-testid": DSTabsDatatestid.DSTabsDatatestid.TAB_LIST,
150
+ isDSMobile: isDSMobile,
151
+ fixedTabsHeaders: fixedTabsHeaders,
152
+ mobileGradients: mobileGradients,
153
+ onScroll: updateMobileGradients,
154
+ indicatorStyle: indicatorStyle,
155
+ tabType: type,
156
+ children: [/*#__PURE__*/_jsx__default["default"](styles.StyledTabWrapper, {
157
+ isDSMobile: isDSMobile,
158
+ fixedTabsHeaders: fixedTabsHeaders
159
+ }, void 0, !isDSMobile && withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {
160
+ updateIndicatorStyle: updateIndicatorStyle
161
+ }, void 0, renderTabs) : renderTabs), /*#__PURE__*/_jsx__default["default"](styles.StyledSelectionIndicator, {
162
+ isDSMobile: isDSMobile,
163
+ tabType: type
164
+ })]
165
+ });
166
+ };
167
+
168
+ exports.TabBar = TabBar;
@@ -0,0 +1,200 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
6
+ var styled = require('styled-components');
7
+ var dsSystem = require('@elliemae/ds-system');
8
+ var constants = require('../../utils/constants.js');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
13
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
14
+
15
+ var _templateObject;
16
+ const StyledSelectionIndicator = /*#__PURE__*/styled__default["default"].div.withConfig({
17
+ componentId: "sc-3hla56-0"
18
+ })(["position:absolute;height:3px;top:", ";margin-top:", ";pointer-events:none;transition:200ms cubic-bezier(0.36,0,1,1);z-index:10;", ""], _ref => {
19
+ let {
20
+ tabType,
21
+ isDSMobile
22
+ } = _ref;
23
+ if (isDSMobile) return "35px";
24
+ if (tabType === constants.TabTypes.NORMAL_SMALL) return "15px";
25
+ return "25px";
26
+ }, _ref2 => {
27
+ let {
28
+ theme
29
+ } = _ref2;
30
+ return theme.space.xxxs;
31
+ }, _ref3 => {
32
+ let {
33
+ isDSMobile
34
+ } = _ref3;
35
+ return isDSMobile ? " \n margin-left: 0;\n margin-top: 3px;\n " : "";
36
+ });
37
+ const mobileGradientsSettings = dsSystem.css(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n ", "\n"])), _ref4 => {
38
+ let {
39
+ theme,
40
+ mobileGradients,
41
+ isDSMobile,
42
+ fixedTabsHeaders
43
+ } = _ref4;
44
+
45
+ if (isDSMobile && !fixedTabsHeaders) {
46
+ if (mobileGradients.right && mobileGradients.left) return "background: linear-gradient(90deg, rgba(238,238,238,0) 0%, ".concat(theme.colors.brand[200], " 20%, ").concat(theme.colors.brand[200], " 80%, rgba(238,238,238,0) 100%);");
47
+ if (mobileGradients.right) return "background: linear-gradient(90deg, ".concat(theme.colors.brand[200], " 0%, ").concat(theme.colors.brand[200], " 80%, rgba(238,238,238,0) 100%);");
48
+ if (mobileGradients.left) return "background: linear-gradient(90deg, rgba(238,238,238,0) 0%, ".concat(theme.colors.brand[200], " 20%, ").concat(theme.colors.brand[200], " 100%);");
49
+ }
50
+
51
+ return "";
52
+ });
53
+ const StyledTabWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
54
+ componentId: "sc-3hla56-1"
55
+ })(["display:flex;flex:1;flex-wrap:nowrap;", " ", ""], _ref5 => {
56
+ let {
57
+ fixedTabsHeaders,
58
+ isDSMobile
59
+ } = _ref5;
60
+ return !fixedTabsHeaders && isDSMobile ? '' : 'overflow-x: hidden;';
61
+ }, _ref6 => {
62
+ let {
63
+ theme,
64
+ isDSMobile
65
+ } = _ref6;
66
+ return isDSMobile ? "border-bottom: 1px solid ".concat(theme.colors.brand[300], ";") : "";
67
+ });
68
+ const StyledTabButton = /*#__PURE__*/styled__default["default"].button.withConfig({
69
+ componentId: "sc-3hla56-2"
70
+ })(["position:relative;background-color:transparent;border:none;cursor:pointer;transition:100ms cubic-bezier(0,0,0.42,1);text-transform:", ";letter-spacing:0px;white-space:nowrap;padding:2px 0;margin-right:", ";margin-left:", ";color:", ";", " ", " ", " ", " ", " ", " ", ""], _ref7 => {
71
+ let {
72
+ tabType
73
+ } = _ref7;
74
+ return tabType === constants.TabTypes.SUBTABS ? "capitalize" : "uppercase";
75
+ }, _ref8 => {
76
+ let {
77
+ fixedTabsHeaders,
78
+ isDSMobile
79
+ } = _ref8;
80
+ if (fixedTabsHeaders) return '0px';
81
+ if (!fixedTabsHeaders && isDSMobile) return '14px';
82
+ return '16px';
83
+ }, _ref9 => {
84
+ let {
85
+ fixedTabsHeaders,
86
+ isDSMobile
87
+ } = _ref9;
88
+ if (fixedTabsHeaders) return '0px';
89
+ if (!fixedTabsHeaders && isDSMobile) return '14px';
90
+ return '16px';
91
+ }, _ref10 => {
92
+ let {
93
+ theme
94
+ } = _ref10;
95
+ return theme.colors.neutral[700];
96
+ }, dsSystem.onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), _ref11 => {
97
+ let {
98
+ tabType
99
+ } = _ref11;
100
+ return tabType === constants.TabTypes.NORMAL ? "height: 32px;" : "height: 22px;";
101
+ }, _ref12 => {
102
+ let {
103
+ theme,
104
+ isActive,
105
+ disabled
106
+ } = _ref12;
107
+ return isActive && !disabled ? "\n font-weight: ".concat(theme.fontWeights.semibold, ";\n ").concat(dsSystem.safariAndFirefoxBold("#353C46"), "\n\n &:hover {\n ").concat(dsSystem.safariAndFirefoxBold("#1E79C2"), "\n }\n \n ") : "\n \n ";
108
+ }, _ref13 => {
109
+ let {
110
+ theme,
111
+ disabled
112
+ } = _ref13;
113
+ return disabled ? "\n color: ".concat(theme.colors.neutral[500], ";\n cursor: not-allowed;\n ") : "\n &:hover {\n color: ".concat(theme.colors.brand[600], ";\n }\n ");
114
+ }, _ref14 => {
115
+ let {
116
+ theme,
117
+ showSeparator,
118
+ tabType
119
+ } = _ref14;
120
+ return showSeparator ? "\n &:not(:last-of-type):before\n {\n content: \"\";\n position: absolute;\n width: 1px;\n right: -16px;\n top: 50%;\n transform: translateY(-50%);\n height: ".concat(tabType === constants.TabTypes.SUBTABS ? "10px" : "16px", ";\n background: ").concat(theme.colors.neutral[400], ";\n }") : "";
121
+ }, _ref15 => {
122
+ let {
123
+ theme,
124
+ isDSMobile,
125
+ tabType,
126
+ isActive
127
+ } = _ref15;
128
+ return !isDSMobile ? "\n &:focus {\n outline: none;\n &:after {\n position: absolute;\n content: '';\n top: 0;\n left: -16px;\n width: calc(100% + 32px);\n height: 100%;\n z-index: 5;\n border-radius: 2px;\n border: 2px solid ".concat(theme.colors.brand[700], ";\n }\n\n ").concat(tabType !== constants.TabTypes.SUBTABS && isActive ? "\n &:before {\n position: absolute;\n content: '';\n left: -16px;\n right: 0;\n top: calc(100% - 2px);\n transform: none;\n width: calc(100% + 32px);\n height: 2px;\n z-index: 10;\n background: linear-gradient(to right, transparent 0px, transparent 12px, white 12px, white 16px, transparent 16px,transparent calc(100% - 16px), white calc(100% - 16px), white calc(100% - 12px), transparent calc(100% - 12px), transparent 100%);\n }\n " : "", "\n }\n \n ") : "";
129
+ }, _ref16 => {
130
+ let {
131
+ theme,
132
+ isActive,
133
+ disabled,
134
+ isDSMobile
135
+ } = _ref16;
136
+ return isDSMobile ? "\n height: 40px;\n color: ".concat(theme.colors.brand[600], ";\n font-weight: ").concat(theme.fontWeights.regular, ";\n padding: 0;\n font-size: 13px;\n line-height: 1.3;\n ").concat(dsSystem.onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), " \n\n &:focus {\n font-weight: ").concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n }\n\n ").concat(isActive ? "\n font-weight: ".concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n ") : "", "\n\n ").concat(isActive && !disabled ? "\n font-size: 13px;\n color: ".concat(theme.colors.brand[700], ";\n line-height: 1.3;\n font-weight: ").concat(theme.fontWeights.regular, ";\n -webkit-font-smoothing: subpixel-antialiased; \n -webkit-text-stroke: 0.4px ").concat(theme.colors.brand[700], ";") : "", "\n\n ").concat(!disabled ? "\n &:hover,\n &:focus {\n outline: none;\n color: ".concat(theme.colors.brand[700], ";\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n }") : "", "\n\n ") : "";
137
+ });
138
+ const StyledSubTabsList = /*#__PURE__*/styled__default["default"].div.withConfig({
139
+ componentId: "sc-3hla56-3"
140
+ })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", ""], _ref17 => {
141
+ let {
142
+ withCarousel
143
+ } = _ref17;
144
+ return withCarousel ? 'max-width: 100%;' : '';
145
+ });
146
+ const StyledTabList = /*#__PURE__*/styled__default["default"].div.withConfig({
147
+ componentId: "sc-3hla56-4"
148
+ })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", " ", " ", "{padding-bottom:0;padding-top:0;}", " ", " ", " ", "{", "}", "{background:", ";}"], _ref18 => {
149
+ let {
150
+ withCarousel,
151
+ isDSMobile
152
+ } = _ref18;
153
+ return withCarousel && !isDSMobile ? "max-width: 100%;" : '';
154
+ }, _ref19 => {
155
+ let {
156
+ theme,
157
+ isDSMobile,
158
+ tabType
159
+ } = _ref19;
160
+ return tabType !== constants.TabTypes.NORMAL_SMALL && !isDSMobile ? "\n &:after {\n content: '';\n position: absolute;\n width: 100%;\n height: 1px;\n box-shadow: 0px 0px 0px 1px ".concat(theme.colors.neutral[400], ";\n pointer-events: none;\n bottom: 0px;\n }\n ") : "";
161
+ }, StyledTabButton, _ref20 => {
162
+ let {
163
+ theme,
164
+ isDSMobile
165
+ } = _ref20;
166
+ return isDSMobile ? "\n \n background: ".concat(theme.colors.brand[200], ";") : "";
167
+ }, mobileGradientsSettings, _ref21 => {
168
+ let {
169
+ isDSMobile,
170
+ fixedTabsHeaders
171
+ } = _ref21;
172
+ return isDSMobile ? "\n ".concat(!fixedTabsHeaders ? "\n z-index: 0;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n &::-webkit-scrollbar {\n display: none;\n }" : "\n display: flex;\n ".concat(StyledTabButton, " {\n flex: 1;\n overflow-x: hidden;\n }")) : "";
173
+ }, StyledSelectionIndicator, _ref22 => {
174
+ let {
175
+ indicatorStyle
176
+ } = _ref22;
177
+ return "\n width: ".concat(indicatorStyle.width, ";\n left: ").concat(indicatorStyle.left, ";\n ");
178
+ }, StyledSelectionIndicator, _ref23 => {
179
+ let {
180
+ theme,
181
+ indicatorStyle,
182
+ isDSMobile
183
+ } = _ref23;
184
+ return !isDSMobile ? indicatorStyle.backgroundWithTransparent : theme.colors.brand[600];
185
+ });
186
+ const StyledRequiredMark = /*#__PURE__*/styled__default["default"].span.withConfig({
187
+ componentId: "sc-3hla56-5"
188
+ })(["color:", ";font-size:6px;margin-left:2px;position:absolute;top:5px;"], _ref24 => {
189
+ let {
190
+ theme
191
+ } = _ref24;
192
+ return theme.colors.danger[900];
193
+ });
194
+
195
+ exports.StyledRequiredMark = StyledRequiredMark;
196
+ exports.StyledSelectionIndicator = StyledSelectionIndicator;
197
+ exports.StyledSubTabsList = StyledSubTabsList;
198
+ exports.StyledTabButton = StyledTabButton;
199
+ exports.StyledTabList = StyledTabList;
200
+ exports.StyledTabWrapper = StyledTabWrapper;
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/web.dom-collections.iterator.js');
6
+ var React = require('react');
7
+ var useResizeObserver = require('@react-hook/resize-observer');
8
+ var helpers = require('../../utils/helpers.js');
9
+ var DSTabsCTX = require('../../DSTabsCTX.js');
10
+ var constants = require('../../utils/constants.js');
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var useResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(useResizeObserver);
15
+
16
+ const useTabBar = () => {
17
+ const {
18
+ actualActiveTab,
19
+ actualActiveTabRef,
20
+ tabsListRef,
21
+ props: {
22
+ showSelectionIndicator,
23
+ isDSMobile,
24
+ fixedTabsHeaders
25
+ }
26
+ } = React.useContext(DSTabsCTX.DSTabsContext);
27
+ const [mobileGradients, setMobileGradients] = React.useState({
28
+ left: false,
29
+ right: false
30
+ });
31
+ const [indicatorStyle, setIndicatorStyle] = React.useState(constants.defaultIndicatorStyles);
32
+ const getIndicatorStyles = React.useCallback(() => {
33
+ if (tabsListRef.current) {
34
+ const tabList = tabsListRef.current;
35
+ const activeTabButton = actualActiveTabRef.current;
36
+ if (!activeTabButton || !helpers.isElementVisible(activeTabButton, tabList)) return constants.defaultIndicatorStyles; // The missingMargins are to make the selection indicator white marks work properly in desktop, we need
37
+ // the full width of the tab button with margins.
38
+
39
+ const missingMargins = isDSMobile ? 0 : 16;
40
+ const tabClientWidth = isDSMobile && !fixedTabsHeaders ? activeTabButton.clientWidth : activeTabButton.clientWidth + missingMargins * 2; // The reason why we use the tabList.scrollLeft is due to the centerOnTabChange (only in Mobile and FlexibleTabs)
41
+ // behavior that adds scroll to the tabList
42
+
43
+ const position = isDSMobile && !fixedTabsHeaders ? activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left + tabList.scrollLeft : activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left - missingMargins;
44
+ const backgroundWithTransparent = "linear-gradient(to right, transparent 0px, transparent 16px, #1E79C2 16px, #1E79C2 ".concat(tabClientWidth - 16, "px,transparent ").concat(tabClientWidth - 16, "px,transparent ").concat(tabClientWidth, "px )");
45
+ return {
46
+ left: "".concat(position, "px"),
47
+ width: "".concat(tabClientWidth, "px"),
48
+ backgroundWithTransparent
49
+ };
50
+ }
51
+
52
+ return constants.defaultIndicatorStyles;
53
+ }, [actualActiveTabRef, fixedTabsHeaders, isDSMobile, tabsListRef]);
54
+ const updateIndicatorStyle = React.useCallback(() => setTimeout(() => setIndicatorStyle(getIndicatorStyles()), 100), [getIndicatorStyles, setIndicatorStyle]);
55
+ useResizeObserver__default["default"](tabsListRef, updateIndicatorStyle);
56
+ const updateMobileGradients = React.useCallback(() => {
57
+ if (tabsListRef.current && isDSMobile && !fixedTabsHeaders) {
58
+ const {
59
+ scrollLeft,
60
+ scrollWidth,
61
+ clientWidth
62
+ } = tabsListRef.current;
63
+ setMobileGradients({
64
+ left: helpers.shouldHaveLeftGradient(scrollLeft),
65
+ right: helpers.shouldHaveRightGradient(scrollLeft, clientWidth, scrollWidth)
66
+ });
67
+ }
68
+ }, [fixedTabsHeaders, isDSMobile, tabsListRef]);
69
+ React.useLayoutEffect(() => {
70
+ if (showSelectionIndicator) {
71
+ updateIndicatorStyle();
72
+ }
73
+
74
+ if (isDSMobile && !fixedTabsHeaders) {
75
+ updateMobileGradients();
76
+ }
77
+ }, [updateMobileGradients, showSelectionIndicator, updateIndicatorStyle, isDSMobile, fixedTabsHeaders, actualActiveTab]);
78
+ return {
79
+ updateIndicatorStyle,
80
+ setIndicatorStyle,
81
+ indicatorStyle,
82
+ mobileGradients,
83
+ updateMobileGradients
84
+ };
85
+ };
86
+
87
+ exports.useTabBar = useTabBar;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
+ var _jsx = require('@babel/runtime/helpers/jsx');
12
+ var React = require('react');
13
+ var TabsPanels = require('../tabsPanel/TabsPanels.js');
14
+ var TabBar = require('../tabBar/TabBar.js');
15
+ var styles = require('./styles.js');
16
+ var DSTabsCTX = require('../../DSTabsCTX.js');
17
+ var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
18
+ var jsxRuntime = require('react/jsx-runtime');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
23
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
24
+
25
+ var _TabBar, _TabsPanels;
26
+
27
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
+
29
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
+ const TabsContent = () => {
31
+ const {
32
+ props: {
33
+ containerProps,
34
+ innerRef,
35
+ tabsListAriaLabel,
36
+ tabBarExtraContent
37
+ }
38
+ } = React.useContext(DSTabsCTX.DSTabsContext);
39
+ return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({}, containerProps), {}, {
40
+ ref: innerRef,
41
+ "data-testid": DSTabsDatatestid.DSTabsDatatestid.TABS_CONTAINER,
42
+ children: [/*#__PURE__*/_jsx__default["default"](styles.StyledTabBarContainer, {
43
+ "aria-label": tabsListAriaLabel,
44
+ role: "tablist"
45
+ }, void 0, _TabBar || (_TabBar = /*#__PURE__*/_jsx__default["default"](TabBar.TabBar, {})), tabBarExtraContent), _TabsPanels || (_TabsPanels = /*#__PURE__*/_jsx__default["default"](TabsPanels.TabsPanels, {}))]
46
+ }));
47
+ };
48
+
49
+ exports.TabsContent = TabsContent;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var styled = require('styled-components');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
+
11
+ const StyledTabBarContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
12
+ componentId: "sc-vm3k1y-0"
13
+ })(["display:flex;overflow-x:hidden;"]);
14
+
15
+ exports.StyledTabBarContainer = StyledTabBarContainer;
@@ -0,0 +1,77 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('core-js/modules/esnext.async-iterator.map.js');
7
+ require('core-js/modules/esnext.iterator.map.js');
8
+ var React = require('react');
9
+ var SwipeableViews = require('react-swipeable-views');
10
+ var helpers = require('../../utils/helpers.js');
11
+ var styles = require('./styles.js');
12
+ var DSTabsCTX = require('../../DSTabsCTX.js');
13
+ var useTabsCallbacks = require('../../utils/hooks/useTabsCallbacks.js');
14
+ var jsxRuntime = require('react/jsx-runtime');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+ var SwipeableViews__default = /*#__PURE__*/_interopDefaultLegacy(SwipeableViews);
21
+
22
+ const TabsPanels = () => {
23
+ const {
24
+ actualActiveTab,
25
+ focusableTabsRef,
26
+ props: {
27
+ animated,
28
+ enableMouseEvents,
29
+ onlyRenderActiveTab,
30
+ children: tabs,
31
+ isDSMobile
32
+ }
33
+ } = React.useContext(DSTabsCTX.DSTabsContext);
34
+ const {
35
+ handleOnTabChange,
36
+ handleOnMouseDown
37
+ } = useTabsCallbacks.useTabsCallbacks();
38
+ const handleOnChangeIndex = React.useCallback(index => {
39
+ handleOnTabChange(helpers.getIdByIndex(tabs, index));
40
+ if (focusableTabsRef.current) focusableTabsRef.current[index].click();
41
+ }, [focusableTabsRef, handleOnTabChange, tabs]);
42
+ const panels = React.useMemo(() => React__default["default"].Children.map(tabs, tab => {
43
+ const {
44
+ tabId: panelId = '',
45
+ style,
46
+ children: content
47
+ } = tab.props;
48
+ const isActive = actualActiveTab === panelId;
49
+ const shouldRender = !onlyRenderActiveTab || isActive;
50
+ return shouldRender && /*#__PURE__*/_jsx__default["default"](styles.StyledPanelContainer, {
51
+ id: panelId,
52
+ "aria-labelledby": "".concat(panelId, "-label"),
53
+ "aria-hidden": !isActive,
54
+ "data-panel-id": panelId,
55
+ "data-testid": "ds-tabs-tab-panel",
56
+ hidden: !isActive,
57
+ onMouseDown: handleOnMouseDown,
58
+ role: "tabpanel",
59
+ style: style,
60
+ isDSMobile: isDSMobile
61
+ }, panelId, content);
62
+ }), [actualActiveTab, handleOnMouseDown, isDSMobile, onlyRenderActiveTab, tabs]);
63
+
64
+ if (animated) {
65
+ return /*#__PURE__*/_jsx__default["default"](SwipeableViews__default["default"], {
66
+ enableMouseEvents: enableMouseEvents,
67
+ index: helpers.getIndexById(tabs, actualActiveTab),
68
+ onChangeIndex: handleOnChangeIndex
69
+ }, void 0, panels);
70
+ }
71
+
72
+ return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
73
+ children: panels
74
+ });
75
+ };
76
+
77
+ exports.TabsPanels = TabsPanels;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var styled = require('styled-components');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
+
11
+ const StyledPanelContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
12
+ componentId: "sc-oxw5jq-0"
13
+ })(["padding-top:8px;&:focus{outline:none;}", " ", ""], _ref => {
14
+ let {
15
+ hidden
16
+ } = _ref;
17
+ return hidden ? 'visibility: hidden;' : '';
18
+ }, _ref2 => {
19
+ let {
20
+ isDSMobile
21
+ } = _ref2;
22
+ return isDSMobile ? "padding-top: 0;" : "";
23
+ });
24
+
25
+ exports.StyledPanelContainer = StyledPanelContainer;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactDesc = require('react-desc');
6
+ var constants = require('./utils/constants.js');
7
+
8
+ const tabPropTypes = {
9
+ tabId: reactDesc.PropTypes.string.description('Unique Tab id.').defaultValue(''),
10
+ title: reactDesc.PropTypes.string.description('Tab title.').defaultValue(''),
11
+ required: reactDesc.PropTypes.bool.description('Show a required mark next to the title.').defaultValue(false),
12
+ disabled: reactDesc.PropTypes.bool.description('Disables Tab.').defaultValue(false)
13
+ };
14
+ const tabsPropTypes = {
15
+ animated: reactDesc.PropTypes.bool.description('Whether the Tab transition should animate or not.').defaultValue(true),
16
+ enableMouseEvents: reactDesc.PropTypes.bool.description('Enables Tab transition with mouse drag events.').defaultValue(false),
17
+ allowTextSelection: reactDesc.PropTypes.bool.description('Allows text selection when mouse drag events are active.').defaultValue(false),
18
+ onTabChange: reactDesc.PropTypes.func.description('Handler when a user clicks on a different Tab.').defaultValue('() => {}'),
19
+ type: reactDesc.PropTypes.oneOf(constants.TabTypesValuesAsArray).description('Tab type.').defaultValue(constants.TabTypesValuesAsArray[0]),
20
+ tabBarExtraContent: reactDesc.PropTypes.element.description('Extra content next to the Tab Bar.').defaultValue(undefined),
21
+ onlyRenderActiveTab: reactDesc.PropTypes.bool.description('Only renders the active Tab in the DOM.').defaultValue(false),
22
+ withCarousel: reactDesc.PropTypes.bool.description('Activate carousel behavior.').defaultValue(false),
23
+ activeTab: reactDesc.PropTypes.string.description('Passing a value makes DSTabs a controlled component.').defaultValue('First DSTab children.'),
24
+ children: reactDesc.PropTypes.node.description('Use DSTab component as children.').isRequired,
25
+ tabsListAriaLabel: reactDesc.PropTypes.string.description('Aria label for the list.').defaultValue('Tab list.'),
26
+ containerProps: reactDesc.PropTypes.object.description('Additional properties for the container.').defaultValue({}),
27
+ innerRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.func, reactDesc.PropTypes.shape({
28
+ current: reactDesc.PropTypes.any
29
+ })]).description('Ref to the container.').defaultValue(undefined)
30
+ };
31
+
32
+ exports.tabPropTypes = tabPropTypes;
33
+ exports.tabsPropTypes = tabsPropTypes;