@dxc-technology/halstack-react 0.0.0-96aa3bd → 0.0.0-96cecf0

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 (221) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +110 -114
  7. package/accordion/Accordion.stories.tsx +104 -114
  8. package/accordion/Accordion.test.js +10 -11
  9. package/accordion/types.d.ts +0 -11
  10. package/accordion-group/AccordionGroup.d.ts +4 -3
  11. package/accordion-group/AccordionGroup.js +24 -65
  12. package/accordion-group/AccordionGroup.stories.tsx +93 -66
  13. package/accordion-group/AccordionGroup.test.js +27 -62
  14. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  15. package/accordion-group/AccordionGroupAccordion.js +43 -0
  16. package/accordion-group/types.d.ts +6 -11
  17. package/alert/Alert.js +5 -9
  18. package/alert/Alert.stories.tsx +28 -0
  19. package/alert/Alert.test.js +1 -1
  20. package/bleed/Bleed.stories.tsx +1 -0
  21. package/box/Box.d.ts +1 -1
  22. package/box/Box.js +8 -27
  23. package/box/Box.stories.tsx +38 -51
  24. package/box/Box.test.js +1 -1
  25. package/box/types.d.ts +0 -11
  26. package/bulleted-list/BulletedList.js +4 -2
  27. package/bulleted-list/BulletedList.stories.tsx +7 -1
  28. package/bulleted-list/types.d.ts +31 -4
  29. package/button/Button.js +13 -16
  30. package/button/Button.stories.tsx +151 -9
  31. package/button/Button.test.js +1 -1
  32. package/button/types.d.ts +3 -3
  33. package/card/Card.d.ts +1 -1
  34. package/card/Card.js +27 -45
  35. package/card/Card.stories.tsx +12 -42
  36. package/card/Card.test.js +1 -1
  37. package/card/types.d.ts +1 -6
  38. package/checkbox/Checkbox.d.ts +2 -2
  39. package/checkbox/Checkbox.js +94 -101
  40. package/checkbox/Checkbox.stories.tsx +131 -59
  41. package/checkbox/Checkbox.test.js +94 -17
  42. package/checkbox/types.d.ts +4 -0
  43. package/chip/Chip.js +28 -49
  44. package/chip/Chip.stories.tsx +121 -26
  45. package/chip/Chip.test.js +3 -5
  46. package/common/OpenSans.css +68 -80
  47. package/common/coreTokens.d.ts +146 -0
  48. package/common/coreTokens.js +167 -0
  49. package/common/utils.d.ts +1 -0
  50. package/common/utils.js +4 -4
  51. package/common/variables.d.ts +1482 -0
  52. package/common/variables.js +990 -1137
  53. package/date-input/Calendar.d.ts +4 -0
  54. package/date-input/Calendar.js +258 -0
  55. package/date-input/DateInput.js +134 -237
  56. package/date-input/DateInput.stories.tsx +199 -33
  57. package/date-input/DateInput.test.js +494 -138
  58. package/date-input/DatePicker.d.ts +4 -0
  59. package/date-input/DatePicker.js +146 -0
  60. package/date-input/Icons.d.ts +6 -0
  61. package/date-input/Icons.js +75 -0
  62. package/date-input/YearPicker.d.ts +4 -0
  63. package/date-input/YearPicker.js +126 -0
  64. package/date-input/types.d.ts +51 -0
  65. package/dialog/Dialog.d.ts +1 -1
  66. package/dialog/Dialog.js +54 -85
  67. package/dialog/Dialog.stories.tsx +154 -170
  68. package/dialog/Dialog.test.js +302 -3
  69. package/dialog/types.d.ts +0 -12
  70. package/dropdown/Dropdown.js +43 -42
  71. package/dropdown/Dropdown.stories.tsx +210 -84
  72. package/dropdown/Dropdown.test.js +22 -27
  73. package/dropdown/DropdownMenu.js +12 -18
  74. package/dropdown/DropdownMenuItem.js +5 -18
  75. package/dropdown/types.d.ts +3 -3
  76. package/file-input/FileInput.d.ts +2 -2
  77. package/file-input/FileInput.js +174 -220
  78. package/file-input/FileInput.stories.tsx +122 -11
  79. package/file-input/FileInput.test.js +14 -14
  80. package/file-input/FileItem.d.ts +4 -14
  81. package/file-input/FileItem.js +39 -63
  82. package/file-input/types.d.ts +17 -0
  83. package/flex/Flex.d.ts +1 -1
  84. package/flex/Flex.js +33 -19
  85. package/flex/Flex.stories.tsx +35 -26
  86. package/flex/types.d.ts +83 -7
  87. package/footer/Footer.d.ts +1 -1
  88. package/footer/Footer.js +8 -23
  89. package/footer/Footer.stories.tsx +26 -16
  90. package/footer/Footer.test.js +14 -26
  91. package/footer/types.d.ts +0 -5
  92. package/grid/Grid.d.ts +7 -0
  93. package/grid/Grid.js +91 -0
  94. package/grid/Grid.stories.tsx +219 -0
  95. package/grid/types.d.ts +115 -0
  96. package/header/Header.d.ts +3 -2
  97. package/header/Header.js +21 -23
  98. package/header/Header.stories.tsx +152 -9
  99. package/header/Header.test.js +2 -2
  100. package/header/types.d.ts +3 -2
  101. package/heading/Heading.js +1 -1
  102. package/heading/Heading.test.js +1 -1
  103. package/inset/Inset.stories.tsx +2 -1
  104. package/layout/ApplicationLayout.d.ts +4 -4
  105. package/layout/ApplicationLayout.js +1 -1
  106. package/layout/ApplicationLayout.stories.tsx +1 -0
  107. package/layout/types.d.ts +2 -3
  108. package/link/Link.js +4 -4
  109. package/link/Link.stories.tsx +60 -0
  110. package/link/Link.test.js +2 -4
  111. package/link/types.d.ts +2 -2
  112. package/main.d.ts +3 -2
  113. package/main.js +9 -1
  114. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  115. package/{tabs-nav → nav-tabs}/NavTabs.js +8 -11
  116. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +110 -6
  117. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  118. package/{tabs-nav → nav-tabs}/Tab.js +49 -33
  119. package/{tabs-nav → nav-tabs}/types.d.ts +8 -9
  120. package/nav-tabs/types.js +5 -0
  121. package/number-input/NumberInput.test.js +44 -8
  122. package/package.json +13 -18
  123. package/paginator/Icons.d.ts +5 -0
  124. package/paginator/Icons.js +16 -28
  125. package/paginator/Paginator.js +8 -16
  126. package/paginator/Paginator.stories.tsx +24 -0
  127. package/paginator/Paginator.test.js +58 -48
  128. package/paragraph/Paragraph.d.ts +3 -4
  129. package/paragraph/Paragraph.js +5 -5
  130. package/password-input/PasswordInput.test.js +14 -13
  131. package/progress-bar/ProgressBar.d.ts +2 -2
  132. package/progress-bar/ProgressBar.js +5 -5
  133. package/progress-bar/ProgressBar.stories.jsx +35 -2
  134. package/progress-bar/ProgressBar.test.js +1 -1
  135. package/progress-bar/types.d.ts +4 -3
  136. package/quick-nav/QuickNav.js +11 -12
  137. package/quick-nav/QuickNav.stories.tsx +111 -19
  138. package/radio-group/Radio.d.ts +1 -1
  139. package/radio-group/Radio.js +46 -31
  140. package/radio-group/RadioGroup.js +23 -23
  141. package/radio-group/RadioGroup.stories.tsx +132 -18
  142. package/radio-group/RadioGroup.test.js +124 -97
  143. package/radio-group/types.d.ts +2 -2
  144. package/resultsetTable/Icons.d.ts +7 -0
  145. package/resultsetTable/Icons.js +51 -0
  146. package/resultsetTable/ResultsetTable.js +49 -108
  147. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  148. package/resultsetTable/ResultsetTable.test.js +41 -64
  149. package/resultsetTable/types.d.ts +1 -1
  150. package/select/Listbox.d.ts +1 -1
  151. package/select/Listbox.js +5 -35
  152. package/select/Option.js +11 -24
  153. package/select/Select.js +59 -36
  154. package/select/Select.stories.tsx +494 -150
  155. package/select/Select.test.js +341 -288
  156. package/select/types.d.ts +2 -2
  157. package/sidenav/Icons.d.ts +7 -0
  158. package/sidenav/Icons.js +51 -0
  159. package/sidenav/Sidenav.d.ts +2 -2
  160. package/sidenav/Sidenav.js +66 -96
  161. package/sidenav/Sidenav.stories.tsx +165 -63
  162. package/sidenav/types.d.ts +21 -18
  163. package/slider/Slider.d.ts +2 -2
  164. package/slider/Slider.js +24 -15
  165. package/slider/Slider.stories.tsx +57 -0
  166. package/slider/Slider.test.js +1 -1
  167. package/slider/types.d.ts +6 -2
  168. package/spinner/Spinner.js +17 -23
  169. package/spinner/Spinner.stories.jsx +53 -27
  170. package/spinner/Spinner.test.js +1 -1
  171. package/switch/Switch.d.ts +3 -3
  172. package/switch/Switch.js +96 -85
  173. package/switch/Switch.stories.tsx +33 -0
  174. package/switch/Switch.test.js +27 -14
  175. package/switch/types.d.ts +8 -3
  176. package/table/Table.js +3 -3
  177. package/table/Table.stories.jsx +80 -1
  178. package/table/Table.test.js +2 -2
  179. package/tabs/Tab.js +12 -15
  180. package/tabs/Tabs.js +31 -24
  181. package/tabs/Tabs.stories.tsx +45 -5
  182. package/tabs/Tabs.test.js +4 -5
  183. package/tabs/types.d.ts +2 -2
  184. package/tag/Tag.js +8 -10
  185. package/tag/Tag.stories.tsx +14 -1
  186. package/tag/Tag.test.js +1 -1
  187. package/text-input/Icons.d.ts +8 -0
  188. package/text-input/Icons.js +60 -0
  189. package/text-input/Suggestion.js +40 -11
  190. package/text-input/Suggestions.d.ts +4 -0
  191. package/text-input/Suggestions.js +134 -0
  192. package/text-input/TextInput.js +189 -277
  193. package/text-input/TextInput.stories.tsx +280 -184
  194. package/text-input/TextInput.test.js +736 -725
  195. package/text-input/types.d.ts +21 -2
  196. package/textarea/Textarea.js +3 -4
  197. package/textarea/Textarea.stories.jsx +60 -1
  198. package/textarea/Textarea.test.js +2 -4
  199. package/toggle-group/ToggleGroup.d.ts +2 -2
  200. package/toggle-group/ToggleGroup.js +7 -4
  201. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  202. package/toggle-group/ToggleGroup.test.js +1 -1
  203. package/toggle-group/types.d.ts +1 -1
  204. package/typography/Typography.d.ts +2 -2
  205. package/typography/Typography.js +14 -113
  206. package/typography/Typography.stories.tsx +1 -1
  207. package/useTheme.d.ts +1234 -1
  208. package/useTheme.js +1 -1
  209. package/useTranslatedLabels.d.ts +84 -1
  210. package/utils/BaseTypography.d.ts +21 -0
  211. package/utils/BaseTypography.js +108 -0
  212. package/utils/FocusLock.d.ts +13 -0
  213. package/utils/FocusLock.js +138 -0
  214. package/wizard/Wizard.js +2 -2
  215. package/wizard/Wizard.stories.tsx +20 -0
  216. package/wizard/Wizard.test.js +1 -1
  217. package/wizard/types.d.ts +5 -6
  218. package/card/ice-cream.jpg +0 -0
  219. package/common/RequiredComponent.js +0 -32
  220. /package/{tabs-nav → grid}/types.js +0 -0
  221. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -4,12 +4,20 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
