@dxc-technology/halstack-react 0.0.0-dfcca07 → 0.0.0-dfd09f9

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 (234) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/ThemeContext.d.ts +10 -0
  4. package/ThemeContext.js +26 -29
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +13 -45
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +14 -16
  12. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  13. package/accordion-group/AccordionGroup.test.js +151 -0
  14. package/accordion-group/types.d.ts +8 -8
  15. package/alert/Alert.js +2 -2
  16. package/alert/Alert.test.js +92 -0
  17. package/badge/Badge.d.ts +4 -0
  18. package/badge/Badge.js +1 -1
  19. package/badge/types.d.ts +4 -0
  20. package/badge/types.js +5 -0
  21. package/bleed/Bleed.d.ts +3 -0
  22. package/bleed/Bleed.js +84 -0
  23. package/bleed/Bleed.stories.tsx +342 -0
  24. package/bleed/types.d.ts +37 -0
  25. package/bleed/types.js +5 -0
  26. package/box/Box.js +2 -2
  27. package/box/Box.test.js +18 -0
  28. package/button/Button.d.ts +1 -1
  29. package/button/Button.js +11 -19
  30. package/button/Button.stories.tsx +6 -8
  31. package/button/Button.test.js +35 -0
  32. package/button/types.d.ts +3 -7
  33. package/card/Card.js +1 -1
  34. package/card/Card.stories.tsx +1 -1
  35. package/card/Card.test.js +50 -0
  36. package/checkbox/Checkbox.d.ts +1 -1
  37. package/checkbox/Checkbox.js +33 -32
  38. package/checkbox/Checkbox.stories.tsx +124 -128
  39. package/checkbox/Checkbox.test.js +78 -0
  40. package/checkbox/types.d.ts +10 -4
  41. package/chip/Chip.d.ts +4 -0
  42. package/chip/Chip.js +16 -76
  43. package/chip/Chip.stories.tsx +6 -8
  44. package/chip/Chip.test.js +56 -0
  45. package/chip/types.d.ts +45 -0
  46. package/chip/types.js +5 -0
  47. package/common/variables.js +59 -265
  48. package/date-input/DateInput.js +54 -46
  49. package/date-input/DateInput.stories.tsx +7 -7
  50. package/date-input/DateInput.test.js +479 -0
  51. package/date-input/types.d.ts +16 -9
  52. package/dialog/Dialog.js +8 -35
  53. package/dialog/Dialog.test.js +40 -0
  54. package/dropdown/Dropdown.d.ts +1 -1
  55. package/dropdown/Dropdown.js +13 -35
  56. package/dropdown/Dropdown.stories.tsx +249 -0
  57. package/dropdown/Dropdown.test.js +189 -0
  58. package/dropdown/types.d.ts +5 -14
  59. package/file-input/FileInput.d.ts +1 -1
  60. package/file-input/FileInput.js +148 -69
  61. package/file-input/FileInput.stories.tsx +507 -0
  62. package/file-input/FileInput.test.js +457 -0
  63. package/file-input/FileItem.js +3 -3
  64. package/file-input/types.d.ts +32 -7
  65. package/footer/Footer.d.ts +1 -1
  66. package/footer/Footer.js +28 -111
  67. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  68. package/footer/Footer.test.js +109 -0
  69. package/footer/Icons.d.ts +2 -0
  70. package/footer/Icons.js +3 -3
  71. package/footer/types.d.ts +5 -9
  72. package/header/Header.js +22 -46
  73. package/header/Header.stories.tsx +46 -36
  74. package/header/Header.test.js +79 -0
  75. package/header/Icons.d.ts +2 -0
  76. package/heading/Heading.js +1 -1
  77. package/heading/Heading.stories.tsx +3 -2
  78. package/heading/Heading.test.js +186 -0
  79. package/inset/Inset.d.ts +3 -0
  80. package/inset/Inset.js +84 -0
  81. package/inset/Inset.stories.tsx +229 -0
  82. package/inset/types.d.ts +37 -0
  83. package/inset/types.js +5 -0
  84. package/layout/ApplicationLayout.d.ts +10 -0
  85. package/layout/ApplicationLayout.js +14 -31
  86. package/layout/ApplicationLayout.stories.tsx +171 -0
  87. package/layout/types.d.ts +57 -0
  88. package/layout/types.js +5 -0
  89. package/link/Link.js +8 -16
  90. package/link/Link.stories.tsx +6 -1
  91. package/link/Link.test.js +91 -0
  92. package/link/types.d.ts +5 -9
  93. package/list/List.d.ts +4 -0
  94. package/list/List.js +47 -0
  95. package/list/List.stories.tsx +95 -0
  96. package/list/types.d.ts +7 -0
  97. package/list/types.js +5 -0
  98. package/main.d.ts +11 -8
  99. package/main.js +62 -38
  100. package/number-input/NumberInput.js +14 -24
  101. package/number-input/NumberInput.stories.tsx +5 -5
  102. package/number-input/NumberInput.test.js +506 -0
  103. package/number-input/types.d.ts +16 -9
  104. package/package.json +6 -3
  105. package/paginator/Paginator.js +2 -8
  106. package/paginator/Paginator.test.js +266 -0
  107. package/password-input/PasswordInput.js +15 -16
  108. package/password-input/PasswordInput.stories.tsx +3 -3
  109. package/password-input/PasswordInput.test.js +181 -0
  110. package/password-input/types.d.ts +13 -10
  111. package/progress-bar/ProgressBar.js +4 -4
  112. package/progress-bar/ProgressBar.test.js +65 -0
  113. package/quick-nav/QuickNav.d.ts +4 -0
  114. package/quick-nav/QuickNav.js +64 -0
  115. package/quick-nav/QuickNav.stories.tsx +237 -0
  116. package/quick-nav/types.d.ts +21 -0
  117. package/quick-nav/types.js +5 -0
  118. package/radio/Radio.js +2 -2
  119. package/radio/Radio.test.js +71 -0
  120. package/radio-group/Radio.d.ts +4 -0
  121. package/radio-group/Radio.js +141 -0
  122. package/radio-group/RadioGroup.d.ts +4 -0
  123. package/radio-group/RadioGroup.js +280 -0
  124. package/radio-group/RadioGroup.stories.tsx +100 -0
  125. package/radio-group/RadioGroup.test.js +695 -0
  126. package/radio-group/types.d.ts +114 -0
  127. package/radio-group/types.js +5 -0
  128. package/resultsetTable/ResultsetTable.js +6 -3
  129. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  130. package/resultsetTable/ResultsetTable.test.js +306 -0
  131. package/resultsetTable/types.d.ts +1 -1
  132. package/row/Row.d.ts +3 -0
  133. package/row/Row.js +127 -0
  134. package/row/Row.stories.tsx +237 -0
  135. package/row/types.d.ts +28 -0
  136. package/row/types.js +5 -0
  137. package/select/Icons.d.ts +10 -0
  138. package/select/Icons.js +93 -0
  139. package/select/Listbox.d.ts +4 -0
  140. package/select/Listbox.js +148 -0
  141. package/select/Option.d.ts +4 -0
  142. package/select/Option.js +110 -0
  143. package/select/Select.d.ts +4 -0
  144. package/select/Select.js +107 -317
  145. package/select/Select.stories.tsx +91 -81
  146. package/select/Select.test.js +2057 -0
  147. package/select/types.d.ts +213 -0
  148. package/select/types.js +5 -0
  149. package/sidenav/Sidenav.js +2 -2
  150. package/sidenav/Sidenav.stories.tsx +18 -1
  151. package/sidenav/Sidenav.test.js +56 -0
  152. package/slider/Slider.d.ts +1 -1
  153. package/slider/Slider.js +4 -3
  154. package/slider/Slider.stories.tsx +8 -8
  155. package/slider/Slider.test.js +150 -0
  156. package/slider/types.d.ts +4 -0
  157. package/spinner/Spinner.js +2 -2
  158. package/spinner/Spinner.stories.jsx +1 -0
  159. package/spinner/Spinner.test.js +64 -0
  160. package/stack/Stack.d.ts +3 -0
  161. package/stack/Stack.js +97 -0
  162. package/stack/Stack.stories.tsx +164 -0
  163. package/stack/types.d.ts +24 -0
  164. package/stack/types.js +5 -0
  165. package/switch/Switch.d.ts +1 -1
  166. package/switch/Switch.js +21 -8
  167. package/switch/Switch.stories.tsx +7 -7
  168. package/switch/Switch.test.js +98 -0
  169. package/switch/types.d.ts +4 -0
  170. package/table/Table.js +2 -2
  171. package/table/Table.stories.jsx +2 -1
  172. package/table/Table.test.js +26 -0
  173. package/tabs/Tabs.d.ts +1 -1
  174. package/tabs/Tabs.js +17 -19
  175. package/tabs/Tabs.stories.tsx +8 -11
  176. package/tabs/Tabs.test.js +140 -0
  177. package/tabs/types.d.ts +27 -15
  178. package/tag/Tag.d.ts +1 -1
  179. package/tag/Tag.js +16 -23
  180. package/tag/Tag.stories.tsx +26 -29
  181. package/tag/Tag.test.js +60 -0
  182. package/tag/types.d.ts +23 -14
  183. package/text/Text.d.ts +7 -0
  184. package/text/Text.js +30 -0
  185. package/text/Text.stories.tsx +19 -0
  186. package/text-input/TextInput.js +46 -36
  187. package/text-input/TextInput.stories.tsx +34 -16
  188. package/text-input/TextInput.test.js +1712 -0
  189. package/text-input/types.d.ts +18 -11
  190. package/textarea/Textarea.d.ts +4 -0
  191. package/textarea/Textarea.js +26 -56
  192. package/textarea/Textarea.stories.jsx +37 -15
  193. package/textarea/Textarea.test.js +437 -0
  194. package/textarea/types.d.ts +137 -0
  195. package/textarea/types.js +5 -0
  196. package/toggle-group/ToggleGroup.d.ts +1 -1
  197. package/toggle-group/ToggleGroup.js +15 -17
  198. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  199. package/toggle-group/ToggleGroup.test.js +156 -0
  200. package/toggle-group/types.d.ts +46 -25
  201. package/useTheme.d.ts +2 -0
  202. package/useTheme.js +1 -1
  203. package/wizard/Wizard.d.ts +1 -1
  204. package/wizard/Wizard.js +81 -22
  205. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +13 -23
  206. package/wizard/Wizard.test.js +141 -0
  207. package/wizard/types.d.ts +8 -8
  208. package/V3Select/V3Select.js +0 -455
  209. package/V3Select/index.d.ts +0 -27
  210. package/V3Textarea/V3Textarea.js +0 -260
  211. package/V3Textarea/index.d.ts +0 -27
  212. package/chip/index.d.ts +0 -22
  213. package/date/Date.js +0 -373
  214. package/date/index.d.ts +0 -27
  215. package/input-text/Icons.js +0 -22
  216. package/input-text/InputText.js +0 -611
  217. package/input-text/index.d.ts +0 -36
  218. package/select/index.d.ts +0 -131
  219. package/textarea/index.d.ts +0 -127
  220. package/toggle/Toggle.js +0 -186
  221. package/toggle/index.d.ts +0 -21
  222. package/upload/Upload.js +0 -201
  223. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  224. package/upload/buttons-upload/Icons.js +0 -40
  225. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  226. package/upload/dragAndDropArea/Icons.js +0 -39
  227. package/upload/file-upload/FileToUpload.js +0 -115
  228. package/upload/file-upload/Icons.js +0 -66
  229. package/upload/files-upload/FilesToUpload.js +0 -109
  230. package/upload/index.d.ts +0 -15
  231. package/upload/transaction/Icons.js +0 -160
  232. package/upload/transaction/Transaction.js +0 -104
  233. package/upload/transactions/Transactions.js +0 -94
  234. package/wizard/Icons.js +0 -65
