@dxc-technology/halstack-react 0.0.0-b41d935 → 0.0.0-b4fde6b

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 (205) 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.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.d.ts +4 -3
  10. package/accordion-group/AccordionGroup.js +23 -44
  11. package/accordion-group/AccordionGroup.test.js +1 -1
  12. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  13. package/accordion-group/AccordionGroupAccordion.js +43 -0
  14. package/accordion-group/types.d.ts +2 -2
  15. package/alert/Alert.js +4 -8
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +1 -1
  18. package/bleed/Bleed.stories.tsx +1 -0
  19. package/box/Box.d.ts +1 -1
  20. package/box/Box.js +7 -26
  21. package/box/Box.stories.tsx +38 -51
  22. package/box/Box.test.js +1 -1
  23. package/box/types.d.ts +0 -12
  24. package/bulleted-list/BulletedList.js +4 -2
  25. package/bulleted-list/BulletedList.stories.tsx +7 -1
  26. package/bulleted-list/types.d.ts +31 -4
  27. package/button/Button.js +13 -16
  28. package/button/Button.stories.tsx +151 -9
  29. package/button/Button.test.js +1 -1
  30. package/button/types.d.ts +3 -3
  31. package/card/Card.js +12 -13
  32. package/card/Card.stories.tsx +12 -13
  33. package/card/Card.test.js +1 -1
  34. package/checkbox/Checkbox.d.ts +2 -2
  35. package/checkbox/Checkbox.js +7 -6
  36. package/checkbox/Checkbox.stories.tsx +52 -0
  37. package/checkbox/Checkbox.test.js +1 -1
  38. package/checkbox/types.d.ts +6 -2
  39. package/chip/Chip.js +28 -49
  40. package/chip/Chip.stories.tsx +121 -26
  41. package/chip/Chip.test.js +3 -5
  42. package/common/OpenSans.css +68 -80
  43. package/common/coreTokens.d.ts +146 -0
  44. package/common/coreTokens.js +167 -0
  45. package/common/utils.d.ts +1 -0
  46. package/common/utils.js +4 -4
  47. package/common/variables.d.ts +1482 -0
  48. package/common/variables.js +981 -1129
  49. package/date-input/Calendar.d.ts +4 -0
  50. package/date-input/Calendar.js +258 -0
  51. package/date-input/DateInput.js +134 -237
  52. package/date-input/DateInput.stories.tsx +199 -33
  53. package/date-input/DateInput.test.js +494 -138
  54. package/date-input/DatePicker.d.ts +4 -0
  55. package/date-input/DatePicker.js +146 -0
  56. package/date-input/Icons.d.ts +6 -0
  57. package/date-input/Icons.js +75 -0
  58. package/date-input/YearPicker.d.ts +4 -0
  59. package/date-input/YearPicker.js +126 -0
  60. package/date-input/types.d.ts +51 -0
  61. package/dialog/Dialog.d.ts +1 -1
  62. package/dialog/Dialog.js +55 -86
  63. package/dialog/Dialog.stories.tsx +145 -217
  64. package/dialog/Dialog.test.js +302 -3
  65. package/dialog/types.d.ts +0 -13
  66. package/dropdown/Dropdown.js +37 -37
  67. package/dropdown/Dropdown.stories.tsx +210 -84
  68. package/dropdown/Dropdown.test.js +20 -24
  69. package/dropdown/DropdownMenu.js +12 -18
  70. package/dropdown/DropdownMenuItem.js +4 -17
  71. package/dropdown/types.d.ts +3 -3
  72. package/file-input/FileInput.d.ts +2 -2
  73. package/file-input/FileInput.js +14 -15
  74. package/file-input/FileInput.stories.tsx +85 -2
  75. package/file-input/FileInput.test.js +1 -42
  76. package/file-input/FileItem.js +1 -0
  77. package/file-input/types.d.ts +4 -0
  78. package/flex/Flex.js +4 -2
  79. package/flex/Flex.stories.tsx +35 -26
  80. package/flex/types.d.ts +70 -5
  81. package/footer/Footer.d.ts +1 -1
  82. package/footer/Footer.js +8 -23
  83. package/footer/Footer.stories.tsx +18 -15
  84. package/footer/Footer.test.js +14 -26
  85. package/footer/types.d.ts +0 -6
  86. package/grid/Grid.d.ts +7 -0
  87. package/grid/Grid.js +91 -0
  88. package/grid/Grid.stories.tsx +219 -0
  89. package/grid/types.d.ts +115 -0
  90. package/header/Header.d.ts +3 -2
  91. package/header/Header.js +21 -23
  92. package/header/Header.stories.tsx +149 -6
  93. package/header/Header.test.js +2 -2
  94. package/header/types.d.ts +2 -2
  95. package/heading/Heading.js +1 -1
  96. package/heading/Heading.test.js +1 -1
  97. package/inset/Inset.stories.tsx +2 -1
  98. package/layout/ApplicationLayout.d.ts +4 -4
  99. package/layout/ApplicationLayout.js +1 -1
  100. package/layout/types.d.ts +2 -3
  101. package/link/Link.js +4 -4
  102. package/link/Link.stories.tsx +60 -0
  103. package/link/Link.test.js +2 -4
  104. package/link/types.d.ts +2 -2
  105. package/main.d.ts +3 -2
  106. package/main.js +9 -1
  107. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  108. package/{tabs-nav → nav-tabs}/NavTabs.js +8 -11
  109. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +110 -6
  110. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  111. package/{tabs-nav → nav-tabs}/Tab.js +48 -32
  112. package/{tabs-nav → nav-tabs}/types.d.ts +8 -9
  113. package/nav-tabs/types.js +5 -0
  114. package/number-input/NumberInput.test.js +6 -7
  115. package/package.json +8 -13
  116. package/paginator/Icons.d.ts +5 -0
  117. package/paginator/Icons.js +16 -28
  118. package/paginator/Paginator.js +7 -15
  119. package/paginator/Paginator.stories.tsx +24 -0
  120. package/paginator/Paginator.test.js +57 -47
  121. package/paragraph/Paragraph.d.ts +3 -4
  122. package/paragraph/Paragraph.js +5 -5
  123. package/password-input/PasswordInput.test.js +1 -1
  124. package/progress-bar/ProgressBar.d.ts +2 -2
  125. package/progress-bar/ProgressBar.js +5 -5
  126. package/progress-bar/ProgressBar.stories.jsx +35 -2
  127. package/progress-bar/ProgressBar.test.js +1 -1
  128. package/progress-bar/types.d.ts +4 -3
  129. package/quick-nav/QuickNav.stories.tsx +14 -0
  130. package/radio-group/Radio.js +10 -10
  131. package/radio-group/RadioGroup.js +8 -10
  132. package/radio-group/RadioGroup.stories.tsx +131 -18
  133. package/radio-group/RadioGroup.test.js +1 -1
  134. package/resultsetTable/Icons.d.ts +7 -0
  135. package/resultsetTable/Icons.js +51 -0
  136. package/resultsetTable/ResultsetTable.js +49 -106
  137. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  138. package/resultsetTable/ResultsetTable.test.js +41 -64
  139. package/resultsetTable/types.d.ts +1 -1
  140. package/select/Listbox.d.ts +1 -1
  141. package/select/Listbox.js +5 -34
  142. package/select/Option.js +11 -24
  143. package/select/Select.js +56 -35
  144. package/select/Select.stories.tsx +494 -150
  145. package/select/Select.test.js +76 -81
  146. package/select/types.d.ts +2 -2
  147. package/sidenav/Icons.d.ts +7 -0
  148. package/sidenav/Icons.js +51 -0
  149. package/sidenav/Sidenav.d.ts +2 -2
  150. package/sidenav/Sidenav.js +66 -96
  151. package/sidenav/Sidenav.stories.tsx +165 -63
  152. package/sidenav/types.d.ts +21 -18
  153. package/slider/Slider.d.ts +2 -2
  154. package/slider/Slider.js +11 -11
  155. package/slider/Slider.stories.tsx +57 -0
  156. package/slider/Slider.test.js +1 -1
  157. package/slider/types.d.ts +6 -2
  158. package/spinner/Spinner.js +17 -23
  159. package/spinner/Spinner.stories.jsx +53 -27
  160. package/spinner/Spinner.test.js +1 -1
  161. package/switch/Switch.d.ts +3 -3
  162. package/switch/Switch.js +7 -6
  163. package/switch/Switch.stories.tsx +33 -0
  164. package/switch/Switch.test.js +1 -1
  165. package/switch/types.d.ts +8 -3
  166. package/table/Table.js +2 -2
  167. package/table/Table.stories.jsx +80 -1
  168. package/table/Table.test.js +2 -2
  169. package/tabs/Tab.js +12 -15
  170. package/tabs/Tabs.js +11 -17
  171. package/tabs/Tabs.stories.tsx +45 -5
  172. package/tabs/Tabs.test.js +4 -5
  173. package/tabs/types.d.ts +2 -2
  174. package/tag/Tag.js +7 -9
  175. package/tag/Tag.stories.tsx +14 -1
  176. package/tag/Tag.test.js +1 -1
  177. package/text-input/Suggestion.js +34 -7
  178. package/text-input/TextInput.js +11 -15
  179. package/text-input/TextInput.stories.tsx +93 -5
  180. package/text-input/TextInput.test.js +587 -635
  181. package/textarea/Textarea.js +3 -4
  182. package/textarea/Textarea.stories.jsx +60 -1
  183. package/textarea/Textarea.test.js +2 -4
  184. package/toggle-group/ToggleGroup.d.ts +2 -2
  185. package/toggle-group/ToggleGroup.js +7 -4
  186. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  187. package/toggle-group/ToggleGroup.test.js +1 -1
  188. package/toggle-group/types.d.ts +1 -1
  189. package/typography/Typography.d.ts +2 -2
  190. package/typography/Typography.js +14 -113
  191. package/typography/Typography.stories.tsx +1 -1
  192. package/useTheme.d.ts +1234 -1
  193. package/useTheme.js +1 -1
  194. package/useTranslatedLabels.d.ts +84 -1
  195. package/utils/BaseTypography.d.ts +21 -0
  196. package/utils/BaseTypography.js +108 -0
  197. package/utils/FocusLock.d.ts +13 -0
  198. package/utils/FocusLock.js +138 -0
  199. package/wizard/Wizard.js +2 -2
  200. package/wizard/Wizard.stories.tsx +20 -0
  201. package/wizard/Wizard.test.js +1 -1
  202. package/wizard/types.d.ts +5 -6
  203. package/common/RequiredComponent.js +0 -32
  204. /package/{tabs-nav → grid}/types.js +0 -0
  205. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
