@dxc-technology/halstack-react 0.0.0-262ed04 → 0.0.0-26bbf06

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 (345) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -23
  3. package/HalstackContext.d.ts +1235 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +117 -193
  8. package/accordion/Accordion.stories.tsx +103 -120
  9. package/accordion/Accordion.test.js +56 -0
  10. package/accordion/types.d.ts +11 -22
  11. package/accordion-group/AccordionGroup.d.ts +5 -4
  12. package/accordion-group/AccordionGroup.js +38 -107
  13. package/accordion-group/AccordionGroup.stories.tsx +95 -68
  14. package/accordion-group/AccordionGroup.test.js +98 -0
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +17 -22
  18. package/alert/Alert.js +23 -59
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +75 -0
  21. package/alert/types.d.ts +5 -5
  22. package/badge/Badge.d.ts +4 -0
  23. package/badge/Badge.js +8 -19
  24. package/badge/types.d.ts +5 -0
  25. package/bleed/Bleed.d.ts +3 -0
  26. package/bleed/Bleed.js +43 -0
  27. package/bleed/Bleed.stories.tsx +342 -0
  28. package/bleed/types.d.ts +37 -0
  29. package/box/Box.d.ts +1 -1
  30. package/box/Box.js +30 -81
  31. package/box/Box.stories.tsx +38 -51
  32. package/box/Box.test.js +13 -0
  33. package/box/types.d.ts +3 -14
  34. package/bulleted-list/BulletedList.d.ts +7 -0
  35. package/bulleted-list/BulletedList.js +89 -0
  36. package/bulleted-list/BulletedList.stories.tsx +115 -0
  37. package/bulleted-list/types.d.ts +38 -0
  38. package/button/Button.d.ts +1 -1
  39. package/button/Button.js +63 -122
  40. package/button/Button.stories.tsx +164 -96
  41. package/button/Button.test.js +36 -0
  42. package/button/types.d.ts +12 -12
  43. package/card/Card.d.ts +1 -1
  44. package/card/Card.js +58 -102
  45. package/card/Card.stories.tsx +13 -43
  46. package/card/Card.test.js +39 -0
  47. package/card/types.d.ts +6 -11
  48. package/checkbox/Checkbox.d.ts +2 -2
  49. package/checkbox/Checkbox.js +144 -182
  50. package/checkbox/Checkbox.stories.tsx +166 -136
  51. package/checkbox/Checkbox.test.js +199 -0
  52. package/checkbox/types.d.ts +18 -6
  53. package/chip/Chip.d.ts +1 -1
  54. package/chip/Chip.js +46 -124
  55. package/chip/Chip.stories.tsx +123 -30
  56. package/chip/Chip.test.js +41 -0
  57. package/chip/types.d.ts +8 -16
  58. package/common/OpenSans.css +68 -80
  59. package/common/coreTokens.d.ts +237 -0
  60. package/common/coreTokens.js +184 -0
  61. package/common/utils.d.ts +1 -0
  62. package/common/utils.js +6 -12
  63. package/common/variables.d.ts +1381 -0
  64. package/common/variables.js +1004 -1325
  65. package/container/Container.d.ts +4 -0
  66. package/container/Container.js +194 -0
  67. package/container/Container.stories.tsx +214 -0
  68. package/container/types.d.ts +74 -0
  69. package/container/types.js +5 -0
  70. package/date-input/Calendar.d.ts +4 -0
  71. package/date-input/Calendar.js +214 -0
  72. package/date-input/DateInput.js +173 -308
  73. package/date-input/DateInput.stories.tsx +203 -56
  74. package/date-input/DateInput.test.js +808 -0
  75. package/date-input/DatePicker.d.ts +4 -0
  76. package/date-input/DatePicker.js +115 -0
  77. package/date-input/Icons.d.ts +6 -0
  78. package/date-input/Icons.js +58 -0
  79. package/date-input/YearPicker.d.ts +4 -0
  80. package/date-input/YearPicker.js +100 -0
  81. package/date-input/types.d.ts +86 -22
  82. package/dialog/Dialog.d.ts +1 -1
  83. package/dialog/Dialog.js +68 -130
  84. package/dialog/Dialog.stories.tsx +320 -167
  85. package/dialog/Dialog.test.js +307 -0
  86. package/dialog/types.d.ts +18 -25
  87. package/dropdown/Dropdown.d.ts +1 -1
  88. package/dropdown/Dropdown.js +244 -327
  89. package/dropdown/Dropdown.stories.tsx +255 -64
  90. package/dropdown/Dropdown.test.js +599 -0
  91. package/dropdown/DropdownMenu.d.ts +4 -0
  92. package/dropdown/DropdownMenu.js +63 -0
  93. package/dropdown/DropdownMenuItem.d.ts +4 -0
  94. package/dropdown/DropdownMenuItem.js +67 -0
  95. package/dropdown/types.d.ts +36 -27
  96. package/file-input/FileInput.d.ts +2 -2
  97. package/file-input/FileInput.js +246 -357
  98. package/file-input/FileInput.stories.tsx +618 -0
  99. package/file-input/FileInput.test.js +459 -0
  100. package/file-input/FileItem.d.ts +4 -14
  101. package/file-input/FileItem.js +50 -99
  102. package/file-input/types.d.ts +25 -8
  103. package/flex/Flex.d.ts +4 -0
  104. package/flex/Flex.js +57 -0
  105. package/flex/Flex.stories.tsx +112 -0
  106. package/flex/types.d.ts +97 -0
  107. package/flex/types.js +5 -0
  108. package/footer/Footer.d.ts +1 -1
  109. package/footer/Footer.js +56 -191
  110. package/footer/Footer.stories.tsx +41 -19
  111. package/footer/Footer.test.js +85 -0
  112. package/footer/Icons.d.ts +2 -2
  113. package/footer/Icons.js +3 -8
  114. package/footer/types.d.ts +21 -28
  115. package/grid/Grid.d.ts +7 -0
  116. package/grid/Grid.js +76 -0
  117. package/grid/Grid.stories.tsx +219 -0
  118. package/grid/types.d.ts +115 -0
  119. package/grid/types.js +5 -0
  120. package/header/Header.d.ts +4 -3
  121. package/header/Header.js +99 -203
  122. package/header/Header.stories.tsx +152 -63
  123. package/header/Header.test.js +66 -0
  124. package/header/Icons.d.ts +2 -2
  125. package/header/Icons.js +4 -9
  126. package/header/types.d.ts +5 -19
  127. package/heading/Heading.js +10 -32
  128. package/heading/Heading.stories.tsx +3 -2
  129. package/heading/Heading.test.js +169 -0
  130. package/heading/types.d.ts +7 -7
  131. package/image/Image.d.ts +4 -0
  132. package/image/Image.js +70 -0
  133. package/image/Image.stories.tsx +127 -0
  134. package/image/types.d.ts +72 -0
  135. package/image/types.js +5 -0
  136. package/inset/Inset.d.ts +3 -0
  137. package/inset/Inset.js +43 -0
  138. package/inset/Inset.stories.tsx +230 -0
  139. package/inset/types.d.ts +37 -0
  140. package/inset/types.js +5 -0
  141. package/layout/ApplicationLayout.d.ts +16 -6
  142. package/layout/ApplicationLayout.js +83 -174
  143. package/layout/ApplicationLayout.stories.tsx +85 -94
  144. package/layout/Icons.d.ts +8 -0
  145. package/layout/Icons.js +51 -48
  146. package/layout/SidenavContext.d.ts +5 -0
  147. package/layout/SidenavContext.js +13 -0
  148. package/layout/types.d.ts +19 -35
  149. package/link/Link.d.ts +3 -2
  150. package/link/Link.js +64 -110
  151. package/link/Link.stories.tsx +159 -52
  152. package/link/Link.test.js +63 -0
  153. package/link/types.d.ts +15 -35
  154. package/main.d.ts +15 -17
  155. package/main.js +64 -123
  156. package/nav-tabs/NavTabs.d.ts +8 -0
  157. package/nav-tabs/NavTabs.js +90 -0
  158. package/nav-tabs/NavTabs.stories.tsx +274 -0
  159. package/nav-tabs/NavTabs.test.js +75 -0
  160. package/nav-tabs/Tab.d.ts +4 -0
  161. package/nav-tabs/Tab.js +117 -0
  162. package/nav-tabs/types.d.ts +52 -0
  163. package/nav-tabs/types.js +5 -0
  164. package/number-input/NumberInput.d.ts +7 -0
  165. package/number-input/NumberInput.js +27 -43
  166. package/number-input/NumberInput.stories.tsx +44 -28
  167. package/number-input/NumberInput.test.js +830 -0
  168. package/number-input/types.d.ts +28 -15
  169. package/package.json +46 -45
  170. package/paginator/Icons.d.ts +5 -0
  171. package/paginator/Icons.js +21 -47
  172. package/paginator/Paginator.js +34 -91
  173. package/paginator/Paginator.stories.tsx +24 -0
  174. package/paginator/Paginator.test.js +335 -0
  175. package/paginator/types.d.ts +3 -3
  176. package/paragraph/Paragraph.d.ts +5 -0
  177. package/paragraph/Paragraph.js +22 -0
  178. package/paragraph/Paragraph.stories.tsx +27 -0
  179. package/password-input/Icons.d.ts +6 -0
  180. package/password-input/Icons.js +35 -0
  181. package/password-input/PasswordInput.js +57 -123
  182. package/password-input/PasswordInput.stories.tsx +3 -35
  183. package/password-input/PasswordInput.test.js +198 -0
  184. package/password-input/types.d.ts +21 -17
  185. package/progress-bar/ProgressBar.js +65 -91
  186. package/progress-bar/ProgressBar.stories.tsx +93 -0
  187. package/progress-bar/ProgressBar.test.js +93 -0
  188. package/progress-bar/types.d.ts +3 -3
  189. package/quick-nav/QuickNav.d.ts +4 -0
  190. package/quick-nav/QuickNav.js +94 -0
  191. package/quick-nav/QuickNav.stories.tsx +356 -0
  192. package/quick-nav/types.d.ts +21 -0
  193. package/quick-nav/types.js +5 -0
  194. package/radio-group/Radio.d.ts +4 -0
  195. package/radio-group/Radio.js +124 -0
  196. package/radio-group/RadioGroup.d.ts +4 -0
  197. package/radio-group/RadioGroup.js +235 -0
  198. package/radio-group/RadioGroup.stories.tsx +214 -0
  199. package/radio-group/RadioGroup.test.js +756 -0
  200. package/radio-group/types.d.ts +114 -0
  201. package/radio-group/types.js +5 -0
  202. package/resultset-table/Icons.d.ts +7 -0
  203. package/resultset-table/Icons.js +47 -0
  204. package/resultset-table/ResultsetTable.js +159 -0
  205. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +56 -32
  206. package/resultset-table/ResultsetTable.test.js +305 -0
  207. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  208. package/resultset-table/types.js +5 -0
  209. package/select/Icons.d.ts +10 -0
  210. package/select/Icons.js +89 -0
  211. package/select/Listbox.d.ts +4 -0
  212. package/select/Listbox.js +143 -0
  213. package/select/Option.d.ts +4 -0
  214. package/select/Option.js +80 -0
  215. package/select/Select.js +216 -498
  216. package/select/Select.stories.tsx +603 -204
  217. package/select/Select.test.js +2370 -0
  218. package/select/types.d.ts +64 -25
  219. package/sidenav/Icons.d.ts +7 -0
  220. package/sidenav/Icons.js +47 -0
  221. package/sidenav/Sidenav.d.ts +6 -5
  222. package/sidenav/Sidenav.js +131 -71
  223. package/sidenav/Sidenav.stories.tsx +251 -134
  224. package/sidenav/Sidenav.test.js +37 -0
  225. package/sidenav/types.d.ts +52 -26
  226. package/slider/Slider.d.ts +2 -2
  227. package/slider/Slider.js +148 -180
  228. package/slider/Slider.test.js +254 -0
  229. package/slider/types.d.ts +11 -3
  230. package/spinner/Spinner.js +31 -75
  231. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -26
  232. package/spinner/Spinner.test.js +55 -0
  233. package/spinner/types.d.ts +3 -3
  234. package/switch/Switch.d.ts +2 -2
  235. package/switch/Switch.js +149 -114
  236. package/switch/Switch.stories.tsx +45 -68
  237. package/switch/Switch.test.js +180 -0
  238. package/switch/types.d.ts +13 -5
  239. package/table/Table.js +8 -30
  240. package/table/{Table.stories.jsx → Table.stories.tsx} +81 -1
  241. package/table/Table.test.js +21 -0
  242. package/table/types.d.ts +8 -8
  243. package/tabs/Tab.d.ts +4 -0
  244. package/tabs/Tab.js +113 -0
  245. package/tabs/Tabs.d.ts +1 -1
  246. package/tabs/Tabs.js +318 -146
  247. package/tabs/Tabs.stories.tsx +122 -17
  248. package/tabs/Tabs.test.js +294 -0
  249. package/tabs/types.d.ts +46 -24
  250. package/tag/Tag.d.ts +1 -1
  251. package/tag/Tag.js +43 -85
  252. package/tag/Tag.stories.tsx +38 -28
  253. package/tag/Tag.test.js +49 -0
  254. package/tag/types.d.ts +25 -16
  255. package/text-input/Icons.d.ts +8 -0
  256. package/text-input/Icons.js +56 -0
  257. package/text-input/Suggestion.d.ts +4 -0
  258. package/text-input/Suggestion.js +67 -0
  259. package/text-input/Suggestions.d.ts +4 -0
  260. package/text-input/Suggestions.js +84 -0
  261. package/text-input/TextInput.js +311 -519
  262. package/text-input/TextInput.stories.tsx +280 -271
  263. package/text-input/TextInput.test.js +1739 -0
  264. package/text-input/types.d.ts +71 -25
  265. package/textarea/Textarea.js +85 -135
  266. package/textarea/Textarea.stories.tsx +174 -0
  267. package/textarea/Textarea.test.js +406 -0
  268. package/textarea/types.d.ts +27 -16
  269. package/toggle-group/ToggleGroup.d.ts +2 -2
  270. package/toggle-group/ToggleGroup.js +92 -105
  271. package/toggle-group/ToggleGroup.stories.tsx +53 -8
  272. package/toggle-group/ToggleGroup.test.js +137 -0
  273. package/toggle-group/types.d.ts +34 -17
  274. package/typography/Typography.d.ts +4 -0
  275. package/typography/Typography.js +23 -0
  276. package/typography/Typography.stories.tsx +198 -0
  277. package/typography/types.d.ts +18 -0
  278. package/typography/types.js +5 -0
  279. package/useTheme.d.ts +1133 -1
  280. package/useTheme.js +4 -11
  281. package/useTranslatedLabels.d.ts +85 -0
  282. package/useTranslatedLabels.js +14 -0
  283. package/utils/BaseTypography.d.ts +21 -0
  284. package/utils/BaseTypography.js +94 -0
  285. package/utils/FocusLock.d.ts +13 -0
  286. package/utils/FocusLock.js +121 -0
  287. package/wizard/Wizard.d.ts +1 -1
  288. package/wizard/Wizard.js +70 -101
  289. package/wizard/Wizard.stories.tsx +48 -19
  290. package/wizard/Wizard.test.js +114 -0
  291. package/wizard/types.d.ts +12 -8
  292. package/ThemeContext.d.ts +0 -15
  293. package/ThemeContext.js +0 -243
  294. package/V3Select/V3Select.js +0 -455
  295. package/V3Select/index.d.ts +0 -27
  296. package/V3Textarea/V3Textarea.js +0 -260
  297. package/V3Textarea/index.d.ts +0 -27
  298. package/card/ice-cream.jpg +0 -0
  299. package/common/RequiredComponent.js +0 -32
  300. package/date/Date.js +0 -373
  301. package/date/index.d.ts +0 -27
  302. package/input-text/Icons.js +0 -22
  303. package/input-text/InputText.js +0 -611
  304. package/input-text/index.d.ts +0 -36
  305. package/list/List.d.ts +0 -8
  306. package/list/List.js +0 -47
  307. package/list/List.stories.tsx +0 -85
  308. package/number-input/NumberInputContext.d.ts +0 -4
  309. package/number-input/NumberInputContext.js +0 -19
  310. package/number-input/numberInputContextTypes.d.ts +0 -19
  311. package/progress-bar/ProgressBar.stories.jsx +0 -58
  312. package/radio/Radio.d.ts +0 -4
  313. package/radio/Radio.js +0 -174
  314. package/radio/Radio.stories.tsx +0 -192
  315. package/radio/types.d.ts +0 -54
  316. package/resultsetTable/ResultsetTable.js +0 -251
  317. package/row/Row.d.ts +0 -11
  318. package/row/Row.js +0 -124
  319. package/row/Row.stories.tsx +0 -223
  320. package/slider/Slider.stories.tsx +0 -177
  321. package/stack/Stack.d.ts +0 -10
  322. package/stack/Stack.js +0 -94
  323. package/stack/Stack.stories.tsx +0 -150
  324. package/text/Text.d.ts +0 -7
  325. package/text/Text.js +0 -30
  326. package/text/Text.stories.tsx +0 -19
  327. package/textarea/Textarea.stories.jsx +0 -135
  328. package/toggle/Toggle.js +0 -186
  329. package/toggle/index.d.ts +0 -21
  330. package/upload/Upload.js +0 -201
  331. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  332. package/upload/buttons-upload/Icons.js +0 -40
  333. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  334. package/upload/dragAndDropArea/Icons.js +0 -39
  335. package/upload/file-upload/FileToUpload.js +0 -115
  336. package/upload/file-upload/Icons.js +0 -66
  337. package/upload/files-upload/FilesToUpload.js +0 -109
  338. package/upload/index.d.ts +0 -15
  339. package/upload/transaction/Icons.js +0 -160
  340. package/upload/transaction/Transaction.js +0 -104
  341. package/upload/transactions/Transactions.js +0 -94
  342. /package/{radio → badge}/types.js +0 -0
  343. /package/{resultsetTable → bleed}/types.js +0 -0
  344. /package/{number-input/numberInputContextTypes.js → bulleted-list/types.js} +0 -0
  345. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
