@dxc-technology/halstack-react 0.0.0-a7970fd → 0.0.0-a7fec42

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 (196) hide show
  1. package/HalstackContext.d.ts +4 -2
  2. package/HalstackContext.js +110 -58
  3. package/accordion/Accordion.js +122 -103
  4. package/accordion/Accordion.stories.tsx +2 -3
  5. package/accordion/Accordion.test.js +9 -10
  6. package/accordion/types.d.ts +5 -4
  7. package/accordion-group/AccordionGroup.js +2 -21
  8. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  9. package/accordion-group/AccordionGroup.test.js +20 -45
  10. package/accordion-group/types.d.ts +10 -3
  11. package/alert/Alert.js +5 -2
  12. package/badge/Badge.d.ts +1 -1
  13. package/badge/Badge.js +5 -3
  14. package/badge/types.d.ts +1 -0
  15. package/bleed/Bleed.js +1 -34
  16. package/bleed/Bleed.stories.tsx +94 -95
  17. package/bleed/types.d.ts +1 -1
  18. package/box/Box.js +23 -33
  19. package/box/types.d.ts +1 -0
  20. package/bulleted-list/BulletedList.d.ts +7 -0
  21. package/bulleted-list/BulletedList.js +123 -0
  22. package/bulleted-list/BulletedList.stories.tsx +200 -0
  23. package/bulleted-list/types.d.ts +11 -0
  24. package/{list → bulleted-list}/types.js +0 -0
  25. package/button/Button.js +43 -61
  26. package/button/Button.stories.tsx +9 -0
  27. package/button/types.d.ts +7 -7
  28. package/card/Card.js +34 -36
  29. package/card/types.d.ts +1 -0
  30. package/checkbox/Checkbox.js +90 -95
  31. package/checkbox/Checkbox.test.js +93 -16
  32. package/checkbox/types.d.ts +2 -2
  33. package/chip/types.d.ts +1 -1
  34. package/common/variables.js +232 -96
  35. package/date-input/DateInput.js +8 -5
  36. package/dialog/Dialog.js +52 -28
  37. package/dialog/Dialog.stories.tsx +57 -2
  38. package/dialog/Dialog.test.js +34 -4
  39. package/dialog/types.d.ts +3 -2
  40. package/dropdown/Dropdown.d.ts +1 -1
  41. package/dropdown/Dropdown.js +244 -247
  42. package/dropdown/Dropdown.stories.tsx +126 -63
  43. package/dropdown/Dropdown.test.js +509 -108
  44. package/dropdown/DropdownMenu.d.ts +4 -0
  45. package/dropdown/DropdownMenu.js +80 -0
  46. package/dropdown/DropdownMenuItem.d.ts +4 -0
  47. package/dropdown/DropdownMenuItem.js +92 -0
  48. package/dropdown/types.d.ts +25 -5
  49. package/file-input/FileInput.js +9 -6
  50. package/file-input/FileItem.js +7 -5
  51. package/flex/Flex.d.ts +4 -0
  52. package/flex/Flex.js +69 -0
  53. package/flex/Flex.stories.tsx +103 -0
  54. package/flex/types.d.ts +32 -0
  55. package/{quick-nav-container → flex}/types.js +0 -0
  56. package/footer/Footer.js +7 -5
  57. package/footer/Footer.stories.tsx +8 -1
  58. package/footer/Icons.js +1 -1
  59. package/footer/types.d.ts +2 -1
  60. package/header/Header.js +80 -75
  61. package/header/Header.stories.tsx +4 -4
  62. package/header/Icons.js +2 -2
  63. package/header/types.d.ts +3 -2
  64. package/inset/Inset.js +1 -34
  65. package/inset/Inset.stories.tsx +36 -36
  66. package/inset/types.d.ts +1 -1
  67. package/layout/ApplicationLayout.d.ts +16 -6
  68. package/layout/ApplicationLayout.js +70 -117
  69. package/layout/ApplicationLayout.stories.tsx +84 -93
  70. package/layout/Icons.d.ts +5 -0
  71. package/layout/Icons.js +13 -2
  72. package/layout/SidenavContext.d.ts +5 -0
  73. package/layout/SidenavContext.js +19 -0
  74. package/layout/types.d.ts +18 -33
  75. package/link/Link.d.ts +3 -2
  76. package/link/Link.js +57 -70
  77. package/link/Link.stories.tsx +95 -53
  78. package/link/Link.test.js +7 -15
  79. package/link/types.d.ts +7 -23
  80. package/main.d.ts +8 -11
  81. package/main.js +40 -58
  82. package/number-input/NumberInput.test.js +1 -1
  83. package/number-input/types.d.ts +1 -1
  84. package/package.json +10 -9
  85. package/paginator/Paginator.js +17 -38
  86. package/paginator/Paginator.test.js +42 -0
  87. package/paragraph/Paragraph.d.ts +6 -0
  88. package/paragraph/Paragraph.js +38 -0
  89. package/paragraph/Paragraph.stories.tsx +44 -0
  90. package/password-input/PasswordInput.js +11 -6
  91. package/password-input/PasswordInput.test.js +14 -14
  92. package/password-input/types.d.ts +1 -1
  93. package/progress-bar/ProgressBar.d.ts +2 -2
  94. package/progress-bar/ProgressBar.js +57 -51
  95. package/progress-bar/ProgressBar.stories.jsx +13 -11
  96. package/progress-bar/ProgressBar.test.js +67 -22
  97. package/progress-bar/types.d.ts +3 -4
  98. package/quick-nav/QuickNav.js +75 -22
  99. package/quick-nav/QuickNav.stories.tsx +131 -26
  100. package/quick-nav/types.d.ts +1 -1
  101. package/radio-group/Radio.d.ts +1 -1
  102. package/radio-group/Radio.js +43 -28
  103. package/radio-group/RadioGroup.js +30 -27
  104. package/radio-group/RadioGroup.stories.tsx +1 -0
  105. package/radio-group/RadioGroup.test.js +123 -96
  106. package/radio-group/types.d.ts +2 -2
  107. package/resultsetTable/ResultsetTable.test.js +42 -0
  108. package/select/Listbox.d.ts +1 -1
  109. package/select/Listbox.js +58 -8
  110. package/select/Select.js +80 -90
  111. package/select/Select.stories.tsx +145 -100
  112. package/select/Select.test.js +425 -249
  113. package/select/types.d.ts +2 -5
  114. package/sidenav/Sidenav.d.ts +6 -5
  115. package/sidenav/Sidenav.js +184 -52
  116. package/sidenav/Sidenav.stories.tsx +154 -156
  117. package/sidenav/Sidenav.test.js +25 -37
  118. package/sidenav/types.d.ts +50 -27
  119. package/slider/Slider.js +116 -92
  120. package/slider/Slider.stories.tsx +7 -1
  121. package/slider/Slider.test.js +121 -21
  122. package/slider/types.d.ts +2 -2
  123. package/spinner/Spinner.js +1 -1
  124. package/switch/Switch.d.ts +1 -1
  125. package/switch/Switch.js +135 -66
  126. package/switch/Switch.stories.tsx +8 -30
  127. package/switch/Switch.test.js +144 -17
  128. package/switch/types.d.ts +3 -4
  129. package/table/Table.js +1 -1
  130. package/tabs/Tab.d.ts +4 -0
  131. package/tabs/Tab.js +135 -0
  132. package/tabs/Tabs.js +360 -104
  133. package/tabs/Tabs.stories.tsx +74 -0
  134. package/tabs/Tabs.test.js +217 -6
  135. package/tabs/types.d.ts +15 -5
  136. package/tabs-nav/NavTabs.d.ts +8 -0
  137. package/tabs-nav/NavTabs.js +125 -0
  138. package/tabs-nav/NavTabs.stories.tsx +170 -0
  139. package/tabs-nav/NavTabs.test.js +82 -0
  140. package/tabs-nav/Tab.d.ts +4 -0
  141. package/tabs-nav/Tab.js +130 -0
  142. package/tabs-nav/types.d.ts +53 -0
  143. package/{radio → tabs-nav}/types.js +0 -0
  144. package/tag/Tag.js +1 -1
  145. package/tag/types.d.ts +1 -1
  146. package/text-input/Icons.d.ts +8 -0
  147. package/text-input/Icons.js +60 -0
  148. package/text-input/Suggestion.d.ts +4 -0
  149. package/text-input/Suggestion.js +57 -0
  150. package/text-input/Suggestions.d.ts +4 -0
  151. package/text-input/Suggestions.js +134 -0
  152. package/text-input/TextInput.js +206 -329
  153. package/text-input/TextInput.stories.tsx +189 -182
  154. package/text-input/TextInput.test.js +166 -164
  155. package/text-input/types.d.ts +35 -4
  156. package/textarea/Textarea.js +10 -19
  157. package/textarea/types.d.ts +1 -1
  158. package/toggle-group/types.d.ts +1 -1
  159. package/typography/Typography.d.ts +4 -0
  160. package/typography/Typography.js +131 -0
  161. package/typography/Typography.stories.tsx +198 -0
  162. package/typography/types.d.ts +18 -0
  163. package/{row → typography}/types.js +0 -0
  164. package/useTranslatedLabels.d.ts +2 -0
  165. package/useTranslatedLabels.js +20 -0
  166. package/wizard/Wizard.js +36 -41
  167. package/wizard/Wizard.stories.tsx +20 -1
  168. package/wizard/types.d.ts +5 -4
  169. package/list/List.d.ts +0 -4
  170. package/list/List.js +0 -47
  171. package/list/List.stories.tsx +0 -95
  172. package/list/types.d.ts +0 -7
  173. package/quick-nav-container/HeadingLink.d.ts +0 -8
  174. package/quick-nav-container/HeadingLink.js +0 -58
  175. package/quick-nav-container/QuickNavContainer.d.ts +0 -4
  176. package/quick-nav-container/QuickNavContainer.js +0 -69
  177. package/quick-nav-container/Section.d.ts +0 -9
  178. package/quick-nav-container/Section.js +0 -37
  179. package/quick-nav-container/types.d.ts +0 -34
  180. package/radio/Radio.d.ts +0 -4
  181. package/radio/Radio.js +0 -173
  182. package/radio/Radio.stories.tsx +0 -192
  183. package/radio/Radio.test.js +0 -71
  184. package/radio/types.d.ts +0 -54
  185. package/row/Row.d.ts +0 -3
  186. package/row/Row.js +0 -127
  187. package/row/Row.stories.tsx +0 -237
  188. package/row/types.d.ts +0 -28
  189. package/stack/Stack.d.ts +0 -3
  190. package/stack/Stack.js +0 -97
  191. package/stack/Stack.stories.tsx +0 -164
  192. package/stack/types.d.ts +0 -24
  193. package/stack/types.js +0 -5
  194. package/text/Text.d.ts +0 -7
  195. package/text/Text.js +0 -30
  196. package/text/Text.stories.tsx +0 -19
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -11,54 +13,105 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
11
13
 
