@dxc-technology/halstack-react 9.0.1 → 10.0.0

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 (96) hide show
  1. package/HalstackContext.d.ts +2 -2
  2. package/HalstackContext.js +2 -2
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +2 -14
  5. package/accordion/Accordion.stories.tsx +3 -101
  6. package/accordion/types.d.ts +0 -12
  7. package/accordion-group/AccordionGroup.d.ts +4 -3
  8. package/accordion-group/AccordionGroup.js +21 -42
  9. package/accordion-group/AccordionGroup.stories.tsx +77 -76
  10. package/accordion-group/AccordionGroup.test.js +6 -16
  11. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  12. package/accordion-group/AccordionGroupAccordion.js +43 -0
  13. package/accordion-group/types.d.ts +0 -12
  14. package/alert/Alert.js +1 -3
  15. package/bleed/Bleed.stories.tsx +1 -0
  16. package/box/Box.d.ts +1 -1
  17. package/box/Box.js +5 -22
  18. package/box/Box.stories.tsx +25 -53
  19. package/box/types.d.ts +0 -12
  20. package/bulleted-list/BulletedList.js +4 -2
  21. package/bulleted-list/BulletedList.stories.tsx +7 -1
  22. package/bulleted-list/types.d.ts +31 -4
  23. package/button/Button.d.ts +1 -1
  24. package/button/Button.js +45 -55
  25. package/button/Button.stories.tsx +4 -4
  26. package/button/Button.test.js +11 -0
  27. package/button/types.d.ts +4 -0
  28. package/card/Card.d.ts +1 -1
  29. package/card/Card.js +18 -35
  30. package/card/Card.stories.tsx +0 -29
  31. package/card/types.d.ts +1 -7
  32. package/chip/Chip.js +23 -36
  33. package/chip/Chip.stories.tsx +25 -17
  34. package/common/OpenSans.css +68 -80
  35. package/common/coreTokens.d.ts +146 -0
  36. package/common/coreTokens.js +167 -0
  37. package/common/variables.d.ts +1 -144
  38. package/common/variables.js +952 -1095
  39. package/date-input/Calendar.js +2 -2
  40. package/dialog/Dialog.d.ts +1 -1
  41. package/dialog/Dialog.js +4 -22
  42. package/dialog/Dialog.stories.tsx +52 -176
  43. package/dialog/types.d.ts +0 -13
  44. package/dropdown/DropdownMenu.js +5 -1
  45. package/file-input/FileItem.js +2 -2
  46. package/file-input/types.d.ts +1 -1
  47. package/flex/Flex.js +4 -2
  48. package/flex/Flex.stories.tsx +35 -26
  49. package/flex/types.d.ts +70 -5
  50. package/footer/Footer.d.ts +1 -1
  51. package/footer/Footer.js +43 -61
  52. package/footer/Footer.stories.tsx +12 -89
  53. package/footer/Footer.test.js +3 -1
  54. package/footer/types.d.ts +10 -12
  55. package/grid/Grid.d.ts +7 -0
  56. package/grid/Grid.js +91 -0
  57. package/grid/Grid.stories.tsx +219 -0
  58. package/grid/types.d.ts +115 -0
  59. package/grid/types.js +5 -0
  60. package/header/Header.d.ts +1 -1
  61. package/header/Header.js +3 -30
  62. package/header/Header.stories.tsx +7 -71
  63. package/header/types.d.ts +0 -14
  64. package/inset/Inset.stories.tsx +2 -1
  65. package/layout/ApplicationLayout.d.ts +4 -4
  66. package/layout/ApplicationLayout.js +7 -4
  67. package/layout/types.d.ts +2 -3
  68. package/link/Link.js +1 -1
  69. package/main.d.ts +2 -1
  70. package/main.js +8 -0
  71. package/nav-tabs/NavTabs.d.ts +2 -2
  72. package/nav-tabs/NavTabs.js +7 -10
  73. package/nav-tabs/NavTabs.stories.tsx +14 -0
  74. package/nav-tabs/Tab.js +22 -26
  75. package/nav-tabs/types.d.ts +8 -9
  76. package/package.json +1 -1
  77. package/paginator/Paginator.js +1 -1
  78. package/paginator/Paginator.test.js +13 -0
  79. package/radio-group/Radio.js +10 -10
  80. package/radio-group/RadioGroup.js +8 -10
  81. package/sidenav/Icons.d.ts +7 -0
  82. package/sidenav/Icons.js +51 -0
  83. package/sidenav/Sidenav.d.ts +2 -2
  84. package/sidenav/Sidenav.js +65 -93
  85. package/sidenav/Sidenav.stories.tsx +60 -60
  86. package/sidenav/types.d.ts +21 -18
  87. package/tabs/Tab.js +1 -2
  88. package/tabs/Tabs.js +10 -14
  89. package/text-input/TextInput.js +1 -1
  90. package/text-input/TextInput.stories.tsx +1 -1
  91. package/textarea/Textarea.js +0 -1
  92. package/textarea/Textarea.test.js +1 -3
  93. package/toggle-group/ToggleGroup.d.ts +2 -2
  94. package/useTheme.d.ts +1 -1
  95. package/utils/FocusLock.js +3 -4
  96. package/card/ice-cream.jpg +0 -0