package/footer/Footer.js CHANGED
@@ -1,198 +1,81 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
10
  var _react = _interopRequireWildcard(require("react"));
19
-
20
11
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
-
22
- var _variables = require("../common/variables.js");
23
-
12
+ var _variables = require("../common/variables");
24
13
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
26
- var _BackgroundColorContext = require("../BackgroundColorContext");
27
-
14
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
28
15
  var _Icons = require("./Icons");
29
-
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
31
-
32
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
-
34
- 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; }
35
-
16
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
17
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
36
20
  var DxcFooter = function DxcFooter(_ref) {
37
21
  var socialLinks = _ref.socialLinks,
38
- bottomLinks = _ref.bottomLinks,
39
- _ref$copyright = _ref.copyright,
40
- copyright = _ref$copyright === void 0 ? "\xA9 DXC Technology ".concat(new Date().getFullYear(), ". All rights reserved.") : _ref$copyright,
41
- children = _ref.children,
42
- padding = _ref.padding,
43
- margin = _ref.margin,
44
- _ref$tabIndex = _ref.tabIndex,
45
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
46
- var ref = (0, _react.useRef)(null);
47
-
48
- var _useState = (0, _react.useState)(),
49
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
50
- refSize = _useState2[0],
51
- setRefSize = _useState2[1];
52
-
53
- var _useState3 = (0, _react.useState)(false),
54
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
55
- isResponsiveTablet = _useState4[0],
56
- setIsResponsiveTablet = _useState4[1];
57
-
58
- var _useState5 = (0, _react.useState)(false),
59
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
60
- isResponsivePhone = _useState6[0],
61
- setIsResponsivePhone = _useState6[1];
62
-
22
+ bottomLinks = _ref.bottomLinks,
23
+ copyright = _ref.copyright,
24
+ children = _ref.children,
25
+ margin = _ref.margin,
26
+ _ref$tabIndex = _ref.tabIndex,
27
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
63
28
  var colorsTheme = (0, _useTheme["default"])();
29
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
64
30
  var footerLogo = (0, _react.useMemo)(function () {
65
- if (!colorsTheme.footer.logo) {
66
- return _Icons.dxcLogo;
67
- }
68
-
69
- if (typeof colorsTheme.footer.logo === "string") {
70
- return /*#__PURE__*/_react["default"].createElement(LogoImg, {
71
- alt: "Logo",
72
- src: colorsTheme.footer.logo
73
- });
74
- }
75
-
76
- return colorsTheme.footer.logo;
77
- }, [colorsTheme.footer.logo]);
78
-
79
- var handleResize = function handleResize(refWidth) {
80
- if (ref.current) {
81
- setRefSize(refWidth);
82
-
83
- if (refWidth <= _variables.responsiveSizes.tablet && refWidth > _variables.responsiveSizes.mobileLarge) {
84
- setIsResponsiveTablet(true);
85
- setIsResponsivePhone(false);
86
- } else if (refWidth <= _variables.responsiveSizes.tablet && refWidth <= _variables.responsiveSizes.mobileLarge) {
87
- setIsResponsivePhone(true);
88
- setIsResponsiveTablet(false);
89
- } else {
90
- setIsResponsiveTablet(false);
91
- setIsResponsivePhone(false);
92
- }
93
- }
94
- };
95
-
96
- var handleEventListener = function handleEventListener() {
97
- handleResize(ref.current.offsetWidth);
98
- };
99
-
100
- (0, _react.useEffect)(function () {
101
- window.addEventListener("resize", handleEventListener);
102
- handleResize(ref.current.offsetWidth);
103
- return function () {
104
- window.removeEventListener("resize", handleEventListener);
105
- };
106
- }, []);
107
- var socialLink = socialLinks === null || socialLinks === void 0 ? void 0 : socialLinks.map(function (link, index) {
31
+ return !colorsTheme.footer.logo ? _Icons.dxcLogo : typeof colorsTheme.footer.logo === "string" ? /*#__PURE__*/_react["default"].createElement(LogoImg, {
32
+ alt: translatedLabels.formFields.logoAlternativeText,
33
+ src: colorsTheme.footer.logo
34
+ }) : colorsTheme.footer.logo;
35
+ }, [colorsTheme]);
36
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
37
+ theme: colorsTheme.footer
38
+ }, /*#__PURE__*/_react["default"].createElement(FooterContainer, {
39
+ margin: margin
40
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
41
+ justifyContent: "space-between",
42
+ alignItems: "center",
43
+ wrap: "wrap",
44
+ gap: "1.5rem"
45
+ }, /*#__PURE__*/_react["default"].createElement(LogoContainer, null, footerLogo), /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, socialLinks === null || socialLinks === void 0 ? void 0 : socialLinks.map(function (link, index) {
108
46
  return /*#__PURE__*/_react["default"].createElement(SocialAnchor, {
47
+ href: link.href,
109
48
  tabIndex: tabIndex,
49
+ title: link.title,
50
+ "aria-label": link.title,
110
51
  key: "social".concat(index).concat(link.href),
111
- index: index,
112
- href: link && link.href ? link.href : ""
113
- }, /*#__PURE__*/_react["default"].createElement(SocialIconContainer, null, typeof link.logo === "string" ? /*#__PURE__*/_react["default"].createElement(SocialIconImg, {
52
+ index: index
53
+ }, /*#__PURE__*/_react["default"].createElement(SocialIconContainer, null, typeof link.logo === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
114
54
  src: link.logo
115
55
  }) : link.logo));
116
- });
117
- var bottomLink = bottomLinks === null || bottomLinks === void 0 ? void 0 : bottomLinks.map(function (link, index) {
56
+ }))), /*#__PURE__*/_react["default"].createElement(ChildComponents, null, children), /*#__PURE__*/_react["default"].createElement(BottomContainer, null, /*#__PURE__*/_react["default"].createElement(BottomLinks, null, bottomLinks === null || bottomLinks === void 0 ? void 0 : bottomLinks.map(function (link, index) {
118
57
  return /*#__PURE__*/_react["default"].createElement("span", {
119
58
  key: "bottom".concat(index).concat(link.text)
120
59
  }, /*#__PURE__*/_react["default"].createElement(BottomLink, {
121
- tabIndex: tabIndex,
122
- href: link && link.href ? link.href : ""
123
- }, link && link.text ? link.text : ""), /*#__PURE__*/_react["default"].createElement(Point, {
124
- index: index
125
- }, "\xB7"));
126
- });
127
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
128
- theme: colorsTheme.footer
129
- }, /*#__PURE__*/_react["default"].createElement(FooterContainer, {
130
- margin: margin,
131
- refSize: refSize,
132
- ref: ref
133
- }, /*#__PURE__*/_react["default"].createElement(FooterHeader, null, /*#__PURE__*/_react["default"].createElement(LogoContainer, null, footerLogo), /*#__PURE__*/_react["default"].createElement("div", null, socialLink)), isResponsivePhone && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(FooterFooter, {
134
- className: "footerFooter",
135
- refSize: refSize
136
- }, /*#__PURE__*/_react["default"].createElement(BottomLinks, {
137
- refSize: refSize
138
- }, bottomLink), /*#__PURE__*/_react["default"].createElement(Copyright, {
139
- refSize: refSize
140
- }, copyright))), (!isResponsiveTablet && !isResponsivePhone || isResponsiveTablet) && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(ChildComponents, {
141
- padding: padding
142
- }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
143
- color: colorsTheme.footer.backgroundColor
144
- }, children)), /*#__PURE__*/_react["default"].createElement(FooterFooter, {
145
- className: "footerFooter"
146
- }, /*#__PURE__*/_react["default"].createElement(BottomLinks, {
147
- refSize: refSize
148
- }, bottomLink), /*#__PURE__*/_react["default"].createElement(Copyright, {
149
- refSize: refSize
150
- }, copyright)))));
60
+ href: link.href,
61
+ tabIndex: tabIndex
62
+ }, link.text));
63
+ })), /*#__PURE__*/_react["default"].createElement(Copyright, null, copyright || translatedLabels.footer.copyrightText(new Date().getFullYear())))));
151
64
  };