+ import { HalstackProvider } from "../HalstackContext";
7
8
 
8
9
  export default {
9
10
  title: "Switch",
10
11
  component: DxcSwitch,
11
12
  };
12
13
 
14
+ const opinionatedTheme = {
15
+ switch: {
16
+ checkedBaseColor: "#5f249f",
17
+ fontColor: "#000000",
18
+ },
19
+ };
20
+
13
21
  export const Chromatic = () => (
14
22
  <>
15
23
  <ExampleContainer>
@@ -134,5 +142,30 @@ export const Chromatic = () => (
134
142
  <Title title="FitContent size" theme="light" level={4} />
135
143
  <DxcSwitch label="FitContent" size="fitContent" />
136
144
  </ExampleContainer>
145
+ <Title title="Opinionated theme" theme="light" level={2} />
146
+ <ExampleContainer>
147
+ <Title title="Checked" theme="light" level={4} />
148
+ <HalstackProvider theme={opinionatedTheme}>
149
+ <DxcSwitch label="Switch" defaultChecked />
150
+ </HalstackProvider>
151
+ </ExampleContainer>
152
+ <ExampleContainer>
153
+ <Title title="Default" theme="light" level={4} />
154
+ <HalstackProvider theme={opinionatedTheme}>
155
+ <DxcSwitch label="Switch" />
156
+ </HalstackProvider>
157
+ </ExampleContainer>
158
+ <ExampleContainer>
159
+ <Title title="Disabled" theme="light" level={4} />
160
+ <HalstackProvider theme={opinionatedTheme}>
161
+ <DxcSwitch label="Switch" disabled />
162
+ </HalstackProvider>
163
+ </ExampleContainer>
164
+ <ExampleContainer>
165
+ <Title title="Disabled checked" theme="light" level={4} />
166
+ <HalstackProvider theme={opinionatedTheme}>
167
+ <DxcSwitch label="Switch" disabled defaultChecked />
168
+ </HalstackProvider>
169
+ </ExampleContainer>
137
170
  </>
138
171
  );
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Switch = _interopRequireDefault(require("./Switch"));
9
+ var _Switch = _interopRequireDefault(require("./Switch.tsx"));
10
10
 
11
11
  describe("Switch component tests", function () {
12
12
  test("Switch renders with correct text", function () {
@@ -185,28 +185,41 @@ describe("Switch component tests", function () {
185
185
  expect(onChange.mock.calls[1][0]).toBe(false);
186
186
  });
187
187
  test("Renders with correct initial value and initial state when it is uncontrolled", function () {
188
- var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
188
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
189
189
  label: "Default label",
190
190
  defaultChecked: true,
191
- value: "test-defaultChecked"
191
+ value: "test-defaultChecked",
192
+ name: "test"
193
+ }));
194
+ var switchEl = component.getByRole("switch");
195
+ var inputEl = component.container.querySelector("input[name=\"test\"]");
196
+ expect(inputEl.value).toBe("test-defaultChecked");
197
+ expect(switchEl.getAttribute("aria-checked")).toBe("true");
198
+ });
199
+ test("Renders with correct aria attributes", function () {
200
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
201
+ label: "Default label"
192
202
  })),
203
+ getByText = _render10.getByText,
193
204
  getByRole = _render10.getByRole;
194
205
 
195
- var inputEl = getByRole("switch");
196
- expect(inputEl.checked).toBe(true);
197
- expect(inputEl.value).toBe("test-defaultChecked");
198
- expect(inputEl.getAttribute("aria-checked")).toBe("true");
206
+ var switchEl = getByRole("switch");
207
+ var label = getByText("Default label");
208
+ expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
209
+ expect(switchEl.getAttribute("aria-checked")).toBe("false");
199
210
  });