12
14
  var _react = _interopRequireDefault(require("react"));
13
15
 
14
- var _styledComponents = _interopRequireDefault(require("styled-components"));
16
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
15
17
 
16
18
  var _slugify = _interopRequireDefault(require("slugify"));
17
19
 
20
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
21
+
18
22
  var _Heading = _interopRequireDefault(require("../heading/Heading"));
19
23
 
20
- var _Stack = _interopRequireDefault(require("../stack/Stack"));
24
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
21
25
 
22
26
  var _Inset = _interopRequireDefault(require("../inset/Inset"));
23
27
 
24
- var _List = _interopRequireDefault(require("../list/List"));
28
+ var _Typography = _interopRequireDefault(require("../typography/Typography"));
29
+
30
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
+
32
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
25
33
 
26
- var _Text = _interopRequireDefault(require("../text/Text"));
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); }
27
35
 
28
- var _templateObject, _templateObject2;
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
29
37
 
30
38
  var DxcQuickNav = function DxcQuickNav(_ref) {
31
39
  var title = _ref.title,
32
40
  links = _ref.links;
33
- return /*#__PURE__*/_react["default"].createElement(QuickNavContainer, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
34
- gutter: "small"
41
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
42
+ var colorsTheme = (0, _useTheme["default"])();
43
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
44
+ theme: colorsTheme.quickNav
45
+ }, /*#__PURE__*/_react["default"].createElement(QuickNavContainer, null, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
46
+ direction: "column",
47
+ gap: "0.5rem"
35
48
  }, /*#__PURE__*/_react["default"].createElement(_Heading["default"], {
36
49
  level: 4,
37
- text: title
38
- }), /*#__PURE__*/_react["default"].createElement(_List["default"], null, links.map(function (link) {
50
+ text: title || translatedLabels.quickNav.contentTitle
51
+ }), /*#__PURE__*/_react["default"].createElement(ListColumn, null, links.map(function (link) {
39
52
  var _link$links;
40
53
 
41
- return /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
42
- space: "xxsmall"
43
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
54
+ return /*#__PURE__*/_react["default"].createElement("li", {
55
+ key: link.label
56
+ }, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
57
+ space: "0.25rem"
58
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
44
59
  href: "#".concat((0, _slugify["default"])(link === null || link === void 0 ? void 0 : link.label, {
45
60
  lower: true
46
61
  }))
47
- }, link === null || link === void 0 ? void 0 : link.label), (_link$links = link.links) === null || _link$links === void 0 ? void 0 : _link$links.map(function (sublink) {
48
- return /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
49
- horizontal: "xsmall"
50
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
51
- href: "#".concat((0, _slugify["default"])(sublink === null || sublink === void 0 ? void 0 : sublink.label, {
62
+ }, link === null || link === void 0 ? void 0 : link.label), /*#__PURE__*/_react["default"].createElement(ListSecondColumn, null, (_link$links = link.links) === null || _link$links === void 0 ? void 0 : _link$links.map(function (sublink) {
63
+ return /*#__PURE__*/_react["default"].createElement("li", {
64
+ key: sublink.label
65
+ }, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
66
+ horizontal: "0.5rem"
67
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
68
+ href: "#".concat((0, _slugify["default"])(link === null || link === void 0 ? void 0 : link.label, {
69
+ lower: true
70
+ }), "-").concat((0, _slugify["default"])(sublink === null || sublink === void 0 ? void 0 : sublink.label, {
52
71
  lower: true
53
72
  }))
54
- }, sublink === null || sublink === void 0 ? void 0 : sublink.label)));
55
- })));
56
- }))));
73
+ }, sublink === null || sublink === void 0 ? void 0 : sublink.label))));
74
+ })))));
75
+ })))));
57
76
  };