package/header/Header.js CHANGED
@@ -23,7 +23,7 @@ var _Dropdown = _interopRequireDefault(require("../dropdown/Dropdown"));
23
23
 
24
24
  var _Icons = require("./Icons");
25
25
 
26
- var _variables = require("../common/variables.js");
26
+ var _variables = require("../common/variables");
27
27
 
28
28
  var _useTheme = _interopRequireDefault(require("../useTheme"));
29
29
 
@@ -39,14 +39,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
39
39
 
40
40
  var closeIcon = /*#__PURE__*/_react["default"].createElement("svg", {
41
41
  xmlns: "http://www.w3.org/2000/svg",
42
- height: "24",
43
42
  viewBox: "0 0 24 24",
43
+ height: "24",
44
44
  width: "24"
45
45
  }, /*#__PURE__*/_react["default"].createElement("path", {
46
- d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
47
- }), /*#__PURE__*/_react["default"].createElement("path", {
48
- d: "M0 0h24v24H0z",
49
- fill: "none"
46
+ d: "M6.4 19 5 17.6l5.6-5.6L5 6.4 6.4 5l5.6 5.6L17.6 5 19 6.4 13.4 12l5.6 5.6-1.4 1.4-5.6-5.6Z"
50
47
  }));
51
48
 
52
49
  var hamburgerIcon = /*#__PURE__*/_react["default"].createElement("svg", {
@@ -62,7 +59,7 @@ var Dropdown = function Dropdown(props) {
62
59
  return /*#__PURE__*/_react["default"].createElement(HeaderDropdown, null, /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], props));
63
60
  };
64
61
 
65
- var HeaderDropdown = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n button {\n background-color: transparent;\n :hover {\n background-color: transparent;\n }\n }\n"])));
62
+ var HeaderDropdown = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n button {\n background-color: transparent;\n :hover {\n background-color: transparent;\n }\n }\n"])));
66
63
 