200
- test("Renders with correct aria attributes", function () {
211
+ test("Renders disabled switch correctly", function () {
201
212
  var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
202
- label: "Default label"
213
+ label: "Default label",
214
+ disabled: true
203
215
  })),
204
- getByRole = _render11.getByRole,
205
- getByText = _render11.getByText;
216
+ getByText = _render11.getByText,
217
+ getByRole = _render11.getByRole;
206
218
 
207
- var inputEl = getByRole("switch");
219
+ var switchEl = getByRole("switch");
208
220
  var label = getByText("Default label");
209
- expect(inputEl.getAttribute("aria-labelledby")).toBe(label.id);
210
- expect(inputEl.getAttribute("aria-checked")).toBe("false");
221
+ expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
222
+ expect(switchEl.getAttribute("aria-checked")).toBe("false");
223
+ expect(switchEl.getAttribute("aria-disabled")).toBe("true");
211
224
  });
212
225
  });
package/switch/types.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- export declare type Margin = {
1
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ declare type Margin = {
3
3
  top?: Space;
4
4
  bottom?: Space;
5
5
  left?: Space;
6
6
  right?: Space;
7
7
  };
8
- export declare type SwitchPropsType = {
8
+ declare type Props = {
9
9
  /**
10
10
  * Initial state of the switch, only when it is uncontrolled.
11
11
  */
@@ -59,3 +59,8 @@ export declare type SwitchPropsType = {
59
59
  */
60
60
  tabIndex?: number;
61
61
  };
62
+ /**
63
+ * Reference to the component.
64
+ */
65
+ export declare type RefType = HTMLDivElement;
66
+ export default Props;
package/table/Table.js CHANGED
@@ -17,9 +17,9 @@ var _react = _interopRequireDefault(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
- var _variables = require("../common/variables.js");
20
+ var _variables = require("../common/variables");
21
21
 
22
- var _utils = require("../common/utils.js");
22
+ var _utils = require("../common/utils");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
@@ -66,7 +66,7 @@ var DxcTableContainer = _styledComponents["default"].div(_templateObject || (_te
66
66
  return props.theme.scrollBarTrackColor;
67
67
  });
68
68
 
69
- var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n border-collapse: collapse;\n width: 100%;\n\n & tr {\n border-bottom: ", ";\n }\n & td {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th:first-child {\n border-top-left-radius: ", ";\n }\n & th:last-child {\n border-top-right-radius: ", ";\n }\n"])), function (props) {
69
+ var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n border-collapse: collapse;\n width: 100%;\n\n & tr {\n border-bottom: ", ";\n height: 60px;\n }\n & td {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th:first-child {\n border-top-left-radius: ", ";\n }\n & th:last-child {\n border-top-right-radius: ", ";\n }\n & td:last-child {\n padding-right: 40px;\n }\n"])), function (props) {
70
70
  return "".concat(props.theme.rowSeparatorThickness, " ").concat(props.theme.rowSeparatorStyle, " ").concat(props.theme.rowSeparatorColor);
71
71
  }, function (props) {
72
72
  return props.theme.dataBackgroundColor;
@@ -2,12 +2,21 @@ import React from "react";
2
2
  import DxcTable from "./Table";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import { HalstackProvider } from "../HalstackContext";
5
6
 
6
7
  export default {
7
8
  title: "Table",
8
9
  component: DxcTable,
9
10
  };
10
11
 
12
+ const opinionatedTheme = {
13
+ table: {
14
+ baseColor: "#5f249f",
15
+ headerFontColor: "#ffffff",
16
+ cellFontColor: "#000000",
17
+ },
18
+ };
19
+
11
20
  export const Chromatic = () => (
12
21
  <>
13
22
  <ExampleContainer>
@@ -271,7 +280,77 @@ export const Chromatic = () => (
271
280
  <td>Cell 9</td>
272
281
  </tr>
273
282
  </DxcTable>
274
- <hr />
283
+ </ExampleContainer>
284
+ <Title title="Opinionated theme" theme="light" level={2} />
285
+ <ExampleContainer>
286
+ <HalstackProvider theme={opinionatedTheme}>
287
+ <DxcTable>
288
+ <tr>
289
+ <th>
290
+ header<br></br>subheader
291
+ </th>
292
+ <th>
293
+ header<br></br>subheader
294
+ </th>
295
+ <th>
296
+ header<br></br>subheader
297
+ </th>
298
+ </tr>
299
+ <tr>
300
+ <td>
301
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
302
+ dolore magna aliqua.
303
+ </td>
304
+ <td>
305
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
306
+ consequat.
307
+ </td>
308
+ <td>
309
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
310
+ </td>
311
+ </tr>
312
+ <tr>
313
+ <td>cell data</td>
314
+ <td>cell data</td>
315
+ <td>cell data</td>
316
+ </tr>
317
+ <tr>
318
+ <td>cell data</td>
319
+ <td>cell data</td>
320
+ <td>cell data</td>
321
+ </tr>
322
+ <tr>
323
+ <td>cell data</td>
324
+ <td>cell data</td>
325
+ <td>cell data</td>
326
+ </tr>
327
+ <tr>
328
+ <td>cell data</td>
329
+ <td>cell data</td>
330
+ <td>cell data</td>
331
+ </tr>
332
+ <tr>
333
+ <td>cell data</td>
334
+ <td>cell data</td>
335
+ <td>cell data</td>
336
+ </tr>
337
+ <tr>
338
+ <td>cell data</td>
339
+ <td>cell data</td>
340
+ <td>cell data</td>
341
+ </tr>
342
+ <tr>
343
+ <td>cell data</td>
344
+ <td>cell data</td>
345
+ <td>cell data</td>
346
+ </tr>
347
+ <tr>
348
+ <td>cell data</td>
349
+ <td>cell data</td>
350
+ <td>cell data</td>
351
+ </tr>
352
+ </DxcTable>
353
+ </HalstackProvider>
275
354
  </ExampleContainer>
276
355
  </>
277
356
  );
@@ -6,11 +6,11 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Table = _interopRequireDefault(require("./Table"));
9
+ var _Table = _interopRequireDefault(require("./Table.tsx"));
10
10
 
11
11
  describe("Table component tests", function () {
12
12
  test("Table renders with correct content", function () {
13
- var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Table["default"], null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "header-1"), /*#__PURE__*/_react["default"].createElement("th", null, "header-2"), /*#__PURE__*/_react["default"].createElement("th", null, "header-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-1"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-2"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-4"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-5"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-6")))),
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Table["default"], null, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "header-1"), /*#__PURE__*/_react["default"].createElement("th", null, "header-2"), /*#__PURE__*/_react["default"].createElement("th", null, "header-3"))), /*#__PURE__*/_react["default"].createElement("tbody", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-1"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-2"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-4"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-5"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-6"))))),
14
14
  getByText = _render.getByText;
15
15
 
16
16
  expect(getByText("header-1")).toBeTruthy();
package/tabs/Tab.js CHANGED
@@ -17,11 +17,11 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
17
17
 
18
18
  var _Badge = _interopRequireDefault(require("../badge/Badge"));
19
19
 
20
- var _Typography = _interopRequireDefault(require("../typography/Typography"));
20
+ var _BaseTypography = _interopRequireDefault(require("../utils/BaseTypography"));
21
21
 
22
22
  var _useTheme = _interopRequireDefault(require("../useTheme"));
23
23
 
24
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
25
25
 
26
26
  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); }
27
27
 
@@ -42,7 +42,6 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
42
42
  type: "button",
43
43
  tabIndex: tabIndex,
44
44
  disabled: tab.isDisabled,
45
- "aria-disabled": tab.isDisabled,
46
45
  "aria-selected": active,
47
46
  hasLabelAndIcon: hasLabelAndIcon,
48
47
  iconPosition: iconPosition,
@@ -57,15 +56,15 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
57
56
  _onMouseLeave();
58
57
  }
59
58
  }, /*#__PURE__*/_react["default"].createElement(MainLabelContainer, {
60
- hasBadge: tab.notificationNumber,
59
+ notificationNumber: tab.notificationNumber,
61
60
  hasLabelAndIcon: hasLabelAndIcon,
62
61
  iconPosition: iconPosition
63
62
  }, tab.icon && /*#__PURE__*/_react["default"].createElement(TabIconContainer, {
64
63
  hasLabelAndIcon: hasLabelAndIcon,
65
64
  iconPosition: iconPosition
66
- }, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement(TabIcon, {
65
+ }, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
67
66
  src: tab.icon
68
- }) : tab.icon), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
67
+ }) : tab.icon), /*#__PURE__*/_react["default"].createElement(_BaseTypography["default"], {
69
68
  color: tab.isDisabled ? colorsTheme.tabs.disabledFontColor : active ? colorsTheme.tabs.selectedFontColor : colorsTheme.tabs.unselectedFontColor,
70
69
  fontFamily: colorsTheme.tabs.fontFamily,
71
70
  fontSize: colorsTheme.tabs.fontSize,
@@ -74,15 +73,15 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
74
73
  textAlign: "center",
75
74
  letterSpacing: "0.025em",
76
75
  lineHeight: "1.715em"
77
- }, tab.label)), tab.notificationNumber && tab.notificationNumber && /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
76
+ }, tab.label)), tab.notificationNumber && /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
78
77
  hasLabelAndIcon: hasLabelAndIcon,
