@dxc-technology/halstack-react 0.0.0-3a65d35 → 0.0.0-3a698b0

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 (182) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1332 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.js +13 -24
  6. package/accordion/Accordion.stories.tsx +102 -13
  7. package/accordion/Accordion.test.js +1 -1
  8. package/accordion/types.d.ts +3 -3
  9. package/accordion-group/AccordionGroup.js +2 -2
  10. package/accordion-group/AccordionGroup.test.js +1 -1
  11. package/accordion-group/types.d.ts +2 -2
  12. package/alert/Alert.js +3 -5
  13. package/alert/Alert.stories.tsx +28 -0
  14. package/alert/Alert.test.js +1 -1
  15. package/bleed/Bleed.stories.tsx +1 -0
  16. package/box/Box.js +3 -5
  17. package/box/Box.stories.tsx +15 -0
  18. package/box/Box.test.js +1 -1
  19. package/button/Button.js +13 -16
  20. package/button/Button.stories.tsx +150 -8
  21. package/button/Button.test.js +1 -1
  22. package/button/types.d.ts +3 -3
  23. package/card/Card.js +12 -13
  24. package/card/Card.stories.tsx +12 -13
  25. package/card/Card.test.js +1 -1
  26. package/checkbox/Checkbox.d.ts +2 -2
  27. package/checkbox/Checkbox.js +18 -17
  28. package/checkbox/Checkbox.stories.tsx +131 -59
  29. package/checkbox/Checkbox.test.js +1 -1
  30. package/checkbox/types.d.ts +6 -2
  31. package/chip/Chip.js +18 -26
  32. package/chip/Chip.stories.tsx +96 -9
  33. package/chip/Chip.test.js +3 -5
  34. package/common/utils.d.ts +1 -0
  35. package/common/utils.js +4 -4
  36. package/common/variables.d.ts +1625 -0
  37. package/common/variables.js +286 -290
  38. package/date-input/Calendar.d.ts +4 -0
  39. package/date-input/Calendar.js +258 -0
  40. package/date-input/DateInput.js +134 -237
  41. package/date-input/DateInput.stories.tsx +199 -33
  42. package/date-input/DateInput.test.js +494 -138
  43. package/date-input/DatePicker.d.ts +4 -0
  44. package/date-input/DatePicker.js +146 -0
  45. package/date-input/Icons.d.ts +6 -0
  46. package/date-input/Icons.js +75 -0
  47. package/date-input/YearPicker.d.ts +4 -0
  48. package/date-input/YearPicker.js +126 -0
  49. package/date-input/types.d.ts +51 -0
  50. package/dialog/Dialog.js +61 -74
  51. package/dialog/Dialog.stories.tsx +211 -159
  52. package/dialog/Dialog.test.js +302 -3
  53. package/dialog/types.d.ts +2 -2
  54. package/dropdown/Dropdown.js +37 -37
  55. package/dropdown/Dropdown.stories.tsx +210 -84
  56. package/dropdown/Dropdown.test.js +20 -24
  57. package/dropdown/DropdownMenu.js +8 -18
  58. package/dropdown/DropdownMenuItem.js +4 -17
  59. package/dropdown/types.d.ts +3 -3
  60. package/file-input/FileInput.d.ts +2 -2
  61. package/file-input/FileInput.js +174 -220
  62. package/file-input/FileInput.stories.tsx +122 -11
  63. package/file-input/FileInput.test.js +14 -14
  64. package/file-input/FileItem.d.ts +4 -14
  65. package/file-input/FileItem.js +39 -63
  66. package/file-input/types.d.ts +17 -0
  67. package/flex/Flex.stories.tsx +19 -24
  68. package/footer/Footer.js +6 -8
  69. package/footer/Footer.stories.tsx +91 -0
  70. package/footer/Footer.test.js +14 -26
  71. package/grid/Grid.d.ts +7 -0
  72. package/grid/Grid.js +91 -0
  73. package/grid/Grid.stories.tsx +219 -0
  74. package/grid/types.d.ts +115 -0
  75. package/header/Header.d.ts +3 -2
  76. package/header/Header.js +21 -23
  77. package/header/Header.stories.tsx +149 -6
  78. package/header/Header.test.js +2 -2
  79. package/header/types.d.ts +2 -2
  80. package/heading/Heading.js +1 -1
  81. package/heading/Heading.test.js +1 -1
  82. package/inset/Inset.stories.tsx +1 -0
  83. package/layout/ApplicationLayout.d.ts +1 -1
  84. package/layout/ApplicationLayout.js +1 -1
  85. package/link/Link.js +3 -3
  86. package/link/Link.stories.tsx +60 -0
  87. package/link/Link.test.js +2 -4
  88. package/link/types.d.ts +2 -2
  89. package/main.d.ts +3 -2
  90. package/main.js +9 -1
  91. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  92. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  93. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  94. package/{tabs-nav → nav-tabs}/Tab.js +37 -17
  95. package/nav-tabs/types.js +5 -0
  96. package/number-input/NumberInput.test.js +6 -7
  97. package/package.json +8 -13
  98. package/paginator/Icons.d.ts +5 -0
  99. package/paginator/Icons.js +16 -28
  100. package/paginator/Paginator.js +6 -14
  101. package/paginator/Paginator.stories.tsx +24 -0
  102. package/paginator/Paginator.test.js +44 -47
  103. package/paragraph/Paragraph.d.ts +3 -4
  104. package/paragraph/Paragraph.js +5 -5
  105. package/password-input/PasswordInput.test.js +1 -1
  106. package/progress-bar/ProgressBar.d.ts +2 -2
  107. package/progress-bar/ProgressBar.js +5 -5
  108. package/progress-bar/ProgressBar.stories.jsx +35 -2
  109. package/progress-bar/ProgressBar.test.js +1 -1
  110. package/progress-bar/types.d.ts +4 -3
  111. package/quick-nav/QuickNav.stories.tsx +14 -0
  112. package/radio-group/RadioGroup.stories.tsx +131 -18
  113. package/radio-group/RadioGroup.test.js +1 -1
  114. package/resultsetTable/Icons.d.ts +7 -0
  115. package/resultsetTable/Icons.js +51 -0
  116. package/resultsetTable/ResultsetTable.js +49 -106
  117. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  118. package/resultsetTable/ResultsetTable.test.js +41 -64
  119. package/resultsetTable/types.d.ts +1 -1
  120. package/select/Listbox.d.ts +1 -1
  121. package/select/Listbox.js +5 -34
  122. package/select/Option.js +11 -24
  123. package/select/Select.js +56 -35
  124. package/select/Select.stories.tsx +494 -150
  125. package/select/Select.test.js +76 -81
  126. package/select/types.d.ts +2 -2
  127. package/sidenav/Sidenav.js +9 -11
  128. package/sidenav/Sidenav.stories.tsx +148 -46
  129. package/slider/Slider.d.ts +2 -2
  130. package/slider/Slider.js +11 -11
  131. package/slider/Slider.stories.tsx +57 -0
  132. package/slider/Slider.test.js +1 -1
  133. package/slider/types.d.ts +6 -2
  134. package/spinner/Spinner.js +17 -23
  135. package/spinner/Spinner.stories.jsx +53 -27
  136. package/spinner/Spinner.test.js +1 -1
  137. package/switch/Switch.d.ts +3 -3
  138. package/switch/Switch.js +7 -6
  139. package/switch/Switch.stories.tsx +33 -0
  140. package/switch/Switch.test.js +1 -1
  141. package/switch/types.d.ts +8 -3
  142. package/table/Table.js +2 -2
  143. package/table/Table.stories.jsx +80 -1
  144. package/table/Table.test.js +2 -2
  145. package/tabs/Tab.js +12 -15
  146. package/tabs/Tabs.js +11 -17
  147. package/tabs/Tabs.stories.tsx +45 -5
  148. package/tabs/Tabs.test.js +4 -5
  149. package/tabs/types.d.ts +2 -2
  150. package/tag/Tag.js +7 -9
  151. package/tag/Tag.stories.tsx +14 -1
  152. package/tag/Tag.test.js +1 -1
  153. package/text-input/Suggestion.js +34 -7
  154. package/text-input/TextInput.js +10 -14
  155. package/text-input/TextInput.stories.tsx +92 -4
  156. package/text-input/TextInput.test.js +587 -635
  157. package/textarea/Textarea.js +3 -4
  158. package/textarea/Textarea.stories.jsx +60 -1
  159. package/textarea/Textarea.test.js +2 -4
  160. package/toggle-group/ToggleGroup.js +7 -4
  161. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  162. package/toggle-group/ToggleGroup.test.js +1 -1
  163. package/toggle-group/types.d.ts +1 -1
  164. package/typography/Typography.d.ts +2 -2
  165. package/typography/Typography.js +14 -113
  166. package/typography/Typography.stories.tsx +1 -1
  167. package/useTheme.d.ts +1234 -1
  168. package/useTheme.js +1 -1
  169. package/useTranslatedLabels.d.ts +84 -1
  170. package/utils/BaseTypography.d.ts +21 -0
  171. package/utils/BaseTypography.js +108 -0
  172. package/utils/FocusLock.d.ts +13 -0
  173. package/utils/FocusLock.js +139 -0
  174. package/wizard/Wizard.js +2 -2
  175. package/wizard/Wizard.stories.tsx +20 -0
  176. package/wizard/Wizard.test.js +1 -1
  177. package/wizard/types.d.ts +5 -6
  178. package/common/RequiredComponent.js +0 -32
  179. /package/{tabs-nav → grid}/types.js +0 -0
  180. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  181. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  182. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