152
-
153
- var FooterContainer = _styledComponents["default"].footer(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: ", ";\n background-color: ", ";\n margin-top: ", ";\n width: 100%;\n box-sizing: border-box;\n min-height: ", ";\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n"])), function (props) {
154
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "20px 20px 20px 20px" : "24px 36px 24px 36px";
155
- }, function (props) {
156
- return props.theme.backgroundColor;
157
- }, function (props) {
158
- return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
159
- }, function (props) {
65
+ var FooterContainer = _styledComponents["default"].footer(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n min-height: ", ";\n margin-top: ", ";\n background-color: ", ";\n\n @media (min-width: ", "rem) {\n padding: 24px 36px 24px 36px;\n }\n @media (max-width: ", "rem) {\n padding: 20px;\n }\n"])), function (props) {
160
66
  return props.theme.height;
161
- });
162
-
163
- var FooterHeader = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n"])));
164
-
165
- var FooterFooter = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n flex-direction: ", ";\n align-items: ", ";\n border-top: ", ";\n"])), function (props) {
166
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "column" : "row";
167
67
  }, function (props) {
168
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "center" : "";
68
+ return props.margin ? _variables.spaces[props.margin] : "0px";
169
69
  }, function (props) {
70
+ return props.theme.backgroundColor;
71
+ }, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
72
+ var BottomContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n\n @media (min-width: ", "rem) {\n flex-direction: row;\n }\n @media (max-width: ", "rem) {\n flex-direction: column;\n align-items: center;\n }\n\n border-top: ", ";\n margin-top: 16px;\n"])), _variables.responsiveSizes.small, _variables.responsiveSizes.small, function (props) {
170
73
  return "".concat(props.theme.bottomLinksDividerThickness, " ").concat(props.theme.bottomLinksDividerStyle, " ").concat(props.theme.bottomLinksDividerColor);