package/flex/types.d.ts CHANGED
@@ -1,29 +1,94 @@
1
1
  /// <reference types="react" />
2
+ declare type Spaces = "0rem" | "0.125rem" | "0.25rem" | "0.5rem" | "1rem" | "1.5rem" | "2rem" | "3rem" | "4rem" | "5rem";
2
3
  declare type Gap = {
3
- rowGap: string;
4
- columnGap: string;
5
- };
4
+ rowGap: Spaces;
5
+ columnGap?: Spaces;
6
+ } | {
7
+ rowGap?: Spaces;
8
+ columnGap?: Spaces;
9
+ } | Spaces;
6
10
  declare type CommonProps = {
11
+ /**
12
+ * Sets the justify-content CSS property.
13
+ *
14
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content
15
+ */
7
16
  justifyContent?: "flex-start" | "flex-end" | "start" | "end" | "left" | "right" | "center" | "space-between" | "space-around" | "space-evenly";
17
+ /**
18
+ * Sets the align-items CSS property.
19
+ *
20
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/align-items
21
+ */
8
22
  alignItems?: "stretch" | "flex-start" | "flex-end" | "start" | "end" | "self-start" | "self-end" | "center" | "baseline";
23
+ /**
24
+ * Sets the align-content CSS property.
25
+ *
26
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/align-content
27
+ */
9
28
  alignContent?: "normal" | "flex-start" | "flex-end" | "start" | "end" | "center" | "space-between" | "space-around" | "space-evenly" | "stretch";
29
+ /**
30
+ * Sets the align-self CSS property.
31
+ *
32
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/align-self
33
+ */
10
34
  alignSelf?: "auto" | "flex-start" | "flex-end" | "center" | "baseline" | "stretch";
11
35
  };
12
36
  declare type Props = CommonProps & {
37
+ /**
38
+ * Sets the flex-direction CSS property.
39
+ *
40
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction
41
+ */
13
42
  direction?: "row" | "row-reverse" | "column" | "column-reverse";
43
+ /**
44
+ * Sets the flex-wrap CSS property.
45
+ *
46
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap
47
+ */
14
48
  wrap?: "nowrap" | "wrap" | "wrap-reverse";
15
- gap?: string | Gap;
49
+ /**
50
+ * Sets the gap CSS property.
51
+ *
52
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/gap
53
+ */
54
+ gap?: Gap;
55
+ /**
56
+ * Sets the order CSS property.
57
+ *
58
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/order
59
+ */
16
60
  order?: number;
61
+ /**
62
+ * Sets the flex-grow CSS property.
63
+ *
64
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-grow
65
+ */
17
66
  grow?: number;
67
+ /**
68
+ * Sets the flex-shrink CSS property.
69
+ *
70
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink
71
+ */
18
72
  shrink?: number;
73
+ /**
74
+ * Sets the flex-basis CSS property.
75
+ *
76
+ * See MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis
77
+ */
19
78
  basis?: string;
79
+ /**
80
+ * Sets a custom HTML tag.
81
+ */
20
82
  as?: keyof HTMLElementTagNameMap;
83
+ /**
84
+ * Custom content inside the flex container.
85
+ */
21
86
  children: React.ReactNode;
22
87
  };