package/tabs/Tabs.js CHANGED
@@ -9,13 +9,13 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
13
 
14
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
 
18
- var _react = _interopRequireDefault(require("react"));
18
+ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _Tabs = _interopRequireDefault(require("@material-ui/core/Tabs"));
21
21
 
@@ -27,7 +27,7 @@ var _variables = require("../common/variables.js");
27
27
 
28
28
  var _Badge = _interopRequireDefault(require("../badge/Badge"));
29
29
 
30
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
30
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
31
31
 
32
32
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
33
33
 
@@ -36,7 +36,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
36
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
37
 
38
38
  var DxcTabs = function DxcTabs(_ref) {
39
- var activeTabIndex = _ref.activeTabIndex,
39
+ var defaultActiveTabIndex = _ref.defaultActiveTabIndex,
40
+ activeTabIndex = _ref.activeTabIndex,
40
41
  tabs = _ref.tabs,
41
42
  onTabClick = _ref.onTabClick,
42
43
  onTabHover = _ref.onTabHover,
@@ -46,10 +47,10 @@ var DxcTabs = function DxcTabs(_ref) {
46
47
  _ref$tabIndex = _ref.tabIndex,
47
48
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
48
49
 
49
- var _React$useState = _react["default"].useState(0),
50
- _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
51
- innerActiveTabIndex = _React$useState2[0],
52
- setInnerActiveTabIndex = _React$useState2[1];
50
+ var _useState = (0, _react.useState)(defaultActiveTabIndex !== null && defaultActiveTabIndex !== void 0 ? defaultActiveTabIndex : 0),
51
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
52
+ innerActiveTabIndex = _useState2[0],
53
+ setInnerActiveTabIndex = _useState2[1];
53
54
 
54
55
  var colorsTheme = (0, _useTheme["default"])();
55
56
  var hasLabelAndIcon = tabs && tabs.filter(function (tab) {
@@ -57,10 +58,7 @@ var DxcTabs = function DxcTabs(_ref) {
57
58
  }).length > 0;
58
59
 
59
60
  var handleChange = function handleChange(event, newValue) {
60
- if (activeTabIndex == null) {
61
- setInnerActiveTabIndex(newValue);
62
- }
63
-
61
+ activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : setInnerActiveTabIndex(newValue);
64
62
  onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(newValue);
65
63
  };
66
64
 
@@ -70,12 +68,12 @@ var DxcTabs = function DxcTabs(_ref) {
70
68
  }, /*#__PURE__*/_react["default"].createElement(TabLabelContainer, {
71
69
  hasLabelAndIcon: hasLabelAndIcon,
72
70
  iconPosition: iconPosition
73
- }, tab.icon ? /*#__PURE__*/_react["default"].createElement(TabIconContainer, {
71
+ }, tab.icon && /*#__PURE__*/_react["default"].createElement(TabIconContainer, {
74
72
  hasLabelAndIcon: hasLabelAndIcon,
75
73
  iconPosition: iconPosition
76
- }, (0, _typeof2["default"])(tab.icon) === "object" ? tab.icon : /*#__PURE__*/_react["default"].createElement(tab.icon)) : tab.iconSrc && /*#__PURE__*/_react["default"].createElement(TabIcon, {
77
- src: tab.iconSrc
78
- }), /*#__PURE__*/_react["default"].createElement(LabelTextContainer, null, tab.label))), tab.notificationNumber && tab.notificationNumber !== false && /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
74
+ }, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement(TabIcon, {
75
+ src: tab.icon
76
+ }) : tab.icon), /*#__PURE__*/_react["default"].createElement(LabelTextContainer, null, tab.label))), tab.notificationNumber && tab.notificationNumber !== false && /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
79
77
  hasLabelAndIcon: hasLabelAndIcon,