171
74
  });
172
-
173
- var BottomLinks = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n display: inline-flex;\n flex-wrap: wrap;\n max-width: ", ";\n width: ", ";\n & > span:last-child span {\n display: none;\n }\n margin: ", ";\n"])), function (props) {
75
+ var ChildComponents = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 16px;\n overflow: hidden;\n"])));
76
+ var Copyright = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n\n @media (min-width: ", "rem) {\n max-width: 40%;\n text-align: right;\n }\n\n @media (max-width: ", "rem) {\n max-width: 100%;\n width: 100%;\n text-align: left;\n }\n"])), function (props) {
174
77
  return props.theme.bottomLinksDividerSpacing;
175
78
  }, function (props) {
176
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "60%";
177
- }, function (props) {
178
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "";
179
- }, function (props) {
180
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "40px 0 40px 0" : "";
181
- });
182
-
183
- var ChildComponents = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 15px;\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n overflow: hidden;\n"])), function (props) {
184
- return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : "0px";
185
- }, function (props) {
186
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
187
- }, function (props) {
188
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.right ? _variables.spaces[props.padding.right] : "";
189
- }, function (props) {
190
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.bottom ? _variables.spaces[props.padding.bottom] : "";
191
- }, function (props) {
192
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
193
- });
194
-
195
- var Copyright = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n max-width: ", ";\n width: ", ";\n text-align: ", ";\n padding-top: ", ";\n"])), function (props) {
196
79
  return props.theme.copyrightFontFamily;