@@ -2,67 +2,84 @@ import React from "react";
2
2
  import DxcSpinner from "./Spinner";
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: "Spinner",
8
9
  component: DxcSpinner,
9
10
  };
10
11
 
12
+ const opinionatedTheme = {
13
+ spinner: {
14
+ accentColor: "#5f249f",
15
+ baseColor: "#ffffff",
16
+ fontColor: "#000000",
17
+ overlayColor: "#a46ede",
18
+ overlayFontColor: "#ffffff",
19
+ },
20
+ };
21
+
11
22
  export const Chromatic = () => (
12
23
  <>
13
24
  <ExampleContainer>
14
25
  <Title title="With label" theme="light" level={4} />
15
- <DxcSpinner label="Label" value="50"></DxcSpinner>
26
+ <DxcSpinner label="Label" value={50}></DxcSpinner>
16
27
  <Title title="With value label" theme="light" level={4} />
17
- <DxcSpinner value="50" showValue></DxcSpinner>
28
+ <DxcSpinner value={50} showValue></DxcSpinner>
18
29
  <Title title="With label and value label" theme="light" level={4} />
19
- <DxcSpinner label="Label" value="50" showValue></DxcSpinner>
30
+ <DxcSpinner label="Label" value={50} showValue></DxcSpinner>
20
31
  <Title title="With 100%" theme="light" level={4} />
21
- <DxcSpinner label="Label" value="100" showValue></DxcSpinner>
32
+ <DxcSpinner label="Label" value={100} showValue></DxcSpinner>
22
33
  </ExampleContainer>
23
34
  <Title title="Modes" theme="light" level={2} />
24
35
  <ExampleContainer>
25
36
  <Title title="Mode large" theme="light" level={4} />
26
- <DxcSpinner mode="large" value="50"></DxcSpinner>
37
+ <DxcSpinner mode="large" value={50}></DxcSpinner>
27
38
  <Title title="Mode small" theme="light" level={4} />
28
- <DxcSpinner mode="small" value="50"></DxcSpinner>
39
+ <DxcSpinner mode="small" value={50}></DxcSpinner>
29
40
  <Title title="Mode small with 100%" theme="light" level={4} />
30
- <DxcSpinner mode="small" value="100" showValue></DxcSpinner>
41
+ <DxcSpinner mode="small" value={100} showValue></DxcSpinner>
31
42
  </ExampleContainer>
32
43
  <Title title="Margins with large mode" theme="light" level={2} />
33
44
  <ExampleContainer>
34
45
  <Title title="Xxsmall margin" theme="light" level={4} />
35
- <DxcSpinner margin="xxsmall" value="75"></DxcSpinner>
46
+ <DxcSpinner margin="xxsmall" value={75}></DxcSpinner>
36
47
  <Title title="Xsmall margin" theme="light" level={4} />
37
- <DxcSpinner margin="xsmall" value="75"></DxcSpinner>
48
+ <DxcSpinner margin="xsmall" value={75}></DxcSpinner>
38
49
  <Title title="Small margin" theme="light" level={4} />
39
- <DxcSpinner margin="small" value="75"></DxcSpinner>
50
+ <DxcSpinner margin="small" value={75}></DxcSpinner>
40
51
  <Title title="Medium margin" theme="light" level={4} />
41
- <DxcSpinner margin="medium" value="75"></DxcSpinner>
52
+ <DxcSpinner margin="medium" value={75}></DxcSpinner>
42
53
  <Title title="Large margin" theme="light" level={4} />
43
- <DxcSpinner margin="large" value="75"></DxcSpinner>
54
+ <DxcSpinner margin="large" value={75}></DxcSpinner>
44
55
  <Title title="Xlarge margin" theme="light" level={4} />
45
- <DxcSpinner margin="xlarge" value="75"></DxcSpinner>
56
+ <DxcSpinner margin="xlarge" value={75}></DxcSpinner>
46
57
  <Title title="Xxlarge margin" theme="light" level={4} />
47
- <DxcSpinner margin="xxlarge" value="75"></DxcSpinner>
58
+ <DxcSpinner margin="xxlarge" value={75}></DxcSpinner>
48
59
  </ExampleContainer>
49
60
  <Title title="Margins with small mode" theme="light" level={2} />
50
61
  <ExampleContainer>
51
62
  <Title title="Xxsmall margin" theme="light" level={4} />
52
- <DxcSpinner margin="xxsmall" mode="small" value="75"></DxcSpinner>
63
+ <DxcSpinner margin="xxsmall" mode="small" value={75}></DxcSpinner>
53
64
  <Title title="Xsmall margin" theme="light" level={4} />
54
- <DxcSpinner margin="xsmall" mode="small" value="75"></DxcSpinner>
65
+ <DxcSpinner margin="xsmall" mode="small" value={75}></DxcSpinner>
55
66
  <Title title="Small margin" theme="light" level={4} />
56
- <DxcSpinner margin="small" mode="small" value="75"></DxcSpinner>
67
+ <DxcSpinner margin="small" mode="small" value={75}></DxcSpinner>
57
68
  <Title title="Medium margin" theme="light" level={4} />
58
- <DxcSpinner margin="medium" mode="small" value="75"></DxcSpinner>
69
+ <DxcSpinner margin="medium" mode="small" value={75}></DxcSpinner>
59
70
  <Title title="Large margin" theme="light" level={4} />
60
- <DxcSpinner margin="large" mode="small" value="75"></DxcSpinner>
71
+ <DxcSpinner margin="large" mode="small" value={75}></DxcSpinner>
61
72
  <Title title="Xlarge margin" theme="light" level={4} />
62
- <DxcSpinner margin="xlarge" mode="small" value="75"></DxcSpinner>
73
+ <DxcSpinner margin="xlarge" mode="small" value={75}></DxcSpinner>
63
74
  <Title title="Xxlarge margin" theme="light" level={4} />
64
- <DxcSpinner margin="xxlarge" mode="small" value="75"></DxcSpinner>
65
- <hr />
75
+ <DxcSpinner margin="xxlarge" mode="small" value={75}></DxcSpinner>
76
+ </ExampleContainer>
77
+ <Title title="Opinionated theme" theme="light" level={2} />
78
+ <ExampleContainer>
79
+ <Title title="With label and value label" theme="light" level={4} />
80
+ <HalstackProvider theme={opinionatedTheme}>
81
+ <DxcSpinner label="Label" value={50} showValue></DxcSpinner>
82
+ </HalstackProvider>
66
83
  </ExampleContainer>
67
84
  </>
68
85
  );