80
78
  iconPosition: iconPosition
81
79
  }, /*#__PURE__*/_react["default"].createElement(_Badge["default"], {
@@ -90,7 +88,7 @@ var DxcTabs = function DxcTabs(_ref) {
90
88
  hasLabelAndIcon: hasLabelAndIcon,
91
89
  iconPosition: iconPosition
92
90
  }, /*#__PURE__*/_react["default"].createElement(Underline, null), /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
93
- value: activeTabIndex != null ? activeTabIndex : innerActiveTabIndex,
91
+ value: activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : innerActiveTabIndex,
94
92
  onChange: handleChange,
95
93
  variant: "scrollable",
96
94
  scrollButtons: "auto"
@@ -201,7 +199,7 @@ var DxCTabs = _styledComponents["default"].div(_templateObject7 || (_templateObj
201
199
  return props.theme.scrollButtonsWidth;
202
200
  });
203
201
 
204
- var TabIcon = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: 22px;\n max-width: 22px;\n"])));
202
+ var TabIcon = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])([""])));
205
203
 
206
204
  var TabIconContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: 22px;\n max-width: 22px;\n margin-bottom: ", ";\n margin-right: ", ";\n overflow: hidden;\n display: flex;\n align-items: center;\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
207
205
  return props.hasLabelAndIcon && props.iconPosition === "top" && "8px" || "";