197
80
  }, function (props) {
198
81
  return props.theme.copyrightFontSize;
@@ -202,47 +85,31 @@ var Copyright = _styledComponents["default"].div(_templateObject6 || (_templateO
202
85
  return props.theme.copyrightFontWeight;
203
86
  }, function (props) {
204
87
  return props.theme.copyrightFontColor;
205
- }, function (props) {
206
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "40%";
207
- }, function (props) {
208
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "";
209
- }, function (props) {
210
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "center" : "right";
211
- }, function (props) {
212
- return props.theme.bottomLinksDividerSpacing;
213
- });
214
-
215
- var LogoContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
88
+ }, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
89
+ var LogoContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
216
90
  return props.theme.logoHeight;
217
91
  }, function (props) {
218
92
  return props.theme.logoWidth;
219
93
  });
220
-
221
- var LogoImg = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
94
+ var LogoImg = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
222
95
  return props.theme.logoHeight;
223
96
  }, function (props) {
224
97
  return props.theme.logoWidth;
225
98
  });
226
-
227
- var SocialAnchor = _styledComponents["default"].a(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n & {\n display: inline-flex;\n margin-left: ", ";\n }\n"])), function (props) {
99
+ var SocialAnchor = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n margin-left: ", ";\n border-radius: 4px;\n\n &:focus {\n outline: 2px solid #0095ff;\n outline-offset: 2px;\n }\n"])), function (props) {
228
100
  return props.index === 0 ? "0px" : props.theme.socialLinksGutter;
229
101
  });