79
78
  iconPosition: iconPosition
80
79
  }, /*#__PURE__*/_react["default"].createElement(_Badge["default"], {
81
- notificationText: tab.notificationNumber > 99 ? "+99" : tab.notificationNumber
80
+ notificationText: typeof tab.notificationNumber === "number" && tab.notificationNumber > 99 ? "+99" : tab.notificationNumber
82
81
  })));
83
82
  });
84
83
 
85
- var TabContainer = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n text-transform: ", ";\n overflow: hidden;\n flex-shrink: 0;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n user-select: none;\n vertical-align: middle;\n justify-content: center;\n min-width: 90px;\n max-width: 360px;\n padding: ", ";\n height: ", ";\n min-height: ", ";\n background-color: ", ";\n svg {\n color: ", ";\n }\n\n &:hover {\n background-color: ", ";\n }\n\n &:active {\n background-color: ", ";\n }\n\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n\n &[aria-selected=\"true\"] {\n background-color: ", ";\n svg {\n color: ", ";\n }\n opacity: 1;\n }\n\n &[aria-disabled=\"true\"] {\n background-color: ", " !important;\n cursor: not-allowed !important;\n pointer-events: all;\n font-style: ", ";\n svg {\n color: ", ";\n }\n outline: none !important;\n > div {\n opacity: 0.5;\n }\n }\n"])), function (props) {
84
+ var TabContainer = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n text-transform: ", ";\n overflow: hidden;\n flex-shrink: 0;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n user-select: none;\n vertical-align: middle;\n justify-content: center;\n min-width: 90px;\n max-width: 360px;\n padding: ", ";\n height: ", ";\n min-height: ", ";\n background-color: ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n svg {\n color: ", ";\n }\n\n &[aria-selected=\"true\"] {\n background-color: ", ";\n svg {\n color: ", ";\n }\n opacity: 1;\n }\n\n &:disabled {\n background-color: ", " !important;\n cursor: not-allowed !important;\n pointer-events: all;\n font-style: ", ";\n outline: none !important;\n\n svg {\n color: ", ";\n }\n > div {\n opacity: 0.5;\n }\n }\n"])), function (props) {
86
85
  return props.theme.fontTextTransform;
87
86
  }, function (props) {
88
87
  return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "12px 16px" || "8px 16px";
@@ -92,14 +91,14 @@ var TabContainer = _styledComponents["default"].button(_templateObject || (_temp
92
91
  return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "47px" || "71px";
93
92
  }, function (props) {
94
93
  return props.theme.unselectedBackgroundColor;
95
- }, function (props) {
96
- return props.theme.unselectedIconColor;
97
94
  }, function (props) {
98
95
  return "".concat(props.theme.hoverBackgroundColor, " !important");
99
96
  }, function (props) {
100
97
  return "".concat(props.theme.pressedBackgroundColor, " !important");
101
98
  }, function (props) {
102
99
  return props.theme.focusOutline;
100
+ }, function (props) {
101
+ return props.theme.unselectedIconColor;
103
102
  }, function (props) {
104
103
  return props.theme.selectedBackgroundColor;
105
104
  }, function (props) {
@@ -119,17 +118,15 @@ var BadgeContainer = _styledComponents["default"].div(_templateObject2 || (_temp
119
118
  var MainLabelContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n align-items: center;\n margin-left: ", ";\n"])), function (props) {
120
119
  return props.hasLabelAndIcon && props.iconPosition === "top" && "column" || "row";
121
120
  }, function (props) {
122
- return props.hasBadge ? typeof props.hasBadge === "number" ? "calc(".concat(props.theme.badgeWidthWithNotificationNumber, " + 12px)") : "calc(".concat(props.theme.badgeWidth, " + 12px)") : "unset";
121
+ return props.notificationNumber ? typeof props.notificationNumber === "number" ? "calc(".concat(props.theme.badgeWidthWithNotificationNumber, " + 12px)") : "calc(".concat(props.theme.badgeWidth, " + 12px)") : "unset";
123
122
  });
124
123
 
125
- var TabIconContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (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) {
124
+ var TabIconContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n margin-bottom: ", ";\n margin-right: ", ";\n\n img,\n svg {\n height: 22px;\n width: 22px;\n }\n"])), function (props) {
126
125
  return props.hasLabelAndIcon && props.iconPosition === "top" && "8px" || "";
127
126
  }, function (props) {
128
127
  return props.hasLabelAndIcon && props.iconPosition === "left" && "12px" || "";
129
128
  });
130
129
 
131
- var TabIcon = _styledComponents["default"].img(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n display: inline-flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n"])));
132
-
133
130
  var _default = /*#__PURE__*/_react["default"].memo(Tab);
134
131
 
135
132
  exports["default"] = _default;
package/tabs/Tabs.js CHANGED
@@ -19,7 +19,7 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
- var _variables = require("../common/variables.js");
22
+ var _variables = require("../common/variables");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
@@ -168,21 +168,32 @@ var DxcTabs = function DxcTabs(_ref) {
168
168
 
169
169
  setMinHeightTabs((refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current2 = refTabList.current) === null || _refTabList$current2 === void 0 ? void 0 : _refTabList$current2.offsetHeight) + 1);
170
170
  }, [refTabList]);
171
+ (0, _react.useEffect)(function () {
172
+ if (activeTabIndex >= 0) {
173
+ var _refTabs$current$acti, _refTabs$current$acti2;
171
174
 
172
- var handleSelected = function handleSelected(newValue) {
173
- var _refTabs$current4, _refTabs$current5;
175
+ setActiveIndicatorWidth(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$acti = refTabs.current[activeTabIndex]) === null || _refTabs$current$acti === void 0 ? void 0 : _refTabs$current$acti.offsetWidth);
176
+ setActiveIndicatorLeft(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$acti2 = refTabs.current[activeTabIndex]) === null || _refTabs$current$acti2 === void 0 ? void 0 : _refTabs$current$acti2.offsetLeft);
177
+ }
178
+ }, [activeTabIndex]);
174
179
 