@@ -1,5 +1,4 @@
1
1
  import React from "react";
2
- import { userEvent, within } from "@storybook/testing-library";
3
2
  import DxcTabs from "./Tabs";
4
3
  import Title from "../../.storybook/components/Title";
5
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
@@ -9,14 +8,12 @@ export default {
9
8
  component: DxcTabs,
10
9
  };
11
10
 
12
- const iconSVG = () => {
13
- return (
14
- <svg viewBox="0 0 24 24" fill="currentColor">
15
- <path d="M0 0h24v24H0z" fill="none" />
16
- <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
17
- </svg>
18
- );
19
- };
11
+ const iconSVG = (
12
+ <svg viewBox="0 0 24 24" fill="currentColor">
13
+ <path d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
15
+ </svg>
16
+ );
20
17
 
21
18
  const tabs: any = [
22
19
  {
@@ -84,10 +81,9 @@ export const Chromatic = () => (
84
81
  <ExampleContainer>
85
82
  <Title title="Scrollable" theme="light" level={4} />
86
83
  <div style={{ width: "400px" }}>
87
- <DxcTabs tabs={tabsNotificationIcon} iconPosition="left" activeTabIndex={1} />
84
+ <DxcTabs tabs={tabsNotificationIcon} iconPosition="left" defaultActiveTabIndex={1} />
88
85
  </div>
89
86
  </ExampleContainer>
90
-
91
87
  <Title title="Margins" theme="light" level={2} />
92
88
  <ExampleContainer>
93
89
  <Title title="Xxsmall margin" theme="light" level={4} />
@@ -116,6 +112,7 @@ export const Chromatic = () => (
116
112
  <ExampleContainer>
117
113
  <Title title="Xxlarge margin" theme="light" level={4} />
118
114
  <DxcTabs tabs={tabs} margin="xxlarge" />
115
+ <hr />
119
116
  </ExampleContainer>
120
117
  </>
121
118
  );
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _Tabs = _interopRequireDefault(require("./Tabs"));
10
+
11
+ var sampleTabs = [{
12
+ label: "Tab-1"
13
+ }, {
14
+ label: "Tab-2"
15
+ }, {
16
+ label: "Tab-3"
17
+ }];
18
+ var sampleTabsWithBadge = [{
19
+ label: "Tab-1",
20
+ notificationNumber: "10"
21
+ }, {
22
+ label: "Tab-2",
23
+ notificationNumber: "20"
24
+ }, {
25
+ label: "Tab-3",
26
+ notificationNumber: "101"
27
+ }];
28
+ describe("Tabs component tests", function () {
29
+ test("Tabs render with correct labels", function () {
30
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
31
+ tabs: sampleTabs
32
+ })),
33
+ getByText = _render.getByText,
34
+ getAllByRole = _render.getAllByRole;
35
+
36
+ var tabs = getAllByRole("tab");
37
+ expect(getByText("Tab-1")).toBeTruthy();
38
+ expect(getByText("Tab-2")).toBeTruthy();
39
+ expect(getByText("Tab-3")).toBeTruthy();
40
+ expect(tabs[0].getAttribute("aria-selected")).toBe("true");
41
+ expect(tabs[1].getAttribute("aria-selected")).toBe("false");
42
+ expect(tabs[2].getAttribute("aria-selected")).toBe("false");
43
+ });
44
+ test("Tabs render with correct labels and badges", function () {
45
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
46
+ tabs: sampleTabsWithBadge
47
+ })),
48
+ getByText = _render2.getByText;
49
+
50
+ expect(getByText("10")).toBeTruthy();
51
+ expect(getByText("20")).toBeTruthy();
52
+ expect(getByText("+99")).toBeTruthy();
53
+ });
54
+ test("Tabs render with an initially active tab", function () {
55
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
56
+ defaultActiveTabIndex: 2,
57
+ tabs: sampleTabsWithBadge
58
+ })),
59
+ getAllByRole = _render3.getAllByRole;
60
+
61
+ var tabs = getAllByRole("tab");
62
+ expect(tabs[0].getAttribute("aria-selected")).toBe("false");
63
+ expect(tabs[1].getAttribute("aria-selected")).toBe("false");
64
+ expect(tabs[2].getAttribute("aria-selected")).toBe("true");
65
+ });
66
+ test("Tabs render with correct icons", function () {
67
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
68
+ tabs: [{
69
+ label: "Tab-1",
70
+ icon: "/testIcon1.png"
71
+ }, {
72
+ label: "Tab-2",
73
+ icon: "/testIcon2.png"
74
+ }, {
75
+ label: "Tab-3",
76
+ icon: "/testIcon3.png"
77
+ }]
78
+ })),
79
+ getAllByRole = _render4.getAllByRole;
80
+
81
+ expect(getAllByRole("img")[0].getAttribute("src")).toBe("/testIcon1.png");
82
+ expect(getAllByRole("img")[1].getAttribute("src")).toBe("/testIcon2.png");
83
+ expect(getAllByRole("img")[2].getAttribute("src")).toBe("/testIcon3.png");
84
+ });
85
+ test("Tabs render with disabled tab", function () {
86
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
87
+ tabs: [{
88
+ label: "Tab-1",
89
+ isDisabled: true
90
+ }, {
91
+ label: "Tab-2"
92
+ }]
93
+ })),
94
+ getAllByRole = _render5.getAllByRole;
95
+
96
+ expect(getAllByRole("tab")[0].hasAttribute("disabled")).toBeTruthy();
97
+ expect(getAllByRole("tab")[1].hasAttribute("disabled")).toBeFalsy();
98
+ });
99
+ test("Uncontrolled tabs", function () {
100
+ var onTabClick = jest.fn();
101
+
102
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
103
+ tabs: sampleTabs,
104
+ onTabClick: onTabClick
105
+ })),
106
+ getByText = _render6.getByText;
107
+
108
+ var tab1 = getByText("Tab-1");
109
+ var tab2 = getByText("Tab-2");
110
+
111
+ _react2.fireEvent.click(tab2);
112
+
113
+ expect(onTabClick).toHaveBeenCalledWith(1);
114
+
115
+ _react2.fireEvent.click(tab1);
116
+
117
+ expect(onTabClick).toHaveBeenCalledWith(0);
118
+ });
119
+ test("Controlled tabs", function () {
120
+ var onTabClick = jest.fn();
121
+
122
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
123
+ tabs: sampleTabs,
124
+ onTabClick: onTabClick,
125
+ activeTabIndex: 0
126
+ })),
127
+ getByText = _render7.getByText;
128
+
129
+ var tab2 = getByText("Tab-2");
130
+ var tab3 = getByText("Tab-3");
131
+
132
+ _react2.fireEvent.click(tab2);
133
+
134
+ expect(onTabClick).toHaveBeenCalledWith(1);
135
+
136
+ _react2.fireEvent.click(tab3);
137
+
138
+ expect(onTabClick).toHaveBeenCalledWith(2);
139
+ });
140
+ });
package/tabs/types.d.ts CHANGED
@@ -6,20 +6,8 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement> | React.FunctionComponent<React.SVGProps<SVGSVGElement>>;
10
- declare type Tab = {
11
- /**
12
- * Tab label.
13
- */
14
- label?: string;
15
- /**
16
- * Element used as the icon that will be displayed in the tab.
17
- */
18
- icon?: SVG;
19
- /**
20
- * @deprecated URL of the icon to be displayed in the tab.
21
- */
22
- iconSrc?: string;
9
+ declare type SVG = React.SVGProps<SVGSVGElement>;
10
+ declare type TabCommonProps = {
23
11
  /**
24
12
  * Whether the tab is disabled or not.
25
13
  */
@@ -33,15 +21,39 @@ declare type Tab = {
33
21
  */
34
22
  notificationNumber?: boolean | number;
35
23
  };
24
+ declare type TabLabelProps = TabCommonProps & {
25
+ /**
26
+ * Tab label.
27
+ */
28
+ label: string;
29
+ /**
30
+ * Element or path used as the icon that will be displayed in the tab.
31
+ */
32
+ icon?: string | SVG;
33
+ };
34
+ declare type TabIconProps = TabCommonProps & {
35
+ /**
36
+ * Tab label.
37
+ */
38
+ label?: string;
39
+ /**
40
+ * Element or path used as the icon that will be displayed in the tab.
41
+ */
42
+ icon: string | SVG;
43
+ };
36
44
  declare type Props = {
37
45
  /**
38
46
  * An array of objects representing the tabs.
39
47
  */
40
- tabs: Tab[];
48
+ tabs: (TabLabelProps | TabIconProps)[];
41
49
  /**
42
50
  * Whether the icon should appear above or to the left of the label.
43
51
  */
44
52
  iconPosition?: "top" | "left";
53
+ /**
54
+ * Initially active tab, only when it is uncontrolled.
55
+ */
56
+ defaultActiveTabIndex?: number;
45
57
  /**
46
58
  * The index of the active tab. If undefined, the component will be
47
59
  * uncontrolled and the active tab will be managed internally by the component.
package/tag/Tag.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import TagPropsType from "./types";
3
- declare const DxcTag: ({ icon, iconSrc, label, linkHref, onClick, iconBgColor, labelPosition, newWindow, margin, size, tabIndex, }: TagPropsType) => JSX.Element;
3
+ declare const DxcTag: ({ icon, label, linkHref, onClick, iconBgColor, labelPosition, newWindow, margin, size, tabIndex, }: TagPropsType) => JSX.Element;
4
4
  export default DxcTag;
package/tag/Tag.js CHANGED
@@ -9,10 +9,10 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
13
 
14
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
16
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
@@ -21,13 +21,13 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
22
  var _variables = require("../common/variables.js");
23
23
 
24
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
24
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
26
26
  var _utils = require("../common/utils.js");
27
27
 
28
28
  var _Box = _interopRequireDefault(require("../box/Box"));
29
29
 
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
31
31
 
32
32
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
33
 
@@ -35,7 +35,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
35
35
 
36
36
  var DxcTag = function DxcTag(_ref) {
37
37
  var icon = _ref.icon,
38
- iconSrc = _ref.iconSrc,
39
38
  _ref$label = _ref.label,
40
39
  label = _ref$label === void 0 ? "" : _ref$label,
41
40
  linkHref = _ref.linkHref,
@@ -67,11 +66,11 @@ var DxcTag = function DxcTag(_ref) {
67
66
  shadowDepth: isHovered && (onClick || linkHref) && 2 || 1
68
67
  }, /*#__PURE__*/_react["default"].createElement(TagContent, {
69
68
  labelPosition: labelPosition
70
- }, /*#__PURE__*/_react["default"].createElement(IconContainer, {
69
+ }, icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
71
70
  iconBgColor: iconBgColor
72
- }, icon ? /*#__PURE__*/_react["default"].createElement(TagIconContainer, null, (0, _typeof2["default"])(icon) === "object" ? icon : /*#__PURE__*/_react["default"].createElement(icon)) : /*#__PURE__*/_react["default"].createElement(TagIcon, {
73
- src: iconSrc
74
- })), size !== "small" && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label)));
71
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(TagIcon, {
72
+ src: icon
73
+ }) : icon), size !== "small" && label && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label)));
75
74
 