23
88
  export declare type StyledProps = CommonProps & {
24
89
  $direction?: "row" | "row-reverse" | "column" | "column-reverse";
25
90
  $wrap?: "nowrap" | "wrap" | "wrap-reverse";
26
- $gap?: string | Gap;
91
+ $gap?: Spaces | Gap;
27
92
  $order?: number;
28
93
  $grow?: number;
29
94
  $shrink?: number;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import FooterPropsType from "./types";
3
- declare const DxcFooter: ({ socialLinks, bottomLinks, copyright, children, padding, margin, tabIndex, }: FooterPropsType) => JSX.Element;
3
+ declare const DxcFooter: ({ socialLinks, bottomLinks, copyright, children, margin, tabIndex, }: FooterPropsType) => JSX.Element;
4
4
  export default DxcFooter;
package/footer/Footer.js CHANGED
@@ -27,7 +27,9 @@ var _BackgroundColorContext = require("../BackgroundColorContext");
27
27
 
28
28
  var _Icons = require("./Icons");
29
29
 
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;
30
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
31
+
32
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
31
33
 
32
34
  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
35
 
@@ -38,7 +40,6 @@ var DxcFooter = function DxcFooter(_ref) {
38
40
  bottomLinks = _ref.bottomLinks,
39
41
  copyright = _ref.copyright,
40
42
  children = _ref.children,
41
- padding = _ref.padding,
42
43
  margin = _ref.margin,
43
44
  _ref$tabIndex = _ref.tabIndex,
44
45
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
@@ -57,69 +58,56 @@ var DxcFooter = function DxcFooter(_ref) {
57
58
  }
58
59
 
59
60
  return colorsTheme.footer.logo;
60
- }, [colorsTheme.footer.logo]);
61
- var socialLink = socialLinks === null || socialLinks === void 0 ? void 0 : socialLinks.map(function (link, index) {
61
+ }, [colorsTheme]);
62
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
63
+ theme: colorsTheme.footer
64
+ }, /*#__PURE__*/_react["default"].createElement(FooterContainer, {
65
+ margin: margin
66
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
67
+ justifyContent: "space-between",
68
+ alignItems: "center",
69
+ wrap: "wrap",
70
+ gap: "1.5rem"
71
+ }, /*#__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) {
62
72
  return /*#__PURE__*/_react["default"].createElement(SocialAnchor, {
73
+ href: link.href,
63
74
  tabIndex: tabIndex,
75
+ title: link.title,
76
+ "aria-label": link.title,
64
77
  key: "social".concat(index).concat(link.href),
65
- index: index,
66
- href: link && link.href ? link.href : ""
67
- }, /*#__PURE__*/_react["default"].createElement(SocialIconContainer, null, typeof link.logo === "string" ? /*#__PURE__*/_react["default"].createElement(SocialIconImg, {
78
+ index: index
79
+ }, /*#__PURE__*/_react["default"].createElement(SocialIconContainer, null, typeof link.logo === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
68
80
  src: link.logo
69
81
  }) : link.logo));
70
- });
71
- var bottomLink = bottomLinks === null || bottomLinks === void 0 ? void 0 : bottomLinks.map(function (link, index) {
82
+ }))), /*#__PURE__*/_react["default"].createElement(ChildComponents, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
83
+ color: colorsTheme.footer.backgroundColor
84
+ }, 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) {
72
85
  return /*#__PURE__*/_react["default"].createElement("span", {
73
86
  key: "bottom".concat(index).concat(link.text)
74
87
  }, /*#__PURE__*/_react["default"].createElement(BottomLink, {
75
- tabIndex: tabIndex,
76
- href: link && link.href ? link.href : ""
77
- }, link && link.text ? link.text : ""), /*#__PURE__*/_react["default"].createElement(Point, null, "\xB7"));
78
- });
79
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
80
- theme: colorsTheme.footer
81
- }, /*#__PURE__*/_react["default"].createElement(FooterContainer, {
82
- margin: margin
83
- }, /*#__PURE__*/_react["default"].createElement(FooterHeader, null, /*#__PURE__*/_react["default"].createElement(LogoContainer, null, footerLogo), /*#__PURE__*/_react["default"].createElement(SocialLinkContainer, null, socialLink)), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(ChildComponents, {
84
- padding: padding
85
- }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
86
- color: colorsTheme.footer.backgroundColor
87
- }, children)), /*#__PURE__*/_react["default"].createElement(FooterFooter, {
88
- className: "footerFooter"
89
- }, /*#__PURE__*/_react["default"].createElement(BottomLinks, null, bottomLink), /*#__PURE__*/_react["default"].createElement(Copyright, null, copyright || translatedLabels.footer.copyrightText(new Date().getFullYear()))))));
88
+ href: link.href,
89
+ tabIndex: tabIndex
90
+ }, link.text));
91
+ })), /*#__PURE__*/_react["default"].createElement(Copyright, null, copyright || translatedLabels.footer.copyrightText(new Date().getFullYear())))));
90
92
  };