180
+ var handleSelected = function handleSelected(newValue) {
175
181
  activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : setInnerActiveTabIndex(newValue);
176
182
  onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(newValue);
177
- setActiveIndicatorWidth(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current4 = refTabs.current[activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : newValue]) === null || _refTabs$current4 === void 0 ? void 0 : _refTabs$current4.offsetWidth);
178
- setActiveIndicatorLeft(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current5 = refTabs.current[activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : newValue]) === null || _refTabs$current5 === void 0 ? void 0 : _refTabs$current5.offsetLeft);
183
+
184
+ if (activeTabIndex === undefined) {
185
+ var _refTabs$current$newV, _refTabs$current$newV2;
186
+
187
+ setActiveIndicatorWidth(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$newV = refTabs.current[newValue]) === null || _refTabs$current$newV === void 0 ? void 0 : _refTabs$current$newV.offsetWidth);
188
+ setActiveIndicatorLeft(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$newV2 = refTabs.current[newValue]) === null || _refTabs$current$newV2 === void 0 ? void 0 : _refTabs$current$newV2.offsetLeft);
189
+ }
179
190
  };
180
191
 
181
192
  var scrollLeft = function scrollLeft() {
182
193
  var _refTabList$current3;
183
194
 
184
195
  var scrollWidth = (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current3 = refTabList.current) === null || _refTabList$current3 === void 0 ? void 0 : _refTabList$current3.offsetWidth) * 0.75;