@@ -70,34 +87,43 @@ export const Chromatic = () => (
70
87
  export const SpinnerOverlay = () => (
71
88
  <ExampleContainer>
72
89
  <Title title="Mode overlay" theme="light" level={4} />
73
- <DxcSpinner mode="overlay" value="25"></DxcSpinner>
90
+ <DxcSpinner mode="overlay" value={25}></DxcSpinner>
74
91
  </ExampleContainer>
75
92
  );
76
93
 
77
94
  export const SpinnerOverlayWith100 = () => (
78
95
  <ExampleContainer>
79
96
  <Title title="Mode overlay" theme="light" level={4} />
80
- <DxcSpinner mode="overlay" value="100"></DxcSpinner>
97
+ <DxcSpinner mode="overlay" value={100}></DxcSpinner>
81
98
  </ExampleContainer>
82
99
  );
83
100
 
84
101
  export const SpinnerOverlayWithLabel = () => (
85
102
  <ExampleContainer>
86
103
  <Title title="Mode overlay" theme="light" level={4} />
87
- <DxcSpinner mode="overlay" value="50" label="Label"></DxcSpinner>
104
+ <DxcSpinner mode="overlay" value={50} label="Label"></DxcSpinner>
88
105
  </ExampleContainer>
89
106
  );
90
107
 
91
108
  export const SpinnerOverlayWithValue = () => (
92
109
  <ExampleContainer>
93
110
  <Title title="Mode overlay" theme="light" level={4} />
94
- <DxcSpinner mode="overlay" value="50" showValue></DxcSpinner>
111
+ <DxcSpinner mode="overlay" value={50} showValue></DxcSpinner>
95
112
  </ExampleContainer>
96
113
  );
97
114
 
98
115
  export const SpinnerOverlayWithValueAndLabel = () => (
99
116
  <ExampleContainer>
100
117
  <Title title="Mode overlay" theme="light" level={4} />
101
- <DxcSpinner mode="overlay" label="Label" value="50" showValue></DxcSpinner>
118
+ <DxcSpinner mode="overlay" label="Label" value={50} showValue></DxcSpinner>
119
+ </ExampleContainer>
120
+ );
121
+
122
+ export const SpinnerOverlayWithValueAndLabelOpinionated = () => (
123
+ <ExampleContainer>
124
+ <HalstackProvider theme={opinionatedTheme}>
125
+ <Title title="Mode overlay" theme="light" level={4} />
126
+ <DxcSpinner mode="overlay" label="Label" value={50} showValue></DxcSpinner>
127
+ </HalstackProvider>
102
128
  </ExampleContainer>
103
129
  );
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Spinner = _interopRequireDefault(require("./Spinner"));
9
+ var _Spinner = _interopRequireDefault(require("./Spinner.tsx"));
10
10
 
11
11
  describe("Spinner component tests", function () {
12
12
  test("Spinner renders with correct label", function () {
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
2
- import { SwitchPropsType } from "./types";
3
- declare const DxcSwitch: ({ defaultChecked, checked, value, label, labelPosition, name, disabled, optional, onChange, margin, size, tabIndex, }: SwitchPropsType) => JSX.Element;
1
+ import React from "react";
2
+ import SwitchPropsType from "./types";
3
+ declare const DxcSwitch: React.ForwardRefExoticComponent<SwitchPropsType & React.RefAttributes<HTMLDivElement>>;
4
4
  export default DxcSwitch;
package/switch/Switch.js CHANGED
@@ -21,9 +21,9 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
22
  var _uuid = require("uuid");
23
23
 
24
- var _variables = require("../common/variables.js");
24
+ var _variables = require("../common/variables");
25
25
 
26
- var _utils = require("../common/utils.js");
26
+ var _utils = require("../common/utils");
27
27
 
28
28
  var _useTheme = _interopRequireDefault(require("../useTheme"));
29
29
 
@@ -37,7 +37,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
37
37
 
38
38
  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; }
39
39
 
40
- var DxcSwitch = function DxcSwitch(_ref) {
40
+ var DxcSwitch = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
41
41
  var defaultChecked = _ref.defaultChecked,
42
42
  checked = _ref.checked,
43
43
  value = _ref.value,
@@ -102,7 +102,8 @@ var DxcSwitch = function DxcSwitch(_ref) {
102
102
  size: size,
103
103
  onKeyDown: handleOnKeyDown,
104
104
  disabled: disabled,
105
- onClick: !disabled ? handlerSwitchChange : undefined
105
+ onClick: !disabled ? handlerSwitchChange : undefined,
106
+ ref: ref
106
107
  }, labelPosition === "before" && label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
107
108
  id: labelId,
108
109
  labelPosition: labelPosition,
@@ -133,7 +134,7 @@ var DxcSwitch = function DxcSwitch(_ref) {
133
134
  backgroundType: backgroundType,
134
135
  label: label
135
136
  }, optional && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, translatedLabels.formFields.optionalLabel), " ", label)));
136
- };
137
+ });
137
138
 