58
77
 
59
- var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 5px 15px;\n border-left: 2px solid #bfbfbf;\n li {\n div:first-child {\n display: none;\n }\n }\n"])));
78
+ var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n border-left: 2px solid ", ";\n"])), function (props) {
79
+ return props.theme.paddingTop;
80
+ }, function (props) {
81
+ return props.theme.paddingBottom;
82
+ }, function (props) {
83
+ return props.theme.paddingLeft;
84
+ }, function (props) {
85
+ return props.theme.paddingRight;
86
+ }, function (props) {
87
+ return props.theme.dividerBorderColor;
88
+ });
60
89
 
61
- var Link = _styledComponents["default"].a(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: none;\n font-size: 14px;\n color: #666666;\n &:hover {\n color: #ab63cf;\n }\n &:focus {\n border-radius: 2px;\n border-color: #0095ff;\n }\n"])));
90
+ var ListColumn = _styledComponents["default"].ul(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n margin: 0;\n padding: 0;\n list-style-type: none;\n"])));
91
+
92
+ var ListSecondColumn = _styledComponents["default"].ul(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n margin: 0;\n padding: 0;\n list-style-type: none;\n"])));
93
+
94
+ var Link = _styledComponents["default"].a(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: none;\n font-size: ", ";\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n display: block;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n width: fit-content;\n max-width: 100%;\n\n &:hover {\n color: ", ";\n }\n &:focus {\n outline-color: ", ";\n outline-style: ", ";\n outline-width: ", ";\n border-radius: ", ";\n }\n"])), function (props) {
95
+ return props.theme.fontSize;
96
+ }, function (props) {
97
+ return props.theme.fontFamily;
98
+ }, function (props) {
99
+ return props.theme.fontStyle;
100
+ }, function (props) {
101
+ return props.theme.fontWeight;
102
+ }, function (props) {
103
+ return props.theme.fontColor;
104
+ }, function (props) {
105
+ return props.theme.hoverFontColor;
106
+ }, function (props) {
107
+ return props.theme.focusBorderColor;
108
+ }, function (props) {
109
+ return props.theme.focusBorderStyle;
110
+ }, function (props) {
111
+ return props.theme.focusBorderThickness;
112
+ }, function (props) {
113
+ return props.theme.focusBorderRadius;
114
+ });
62
115
 
63
116
  var _default = DxcQuickNav;
64
117
  exports["default"] = _default;
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import styled from "styled-components";
3
3
  import DxcQuickNav from "./QuickNav";
4
4
  import DxcHeading from "../heading/Heading";
5
- import DxcText from "../text/Text";
5
+ import DxcParagraph from "../paragraph/Paragraph";
6
6
  import Title from "../../.storybook/components/Title";
7
7
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
8
8
 
@@ -11,24 +11,61 @@ export default {
11
11
  component: DxcQuickNav,
12
12
  };
13
13
 
14
+ const defaultLinks = [
15
+ {
16
+ label: "Overview",
17
+ },
18
+ {
19
+ label: "Principles",
20
+ links: [{ label: "Color" }, { label: "Spacing" }, { label: "Typography" }],
21
+ },
22
+ {
23
+ label: "Components",
24
+ links: [
25
+ {
26
+ label: "Accordion",
27
+ },
28
+ {
29
+ label: "Button",
30
+ },
31
+ ],
32
+ },
33
+ ];
34
+
14
35
  const links = [
15
36
  {
16
37
  label: "Overview",
17
- id: "overview",
18
38
  links: [
19
39
  {
20
40
  label: "Introduction",
21
- id: "introduction",
22
41
  },
23
42
  ],
24
43
  },
25
44
  {
26
- label: "Principles",
27
- id: "principles",
45
+ label: "Components",
28
46
  links: [
29
- { label: "Color", id: "color" },
30
- { label: "Spacing", id: "spacing" },
31
- { label: "Typography", id: "typography" },
47
+ {
48
+ label: "Introduction",
49
+ },
50
+ {
51
+ label: "Accordion",
52
+ },
53
+ ],
54
+ },
55
+ {
56
+ label: "Principles very very very very very very very very long",
57
+ links: [
58
+ { label: "Color very very very very very very very very long" },
59
+ { label: "Spacingveryveryveryveryveryveryveryverylong" },
60
+ { label: "Typography" },
61
+ ],
62
+ },
63
+ {
64
+ label: "Componentsveryveryveryveryveryveryveryverylong",
65
+ links: [
66
+ {
67
+ label: "Accordion",
68
+ },
32
69
  ],
33
70
  },
34
71
  ];
@@ -38,13 +75,25 @@ export const Chromatic = () => (
38
75
  <ExampleContainer>
39
76
  <Title title="Default" level={4} />
40
77
  <QuickNavContainer>
41
- <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
78
+ <DxcQuickNav links={defaultLinks} />
79
+ </QuickNavContainer>
80
+ </ExampleContainer>
81
+ <ExampleContainer>
82
+ <Title title="Text overflow" level={4} />
83
+ <QuickNavContainer>
84
+ <DxcQuickNav links={links} />
42
85
  </QuickNavContainer>
43
86
  </ExampleContainer>
44
87
  <ExampleContainer pseudoState="pseudo-hover">
45
88
  <Title title="Link hovered" level={4} />
46
89
  <QuickNavContainer>
47
- <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
90
+ <DxcQuickNav links={links} />
91
+ </QuickNavContainer>
92
+ </ExampleContainer>
93
+ <ExampleContainer pseudoState="pseudo-focus">
94
+ <Title title="Link focus" level={4} />
95
+ <QuickNavContainer>
96
+ <DxcQuickNav links={links} />
48
97
  </QuickNavContainer>
49
98
  </ExampleContainer>
50
99
  <ExampleContainer>
@@ -53,7 +102,7 @@ export const Chromatic = () => (
53
102
  <ContentContainer>
54
103
  <Content id="overview">
55
104
  <DxcHeading level={1} text="Overview" margin={{ bottom: "small" }} />
56
- <DxcText>
105
+ <DxcParagraph>
57
106
  Halstack is the DXC Technology's open source design system for insurance products and digital experiences.
58
107
  Our system provides all the tools and resources needed to create superior, beautiful but above all,
59
108
  functional user experiences. Halstack is the DXC Technology's open source design system for insurance
@@ -70,10 +119,10 @@ export const Chromatic = () => (
70
119
  create superior, beautiful but above all, functional user experiences.Halstack is the DXC Technology's
71
120
  open source design system for insurance products and digital experiences. Our system provides all the
72
121
  tools and resources needed to create superior, beautiful but above all, functional user experiences.
73
- </DxcText>
74
- <Content id="introduction">
122
+ </DxcParagraph>
123
+ <Content id="overview-introduction">
75
124
  <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
76
- <DxcText>
125
+ <DxcParagraph>
77
126
  Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
78
127
  provide guidance for development teams in order to deliver delightful and consistent user experiences to
79
128
  our customers: Balance Consistency Visual hierarchy All our components, design tokens, accessibility
@@ -103,14 +152,59 @@ export const Chromatic = () => (
103
152
  to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
104
153
  design new features, or help us improve the project documentation. If you're interested, definitely
105
154
  check out our contribution guidelines.
106
- </DxcText>
155
+ </DxcParagraph>
107
156
  </Content>
108
157
  </Content>
109
- <Content id="principles">
158
+ <Content id="components">
159
+ <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
160
+ <Content id="components-introduction">
161
+ <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
162
+ <DxcParagraph>
163
+ Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
164
+ provide guidance for development teams in order to deliver delightful and consistent user experiences to
165
+ our customers: Balance Consistency Visual hierarchy All our components, design tokens, accessibility
166
+ guidelines, responsive design techniques, and layout proposals have been carefully curated by DXC design
167
+ and engineering teams with the objective of creating a unique visual language and ecosystem for our
168
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
169
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
170
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
171
+ design new features, or help us improve the project documentation. If you're interested, definitely
172
+ check out our contribution guidelines.Design principles Halstack design principles are the fundamental
173
+ part of DXC Technology's approach to provide guidance for development teams in order to deliver
174
+ delightful and consistent user experiences to our customers: Balance Consistency Visual hierarchy All
175
+ our components, design tokens, accessibility guidelines, responsive design techniques, and layout
176
+ proposals have been carefully curated by DXC design and engineering teams with the objective of creating
177
+ a unique visual language and ecosystem for our applications. This is the DXC way of creating User
178
+ Experiences. Open Source Halstack is an open source design system, this means that we work towards DXC
179
+ Technology bussines needs, but it is open for anyone to use and contribute back to. We are charmed to
180
+ receive external contributions to help us find bugs, design new features, or help us improve the project
181
+ documentation. If you're interested, definitely check out our contribution guidelines.Design principles
182
+ Halstack design principles are the fundamental part of DXC Technology's approach to provide guidance for
183
+ development teams in order to deliver delightful and consistent user experiences to our customers:
184
+ Balance Consistency Visual hierarchy All our components, design tokens, accessibility guidelines,
185
+ responsive design techniques, and layout proposals have been carefully curated by DXC design and
186
+ engineering teams with the objective of creating a unique visual language and ecosystem for our
187
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
188
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
189
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
190
+ design new features, or help us improve the project documentation. If you're interested, definitely
191
+ check out our contribution guidelines.
192
+ </DxcParagraph>
193
+ </Content>
194
+ <Content id="components-accordion">
195
+ <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
196
+ <DxcParagraph>
197
+ Accordions are used to group similar content and hide or show it depending on user needs or preferences.
198
+ Accordions give users more granular control over the interface and help digest content in stages, rather
199
+ than all at once.
200
+ </DxcParagraph>
201
+ </Content>
202
+ </Content>
203
+ <Content id="principles-very-very-very-very-very-very-very-very-long">
110
204
  <DxcHeading level={1} text="Principles" margin={{ top: "small", bottom: "xsmall" }} />
111
- <Content id="color">
205
+ <Content id="principles-very-very-very-very-very-very-very-very-long-color-very-very-very-very-very-very-very-very-long">
112
206
  <DxcHeading level={2} text="Color" margin={{ top: "xsmall", bottom: "xsmall" }} />
113
- <DxcText>
207
+ <DxcParagraph>
114
208
  The color palette is an essential asset as a communication resource of our design system. Halstack color
115
209
  palette brings a unified consistency and helps in guiding the user's perception order. Our color palette
116
210
  is based in the HSL model . All our color families are calculated using the lightness value of the
@@ -143,11 +237,11 @@ export const Chromatic = () => (
143
237
  tokens to manage color. Appart from a multi-purpose greyscale family, purple and blue are the core color
144
238
  families used in our set of components. Additional families as red, green and yellow help as feedback
145
239
  role-based color palettes and must not be used outside this context.
146
- </DxcText>
240
+ </DxcParagraph>
147
241
  </Content>
148
- <Content id="spacing">
242
+ <Content id="principles-very-very-very-very-very-very-very-very-long-spacingveryveryveryveryveryveryveryverylong">
149
243
  <DxcHeading level={2} text="Spacing" margin={{ top: "xsmall", bottom: "xsmall" }} />
150
- <DxcText>
244
+ <DxcParagraph>
151
245
  In the search of consistent alignment between the elements we provide a spacing scale based on a root
152
246
  values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and consistent,
153
247
  yet distinct enough, steps between them.In the search of consistent alignment between the elements we
@@ -165,11 +259,11 @@ export const Chromatic = () => (
165
259
  consistent, yet distinct enough, steps between them.In the search of consistent alignment between the
166
260
  elements we provide a spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are
167
261
  easily multiplied, they provide flexible and consistent, yet distinct enough, steps between them.
168
- </DxcText>
262
+ </DxcParagraph>
169
263
  </Content>
170
- <Content id="typography">
264
+ <Content id="principles-very-very-very-very-very-very-very-very-long-typography">
171
265
  <DxcHeading level={2} text="Typography" margin={{ top: "xsmall", bottom: "xsmall" }} />
172
- <DxcText>
266
+ <DxcParagraph>
173
267
  Our selected typography helps in structuring our user's experience based on the visual impact that it
174
268
  has on the user interface content. It defines what is the first noticeable piece of information or data
175
269
  based on the font shape, size, color, or type and it highlights some pieces of text over the rest. Some
@@ -201,12 +295,23 @@ export const Chromatic = () => (
201
295
  Halstack Design System include headers, body, taglines, captions, and labels. Make sure you include all
202
296
  the different typographic variants in order to enhance the application's content structure, including
203
297
  the Heading component which defines different levels of page and section titles.
204
- </DxcText>
298
+ </DxcParagraph>
299
+ </Content>
300
+ </Content>
301
+ <Content id="componentsveryveryveryveryveryveryveryverylong">
302
+ <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
303
+ <Content id="componentsveryveryveryveryveryveryveryverylong-accordion">
304
+ <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
305
+ <DxcParagraph>
306
+ Accordions are used to group similar content and hide or show it depending on user needs or preferences.
307
+ Accordions give users more granular control over the interface and help digest content in stages, rather
308
+ than all at once.
309
+ </DxcParagraph>
205
310
  </Content>
206
311
  </Content>
207
312
  </ContentContainer>
208
313
  <QuickNavContainer>
209
- <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
314
+ <DxcQuickNav title="Sections" links={links} />
210
315
  </QuickNavContainer>
211
316
  </Container>
212
317
  </ExampleContainer>
@@ -2,7 +2,7 @@ declare type Props = {
2
2
  /**
3
3
  * Title of the quick nav component.
4
4
  */
5
- title: string;
5
+ title?: string;
6
6
  /**
7
7
  * Links to be shown inside the quick nav component.
8
8
  */
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { RadioProps } from "./types";
3
- declare const _default: React.MemoExoticComponent<({ option, currentValue, onClick, error, disabled, focused, readonly, tabIndex, }: RadioProps) => JSX.Element>;
3
+ declare const _default: React.MemoExoticComponent<({ label, checked, onClick, error, disabled, focused, readonly, tabIndex, }: RadioProps) => JSX.Element>;
4
4
  export default _default;
@@ -28,10 +28,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
28
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
29
29
 
30
30
  var DxcRadio = function DxcRadio(_ref) {
31
- var _option$disabled;
32
-
33
- var option = _ref.option,
34
- currentValue = _ref.currentValue,
31
+ var label = _ref.label,
32
+ checked = _ref.checked,
35
33
  onClick = _ref.onClick,
36
34
  error = _ref.error,
37
35
  disabled = _ref.disabled,
@@ -50,7 +48,7 @@ var DxcRadio = function DxcRadio(_ref) {
50
48
  var _ref$current;
51
49
 
52
50
  onClick();
53
- focused && document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
51
+ document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
54
52
  };
55
53
 
56
54
  var _useState3 = (0, _react.useState)(true),
@@ -75,52 +73,57 @@ var DxcRadio = function DxcRadio(_ref) {
75
73
  error: error,
76
74
  disabled: disabled,
77
75
  readonly: readonly,
78
- onMouseDown: function onMouseDown(event) {
79
- // Prevents div's onClick from stealing the radio input's focus
80
- event.preventDefault();
81
- },
82
- onClick: handleOnClick
76
+ onClick: disabled ? undefined : handleOnClick
83
77
  }, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
84
78
  error: error,
85
79
  disabled: disabled,
86
80
  readonly: readonly,
87
81
  role: "radio",
88
- "aria-checked": option.value === currentValue,
89
- "aria-disabled": (_option$disabled = option.disabled) !== null && _option$disabled !== void 0 ? _option$disabled : false,
82
+ "aria-checked": checked,
83
+ "aria-disabled": disabled,
90
84
  "aria-labelledby": radioLabelId,
91
85
  tabIndex: disabled ? -1 : focused ? tabIndex : -1,
92
86
  ref: ref
93
- }, option.value === currentValue && /*#__PURE__*/_react["default"].createElement(Dot, {
87
+ }, checked && /*#__PURE__*/_react["default"].createElement(Dot, {
94
88
  disabled: disabled,
95
89
  readonly: readonly,
96
90
  error: error
97
91
  }))), /*#__PURE__*/_react["default"].createElement(Label, {
98
92
  id: radioLabelId,
99
93
  disabled: disabled
100
- }, option.label))));
94
+ }, label))));
101
95
  };