230
-
231
- var SocialIconImg = _styledComponents["default"].img(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])([""])));
232
-
233
- var SocialIconContainer = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n & {\n display: inline-flex;\n height: ", ";\n width: ", ";\n color: ", ";\n }\n\n overflow: hidden;\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
102
+ var SocialIconContainer = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n height: ", ";\n width: ", ";\n color: ", ";\n overflow: hidden;\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
234
103
  return props.theme.socialLinksSize;
235
104
  }, function (props) {
236
105
  return props.theme.socialLinksSize;
237
106
  }, function (props) {
238
107
  return props.theme.socialLinksColor;
239
108
  });
240
-
241
- var Point = _styledComponents["default"].span(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0px 10px;\n color: ", ";\n"])), function (props) {
242
- return props.theme.bottomLinksFontColor;
243
- });
244
-
245
- var BottomLink = _styledComponents["default"].a(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
109
+ var BottomLinks = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-wrap: wrap;\n align-self: center;\n padding-top: ", ";\n color: #fff;\n\n @media (min-width: ", "rem) {\n max-width: 60%;\n }\n @media (max-width: ", "rem) {\n max-width: 100%;\n width: 100%;\n }\n\n & > span:not(:first-child):before {\n content: \"\xB7\";\n padding: 0 0.5rem;\n }\n"])), function (props) {
110
+ return props.theme.bottomLinksDividerSpacing;
111
+ }, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
112
+ var BottomLink = _styledComponents["default"].a(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n border-radius: 2px;\n\n &:focus {\n outline: 2px solid #0095ff;\n }\n"])), function (props) {
246
113
  return props.theme.bottomLinksTextDecoration;
247
114
  }, function (props) {
248
115
  return props.theme.bottomLinksFontColor;
@@ -255,6 +122,4 @@ var BottomLink = _styledComponents["default"].a(_templateObject13 || (_templateO
255
122
  }, function (props) {
256
123
  return props.theme.bottomLinksFontWeight;
257
124
  });
258
-
259
- var _default = DxcFooter;
260
- exports["default"] = _default;
125
+ var _default = exports["default"] = DxcFooter;
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import DxcFooter from "./Footer";
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
  const social = [
7
8
  {
@@ -25,10 +26,20 @@ const social = [
25
26
  </g>
26
27
  </svg>
27
28
  ),
29
+ title: "Linkedin",
28
30
  },
29
31
  {
30
- href: "https://twitter.com/dxctechnology",
31
- logo: "http://assets.stickpng.com/images/580b57fcd9996e24bc43c53e.png",
32
+ href: "https://x.com/dxctechnology",
33
+ logo: (
34
+ <svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
35
+ <rect width="256" height="256" rx="40" fill="white" />
36
+ <path
37
+ d="M140.192 118.205L187.848 64H176.556L135.158 111.056L102.117 64H64L113.975 135.163L64 192H75.2914L118.982 142.296L153.883 192H192L140.192 118.205ZM124.722 135.787L119.65 128.697L79.3634 72.3294H96.7094L129.232 117.837L134.282 124.927L176.551 184.076H159.205L124.722 135.787Z"
38
+ fill="#0F1419"
39
+ />
40
+ </svg>
41
+ ),
42
+ title: "X",
32
43
  },
33
44
  {
34
45
  href: "https://www.facebook.com/DXCTechnology/",
@@ -55,6 +66,7 @@ const social = [
55
66
  </g>
56
67
  </svg>
57
68
  ),
69
+ title: "Facebook",
58
70
  },
59
71
  ];
60
72
 
@@ -64,8 +76,8 @@ const bottom = [
64
76
  text: "Linkedin",
65
77
  },
66
78
  {
67
- href: "https://twitter.com/dxctechnology",
68
- text: "Twitter",
79
+ href: "https://x.com/dxctechnology",
80
+ text: "X",
69
81
  },
70
82
  {
71
83
  href: "https://www.facebook.com/DXCTechnology/",
@@ -78,6 +90,15 @@ export default {
78
90
  component: DxcFooter,
79
91
  };
80
92
 
93
+ const opinionatedTheme = {
94
+ footer: {
95
+ baseColor: "#000000",
96
+ fontColor: "#ffffff",
97
+ accentColor: "#0095ff",
98
+ logo: "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/2021_Facebook_icon.svg/2048px-2021_Facebook_icon.svg.png",
99
+ },
100
+ };
101
+
81
102
  export const Chromatic = () => (
82
103
  <>
83
104
  <ExampleContainer>
@@ -92,6 +113,14 @@ export const Chromatic = () => (
92
113
  </div>
93
114
  </DxcFooter>
94
115
  </ExampleContainer>
116
+ <ExampleContainer pseudoState="pseudo-focus">
117
+ <Title title="Focused bottom and social links" theme="light" level={4} />
118
+ <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom}>
119
+ <div>
120
+ <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a>
121
+ </div>
122
+ </DxcFooter>
123
+ </ExampleContainer>
95
124
  <Title title="Margins" theme="light" level={2} />
96
125
  <ExampleContainer>
97
126
  <Title title="Xxsmall margin" theme="light" level={4} />
@@ -109,22 +138,15 @@ export const Chromatic = () => (
109
138
  <Title title="Xxlarge margin" theme="light" level={4} />
110
139
  <DxcFooter margin="xxlarge"></DxcFooter>
111
140
  </ExampleContainer>
112
- <Title title="Padding" theme="light" level={2} />
141
+ <Title title="Opinionated theme" theme="light" level={2} />
113
142
  <ExampleContainer>
114
- <Title title="Xxsmall padding" theme="light" level={4} />
115
- <DxcFooter padding="xxsmall"></DxcFooter>
116
- <Title title="Xsmall padding" theme="light" level={4} />
117
- <DxcFooter padding="xsmall"></DxcFooter>
118
- <Title title="Small padding" theme="light" level={4} />
119
- <DxcFooter padding="small"></DxcFooter>
120
- <Title title="Medium padding" theme="light" level={4} />
121
- <DxcFooter padding="medium"></DxcFooter>
122
- <Title title="Large padding" theme="light" level={4} />
123
- <DxcFooter padding="large"></DxcFooter>
124
- <Title title="Xlarge padding" theme="light" level={4} />
125
- <DxcFooter padding="xlarge"></DxcFooter>
126
- <Title title="Xxlarge padding" theme="light" level={4} />
127
- <DxcFooter padding="xxlarge"></DxcFooter>
143
+ <HalstackProvider theme={opinionatedTheme}>
144
+ <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom}>
145
+ <div>
146
+ <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a>
147
+ </div>
148
+ </DxcFooter>
149
+ </HalstackProvider>
128
150
  </ExampleContainer>
129
151
  </>
130
152
  );
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _react2 = require("@testing-library/react");
6
+ var _Footer = _interopRequireDefault(require("./Footer.tsx"));
7
+ var social = [{
8
+ href: "https://www.test.com/social",
9
+ logo: "https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png",
10
+ title: "test"
11
+ }];
12
+ var bottom = [{
13
+ href: "https://www.test.com/bottom",
14
+ text: "bottom-link-text"
15
+ }];
16
+ describe("Footer component tests", function () {
17
+ test("Footer renders with default logo", function () {
18
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], null)),
19
+ getByTitle = _render.getByTitle;
20
+ expect(getByTitle("DXC Logo")).toBeTruthy();
21
+ });
22
+ test("Footer renders with social links", function () {
23
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
24
+ socialLinks: social
25
+ })),
26
+ getByRole = _render2.getByRole;
27
+ var socialIcon = getByRole("link");
28
+ expect(socialIcon.getAttribute("href")).toBe("https://www.test.com/social");
29
+ });
30
+ test("Footer renders with bottom links", function () {
31
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
32
+ bottomLinks: bottom
33
+ })),
34
+ getByText = _render3.getByText;
35
+ var link = getByText("bottom-link-text");
36
+ expect(link.getAttribute("href")).toBe("https://www.test.com/bottom");
37
+ });
38
+ test("Footer renders with copyright text", function () {
39
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
40
+ copyright: "test-copyright"
41
+ })),
42
+ getByText = _render4.getByText;
43
+ expect(getByText("test-copyright")).toBeTruthy();
44
+ });
45
+ test("Footer renders with correct children", function () {
46
+ // We need to force the offsetWidth value
47
+ Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
48
+ configurable: true,
49
+ value: 1024
50
+ });
51
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, /*#__PURE__*/_react["default"].createElement("p", null, "footer-child-text"))),
52
+ getByText = _render5.getByText;
53
+ expect(getByText("footer-child-text")).toBeTruthy();
54
+ });
55
+ test("Footer renders with children in mobile", function () {
56
+ // 425 is mobile width
57
+ Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
58
+ configurable: true,
59
+ value: 425
60
+ });
61
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, /*#__PURE__*/_react["default"].createElement("p", null, "footer-child-text"))),
62
+ queryByText = _render6.queryByText;
63
+ expect(queryByText("footer-child-text")).toBeTruthy();
64
+ });
65
+ test("Footer is fully rendered", function () {
66
+ Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
67
+ configurable: true,
68
+ value: 1024
69
+ });
70
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
71
+ socialLinks: social,
72
+ bottomLinks: bottom,
73
+ copyright: "test-copyright"
74
+ }, /*#__PURE__*/_react["default"].createElement("p", null, "footer-child-text"))),
75
+ getAllByRole = _render7.getAllByRole,
76
+ getByText = _render7.getByText;
77
+ var socialIcon = getAllByRole("link")[0];
78
+ expect(socialIcon.getAttribute("href")).toBe("https://www.test.com/social");
79
+ expect(socialIcon.getAttribute("aria-label")).toBe("test");
80
+ var bottomLink = getByText("bottom-link-text");
81
+ expect(bottomLink.getAttribute("href")).toBe("https://www.test.com/bottom");
82
+ expect(getByText("test-copyright")).toBeTruthy();
83
+ expect(getByText("footer-child-text")).toBeTruthy();
84
+ });
85
+ });
package/footer/Icons.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- /// <reference types="react" />
2
- export declare const dxcLogo: JSX.Element;
1
+ import React from "react";
2
+ export declare const dxcLogo: React.JSX.Element;
package/footer/Icons.js CHANGED
@@ -1,18 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.dxcLogo = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
- var dxcLogo = /*#__PURE__*/_react["default"].createElement("svg", {
9
+ var dxcLogo = exports.dxcLogo = /*#__PURE__*/_react["default"].createElement("svg", {
13
10
  id: "g10",
14
11
  xmlns: "http://www.w3.org/2000/svg",
15
- width: "280.781",
12
+ width: "100%",
16
13
  height: "32",
17
14
  viewBox: "0 0 280.781 32"
18
15
  }, /*#__PURE__*/_react["default"].createElement("title", null, "DXC Logo"), /*#__PURE__*/_react["default"].createElement("g", {
@@ -72,6 +69,4 @@ var dxcLogo = /*#__PURE__*/_react["default"].createElement("svg", {
72
69
  d: "M84.218-55.737a10.063,10.063,0,0,1,2.589-4.4,9.792,9.792,0,0,1,6.985-2.77h11.328V-69.3H93.792a17.041,17.041,0,0,0-11.8,4.759,16.344,16.344,0,0,0-3.547,5.115,13.247,13.247,0,0,0-1.122,3.688Zm0,4.877a10.065,10.065,0,0,0,2.589,4.4,9.793,9.793,0,0,0,6.985,2.77h11.328V-37.3H93.792a17.042,17.042,0,0,1-11.8-4.759,16.339,16.339,0,0,1-3.547-5.114,13.251,13.251,0,0,1-1.122-3.688ZM63.1-47.98,54.45-37.3H45.873l12.957-16-12.957-16H54.45L63.1-58.619l8.65-10.68h8.578l-12.957,16,12.957,16H71.749ZM48.875-55.737a13.212,13.212,0,0,0-1.122-3.688,16.359,16.359,0,0,0-3.546-5.115,17.043,17.043,0,0,0-11.8-4.759H21.08v6.393H32.408a9.79,9.79,0,0,1,6.985,2.77,10.072,10.072,0,0,1,2.59,4.4Zm0,4.877a13.215,13.215,0,0,1-1.122,3.688,16.353,16.353,0,0,1-3.546,5.114,17.044,17.044,0,0,1-11.8,4.759H21.08v-6.393H32.408a9.791,9.791,0,0,0,6.985-2.77,10.074,10.074,0,0,0,2.59-4.4h6.892",
73
70
  transform: "translate(-21.08 69.298)",
74
71
  fill: "#fff"
75
- })));
76
-
77
- exports.dxcLogo = dxcLogo;
72
+ })));
package/footer/types.d.ts CHANGED
@@ -1,33 +1,31 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Size = {
4
- top?: Space;
5
- bottom?: Space;
6
- left?: Space;
7
- right?: Space;
8
- };
9
- declare type SVG = React.SVGProps<SVGSVGElement>;
10
- declare type SocialLink = {
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
4
+ type SocialLink = {
5
+ /**
6
+ * URL of the page the link goes to.
7
+ */
8
+ href: string;
11
9
  /**
12
10
  * Element used as the icon for the link.
13
11
  */
14
12
  logo: string | SVG;
13
+ /**
14
+ * Value for the HTML properties title and aria-label.
15
+ */
16
+ title: string;
17
+ };
18
+ type BottomLink = {
15
19
  /**
16
20
  * URL of the page the link goes to.
17
21
  */
18
22
  href: string;
19
- };
20
- declare type BottomLink = {
21
23
  /**
22
24
  * Text for the link.
23
25
  */
24
26
  text: string;
25
- /**
26
- * URL of the page the link goes to.
27
- */
28
- href: string;
29
27
  };
30
- declare type FooterPropsType = {
28
+ type FooterPropsType = {
31
29
  /**
32
30
  * An array of objects representing the links that will be rendered as
33
31
  * icons at the top-right side of the footer.
@@ -38,28 +36,23 @@ declare type FooterPropsType = {
38
36
  * the bottom part of the footer.
39
37
  */
40
38
  bottomLinks?: BottomLink[];
41
- /**
42
- * The center section of the footer. Can be used to render custom
43
- * content in this area.
44
- */
45
- children?: React.ReactNode;
46
39
  /**
47
40
  * The text that will be displayed as copyright disclaimer.
48
41
  */
49
42
  copyright?: string;
50
43
  /**
51
- * Value of the tabindex for all interactuable elements, except those
52
- * inside the custom area.
44
+ * The center section of the footer. Can be used to render custom
45
+ * content in this area.
53
46
  */
54
- tabIndex?: number;
47
+ children?: React.ReactNode;
55
48
  /**
56
49
  * Size of the top margin to be applied to the footer.
57
50
  */
58
- margin?: Space | Size;
51
+ margin?: Space;
59
52
  /**
60
- * Size of the padding to be applied to the custom area of the component.
61
- * You can pass an object with properties in order to specify different padding sizes.
53
+ * Value of the tabindex for all interactive elements, except those
54
+ * inside the custom area.
62
55
  */
63
- padding?: Space | Size;
56
+ tabIndex?: number;
64
57
  };
65
58
  export default FooterPropsType;
package/grid/Grid.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import GridPropsType, { GridItemProps } from "./types";
3
+ declare const DxcGrid: {
4
+ (props: GridPropsType): JSX.Element;
5
+ Item: import("styled-components").StyledComponent<"div", any, GridItemProps, never>;
6
+ };
7
+ export default DxcGrid;