91
93
 
92
- var FooterContainer = _styledComponents["default"].footer(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n @media (min-width: ", "rem) {\n padding: 24px 36px 24px 36px;\n }\n\n @media (max-width: ", "rem) {\n padding: 20px;\n }\n\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"])), _variables.responsiveSizes.small, _variables.responsiveSizes.small, function (props) {
93
- return props.theme.backgroundColor;
94
+ 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) {
95
+ return props.theme.height;
94
96
  }, function (props) {
95
97
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
96
98
  }, function (props) {
97
- return props.theme.height;
98
- });
99
-
100
- var FooterHeader = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n row-gap: 24px;\n"])));
99
+ return props.theme.backgroundColor;
100
+ }, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
101
101
 
102
- var FooterFooter = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (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\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) {
102
+ 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) {
103
103
  return "".concat(props.theme.bottomLinksDividerThickness, " ").concat(props.theme.bottomLinksDividerStyle, " ").concat(props.theme.bottomLinksDividerColor);
104
104
  });
105
105
 
106
- var BottomLinks = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n display: inline-flex;\n flex-wrap: wrap;\n\n @media (min-width: ", "rem) {\n max-width: 60%;\n }\n\n @media (max-width: ", "rem) {\n max-width: 100%;\n width: 100%;\n }\n\n & > span:last-child span {\n display: none;\n }\n align-self: center;\n"])), function (props) {
107
- return props.theme.bottomLinksDividerSpacing;
108
- }, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
106
+ var ChildComponents = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 16px;\n overflow: hidden;\n"])));
109
107
 
110
- var ChildComponents = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 16px;\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n overflow: hidden;\n"])), function (props) {
111
- return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : "0px";
112
- }, function (props) {
113
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
114
- }, function (props) {
115
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.right ? _variables.spaces[props.padding.right] : "";
116
- }, function (props) {
117
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.bottom ? _variables.spaces[props.padding.bottom] : "";
108
+ 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) {
109
+ return props.theme.bottomLinksDividerSpacing;
118
110
  }, function (props) {
119
- return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
120
- });
121
-
122
- 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\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\n padding-top: ", ";\n"])), function (props) {
123
111
  return props.theme.copyrightFontFamily;
124
112
  }, function (props) {
125
113
  return props.theme.copyrightFontSize;
@@ -129,31 +117,25 @@ var Copyright = _styledComponents["default"].div(_templateObject6 || (_templateO
129
117
  return props.theme.copyrightFontWeight;
130
118
  }, function (props) {
131
119
  return props.theme.copyrightFontColor;
132
- }, _variables.responsiveSizes.small, _variables.responsiveSizes.small, function (props) {
133
- return props.theme.bottomLinksDividerSpacing;
134
- });
120
+ }, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
135
121
 
136
- var LogoContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
122
+ var LogoContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
137
123
  return props.theme.logoHeight;
138
124
  }, function (props) {
139
125
  return props.theme.logoWidth;
140
126
  });
141
127
 
142
- var LogoImg = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
128
+ var LogoImg = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
143
129
  return props.theme.logoHeight;
144
130
  }, function (props) {
145
131
  return props.theme.logoWidth;
146
132
  });
147
133
 
148
- var SocialLinkContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-self: center;\n"])));
149
-
150
- var SocialAnchor = _styledComponents["default"].a(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n & {\n display: inline-flex;\n margin-left: ", ";\n }\n"])), function (props) {
134
+ 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) {
151
135
  return props.index === 0 ? "0px" : props.theme.socialLinksGutter;
152
136
  });
153
137
 