76
75
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
77
76
  theme: colorsTheme.tag
@@ -146,19 +145,7 @@ var StyledButton = _styledComponents["default"].button(_templateObject4 || (_tem
146
145
  return props.theme.focusColor;
147
146
  });
148
147
 
149
- var TagIcon = _styledComponents["default"].img(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n width: ", ";\n height: ", ";\n"])), function (props) {
150
- return props.theme.iconWidth;
151
- }, function (props) {
152
- return props.theme.iconHeight;
153
- });
154
-
155
- var TagIconContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
156
- return props.theme.iconWidth;
157
- }, function (props) {
158
- return props.theme.iconHeight;
159
- });
160
-
161
- var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n background: ", ";\n width: ", ";\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ", ";\n min-width: ", ";\n"])), function (_ref9) {
148
+ var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n background: ", ";\n width: ", ";\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ", ";\n min-width: ", ";\n overflow: hidden;\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (_ref9) {
162
149
  var iconBgColor = _ref9.iconBgColor;
163
150
  return iconBgColor;
164
151
  }, function (props) {
@@ -167,9 +154,15 @@ var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templ
167
154
  return props.theme.iconColor;
168
155
  }, function (props) {
169
156
  return props.theme.iconSectionWidth;
157
+ }, function (props) {
158
+ return props.theme.iconWidth;
159
+ }, function (props) {
160
+ return props.theme.iconHeight;
170
161
  });