102
96
 
103
- var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
97
+ var getRadioInputStateColor = function getRadioInputStateColor(props, state) {
98
+ switch (state) {
99
+ case "enabled":
100
+ return props.disabled ? props.theme.disabledRadioInputColor : props.error ? props.theme.errorRadioInputColor : props.readonly ? props.theme.readonlyRadioInputColor : props.theme.radioInputColor;
104
101
 
105
- var RadioContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n ", "\n"])), function (props) {
106
- return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
107
- }, function (props) {
108
- return !props.disabled ? "\n &:hover {\n & > div > div { \n border-color: ".concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n }\n };\n }\n &:active {\n & > div > div {\n border-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n }\n }\n }\n ") : "pointer-events: none;";
109
- });
102
+ case "hover":
103
+ return props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor;
110
104
 
111
- var RadioInputContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
105
+ case "active":
106
+ return props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor;
107
+ }
108
+ };
112
109
 
113
- var RadioInput = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n border: 2px solid\n ", ";\n border-radius: 50%;\n\n ", "\n"])), function (props) {
114
- if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
110
+ var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
111
+
112
+ var RadioInputContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
113
+
114
+ var RadioInput = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border: 2px solid ", ";\n border-radius: 50%;\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n ", "\n"])), function (props) {
115
+ return getRadioInputStateColor(props, "enabled");
116
+ }, function (props) {
117
+ return props.theme.focusBorderColor;
115
118
  }, function (props) {
116
- return !props.disabled ? "&:focus {\n outline: 2px solid ".concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n &:focus-visible {\n outline: 2px solid ").concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n ") : "\n :focus-visible {\n outline: none;\n }\n ";
119
+ return props.disabled && "pointer-events: none;";
117
120
  });