154
- var SocialIconImg = _styledComponents["default"].img(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])([""])));
155
-
156
- var SocialIconContainer = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (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) {
138
+ 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) {
157
139
  return props.theme.socialLinksSize;
158
140
  }, function (props) {
159
141
  return props.theme.socialLinksSize;
@@ -161,11 +143,11 @@ var SocialIconContainer = _styledComponents["default"].div(_templateObject12 ||
161
143
  return props.theme.socialLinksColor;
162
144
  });
163
145
 
164
- var Point = _styledComponents["default"].span(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0px 10px;\n color: ", ";\n"])), function (props) {
165
- return props.theme.bottomLinksFontColor;
166
- });
146
+ 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) {
147
+ return props.theme.bottomLinksDividerSpacing;
148
+ }, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
167
149
 
168
- var BottomLink = _styledComponents["default"].a(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
150
+ 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) {
169
151
  return props.theme.bottomLinksTextDecoration;
170
152
  }, function (props) {
171
153
  return props.theme.bottomLinksFontColor;
@@ -26,6 +26,7 @@ const social = [
26
26
  </g>
27
27
  </svg>
28
28
  ),
29
+ title: "Linkedin",
29
30
  },
30
31
  {
31
32
  href: "https://twitter.com/dxctechnology",
@@ -37,6 +38,7 @@ const social = [
37
38
  />
38
39
  </svg>
39
40
  ),
41
+ title: "Twitter",
40
42
  },
41
43
  {
42
44
  href: "https://www.facebook.com/DXCTechnology/",
@@ -63,6 +65,7 @@ const social = [
63
65
  </g>
64
66
  </svg>
65
67
  ),
68
+ title: "Facebook",
66
69
  },
67
70
  ];
68
71
 
@@ -91,78 +94,7 @@ const opinionatedTheme = {
91
94
  baseColor: "#000000",
92
95
  fontColor: "#ffffff",
93
96
  accentColor: "#0095ff",
94
- logo: (
95
- <svg id="g10" xmlns="http://www.w3.org/2000/svg" width="280.781" height="32" viewBox="0 0 280.781 32">
96
- <g id="g12">
97
- <path
98
- id="path14"
99
- d="M171.5-54.124v12.539h-3.6V-54.124h-4.973v-3.191h13.54v3.191H171.5"
100
- transform="translate(-68.528 65.45)"
101
- fill="#fff"
102
- />
103
- <path
104
- id="path16"
105
- d="M189.96-41.585V-57.315h12.326v3.079h-8.753v3.191h7.7v3.078h-7.7v3.3h8.87v3.078H189.96"
106
- transform="translate(-77.56 65.45)"
107
- fill="#fff"
108
- />
109
- <path
110
- id="path18"
111
- d="M223.558-41.438a8.1,8.1,0,0,1-8.382-8.1v-.045a8.161,8.161,0,0,1,8.522-8.146,8.6,8.6,0,0,1,6.444,2.431l-2.289,2.543a6.133,6.133,0,0,0-4.178-1.778,4.743,4.743,0,0,0-4.738,4.905v.045a4.752,4.752,0,0,0,4.738,4.95,6,6,0,0,0,4.295-1.845l2.288,2.228a8.491,8.491,0,0,1-6.7,2.813"
112
- transform="translate(-86.019 65.583)"
113
- fill="#fff"
114
- />
115
- <path
116
- id="path20"
117
- d="M254.988-41.585V-47.9h-6.63v6.315h-3.6V-57.315h3.6v6.225h6.63v-6.225h3.594v15.731h-3.594"
118
- transform="translate(-95.903 65.45)"
119
- fill="#fff"
120
- />
121
- <path
122
- id="path22"
123
- d="M285.991-41.585l-7.914-10v10h-3.549V-57.315h3.316l7.657,9.685v-9.685h3.549v15.731h-3.058"
124
- transform="translate(-105.869 65.45)"
125
- fill="#fff"
126
- />
127
- <path
128
- id="path24"
129
- d="M317.2-49.583a4.869,4.869,0,0,0-4.949-4.95,4.793,4.793,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.793,4.793,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.661-3.623-8.661-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.66,3.623,8.66,8.1v.045c0,4.477-3.664,8.145-8.708,8.145"
130
- transform="translate(-115.631 65.583)"
131
- fill="#fff"
132
- />
133
- <path
134
- id="path26"
135
- d="M336.786-41.585V-57.315h3.6v12.584h8.148v3.146H336.786"
136
- transform="translate(-126.654 65.45)"
137
- fill="#fff"
138
- />
139
- <path
140
- id="path28"
141
- d="M372.78-49.583a4.87,4.87,0,0,0-4.949-4.95,4.794,4.794,0,0,0-4.9,4.905v.045a4.869,4.869,0,0,0,4.949,4.95,4.794,4.794,0,0,0,4.9-4.905Zm-4.949,8.145c-5.043,0-8.662-3.623-8.662-8.1v-.045c0-4.478,3.666-8.146,8.708-8.146s8.661,3.623,8.661,8.1v.045c0,4.477-3.666,8.145-8.708,8.145"
142
- transform="translate(-135.016 65.583)"
143
- fill="#fff"
144
- />
145
- <path
146
- id="path30"
147
- d="M399.735-41.438c-5.09,0-8.592-3.443-8.592-8.1v-.045a8.243,8.243,0,0,1,8.568-8.146,9.18,9.18,0,0,1,6.42,2.16l-2.265,2.634a6.141,6.141,0,0,0-4.272-1.6,4.807,4.807,0,0,0-4.692,4.905v.045a4.8,4.8,0,0,0,4.949,4.995,5.89,5.89,0,0,0,3.384-.945v-2.25h-3.618v-2.992h7.1v6.841a10.837,10.837,0,0,1-6.98,2.5"
148
- transform="translate(-145.284 65.583)"
149
- fill="#fff"
150
- />
151
- <path
152
- id="path32"
153
- d="M428.664-47.855v6.27h-3.6v-6.2l-6.28-9.528h4.2L426.89-51l3.968-6.315h4.085l-6.28,9.46"
154
- transform="translate(-154.162 65.45)"
155
- fill="#fff"
156
- />
157
- <path
158
- id="path34"
159
- 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"
160
- transform="translate(-21.08 69.298)"
161
- fill="#fff"
162
- />
163
- </g>
164
- </svg>
165
- ),
97
+ logo: "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/2021_Facebook_icon.svg/2048px-2021_Facebook_icon.svg.png",
166
98
  },