185
- var moveX;
196
+ var moveX = 0;
186
197
 
187
198
  if (countClick <= scrollWidth) {
188
199
  moveX = 0;
@@ -202,7 +213,7 @@ var DxcTabs = function DxcTabs(_ref) {
202
213
  var _refTabList$current4, _refTabList$current5;
203
214
 
204
215
  var scrollWidth = (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current4 = refTabList.current) === null || _refTabList$current4 === void 0 ? void 0 : _refTabList$current4.offsetWidth) * 0.75;
205
- var moveX;
216
+ var moveX = 0;
206
217
 
207
218
  if (countClick + scrollWidth + (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current5 = refTabList.current) === null || _refTabList$current5 === void 0 ? void 0 : _refTabList$current5.offsetWidth) >= totalTabsWidth) {
208
219
  var _refTabList$current6;
@@ -253,10 +264,10 @@ var DxcTabs = function DxcTabs(_ref) {
253
264
  };
254
265
 
255
266
  var setScrollFocus = function setScrollFocus(actualIndex) {
256
- var _refTabs$current6, _refTabList$current8;
267
+ var _refTabs$current4, _refTabList$current8;
257
268
 
258
269
  var sumPrev = 0;
259
- refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current6 = refTabs.current) === null || _refTabs$current6 === void 0 ? void 0 : _refTabs$current6.map(function (item, index) {
270
+ refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current4 = refTabs.current) === null || _refTabs$current4 === void 0 ? void 0 : _refTabs$current4.map(function (item, index) {
260
271
  if (index <= actualIndex) {
261
272
  sumPrev += item.offsetWidth;
262
273
  }
@@ -332,9 +343,8 @@ var DxcTabs = function DxcTabs(_ref) {
332
343
  iconPosition: iconPosition
333
344
  }, /*#__PURE__*/_react["default"].createElement(ScrollIndicator, {
334
345
  onClick: scrollLeft,
335
- scrollLeftEnabled: scrollLeftEnabled,
336
346
  enabled: enabledIndicator,
337
- "aria-disabled": !scrollLeftEnabled,
347
+ disabled: !scrollLeftEnabled,
338
348
  "aria-label": translatedLabels.tabs.scrollLeft,
339
349
  tabIndex: scrollLeftEnabled ? tabIndex : -1,
340
350
  minHeightTabs: minHeightTabs
@@ -375,16 +385,15 @@ var DxcTabs = function DxcTabs(_ref) {
375
385
  "aria-disabled": isActiveIndicatorDisabled
376
386
  }))), /*#__PURE__*/_react["default"].createElement(ScrollIndicator, {
377
387
  onClick: scrollRight,
378
- scrollRightEnabled: scrollRightEnabled,
379
388
  enabled: enabledIndicator,
380
- "aria-disabled": !scrollRightEnabled,
389
+ disabled: !scrollRightEnabled,
381
390
  "aria-label": translatedLabels.tabs.scrollRight,
382
391
  tabIndex: scrollRightEnabled ? tabIndex : -1,
383
392
  minHeightTabs: minHeightTabs
384
393
  }, arrowIcons.right))));