67
64
  var getLogoElement = function getLogoElement(themeInput, logoLabel) {
68
65
  if (!themeInput) return _Icons.dxcLogo;else if (typeof themeInput === "string") return /*#__PURE__*/_react["default"].createElement(LogoImg, {
@@ -110,9 +107,9 @@ var DxcHeader = function DxcHeader(_ref2) {
110
107
  isMenuVisible = _useState4[0],
111
108
  setIsMenuVisible = _useState4[1];
112
109
 
113
- var handleResize = function handleResize() {
110
+ var handleResize = (0, _react.useCallback)(function () {
114
111
  setIsResponsive(window.matchMedia("(max-width: ".concat(_variables.responsiveSizes.medium, "rem)")).matches);
115
- };
112
+ }, []);
116
113
 
117
114
  var handleMenu = function handleMenu() {
118
115
  if (isResponsive && !isMenuVisible) {
@@ -134,7 +131,7 @@ var DxcHeader = function DxcHeader(_ref2) {
134
131
  return function () {
135
132
  window.removeEventListener("resize", handleResize);
136
133
  };
137
- }, []);
134
+ }, [handleResize]);
138
135
  (0, _react.useEffect)(function () {
139
136
  !isResponsive && setIsMenuVisible(false);
140
137
  }, [isResponsive]);
@@ -158,7 +155,8 @@ var DxcHeader = function DxcHeader(_ref2) {
158
155
  }, /*#__PURE__*/_react["default"].createElement(ResponsiveIconsContainer, null, /*#__PURE__*/_react["default"].createElement(ResponsiveLogoContainer, null, headerResponsiveLogo), /*#__PURE__*/_react["default"].createElement(CloseAction, {
159
156
  tabIndex: tabIndex,
160
157
  onClick: handleMenu,
161
- "aria-label": translatedLabels.header.closeIcon
158
+ "aria-label": translatedLabels.header.closeIcon,
159
+ title: translatedLabels.header.closeIcon
162
160
  }, closeIcon)), /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
163
161
  color: colorsTheme.header.menuBackgroundColor
164
162
  }, /*#__PURE__*/_react["default"].createElement(Content, {
@@ -183,7 +181,9 @@ var DxcHeader = function DxcHeader(_ref2) {
183
181
 
184
182
  DxcHeader.Dropdown = Dropdown;
185
183
 
186
- var HeaderContainer = _styledComponents["default"].header(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: ", ";\n padding: ", ";\n background-color: ", ";\n border-bottom: ", ";\n min-height: ", ";\n box-shadow: none;\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: space-between;\n box-sizing: border-box;\n"])), function (props) {
184
+ var HeaderContainer = _styledComponents["default"].header(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n min-height: ", ";\n margin-bottom: ", ";\n padding: ", ";\n background-color: ", ";\n border-bottom: ", ";\n"])), function (props) {
185
+ return props.theme.minHeight;
186
+ }, function (props) {
187
187
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
188
188
  }, function (props) {
189
189
  return "".concat(props.theme.paddingTop, " ").concat(props.theme.paddingRight, " ").concat(props.theme.paddingBottom, " ").concat(props.theme.paddingLeft);
@@ -191,12 +191,10 @@ var HeaderContainer = _styledComponents["default"].header(_templateObject2 || (_
191
191
  return props.theme.backgroundColor;
192
192
  }, function (props) {
193
193
  return props.underlined && "".concat(props.theme.underlinedThickness, " ").concat(props.theme.underlinedStyle, " ").concat(props.theme.underlinedColor);
194
- }, function (props) {
195
- return props.theme.minHeight;
196
194
  });
197
195
 
198
196
  var LogoAnchor = _styledComponents["default"].a(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
199
- return props.interactuable ? "cursor: pointer" : "cursor: default; outline:none";
197
+ return props.interactuable ? "cursor: pointer" : "cursor: default; outline:none;";
200
198
  });
201
199
 
202
200
  var LogoImg = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
@@ -211,7 +209,7 @@ var LogoContainer = _styledComponents["default"].div(_templateObject5 || (_templ
211
209
  return props.theme.logoWidth;
212
210
  });
213
211
 
214
- var ChildContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n width: calc(100% - 186px);\n display: flex;\n align-items: center;\n flex-grow: 1;\n\n justify-content: flex-end;\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
212
+ var ChildContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-grow: 1;\n width: calc(100% - 186px);\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
215
213
  return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : "0px";
216
214
  }, function (props) {
217
215
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
@@ -223,9 +221,7 @@ var ChildContainer = _styledComponents["default"].div(_templateObject6 || (_temp
223
221
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
224
222
  });
225
223
 
226
- var ContentContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n width: calc(100% - 186px);\n display: flex;\n align-items: center;\n flex-grow: 1;\n color: ", ";\n\n justify-content: flex-end;\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
227
- return props.backgroundType === "dark" ? props.theme.contentColorOnDark : props.theme.contentColor;
228
- }, function (props) {
224
+ var ContentContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n flex-grow: 1;\n justify-content: flex-end;\n width: calc(100% - 186px);\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n color: ", ";\n"])), function (props) {
229
225
  return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : "0px";
230
226
  }, function (props) {
231
227
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
@@ -235,6 +231,8 @@ var ContentContainer = _styledComponents["default"].div(_templateObject7 || (_te
235
231
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.bottom ? _variables.spaces[props.padding.bottom] : "";
236
232
  }, function (props) {
237
233
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
234
+ }, function (props) {
235
+ return props.backgroundType === "dark" ? props.theme.contentColorOnDark : props.theme.contentColor;
238
236
  });
239
237
 
240
238
  var HamburguerTrigger = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 54px;\n cursor: pointer;\n border: 1px solid transparent;\n border-radius: 2px;\n background-color: transparent;\n :hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " auto 1px;\n }\n & > svg {\n fill: ", ";\n }\n font-family: ", ";\n font-style: ", ";\n font-size: ", ";\n text-transform: ", ";\n font-weight: ", ";\n color: ", ";\n"])), function (props) {
@@ -259,7 +257,7 @@ var HamburguerTrigger = _styledComponents["default"].button(_templateObject8 ||
259
257
 
260
258
  var MainContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-grow: 1;\n"])));
261
259
 
262
- var ResponsiveMenu = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n background-color: ", ";\n position: fixed;\n top: 0;\n right: 0;\n z-index: ", ";\n\n @media (max-width: ", "rem) and (min-width: ", "rem) {\n //tablet\n width: ", ";\n }\n\n @media (not((max-width: ", "rem) and (min-width: ", "rem))) {\n //mobile phones\n width: ", ";\n }\n\n height: 100vh;\n padding: 20px;\n transform: ", ";\n opacity: ", ";\n transition-property: transform, opacity;\n transition-duration: 0.6s;\n transition-timing-function: ease-in-out;\n box-sizing: border-box;\n"])), function (props) {
260
+ var ResponsiveMenu = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n background-color: ", ";\n position: fixed;\n top: 0;\n right: 0;\n z-index: ", ";\n\n @media (max-width: ", "rem) and (min-width: ", "rem) {\n width: ", ";\n }\n\n @media (not((max-width: ", "rem) and (min-width: ", "rem))) {\n width: ", ";\n }\n\n height: 100vh;\n padding: 20px;\n transform: ", ";\n opacity: ", ";\n transition-property: transform, opacity;\n transition-duration: 0.6s;\n transition-timing-function: ease-in-out;\n box-sizing: border-box;\n"])), function (props) {
263
261
  return props.theme.menuBackgroundColor;
264
262
  }, function (props) {
265
263
  return props.theme.menuZindex;
@@ -281,15 +279,15 @@ var ResponsiveLogoContainer = _styledComponents["default"].div(_templateObject11
281
279
 
282
280
  var ResponsiveIconsContainer = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n"])));
283
281
 
284
- var CloseAction = _styledComponents["default"].button(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 6px;\n height: 36px;\n width: 36px;\n border: 1px solid transparent;\n border-radius: 2px;\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n background-color: transparent;\n :focus,\n :focus-visible {\n outline: ", " auto 1px;\n }\n"])), function (props) {
282
+ var CloseAction = _styledComponents["default"].button(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-content: center;\n padding: 6px;\n border: unset;\n border-radius: 2px;\n background-color: transparent;\n cursor: pointer;\n\n :focus,\n :focus-visible {\n outline: ", " auto 1px;\n }\n\n svg {\n height: 24px;\n width: 24px;\n }\n"])), function (props) {
285
283
  return props.theme.hamburguerFocusColor;
286
284
  });
287
285
 
288
- var MenuContent = _styledComponents["default"].div(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n color: ", ";\n"])), function (props) {
286
+ var MenuContent = _styledComponents["default"].div(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n height: 100%;\n color: ", ";\n"])), function (props) {
289
287
  return props.backgroundType === "dark" ? props.theme.contentColorOnDark : props.theme.contentColor;
290
288
  });
291
289
 
292
- var Overlay = _styledComponents["default"].div(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: ", ";\n opacity: ", " !important;\n visibility: ", ";\n opacity: ", ";\n\n @media (max-width: ", "rem) {\n //mobile phones\n display: none;\n }\n\n transition: opacity 0.2s 0.2s ease-in-out;\n z-index: ", ";\n"])), function (props) {
290
+ var Overlay = _styledComponents["default"].div(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: ", ";\n opacity: ", " !important;\n visibility: ", ";\n opacity: ", ";\n\n @media (max-width: ", "rem) {\n display: none;\n }\n\n transition: opacity 0.2s 0.2s ease-in-out;\n z-index: ", ";\n"])), function (props) {
293
291
  return props.theme.overlayColor;
294
292
  }, function (props) {
295
293
  return props.theme.overlayOpacity;
@@ -1,8 +1,12 @@
1
1
  import React from "react";
2
2
  import DxcHeader from "./Header";
3
+ import DxcButton from "../button/Button";
3
4
  import Title from "../../.storybook/components/Title";
4
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
6
  import { userEvent, waitFor, within } from "@storybook/testing-library";
7
+ import DxcFlex from "../flex/Flex";
8
+ import DxcLink from "../link/Link";
9
+ import { HalstackProvider } from "../HalstackContext";
6
10
 
7
11
  export default {
8
12
  title: "Header",
@@ -16,16 +20,99 @@ const options: any = [
16
20
  },
17
21
  ];
18
22
 
23
+ const options2: any = [
24
+ {
25
+ value: 1,
26
+ label: "Home",
27
+ },
28
+ {
29
+ value: 2,
30
+ label: "Release notes",
31
+ },
32
+ {
33
+ value: 3,
34
+ label: "Sign out",
35
+ },
36
+ ];
37
+
38
+ const opinionatedTheme = {
39
+ header: {
40
+ baseColor: "#ffffff",
41
+ accentColor: "#000000",
42
+ fontColor: "#000000",
43
+ menuBaseColor: "#ffffff",
44
+ hamburguerColor: "#000000",
45
+ logo: (
46
+ <svg xmlns="http://www.w3.org/2000/svg" width="73" height="40" viewBox="0 0 73 40">
47
+ <g id="g10" transform="translate(0)">
48
+ <g id="g12">
49
+ <path
50
+ id="path14"
51
+ d="M91.613-28.177v2.514H90.231V-28.15l-2.415-3.82h1.616l1.5,2.532,1.526-2.532h1.571ZM83.9-25.555A3.15,3.15,0,0,1,80.6-28.8v-.018a3.231,3.231,0,0,1,3.294-3.262,3.442,3.442,0,0,1,2.469.865l-.87,1.054a2.311,2.311,0,0,0-1.643-.64,1.891,1.891,0,0,0-1.8,1.964v.018a1.886,1.886,0,0,0,1.9,2,2.2,2.2,0,0,0,1.3-.378v-.9H83.858v-1.2h2.729v2.738A4.071,4.071,0,0,1,83.9-25.555Zm-6.416-3.261a1.913,1.913,0,0,0-1.9-1.982A1.883,1.883,0,0,0,73.7-28.835v.018a1.913,1.913,0,0,0,1.9,1.982A1.883,1.883,0,0,0,77.486-28.8Zm-1.9,3.261a3.225,3.225,0,0,1-3.33-3.243v-.018A3.255,3.255,0,0,1,75.6-32.078a3.225,3.225,0,0,1,3.331,3.243v.018A3.255,3.255,0,0,1,75.583-25.555Zm-9.173-.108V-31.97h1.382v5.045h3.133v1.261Zm-3.433-3.153a1.913,1.913,0,0,0-1.9-1.982,1.883,1.883,0,0,0-1.886,1.964v.018a1.913,1.913,0,0,0,1.9,1.982A1.883,1.883,0,0,0,62.978-28.8Zm-1.9,3.261a3.225,3.225,0,0,1-3.33-3.243v-.018a3.255,3.255,0,0,1,3.348-3.262,3.225,3.225,0,0,1,3.331,3.243v.018A3.255,3.255,0,0,1,61.075-25.555Zm-6.508-.108-3.043-4.009v4.009H50.159V-31.97h1.275l2.944,3.883V-31.97h1.364v6.306Zm-8.246,0v-2.531h-2.55v2.531H42.389V-31.97h1.382v2.5h2.55v-2.5H47.7v6.306Zm-8.432.108A3.178,3.178,0,0,1,34.666-28.8v-.018a3.2,3.2,0,0,1,3.276-3.262,3.237,3.237,0,0,1,2.478.973l-.88,1.018a2.315,2.315,0,0,0-1.606-.712,1.866,1.866,0,0,0-1.822,1.964v.018a1.87,1.87,0,0,0,1.822,1.982,2.265,2.265,0,0,0,1.651-.739l.88.891A3.206,3.206,0,0,1,37.889-25.555Zm-9.805-.108V-31.97h4.739v1.235H29.458v1.279h2.962v1.234H29.458V-26.9h3.411v1.234ZM24.322-30.69v5.027H22.939V-30.69H21.028v-1.28h5.206v1.28H24.322"
52
+ transform="translate(-21.028 65.555)"
53
+ fill="#100f0d"
54
+ />
55
+ <path
56
+ id="path16"
57
+ d="M75.836-76.712a8.975,8.975,0,0,1,2.246-3.9,8.393,8.393,0,0,1,6.058-2.457h9.824v-5.67H84.139a14.611,14.611,0,0,0-10.232,4.221,14.509,14.509,0,0,0-3.076,4.536,11.913,11.913,0,0,0-.973,3.271Zm0,4.325a8.978,8.978,0,0,0,2.246,3.9,8.394,8.394,0,0,0,6.058,2.457h9.824v5.67H84.139A14.611,14.611,0,0,1,73.907-64.58a14.506,14.506,0,0,1-3.076-4.536,11.91,11.91,0,0,1-.973-3.271ZM57.522-69.832l-7.5,9.473H42.581L53.818-74.55,42.581-88.739H50.02l7.5,9.472,7.5-9.472h7.439L61.225-74.55l11.237,14.19H65.023Zm-12.336-6.88a11.935,11.935,0,0,0-.973-3.271,14.515,14.515,0,0,0-3.076-4.536A14.612,14.612,0,0,0,30.9-88.739H21.081v5.67H30.9a8.394,8.394,0,0,1,6.058,2.457,8.978,8.978,0,0,1,2.246,3.9Zm0,4.325a11.932,11.932,0,0,1-.973,3.271,14.511,14.511,0,0,1-3.076,4.536A14.611,14.611,0,0,1,30.9-60.359H21.081v-5.67H30.9a8.4,8.4,0,0,0,6.058-2.457,8.981,8.981,0,0,0,2.246-3.9h5.978"
58
+ transform="translate(-21.049 88.739)"
59
+ fill="#5f249f"
60
+ />
61
+ </g>
62
+ </g>
63
+ </svg>
64
+ ),
65
+ logoResponsive: (
66
+ <svg xmlns="http://www.w3.org/2000/svg" width="73" height="40" viewBox="0 0 73 40">
67
+ <g id="g10" transform="translate(0)">
68
+ <g id="g12">
69
+ <path
70
+ id="path14"
71
+ d="M91.613-28.177v2.514H90.231V-28.15l-2.415-3.82h1.616l1.5,2.532,1.526-2.532h1.571ZM83.9-25.555A3.15,3.15,0,0,1,80.6-28.8v-.018a3.231,3.231,0,0,1,3.294-3.262,3.442,3.442,0,0,1,2.469.865l-.87,1.054a2.311,2.311,0,0,0-1.643-.64,1.891,1.891,0,0,0-1.8,1.964v.018a1.886,1.886,0,0,0,1.9,2,2.2,2.2,0,0,0,1.3-.378v-.9H83.858v-1.2h2.729v2.738A4.071,4.071,0,0,1,83.9-25.555Zm-6.416-3.261a1.913,1.913,0,0,0-1.9-1.982A1.883,1.883,0,0,0,73.7-28.835v.018a1.913,1.913,0,0,0,1.9,1.982A1.883,1.883,0,0,0,77.486-28.8Zm-1.9,3.261a3.225,3.225,0,0,1-3.33-3.243v-.018A3.255,3.255,0,0,1,75.6-32.078a3.225,3.225,0,0,1,3.331,3.243v.018A3.255,3.255,0,0,1,75.583-25.555Zm-9.173-.108V-31.97h1.382v5.045h3.133v1.261Zm-3.433-3.153a1.913,1.913,0,0,0-1.9-1.982,1.883,1.883,0,0,0-1.886,1.964v.018a1.913,1.913,0,0,0,1.9,1.982A1.883,1.883,0,0,0,62.978-28.8Zm-1.9,3.261a3.225,3.225,0,0,1-3.33-3.243v-.018a3.255,3.255,0,0,1,3.348-3.262,3.225,3.225,0,0,1,3.331,3.243v.018A3.255,3.255,0,0,1,61.075-25.555Zm-6.508-.108-3.043-4.009v4.009H50.159V-31.97h1.275l2.944,3.883V-31.97h1.364v6.306Zm-8.246,0v-2.531h-2.55v2.531H42.389V-31.97h1.382v2.5h2.55v-2.5H47.7v6.306Zm-8.432.108A3.178,3.178,0,0,1,34.666-28.8v-.018a3.2,3.2,0,0,1,3.276-3.262,3.237,3.237,0,0,1,2.478.973l-.88,1.018a2.315,2.315,0,0,0-1.606-.712,1.866,1.866,0,0,0-1.822,1.964v.018a1.87,1.87,0,0,0,1.822,1.982,2.265,2.265,0,0,0,1.651-.739l.88.891A3.206,3.206,0,0,1,37.889-25.555Zm-9.805-.108V-31.97h4.739v1.235H29.458v1.279h2.962v1.234H29.458V-26.9h3.411v1.234ZM24.322-30.69v5.027H22.939V-30.69H21.028v-1.28h5.206v1.28H24.322"
72
+ transform="translate(-21.028 65.555)"
73
+ fill="#100f0d"
74
+ />
75
+ <path
76
+ id="path16"
77
+ d="M75.836-76.712a8.975,8.975,0,0,1,2.246-3.9,8.393,8.393,0,0,1,6.058-2.457h9.824v-5.67H84.139a14.611,14.611,0,0,0-10.232,4.221,14.509,14.509,0,0,0-3.076,4.536,11.913,11.913,0,0,0-.973,3.271Zm0,4.325a8.978,8.978,0,0,0,2.246,3.9,8.394,8.394,0,0,0,6.058,2.457h9.824v5.67H84.139A14.611,14.611,0,0,1,73.907-64.58a14.506,14.506,0,0,1-3.076-4.536,11.91,11.91,0,0,1-.973-3.271ZM57.522-69.832l-7.5,9.473H42.581L53.818-74.55,42.581-88.739H50.02l7.5,9.472,7.5-9.472h7.439L61.225-74.55l11.237,14.19H65.023Zm-12.336-6.88a11.935,11.935,0,0,0-.973-3.271,14.515,14.515,0,0,0-3.076-4.536A14.612,14.612,0,0,0,30.9-88.739H21.081v5.67H30.9a8.394,8.394,0,0,1,6.058,2.457,8.978,8.978,0,0,1,2.246,3.9Zm0,4.325a11.932,11.932,0,0,1-.973,3.271,14.511,14.511,0,0,1-3.076,4.536A14.611,14.611,0,0,1,30.9-60.359H21.081v-5.67H30.9a8.4,8.4,0,0,0,6.058-2.457,8.981,8.981,0,0,0,2.246-3.9h5.978"
78
+ transform="translate(-21.049 88.739)"
79
+ fill="#5f249f"
80
+ />
81
+ </g>
82
+ </g>
83
+ </svg>
84
+ ),
85
+ contentColor: "#000000",
86
+ overlayColor: "#000000b3",
87
+ },
88
+ };
89
+
19
90
  export const Chromatic = () => (
20
91
  <>
21
92
  <ExampleContainer>
22
93
  <Title title="Default with dropdown" theme="light" level={4} />
23
- <DxcHeader content={<DxcHeader.Dropdown options={options} label="Default Dropdown" />} />
94
+ <DxcHeader
95
+ content={<DxcHeader.Dropdown options={options} label="Default Dropdown" onSelectOption={() => {}} />}
96
+ />
24
97
  </ExampleContainer>
25
98
  <ExampleContainer>
26
99
  <Title title="Underlined with text" theme="light" level={4} />
27
100
  <DxcHeader underlined content={<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>} />
28
101
  </ExampleContainer>
102
+ <ExampleContainer>
103
+ <Title title="Underlined, dropdown and links" theme="light" level={4} />
104
+ <DxcHeader
105
+ content={
106
+ <DxcFlex alignItems="center" gap="4rem">
107
+ <DxcLink>Link 1</DxcLink>
108
+ <DxcLink>Link 2</DxcLink>
109
+ <DxcLink>Link 3</DxcLink>
110
+ <DxcHeader.Dropdown options={options2} label="Label" onSelectOption={() => {}} />
111
+ </DxcFlex>
112
+ }
113
+ underlined
114
+ />
115
+ </ExampleContainer>
29
116
  <Title title="Margins" theme="light" level={2} />
30
117
  <ExampleContainer>
31
118
  <Title title="Xxsmall margin" theme="light" level={4} />
@@ -62,7 +149,6 @@ export const Chromatic = () => (
62
149
  <DxcHeader underlined margin="xxlarge" />
63
150
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
64
151
  </ExampleContainer>
65
-
66
152
  <Title title="Paddings" theme="light" level={2} />
67
153
  <ExampleContainer>
68
154
  <Title title="Xxsmall padding" theme="light" level={4} />
@@ -92,6 +178,21 @@ export const Chromatic = () => (
92
178
  <Title title="Xxlarge padding" theme="light" level={4} />
93
179
  <DxcHeader underlined padding="xxlarge" />
94
180
  </ExampleContainer>
181
+ <Title title="Opinionated theme" theme="light" level={2} />
182
+ <ExampleContainer>
183
+ <HalstackProvider theme={opinionatedTheme}>
184
+ <DxcHeader
185
+ underlined
186
+ content={<DxcButton label={"Custom Button"} />}
187
+ responsiveContent={(closeHandler) => (
188
+ <>
189
+ <DxcButton label={"Custom Button"} onClick={closeHandler} />
190
+ Custom content
191
+ </>
192
+ )}
193
+ />
194
+ </HalstackProvider>
195
+ </ExampleContainer>
95
196
  </>
96
197
  );
97
198
 
@@ -120,13 +221,29 @@ const RespHeaderHover = () => (
120
221
  </ExampleContainer>
121
222
  );
122
223
 
123
- const RespHeaderMenu = () => (
224
+ const RespHeaderMenuMobile = () => (
225
+ <ExampleContainer>
226
+ <Title title="Responsive menu" theme="light" level={4} />
227
+ <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
228
+ </ExampleContainer>
229
+ );
230
+
231
+ const RespHeaderMenuTablet = () => (
124
232
  <ExampleContainer>
125
233
  <Title title="Responsive menu" theme="light" level={4} />
126
234
  <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
127
235
  </ExampleContainer>
128
236
  );
129
237
 
238
+ const RespHeaderMenuOpinionated = () => (
239
+ <ExampleContainer>
240
+ <Title title="Responsive menu" theme="light" level={4} />
241
+ <HalstackProvider theme={opinionatedTheme}>
242
+ <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
243
+ </HalstackProvider>
244
+ </ExampleContainer>
245
+ );
246
+
130
247
  ResponsiveHeader.parameters = {
131
248
  viewport: {
132
249
  defaultViewport: "iphonex",
@@ -158,14 +275,40 @@ ResponsiveHeaderHover.play = async ({ canvasElement }) => {
158
275
  await waitFor(() => canvas.findByText("Menu"));
159
276
  };
160
277
 
161
- export const ResponsiveHeaderMenu = RespHeaderMenu.bind({});
162
- ResponsiveHeaderMenu.parameters = {
278
+ export const ResponsiveHeaderMenuMobile = RespHeaderMenuMobile.bind({});
279
+ ResponsiveHeaderMenuMobile.parameters = {
163
280
  viewport: {
164
281
  defaultViewport: "iphonex",
165
282
  },
166
283
  chromatic: { viewports: [375] },
167
284
  };
168
- ResponsiveHeaderMenu.play = async ({ canvasElement }) => {
285
+ ResponsiveHeaderMenuMobile.play = async ({ canvasElement }) => {
286
+ const canvas = within(canvasElement);
287
+ await waitFor(() => canvas.findByText("Menu"));
288
+ await userEvent.click(canvas.getByText("Menu"));
289
+ };
290
+
291
+ export const ResponsiveHeaderMenuTablet = RespHeaderMenuTablet.bind({});
292
+ ResponsiveHeaderMenuTablet.parameters = {
293
+ viewport: {
294
+ defaultViewport: "pixelxl",
295
+ },
296
+ chromatic: { viewports: [720] },
297
+ };
298
+ ResponsiveHeaderMenuTablet.play = async ({ canvasElement }) => {
299
+ const canvas = within(canvasElement);
300
+ await waitFor(() => canvas.findByText("Menu"));
301
+ await userEvent.click(canvas.getByText("Menu"));
302
+ };
303
+
304
+ export const ResponsiveHeaderMenuOpinionated = RespHeaderMenuOpinionated.bind({});
305
+ ResponsiveHeaderMenuOpinionated.parameters = {
306
+ viewport: {
307
+ defaultViewport: "pixelxl",
308
+ },
309
+ chromatic: { viewports: [720] },
310
+ };
311
+ ResponsiveHeaderMenuOpinionated.play = async ({ canvasElement }) => {
169
312
  const canvas = within(canvasElement);
170
313
  await waitFor(() => canvas.findByText("Menu"));
171
314
  await userEvent.click(canvas.getByText("Menu"));
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Header = _interopRequireDefault(require("./Header"));
9
+ var _Header = _interopRequireDefault(require("./Header.tsx"));
10
10
 
11
11
  describe("Header component tests", function () {
12
12
  beforeAll(function () {
@@ -68,7 +68,7 @@ describe("Header component tests", function () {
68
68
  });
69
69
 
70
70
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Header["default"], {
71
- responsiveContent: function responsiveContent(closeMenu) {
71
+ responsiveContent: function responsiveContent() {
72
72
  return /*#__PURE__*/_react["default"].createElement("p", null, "header-child-text");
73
73
  }
74
74
  })),
package/header/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export declare type Padding = {
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Padding = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
@@ -17,7 +17,7 @@ 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
22
  var _useTheme = _interopRequireDefault(require("../useTheme"));
23
23
 
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Heading = _interopRequireDefault(require("./Heading"));
9
+ var _Heading = _interopRequireDefault(require("./Heading.tsx"));
10
10
 
11
11
  describe("Heading component tests", function () {
12
12
  test("Heading renders with default level", function () {
@@ -205,7 +205,7 @@ export const Chromatic = () => (
205
205
  </Container>
206
206
  <Title title="Inside a flex column" level={4} />
207
207
  <Container>
208
- <DxcFlex direction="column" gap="0.75rem">
208
+ <DxcFlex direction="column" gap="1rem">
209
209
  <Placeholder></Placeholder>
210
210
  <DxcInset top="0.25rem" right="1.5rem" bottom="2rem" left="4rem">
211
211
  <Placeholder></Placeholder>
@@ -225,5 +225,6 @@ const Placeholder = styled.div`
225
225
  min-height: 40px;
226
226
  min-width: 120px;
227
227
  border: 1px solid #a46ede;
228
+ border-radius: 0.5rem;
228
229
  background-color: #e5d5f6;
229
230
  `;
@@ -4,14 +4,14 @@ declare const DxcApplicationLayout: {
4
4
  ({ visibilityToggleLabel, header, sidenav, footer, children, }: AppLayoutPropsType): JSX.Element;
5
5
  Header: {
6
6
  ({ underlined, content, responsiveContent, onClick, margin, padding, tabIndex, }: import("../header/types").default): JSX.Element;
7
- Dropdown: (props: any) => JSX.Element;
7
+ Dropdown: (props: import("../dropdown/types").default) => JSX.Element;
8
8
  };
9
9
  Main: ({ children }: AppLayoutMainPropsType) => JSX.Element;
10
- Footer: ({ socialLinks, bottomLinks, copyright, children, padding, margin, tabIndex, }: import("../footer/types").default) => JSX.Element;
10
+ Footer: ({ socialLinks, bottomLinks, copyright, children, margin, tabIndex, }: import("../footer/types").default) => JSX.Element;
11
11
  SideNav: {
12
- ({ children, title }: import("../sidenav/types").default): JSX.Element;
12
+ ({ title, children }: import("../sidenav/types").default): JSX.Element;
13
13
  Section: ({ children }: import("../sidenav/types").SidenavSectionPropsType) => JSX.Element;
14
- Group: ({ children, title, collapsable, icon }: import("../sidenav/types").SidenavGroupPropsType) => JSX.Element;
14
+ Group: ({ title, collapsable, icon, children }: import("../sidenav/types").SidenavGroupPropsType) => JSX.Element;
15
15
  Link: React.ForwardRefExoticComponent<import("../sidenav/types").SidenavLinkPropsType & React.RefAttributes<HTMLAnchorElement>>;
16
16
  Title: ({ children }: import("../sidenav/types").SidenavTitlePropsType) => JSX.Element;
17
17
  };
@@ -23,7 +23,7 @@ var _Sidenav = _interopRequireDefault(require("../sidenav/Sidenav"));
23
23
 
24
24
  var _styledComponents = _interopRequireDefault(require("styled-components"));
25
25
 
26
- var _variables = require("../common/variables.js");
26
+ var _variables = require("../common/variables");
27
27
 
28
28
  var _Icons = require("./Icons");
29
29
 
package/layout/types.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  /// <reference types="react" />
2
- declare type ChildrenType = AppLayoutMainPropsType | AppLayoutSidenavPropsType;
3
2
  export declare type AppLayoutMainPropsType = {
4
3
  /**
5
4
  * Everything between the tags will be displayed as the content of the main part of the application.
@@ -35,8 +34,8 @@ declare type AppLayoutPropsType = {
35
34
  */
36
35
  footer?: React.ReactNode;
37
36
  /**
38
- * The area inside the sidenav. This area can be used to render custom content.
37
+ * Use the DxcApplicationLayout.Main provided to render main content.
39
38
  */
40
- children: React.ReactElement<ChildrenType> | React.ReactElement<ChildrenType>[];
39
+ children: React.ReactElement<AppLayoutMainPropsType>;
41
40
  };
42
41
  export default AppLayoutPropsType;
package/link/Link.js CHANGED
@@ -21,7 +21,7 @@ var _react = _interopRequireWildcard(require("react"));
21
21
 
22
22
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
23
 
24
- var _variables = require("../common/variables.js");
24
+ var _variables = require("../common/variables");
25
25
 
26
26
  var _useTheme = _interopRequireDefault(require("../useTheme"));
27
27
 
@@ -68,7 +68,7 @@ var DxcLink = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
68
68
  }, /*#__PURE__*/_react["default"].createElement(StyledLink, (0, _extends2["default"])({
69
69
  as: href ? "a" : "button",
70
70
  tabIndex: tabIndex,
71
- onClick: !disabled && onClick,
71
+ onClick: !disabled ? onClick : undefined,
72
72
  href: !disabled && href ? href : undefined,
73
73
  target: href ? newWindow ? "_blank" : "_self" : undefined,
74
74
  disabled: disabled,
@@ -82,7 +82,7 @@ var DxcLink = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
82
82
  })));
83
83
  });
84
84
 
85
- var StyledLink = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: baseline;\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font-size: ", ";\n font-weight: ", ";\n font-style: ", ";\n font-family: ", ";\n text-decoration-color: transparent;\n width: fit-content;\n\n ", "\n ", "\n color: ", ";\n ", "\n\n &:visited {\n color: ", ";\n &:hover {\n ", "\n }\n }\n &:hover {\n ", "\n }\n &:focus {\n border-radius: 2px;\n outline: 2px solid ", ";\n ", "\n }\n &:active {\n ", "\n }\n"])), function (props) {
85
+ var StyledLink = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: baseline;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font-size: ", ";\n font-weight: ", ";\n font-style: ", ";\n font-family: ", ";\n text-decoration-color: transparent;\n width: fit-content;\n ", "\n ", "\n color: ", ";\n ", "\n &:visited {\n color: ", ";\n &:hover {\n ", "\n }\n }\n &:hover {\n ", "\n }\n &:focus {\n border-radius: 2px;\n outline: 2px solid ", ";\n ", "\n }\n &:active {\n ", "\n }\n"])), function (props) {
86
86
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
87
87
  }, function (props) {
88
88
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
@@ -105,7 +105,7 @@ var StyledLink = _styledComponents["default"].div(_templateObject || (_templateO
105
105
  }, function (props) {
106
106
  return props.disabled && "cursor: default;";
107
107
  }, function (props) {
108
- return props.inheritColor ? "inherit" : !props.disabled ? props.theme.fontColor : props.theme.disabledColor;
108
+ return props.inheritColor ? "inherit" : !props.disabled ? props.theme.fontColor : props.theme.disabledFontColor;
109
109
  }, function (props) {
110
110
  return props.disabled ? "pointer-events: none;" : "";
111
111
  }, function (props) {
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import DxcLink from "./Link";
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: "Link",
@@ -19,6 +20,12 @@ const icon = (
19
20
  </svg>
20
21
  );
21
22
 
23
+ const opinionatedTheme = {
24
+ link: {
25
+ baseColor: "#5f249f",
26
+ },
27
+ };
28
+
22
29
  export const Chromatic = () => (
23
30
  <>
24
31
  <Title title="With anchor" theme="light" level={2} />
@@ -189,5 +196,58 @@ export const Chromatic = () => (
189
196
  Test
190
197
  </DxcLink>
191
198
  </ExampleContainer>
199
+ <Title title="Opinionated theme" theme="light" level={2} />
200
+ <ExampleContainer>
201
+ <Title title="Disabled" theme="light" level={4} />
202
+ <HalstackProvider theme={opinionatedTheme}>
203
+ <DxcLink disabled>Test</DxcLink>
204
+ </HalstackProvider>
205
+ </ExampleContainer>
206
+ <ExampleContainer>
207
+ <Title title="Icon before" theme="light" level={4} />
208
+ <HalstackProvider theme={opinionatedTheme}>
209
+ <DxcLink href="https://www.google.com" icon={icon} iconPosition="before">
210
+ Test
211
+ </DxcLink>
212
+ </HalstackProvider>
213
+ </ExampleContainer>
214
+ <ExampleContainer>
215
+ <Title title="Disabled" theme="light" level={4} />
216
+ <HalstackProvider theme={opinionatedTheme}>
217
+ <DxcLink disabled>Test</DxcLink>
218
+ </HalstackProvider>
219
+ </ExampleContainer>
220
+ <ExampleContainer>
221
+ <Title title="Icon after" theme="light" level={4} />{" "}
222
+ <HalstackProvider theme={opinionatedTheme}>
223
+ <DxcLink onClick={() => {}} icon={icon} iconPosition="after">
224
+ Test
225
+ </DxcLink>
226
+ </HalstackProvider>
227
+ </ExampleContainer>
228
+ <ExampleContainer pseudoState="pseudo-hover">
229
+ <Title title="With link hovered" theme="light" level={4} />
230
+ <HalstackProvider theme={opinionatedTheme}>
231
+ <DxcLink onClick={() => {}}>Test</DxcLink>
232
+ </HalstackProvider>
233
+ </ExampleContainer>
234
+ <ExampleContainer pseudoState="pseudo-focus">
235
+ <Title title="With link focused" theme="light" level={4} />
236
+ <HalstackProvider theme={opinionatedTheme}>
237
+ <DxcLink onClick={() => {}}>Test</DxcLink>
238
+ </HalstackProvider>
239
+ </ExampleContainer>
240
+ <ExampleContainer pseudoState="pseudo-active">
241
+ <Title title="With link active" theme="light" level={4} />
242
+ <HalstackProvider theme={opinionatedTheme}>
243
+ <DxcLink onClick={() => {}}>Test</DxcLink>
244
+ </HalstackProvider>
245
+ </ExampleContainer>
246
+ <ExampleContainer pseudoState="pseudo-visited">
247
+ <HalstackProvider theme={opinionatedTheme}>
248
+ <Title title="With link visited" theme="light" level={4} />
249
+ <DxcLink href="https://www.google.com">Test</DxcLink>
250
+ </HalstackProvider>
251
+ </ExampleContainer>
192
252
  </>
193
253
  );
package/link/Link.test.js CHANGED
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Link = _interopRequireDefault(require("./Link"));
9
+ var _Link = _interopRequireDefault(require("./Link.tsx"));
10
10
 
11
11
  describe("Link component tests", function () {
12
12
  test("Link renders with correct text", function () {
@@ -33,9 +33,7 @@ describe("Link component tests", function () {
33
33
  expect(getByText("Link").hasAttribute("href")).toBeFalsy();
34
34
 
35
35
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], {
36
- onClick: function onClick() {
37
- return console.log("Andorra");
38
- },
36
+ onClick: function onClick() {},
39
37
  disabled: true
40
38
  }, "LinkButton")),
41
39
  getByTextLinkButton = _render4.getByText;
package/link/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export declare type Margin = {
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;