167
99
  };
168
100
 
@@ -180,6 +112,14 @@ export const Chromatic = () => (
180
112
  </div>
181
113
  </DxcFooter>
182
114
  </ExampleContainer>
115
+ <ExampleContainer pseudoState="pseudo-focus">
116
+ <Title title="Focused bottom and social links" theme="light" level={4} />
117
+ <DxcFooter copyright="Copyright" socialLinks={social} bottomLinks={bottom}>
118
+ <div>
119
+ <a href="https://www.linkedin.com/company/dxctechnology">Linkedin</a>
120
+ </div>
121
+ </DxcFooter>
122
+ </ExampleContainer>
183
123
  <Title title="Margins" theme="light" level={2} />
184
124
  <ExampleContainer>
185
125
  <Title title="Xxsmall margin" theme="light" level={4} />
@@ -197,23 +137,6 @@ export const Chromatic = () => (
197
137
  <Title title="Xxlarge margin" theme="light" level={4} />
198
138
  <DxcFooter margin="xxlarge"></DxcFooter>
199
139
  </ExampleContainer>
200
- <Title title="Padding" theme="light" level={2} />
201
- <ExampleContainer>
202
- <Title title="Xxsmall padding" theme="light" level={4} />
203
- <DxcFooter padding="xxsmall"></DxcFooter>
204
- <Title title="Xsmall padding" theme="light" level={4} />
205
- <DxcFooter padding="xsmall"></DxcFooter>
206
- <Title title="Small padding" theme="light" level={4} />
207
- <DxcFooter padding="small"></DxcFooter>
208
- <Title title="Medium padding" theme="light" level={4} />
209
- <DxcFooter padding="medium"></DxcFooter>
210
- <Title title="Large padding" theme="light" level={4} />
211
- <DxcFooter padding="large"></DxcFooter>
212
- <Title title="Xlarge padding" theme="light" level={4} />
213
- <DxcFooter padding="xlarge"></DxcFooter>
214
- <Title title="Xxlarge padding" theme="light" level={4} />
215
- <DxcFooter padding="xxlarge"></DxcFooter>
216
- </ExampleContainer>
217
140
  <Title title="Opinionated theme" theme="light" level={2} />
218
141
  <ExampleContainer>
219
142
  <HalstackProvider theme={opinionatedTheme}>
@@ -10,7 +10,8 @@ var _Footer = _interopRequireDefault(require("./Footer.tsx"));
10
10
 
11
11
  var social = [{
12
12
  href: "https://www.test.com/social",
13
- logo: "https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
13
+ logo: "https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png",
14
+ title: "test"
14
15
  }];
15
16
  var bottom = [{
16
17
  href: "https://www.test.com/bottom",
@@ -89,6 +90,7 @@ describe("Footer component tests", function () {
89
90
 
90
91
  var socialIcon = getAllByRole("link")[0];
91
92
  expect(socialIcon.getAttribute("href")).toBe("https://www.test.com/social");
93
+ expect(socialIcon.getAttribute("aria-label")).toBe("test");
92
94
  var bottomLink = getByText("bottom-link-text");
93
95
  expect(bottomLink.getAttribute("href")).toBe("https://www.test.com/bottom");
94
96
  expect(getByText("test-copyright")).toBeTruthy();
package/footer/types.d.ts CHANGED
@@ -8,24 +8,28 @@ declare type Size = {
8
8
  };
9
9
  declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type SocialLink = {
11
+ /**
12
+ * URL of the page the link goes to.
13
+ */
14
+ href: string;
11
15
  /**
12
16
  * Element used as the icon for the link.
13
17
  */
14
18
  logo: string | SVG;
15
19
  /**
16
- * URL of the page the link goes to.
20
+ * Value for the HTML properties title and aria-label.
17
21
  */
18
- href: string;
22
+ title: string;
19
23
  };
20
24
  declare type BottomLink = {
21
- /**
22
- * Text for the link.
23
- */
24
- text: string;
25
25
  /**
26
26
  * URL of the page the link goes to.
27
27
  */
28
28
  href: string;
29
+ /**
30
+ * Text for the link.
31
+ */
32
+ text: string;
29
33
  };
30
34
  declare type FooterPropsType = {
31
35
  /**
@@ -56,11 +60,5 @@ declare type FooterPropsType = {
56
60
  * Size of the top margin to be applied to the footer.
57
61
  */
58
62
  margin?: Space | Size;
59
- /**
60
- * @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
61
- * Size of the padding to be applied to the custom area of the component.
62
- * You can pass an object with properties in order to specify different padding sizes.
63
- */
64
- padding?: Space | Size;
65
63
  };
66
64
  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;
package/grid/Grid.js ADDED
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
15
+
16
+ var _templateObject, _templateObject2;
17
+
18
+ var DxcGrid = function DxcGrid(props) {
19
+ return /*#__PURE__*/_react["default"].createElement(Grid, props);
20
+ };
21
+
22
+ var Grid = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n ", "\n ", "\n ", "\n ", "\n"])), function (_ref) {
23
+ var templateColumns = _ref.templateColumns;
24
+ return templateColumns && "grid-template-columns: ".concat(templateColumns.join(" "), ";");
25
+ }, function (_ref2) {
26
+ var templateRows = _ref2.templateRows;
27
+ return templateRows && "grid-template-rows: ".concat(templateRows.join(" "), ";");
28
+ }, function (_ref3) {
29
+ var templateAreas = _ref3.templateAreas;
30
+ return templateAreas && "grid-template-areas: ".concat(templateAreas.map(function (row) {
31
+ return "\"".concat(row, "\"");
32
+ }).join(" "), ";");
33
+ }, function (_ref4) {
34
+ var autoColumns = _ref4.autoColumns;
35
+ return autoColumns && "grid-auto-columns: ".concat(autoColumns, ";");
36
+ }, function (_ref5) {
37
+ var autoRows = _ref5.autoRows;
38
+ return autoRows && "grid-auto-rows: ".concat(autoRows, ";");
39
+ }, function (_ref6) {
40
+ var autoFlow = _ref6.autoFlow;
41
+ return autoFlow && "grid-auto-flow: ".concat(autoFlow, ";");
42
+ }, function (_ref7) {
43
+ var _gap$rowGap, _gap$columnGap;
44
+
45
+ var gap = _ref7.gap;
46
+ return gap != null && (typeof gap === "string" ? "gap: ".concat(gap, ";") : "row-gap: ".concat((_gap$rowGap = gap.rowGap) !== null && _gap$rowGap !== void 0 ? _gap$rowGap : "", "; column-gap: ").concat((_gap$columnGap = gap.columnGap) !== null && _gap$columnGap !== void 0 ? _gap$columnGap : "", ";"));
47
+ }, function (_ref8) {
48
+ var _placeItems$alignItem, _placeItems$justifyIt;
49
+
50
+ var placeItems = _ref8.placeItems;
51
+ return placeItems && (typeof placeItems === "string" ? "place-items: ".concat(placeItems) : "align-items: ".concat((_placeItems$alignItem = placeItems.alignItems) !== null && _placeItems$alignItem !== void 0 ? _placeItems$alignItem : "", "; justify-items: ").concat((_placeItems$justifyIt = placeItems.justifyItems) !== null && _placeItems$justifyIt !== void 0 ? _placeItems$justifyIt : "", ";"));
52
+ }, function (_ref9) {
53
+ var _placeContent$alignCo, _placeContent$justify;
54
+
55
+ var placeContent = _ref9.placeContent;
56
+ return placeContent && (typeof placeContent === "string" ? "place-content: ".concat(placeContent) : "align-content: ".concat((_placeContent$alignCo = placeContent.alignContent) !== null && _placeContent$alignCo !== void 0 ? _placeContent$alignCo : "", "; justify-content: ").concat((_placeContent$justify = placeContent.justifyContent) !== null && _placeContent$justify !== void 0 ? _placeContent$justify : "", ";"));
57
+ }, function (_ref10) {
58
+ var areaName = _ref10.areaName;
59
+ return areaName && "grid-area: ".concat(areaName, ";");
60
+ }, function (_ref11) {
61
+ var column = _ref11.column;
62
+ return column && "grid-column: ".concat(typeof column === "string" || typeof column === "number" ? column : "".concat(column.start, " / ").concat(column.end, ";"), ";");
63
+ }, function (_ref12) {
64
+ var row = _ref12.row;
65
+ return row && "grid-row: ".concat(typeof row === "string" || typeof row === "number" ? row : "".concat(row.start, " / ").concat(row.end, ";"), ";");
66
+ }, function (_ref13) {
67
+ var _placeSelf$alignSelf, _placeSelf$justifySel;
68
+
69
+ var placeSelf = _ref13.placeSelf;
70
+ return placeSelf && (typeof placeSelf === "string" ? "place-self: ".concat(placeSelf) : "align-self: ".concat((_placeSelf$alignSelf = placeSelf.alignSelf) !== null && _placeSelf$alignSelf !== void 0 ? _placeSelf$alignSelf : "", "; justify-self: ").concat((_placeSelf$justifySel = placeSelf.justifySelf) !== null && _placeSelf$justifySel !== void 0 ? _placeSelf$justifySel : "", ";"));
71
+ });
72
+
73
+ var GridItem = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n ", "\n ", "\n ", "\n"])), function (_ref14) {
74
+ var areaName = _ref14.areaName;
75
+ return areaName && "grid-area: ".concat(areaName, ";");
76
+ }, function (_ref15) {
77
+ var column = _ref15.column;
78
+ return column && "grid-column: ".concat(typeof column === "string" || typeof column === "number" ? column : "".concat(column.start, " / ").concat(column.end, ";"), ";");
79
+ }, function (_ref16) {
80
+ var row = _ref16.row;
81
+ return row && "grid-row: ".concat(typeof row === "string" || typeof row === "number" ? row : "".concat(row.start, " / ").concat(row.end, ";"), ";");
82
+ }, function (_ref17) {
83
+ var _placeSelf$alignSelf2, _placeSelf$justifySel2;
84
+
85
+ var placeSelf = _ref17.placeSelf;
86
+ return placeSelf && (typeof placeSelf === "string" ? "place-self: ".concat(placeSelf) : "align-self: ".concat((_placeSelf$alignSelf2 = placeSelf.alignSelf) !== null && _placeSelf$alignSelf2 !== void 0 ? _placeSelf$alignSelf2 : "", "; justify-self: ").concat((_placeSelf$justifySel2 = placeSelf.justifySelf) !== null && _placeSelf$justifySel2 !== void 0 ? _placeSelf$justifySel2 : "", ";"));
87
+ });
88
+
89
+ DxcGrid.Item = GridItem;
90
+ var _default = DxcGrid;
91
+ exports["default"] = _default;