385
394
  };
386
395
 
387
- var Underline = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n height: ", ";\n background-color: ", ";\n z-index: 1;\n"])), function (props) {
396
+ var Underline = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: ", ";\n background-color: ", ";\n"])), function (props) {
388
397
  return props.theme.dividerThickness;
389
398
  }, function (props) {
390
399
  return props.theme.dividerColor;
@@ -402,22 +411,20 @@ var TabsContainer = _styledComponents["default"].div(_templateObject2 || (_templ
402
411
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
403
412
  });
404
413
 
405
- var Tabs = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: ", ";\n height: ", ";\n display: flex;\n overflow: hidden;\n"])), function (props) {
414
+ var Tabs = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: ", ";\n height: ", ";\n display: flex;\n overflow: hidden;\n background-color: ", ";\n"])), function (props) {
406
415
  return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "48px" || "72px";
407
416
  }, function (props) {
408
417
  return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "48px" || "72px";
418
+ }, function (props) {
419
+ return props.theme.unselectedBackgroundColor;
409
420
  });
410
421
 
411
- var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: ", ";\n background-color: #ffffff;\n font-size: 1.25rem;\n min-width: ", ";\n height: ", "px;\n padding: 0;\n justify-content: center;\n cursor: pointer;\n border-bottom: solid ", " ", ";\n box-sizing: border-box;\n border: none;\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n &:active {\n background-color: ", ";\n }\n svg {\n height: 20px;\n width: 20px;\n align-self: center;\n fill: ", ";\n visibility: visible;\n }\n &[aria-disabled=\"true\"] {\n pointer-events: none;\n cursor: default;\n svg {\n visibility: hidden;\n }\n &:focus {\n outline: none;\n }\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n }\n"])), function (props) {
422
+ var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: ", ";\n justify-content: center;\n min-width: ", ";\n height: ", "px;\n padding: 0;\n border: none;\n background-color: #ffffff;\n font-size: 1.25rem;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n &:active {\n background-color: ", ";\n }\n &:disabled {\n cursor: default;\n svg {\n visibility: hidden;\n }\n &:focus {\n outline: none;\n }\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n }\n\n svg {\n align-self: center;\n height: 20px;\n width: 20px;\n fill: ", ";\n }\n"])), function (props) {
412
423
  return props.enabled ? "flex" : "none";
413
424
  }, function (props) {
414
425
  return props.theme.scrollButtonsWidth;
415
426
  }, function (props) {
416
427
  return props.minHeightTabs - 1;
417
- }, function (props) {
418
- return props.theme.dividerThickness;
419
- }, function (props) {
420
- return props.theme.dividerColor;
421
428
  }, function (props) {
422
429
  return "".concat(props.theme.hoverBackgroundColor, " !important");
423
430
  }, function (props) {
@@ -428,19 +435,19 @@ var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_
428
435
  return props.theme.unselectedFontColor;
429
436
  });
430
437
 
431
- var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n left: ", ";\n width: ", ";\n z-index: 2;\n background-color: ", ";\n bottom: 0;\n height: ", ";\n position: absolute;\n &[aria-disabled=\"true\"] {\n background-color: ", ";\n display: none;\n }\n"])), function (props) {
438
+ var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n bottom: 0;\n left: ", ";\n width: ", ";\n height: ", ";\n background-color: ", ";\n &[aria-disabled=\"true\"] {\n background-color: ", ";\n display: none;\n }\n"])), function (props) {
432
439
  return "".concat(props.tabLeft, "px");
433
440
  }, function (props) {
434
441
  return "".concat(props.tabWidth, "px");
435
- }, function (props) {
436
- return props.theme.selectedUnderlineColor;
437
442
  }, function (props) {
438
443
  return props.theme.selectedUnderlineThickness;
444
+ }, function (props) {
445
+ return props.theme.selectedUnderlineColor;
439
446
  }, function (props) {
440
447
  return props.theme.disabledFontColor;
441
448
  });