171
162
 
172
- var TagLabel = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n flex-grow: 1;\n text-align: center;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n"])), function (props) {
163
+ var TagIcon = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])([""])));
164
+
165
+ var TagLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n flex-grow: 1;\n text-align: center;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n"])), function (props) {
173
166
  return props.theme.fontFamily;
174
167
  }, function (props) {
175
168
  return props.theme.fontSize;
@@ -9,29 +9,22 @@ export default {
9
9
  component: DxcTag,
10
10
  };
11
11
 
12
- const icon = () => {
13
- return (
14
- <svg viewBox="0 0 24 24" fill="currentColor">
15
- <path d="M0 0h24v24H0z" fill="none" />
16
- <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
17
- </svg>
18
- );
19
- };
20
- const largeIcon = () => {
21
- return (
22
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 0 24 24" width="48px" fill="currentColor">
23
- <path d="M0 0h24v24H0V0z" fill="none" />
24
- <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z" />
25
- </svg>
26
- );
27
- };
12
+ const icon = (
13
+ <svg viewBox="0 0 24 24" fill="currentColor">
14
+ <path d="M0 0h24v24H0z" fill="none" />
15
+ <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
16
+ </svg>
17
+ );
18
+
19
+ const largeIcon = (
20
+ <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 0 24 24" width="48px" fill="currentColor">
21
+ <path d="M0 0h24v24H0V0z" fill="none" />
22
+ <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z" />
23
+ </svg>
24
+ );
28
25
 
29
26
  export const Chromatic = () => (
30
27
  <>
31
- <ExampleContainer>
32
- <Title title="Without label" theme="light" level={4} />
33
- <DxcTag />
34
- </ExampleContainer>
35
28
  <ExampleContainer>
36
29
  <Title title="With icon" theme="light" level={4} />
37
30
  <DxcTag icon={icon} />
@@ -46,7 +39,10 @@ export const Chromatic = () => (
46
39
  </ExampleContainer>
47
40
  <ExampleContainer>
48
41
  <Title title="With label and icon" theme="light" level={4} />
49
- <DxcTag label="Tag" icon={icon} />
42
+ <DxcTag
43
+ label="Tag"
44
+ icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
45
+ />
50
46
  </ExampleContainer>
51
47
  <ExampleContainer>
52
48
  <Title title="With right icon" theme="light" level={4} />
@@ -102,37 +98,38 @@ export const Chromatic = () => (
102
98
  <Title title="Sizes" theme="light" level={2} />
103
99
  <ExampleContainer>
104
100
  <Title title="Small size" theme="light" level={4} />
105
- <DxcTag label="Small" size="small" />
101
+ <DxcTag label="Small" size="small" icon={icon} />
106
102
  </ExampleContainer>
107
103
  <ExampleContainer>
108
104
  <Title title="Medium size" theme="light" level={4} />
109
- <DxcTag label="Medium size medium s" size="medium" />
105
+ <DxcTag label="Medium size medium s" size="medium" icon={icon} />
110
106
  </ExampleContainer>
111
107
  <ExampleContainer>
112
108
  <Title title="Medium size with ellipsis" theme="light" level={4} />
113
- <DxcTag label="Medium size medium si medium" size="medium" />
109
+ <DxcTag label="Medium size medium si medium" size="medium" icon={icon} />
114
110
  </ExampleContainer>
115
111
  <ExampleContainer>
116
112
  <Title title="Large size" theme="light" level={4} />
117
- <DxcTag label="Large size large size large size large size large size" size="large" />
113
+ <DxcTag label="Large size large size large size large size large size" size="large" icon={icon} />
118
114
  </ExampleContainer>
119
115
  <ExampleContainer>
120
116
  <Title title="Large size with ellipsis" theme="light" level={4} />
121
- <DxcTag label="Large size large size large size large size large size large size" size="large" />
117
+ <DxcTag label="Large size large size large size large size large size large size" size="large" icon={icon} />
122
118
  </ExampleContainer>
123
119
  <ExampleContainer>
124
120
  <Title title="FillParent size" theme="light" level={4} />
125
- <DxcTag label="FillParent" size="fillParent" />
121
+ <DxcTag label="FillParent" size="fillParent" icon={icon} />
126
122
  </ExampleContainer>
127
123
  <ExampleContainer>
128
124
  <Title title="FitContent size" theme="light" level={4} />
129
- <DxcTag label="FitContent" size="fitContent" />
125
+ <DxcTag label="FitContent" size="fitContent" icon={icon} />
130
126
  </ExampleContainer>
127
+ <hr />
131
128
  </>
132
129
  );
133
130
 
134
131
  const LinkTag = () => (
135
- <ExampleContainer>
132
+ <ExampleContainer expanded>
136
133
  <Title title="Hover link tag" theme="light" level={4} />
137
134
  <DxcTag label="Tag" icon={icon} linkHref="https://www.dxc.com" />
138
135
  </ExampleContainer>
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _Tag = _interopRequireDefault(require("./Tag"));
10
+
11
+ describe("Tag component tests", function () {
12
+ test("Tag renders with correct label", function () {
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
14
+ label: "tag-test"
15
+ })),
16
+ getByText = _render.getByText;
17
+
18
+ expect(getByText("tag-test")).toBeTruthy();
19
+ });
20
+ test("Tag renders with correct label before", function () {
21
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
22
+ label: "tag-test",
23
+ labelPosition: "before"
24
+ })),
25
+ getByText = _render2.getByText;
26
+
27
+ expect(getByText("tag-test")).toBeTruthy();
28
+ });
29
+ test("Tag renders with correct icon", function () {
30
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
31
+ label: "tag-test",
32
+ icon: "/test-icon.jpg"
33
+ })),
34
+ getByRole = _render3.getByRole;
35
+
36
+ expect(getByRole("img").getAttribute("src")).toBe("/test-icon.jpg");
37
+ });
38
+ test("Tag renders with link href", function () {
39
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
40
+ label: "tag-test",
41
+ linkHref: "/test/page"
42
+ })),
43
+ getByRole = _render4.getByRole;
44
+
45
+ expect(getByRole("link").getAttribute("href")).toBe("/test/page");
46
+ });
47
+ test("Call correct function on click", function () {
48
+ var onClick = jest.fn();
49
+
50
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
51
+ label: "tag-test",
52
+ onClick: onClick
53
+ })),
54
+ getByText = _render5.getByText;
55
+
56
+ _react2.fireEvent.click(getByText("tag-test"));
57
+
58
+ expect(onClick).toHaveBeenCalled();
59
+ });
60
+ });
package/tag/types.d.ts CHANGED
@@ -6,20 +6,8 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement> | React.FunctionComponent<React.SVGProps<SVGSVGElement>>;
10
- declare type Props = {
11
- /**
12
- * Element used as the icon that will be placed next to the label.
13
- */
14
- icon?: SVG;
15
- /**
16
- * @deprecated URL of the icon.
17
- */
18
- iconSrc?: string;
19
- /**
20
- * Text to be placed next inside the tag.
21
- */
22
- label?: string;
9
+ declare type SVG = React.SVGProps<SVGSVGElement>;
10
+ declare type TagCommonProps = {
23
11
  /**
24
12
  * If defined, the tag will be displayed as an anchor, using this prop as "href".
25
13
  * Component will show some visual feedback on hover.
@@ -57,4 +45,25 @@ declare type Props = {
57
45
  */
58
46
  tabIndex?: number;
59
47
  };
48
+ declare type TagLabelProps = TagCommonProps & {
49
+ /**
50
+ * Element or path used as the icon that will be placed next to the label.
51
+ */
52
+ icon?: string | SVG;
53
+ /**
54
+ * Text to be placed next inside the tag.
55
+ */
56
+ label: string;
57
+ };
58
+ declare type TagIconProps = TagCommonProps & {
59
+ /**
60
+ * Element or path used as the icon that will be placed next to the label.
61
+ */
62
+ icon: string | SVG;
63
+ /**
64
+ * Text to be placed next inside the tag.
65
+ */
66
+ label?: string;
67
+ };
68
+ declare type Props = TagLabelProps | TagIconProps;
60
69
  export default Props;