118
121
 
119
- var Dot = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
120
- if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
122
+ var Dot = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
123
+ return getRadioInputStateColor(props, "enabled");
121
124
  });
122
125
 
123
- var Label = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
126
+ var Label = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
124
127
  return props.theme.radioInputLabelMargin;
125
128
  }, function (props) {
126
129
  return props.theme.fontFamily;
@@ -133,7 +136,19 @@ var Label = _styledComponents["default"].span(_templateObject6 || (_templateObje
133
136
  }, function (props) {
134
137
  return props.theme.radioInputLabelLineHeight;
135
138
  }, function (props) {
136
- return props.disabled && "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;");
139
+ return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, ";") : "color: ".concat(props.theme.radioInputLabelFontColor);
140
+ });
141
+
142
+ var RadioContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n &:hover {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n &:active {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n"])), function (props) {
143
+ return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
144
+ }, RadioInput, function (props) {
145
+ return !props.disabled && getRadioInputStateColor(props, "hover");
146
+ }, Dot, function (props) {
147
+ return !props.disabled && getRadioInputStateColor(props, "hover");
148
+ }, RadioInput, function (props) {
149
+ return !props.disabled && getRadioInputStateColor(props, "active");
150
+ }, Dot, function (props) {
151
+ return !props.disabled && getRadioInputStateColor(props, "active");
137
152
  });
138
153
 
139
154
  var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);