138
139
  var sizes = {
139
140
  small: "60px",
@@ -233,7 +234,7 @@ var SwitchBase = _styledComponents["default"].label(_templateObject3 || (_templa
233
234
 
234
235
  var ValueInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
235
236
 
236
- var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 15px;\n width: ", ";\n height: ", ";\n position: relative;\n cursor: ", ";\n\n &:focus-visible {\n outline: none;\n ::before {\n outline: ", ";\n outline-offset: 6px;\n }\n }\n\n /* Thumb element */\n ::before {\n content: \"\";\n transform: initial;\n position: absolute;\n width: ", ";\n height: ", ";\n border-radius: 50%;\n z-index: 1;\n box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%);\n bottom: -6px;\n left: -4px;\n transform: translateX(0px);\n background-color: ", ";\n }\n\n /* Unchecked */\n background-color: ", ";\n\n /* Checked */\n &[aria-checked=\"true\"] {\n background-color: ", ";\n ::before {\n transform: translateX(", ");\n background-color: ", ";\n }\n }\n"])), function (props) {
237
+ var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 15px;\n width: ", ";\n height: ", ";\n position: relative;\n cursor: ", ";\n\n &:focus-visible {\n outline: none;\n ::before {\n outline: ", ";\n outline-offset: 6px;\n }\n }\n\n /* Thumb element */\n ::before {\n content: \"\";\n transform: initial;\n position: absolute;\n width: ", ";\n height: ", ";\n border-radius: 50%;\n box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%);\n bottom: -6px;\n left: -4px;\n transform: translateX(0px);\n background-color: ", ";\n }\n\n /* Unchecked */\n background-color: ", ";\n\n /* Checked */\n &[aria-checked=\"true\"] {\n background-color: ", ";\n ::before {\n transform: translateX(", ");\n background-color: ", ";\n }\n }\n"])), function (props) {
237
238
  return props.theme.trackWidth;
238
239
  }, function (props) {
239
240
  return props.theme.trackHeight;
@@ -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 () {
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
 
@@ -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;