442
449
 
443
- var TabsContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n z-index: 1;\n flex: 1 1 auto;\n display: inline-block;\n position: relative;\n white-space: nowrap;\n overflow-x: scroll;\n ::-webkit-scrollbar {\n display: none;\n }\n"])));
450
+ var TabsContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1 1 auto;\n display: inline-block;\n position: relative;\n white-space: nowrap;\n overflow-x: scroll;\n ::-webkit-scrollbar {\n display: none;\n }\n"])));
444
451
 
445
452
  var TabList = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n min-height: ", "px;\n"])), function (props) {
446
453
  return props.minHeightTabs;
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import DxcTabs from "./Tabs";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import { HalstackProvider } from "../HalstackContext";
5
6
 
6
7
  export default {
7
8
  title: "Tabs",
@@ -9,9 +10,8 @@ export default {
9
10
  };
10
11
 
11
12
  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" />
13
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" height="20" width="20" fill="currentColor">
14
+ <path d="m10 17-1.042-.938q-2.083-1.854-3.437-3.177-1.354-1.323-2.136-2.354Q2.604 9.5 2.302 8.646 2 7.792 2 6.896q0-1.854 1.271-3.125T6.396 2.5q1.021 0 1.979.438.958.437 1.625 1.229.667-.792 1.625-1.229.958-.438 1.979-.438 1.854 0 3.125 1.271T18 6.896q0 .896-.292 1.729-.291.833-1.073 1.854-.781 1.021-2.145 2.365-1.365 1.344-3.49 3.26Zm0-2.021q1.938-1.729 3.188-2.948 1.25-1.219 1.989-2.125.74-.906 1.031-1.614.292-.709.292-1.396 0-1.229-.833-2.063Q14.833 4 13.604 4q-.729 0-1.364.302-.636.302-1.094.844L10.417 6h-.834l-.729-.854q-.458-.542-1.114-.844Q7.083 4 6.396 4q-1.229 0-2.063.833-.833.834-.833 2.063 0 .687.271 1.364.271.678.989 1.573.719.896 1.98 2.125Q8 13.188 10 14.979Zm0-5.5Z" />
15
15
  </svg>
16
16
  );
17
17
 
@@ -74,10 +74,20 @@ const tabsNotification = tabs.map((tab, index) => ({
74
74
  notificationNumber: (index === 0 && true) || (index === 1 && 5) || (index === 2 && 200),
75
75
  }));
76
76
 
77
- const tabsIcon = tabs.map((tab) => ({ ...tab, icon: iconSVG }));
77
+ const tabsIcon = tabs.map((tab, index) =>
78
+ index <= tabs.length / 2
79
+ ? { ...tab, icon: "https://cdn-icons-png.flaticon.com/512/5039/5039041.png" }
80
+ : { ...tab, icon: iconSVG }
81
+ );
78
82
 
79
83
  const tabsNotificationIcon = tabsNotification.map((tab) => ({ ...tab, icon: iconSVG }));
80
84
 
85
+ const opinionatedTheme = {
86
+ tabs: {
87
+ baseColor: "#5f249f",
88
+ },
89
+ };
90
+
81
91
  export const Chromatic = () => (
82
92
  <>
83
93
  <ExampleContainer>
@@ -152,7 +162,37 @@ export const Chromatic = () => (
152
162
  <ExampleContainer>
153
163
  <Title title="Xxlarge margin" theme="light" level={4} />
154
164
  <DxcTabs tabs={tabs} margin="xxlarge" />
155
- <hr />
165
+ </ExampleContainer>
166
+ <Title title="Opinionated theme" theme="light" level={2} />
167
+ <ExampleContainer>
168
+ <Title title="With icon and notification" theme="light" level={4} />
169
+ <HalstackProvider theme={opinionatedTheme}>
170
+ <DxcTabs tabs={tabsNotificationIcon} />
171
+ </HalstackProvider>
172
+ </ExampleContainer>
173
+ <ExampleContainer>
174
+ <Title title="Disabled" theme="light" level={4} />
175
+ <HalstackProvider theme={opinionatedTheme}>
176
+ <DxcTabs activeTabIndex={0} tabs={disabledTabs} />
177
+ </HalstackProvider>
178
+ </ExampleContainer>
179
+ <ExampleContainer pseudoState="pseudo-hover">
180
+ <Title title="Hovered" theme="light" level={4} />
181
+ <HalstackProvider theme={opinionatedTheme}>
182
+ <DxcTabs tabs={tabs} />
183
+ </HalstackProvider>
184
+ </ExampleContainer>
185
+ <ExampleContainer pseudoState="pseudo-focus">
186
+ <Title title="Focused" theme="light" level={4} />
187
+ <HalstackProvider theme={opinionatedTheme}>
188
+ <DxcTabs tabs={tabs} />
189
+ </HalstackProvider>
190
+ </ExampleContainer>
191
+ <ExampleContainer pseudoState="pseudo-active">
192
+ <Title title="Actived" theme="light" level={4} />
193
+ <HalstackProvider theme={opinionatedTheme}>
194
+ <DxcTabs tabs={tabs} />
195
+ </HalstackProvider>
156
196
  </ExampleContainer>
157
197
  </>
158
198
  );