@dxc-technology/halstack-react 0.0.0-ec7b867 → 0.0.0-ecc45e2

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 (240) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +7 -28
  5. package/accordion/Accordion.stories.tsx +12 -12
  6. package/accordion/Accordion.test.js +72 -0
  7. package/accordion/types.d.ts +5 -1
  8. package/accordion-group/AccordionGroup.d.ts +1 -1
  9. package/accordion-group/AccordionGroup.js +14 -15
  10. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  11. package/accordion-group/AccordionGroup.test.js +151 -0
  12. package/accordion-group/types.d.ts +5 -1
  13. package/alert/Alert.js +4 -1
  14. package/alert/Alert.test.js +92 -0
  15. package/badge/Badge.d.ts +4 -0
  16. package/badge/Badge.js +5 -3
  17. package/badge/types.d.ts +5 -0
  18. package/{list → badge}/types.js +0 -0
  19. package/bleed/Bleed.js +1 -34
  20. package/bleed/Bleed.stories.tsx +94 -95
  21. package/bleed/types.d.ts +25 -1
  22. package/box/Box.js +22 -32
  23. package/box/Box.test.js +18 -0
  24. package/bulleted-list/BulletedList.d.ts +7 -0
  25. package/bulleted-list/BulletedList.js +123 -0
  26. package/bulleted-list/BulletedList.stories.tsx +200 -0
  27. package/bulleted-list/types.d.ts +11 -0
  28. package/{radio → bulleted-list}/types.js +0 -0
  29. package/button/Button.js +53 -68
  30. package/button/Button.stories.tsx +9 -0
  31. package/button/Button.test.js +35 -0
  32. package/button/types.d.ts +7 -7
  33. package/card/Card.js +24 -27
  34. package/card/Card.test.js +50 -0
  35. package/checkbox/Checkbox.d.ts +1 -1
  36. package/checkbox/Checkbox.js +43 -39
  37. package/checkbox/Checkbox.stories.tsx +124 -128
  38. package/checkbox/Checkbox.test.js +78 -0
  39. package/checkbox/types.d.ts +7 -3
  40. package/chip/Chip.test.js +56 -0
  41. package/chip/types.d.ts +1 -1
  42. package/common/variables.js +229 -336
  43. package/date-input/DateInput.js +56 -42
  44. package/date-input/DateInput.stories.tsx +7 -7
  45. package/date-input/DateInput.test.js +479 -0
  46. package/date-input/types.d.ts +16 -9
  47. package/dialog/Dialog.js +46 -50
  48. package/dialog/Dialog.stories.tsx +1 -2
  49. package/dialog/Dialog.test.js +70 -0
  50. package/dialog/types.d.ts +2 -2
  51. package/dropdown/Dropdown.d.ts +1 -1
  52. package/dropdown/Dropdown.js +242 -250
  53. package/dropdown/Dropdown.stories.tsx +126 -63
  54. package/dropdown/Dropdown.test.js +591 -0
  55. package/dropdown/DropdownMenu.d.ts +4 -0
  56. package/dropdown/DropdownMenu.js +80 -0
  57. package/dropdown/DropdownMenuItem.d.ts +4 -0
  58. package/dropdown/DropdownMenuItem.js +92 -0
  59. package/dropdown/types.d.ts +25 -5
  60. package/file-input/FileInput.js +9 -6
  61. package/file-input/FileInput.test.js +457 -0
  62. package/file-input/FileItem.js +7 -5
  63. package/flex/Flex.d.ts +4 -0
  64. package/flex/Flex.js +57 -0
  65. package/flex/Flex.stories.tsx +103 -0
  66. package/flex/types.d.ts +21 -0
  67. package/{row → flex}/types.js +0 -0
  68. package/footer/Footer.js +15 -88
  69. package/footer/Footer.test.js +109 -0
  70. package/footer/Icons.js +1 -1
  71. package/footer/types.d.ts +1 -1
  72. package/header/Header.js +95 -114
  73. package/header/Header.stories.tsx +46 -36
  74. package/header/Header.test.js +79 -0
  75. package/header/Icons.js +2 -2
  76. package/header/types.d.ts +2 -2
  77. package/heading/Heading.test.js +186 -0
  78. package/inset/Inset.js +1 -34
  79. package/inset/Inset.stories.tsx +36 -36
  80. package/inset/types.d.ts +25 -1
  81. package/layout/ApplicationLayout.d.ts +16 -6
  82. package/layout/ApplicationLayout.js +71 -131
  83. package/layout/ApplicationLayout.stories.tsx +83 -93
  84. package/layout/Icons.d.ts +5 -0
  85. package/layout/Icons.js +13 -2
  86. package/layout/SidenavContext.d.ts +5 -0
  87. package/layout/SidenavContext.js +19 -0
  88. package/layout/types.d.ts +18 -33
  89. package/link/Link.d.ts +3 -2
  90. package/link/Link.js +57 -74
  91. package/link/Link.stories.tsx +95 -53
  92. package/link/Link.test.js +83 -0
  93. package/link/types.d.ts +7 -23
  94. package/main.d.ts +10 -15
  95. package/main.js +48 -82
  96. package/number-input/NumberInput.js +11 -18
  97. package/number-input/NumberInput.stories.tsx +5 -5
  98. package/number-input/NumberInput.test.js +506 -0
  99. package/number-input/types.d.ts +17 -10
  100. package/package.json +12 -10
  101. package/paginator/Paginator.js +17 -38
  102. package/paginator/Paginator.test.js +308 -0
  103. package/paragraph/Paragraph.d.ts +6 -0
  104. package/paragraph/Paragraph.js +38 -0
  105. package/paragraph/Paragraph.stories.tsx +44 -0
  106. package/password-input/PasswordInput.js +7 -4
  107. package/password-input/PasswordInput.test.js +180 -0
  108. package/password-input/types.d.ts +14 -11
  109. package/progress-bar/ProgressBar.d.ts +2 -2
  110. package/progress-bar/ProgressBar.js +57 -51
  111. package/progress-bar/ProgressBar.stories.jsx +13 -11
  112. package/progress-bar/ProgressBar.test.js +110 -0
  113. package/progress-bar/types.d.ts +3 -4
  114. package/quick-nav/QuickNav.d.ts +4 -0
  115. package/quick-nav/QuickNav.js +118 -0
  116. package/quick-nav/QuickNav.stories.tsx +264 -0
  117. package/quick-nav/types.d.ts +21 -0
  118. package/{stack → quick-nav}/types.js +0 -0
  119. package/radio-group/Radio.d.ts +1 -1
  120. package/radio-group/Radio.js +25 -24
  121. package/radio-group/RadioGroup.js +58 -50
  122. package/radio-group/RadioGroup.stories.tsx +60 -39
  123. package/radio-group/RadioGroup.test.js +530 -83
  124. package/radio-group/types.d.ts +80 -2
  125. package/resultsetTable/ResultsetTable.test.js +348 -0
  126. package/select/Icons.d.ts +10 -0
  127. package/select/Icons.js +93 -0
  128. package/select/Listbox.d.ts +4 -0
  129. package/select/Listbox.js +199 -0
  130. package/select/Option.d.ts +4 -0
  131. package/select/Option.js +110 -0
  132. package/select/Select.js +145 -365
  133. package/select/Select.stories.tsx +231 -176
  134. package/select/Select.test.js +2175 -0
  135. package/select/types.d.ts +52 -12
  136. package/sidenav/Sidenav.d.ts +6 -5
  137. package/sidenav/Sidenav.js +184 -52
  138. package/sidenav/Sidenav.stories.tsx +154 -156
  139. package/sidenav/Sidenav.test.js +44 -0
  140. package/sidenav/types.d.ts +50 -27
  141. package/slider/Slider.d.ts +1 -1
  142. package/slider/Slider.js +5 -4
  143. package/slider/Slider.stories.tsx +8 -8
  144. package/slider/Slider.test.js +187 -0
  145. package/slider/types.d.ts +4 -0
  146. package/spinner/Spinner.js +1 -1
  147. package/spinner/Spinner.test.js +64 -0
  148. package/switch/Switch.d.ts +2 -2
  149. package/switch/Switch.js +127 -55
  150. package/switch/Switch.stories.tsx +20 -42
  151. package/switch/Switch.test.js +212 -0
  152. package/switch/types.d.ts +9 -6
  153. package/table/Table.test.js +26 -0
  154. package/tabs/Tabs.d.ts +1 -1
  155. package/tabs/Tabs.js +9 -11
  156. package/tabs/Tabs.stories.tsx +0 -8
  157. package/tabs/Tabs.test.js +140 -0
  158. package/tabs/types.d.ts +5 -1
  159. package/tabs-nav/NavTabs.d.ts +8 -0
  160. package/tabs-nav/NavTabs.js +125 -0
  161. package/tabs-nav/NavTabs.stories.tsx +170 -0
  162. package/tabs-nav/NavTabs.test.js +82 -0
  163. package/tabs-nav/Tab.d.ts +4 -0
  164. package/tabs-nav/Tab.js +130 -0
  165. package/tabs-nav/types.d.ts +53 -0
  166. package/tabs-nav/types.js +5 -0
  167. package/tag/Tag.js +14 -19
  168. package/tag/Tag.stories.tsx +12 -8
  169. package/tag/Tag.test.js +60 -0
  170. package/tag/types.d.ts +1 -1
  171. package/text-input/Suggestion.d.ts +4 -0
  172. package/text-input/Suggestion.js +55 -0
  173. package/text-input/TextInput.js +68 -101
  174. package/text-input/TextInput.stories.tsx +31 -14
  175. package/text-input/TextInput.test.js +1712 -0
  176. package/text-input/types.d.ts +31 -12
  177. package/textarea/Textarea.js +20 -27
  178. package/textarea/Textarea.stories.jsx +33 -12
  179. package/textarea/Textarea.test.js +437 -0
  180. package/textarea/types.d.ts +18 -11
  181. package/toggle-group/ToggleGroup.d.ts +1 -1
  182. package/toggle-group/ToggleGroup.js +5 -4
  183. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  184. package/toggle-group/ToggleGroup.test.js +156 -0
  185. package/toggle-group/types.d.ts +9 -1
  186. package/typography/Typography.d.ts +4 -0
  187. package/typography/Typography.js +131 -0
  188. package/typography/Typography.stories.tsx +198 -0
  189. package/typography/types.d.ts +18 -0
  190. package/typography/types.js +5 -0
  191. package/useTheme.js +2 -2
  192. package/useTranslatedLabels.d.ts +2 -0
  193. package/useTranslatedLabels.js +20 -0
  194. package/wizard/Wizard.d.ts +1 -1
  195. package/wizard/Wizard.js +58 -54
  196. package/wizard/Wizard.stories.tsx +33 -24
  197. package/wizard/Wizard.test.js +141 -0
  198. package/wizard/types.d.ts +10 -5
  199. package/ThemeContext.d.ts +0 -15
  200. package/ThemeContext.js +0 -243
  201. package/V3Select/V3Select.js +0 -455
  202. package/V3Select/index.d.ts +0 -27
  203. package/V3Textarea/V3Textarea.js +0 -260
  204. package/V3Textarea/index.d.ts +0 -27
  205. package/date/Date.js +0 -373
  206. package/date/index.d.ts +0 -27
  207. package/input-text/Icons.js +0 -22
  208. package/input-text/InputText.js +0 -611
  209. package/input-text/index.d.ts +0 -36
  210. package/list/List.d.ts +0 -4
  211. package/list/List.js +0 -47
  212. package/list/List.stories.tsx +0 -95
  213. package/list/types.d.ts +0 -7
  214. package/radio/Radio.d.ts +0 -4
  215. package/radio/Radio.js +0 -174
  216. package/radio/Radio.stories.tsx +0 -192
  217. package/radio/types.d.ts +0 -54
  218. package/row/Row.d.ts +0 -3
  219. package/row/Row.js +0 -127
  220. package/row/Row.stories.tsx +0 -237
  221. package/row/types.d.ts +0 -10
  222. package/stack/Stack.d.ts +0 -3
  223. package/stack/Stack.js +0 -97
  224. package/stack/Stack.stories.tsx +0 -164
  225. package/stack/types.d.ts +0 -9
  226. package/text/Text.d.ts +0 -7
  227. package/text/Text.js +0 -30
  228. package/text/Text.stories.tsx +0 -19
  229. package/upload/Upload.js +0 -201
  230. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  231. package/upload/buttons-upload/Icons.js +0 -40
  232. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  233. package/upload/dragAndDropArea/Icons.js +0 -39
  234. package/upload/file-upload/FileToUpload.js +0 -115
  235. package/upload/file-upload/Icons.js +0 -66
  236. package/upload/files-upload/FilesToUpload.js +0 -109
  237. package/upload/index.d.ts +0 -15
  238. package/upload/transaction/Icons.js +0 -160
  239. package/upload/transaction/Transaction.js +0 -104
  240. package/upload/transactions/Transactions.js +0 -94
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _react = _interopRequireDefault(require("react"));
15
+
16
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
+
18
+ var _slugify = _interopRequireDefault(require("slugify"));
19
+
20
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
21
+
22
+ var _Heading = _interopRequireDefault(require("../heading/Heading"));
23
+
24
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
25
+
26
+ var _Inset = _interopRequireDefault(require("../inset/Inset"));
27
+
28
+ var _Typography = _interopRequireDefault(require("../typography/Typography"));
29
+
30
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
+
32
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
33
+
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); }
35
+
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; }
37
+
38
+ var DxcQuickNav = function DxcQuickNav(_ref) {
39
+ var title = _ref.title,
40
+ links = _ref.links;
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"
48
+ }, /*#__PURE__*/_react["default"].createElement(_Heading["default"], {
49
+ level: 4,
50
+ text: title || translatedLabels.quickNav.contentTitle
51
+ }), /*#__PURE__*/_react["default"].createElement(ListColumn, null, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
52
+ direction: "column",
53
+ gap: "0.5rem"
54
+ }, links.map(function (link) {
55
+ var _link$links;
56
+
57
+ return /*#__PURE__*/_react["default"].createElement(ListRow, {
58
+ key: link.label
59
+ }, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
60
+ space: "0.25rem"
61
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
62
+ href: "#".concat((0, _slugify["default"])(link === null || link === void 0 ? void 0 : link.label, {
63
+ lower: true
64
+ }))
65
+ }, 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) {
66
+ return /*#__PURE__*/_react["default"].createElement(ListRow, {
67
+ key: sublink.label
68
+ }, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
69
+ horizontal: "0.5rem"
70
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
71
+ href: "#".concat((0, _slugify["default"])(sublink === null || sublink === void 0 ? void 0 : sublink.label, {
72
+ lower: true
73
+ }))
74
+ }, sublink === null || sublink === void 0 ? void 0 : sublink.label))));
75
+ }))));
76
+ }))))));
77
+ };
78
+
79
+ 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) {
80
+ return props.theme.paddingTop;
81
+ }, function (props) {
82
+ return props.theme.paddingBottom;
83
+ }, function (props) {
84
+ return props.theme.paddingLeft;
85
+ }, function (props) {
86
+ return props.theme.paddingRight;
87
+ }, function (props) {
88
+ return props.theme.dividerBorderColor;
89
+ });
90
+
91
+ var ListColumn = _styledComponents["default"].ul(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n list-style-type: none;\n margin: 0;\n padding: 0;\n width: 100%;\n"])));
92
+
93
+ var ListRow = _styledComponents["default"].li(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n"])));
94
+
95
+ 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) {
96
+ return props.theme.fontSize;
97
+ }, function (props) {
98
+ return props.theme.fontFamily;
99
+ }, function (props) {
100
+ return props.theme.fontStyle;
101
+ }, function (props) {
102
+ return props.theme.fontWeight;
103
+ }, function (props) {
104
+ return props.theme.fontColor;
105
+ }, function (props) {
106
+ return props.theme.hoverFontColor;
107
+ }, function (props) {
108
+ return props.theme.focusBorderColor;
109
+ }, function (props) {
110
+ return props.theme.focusBorderStyle;
111
+ }, function (props) {
112
+ return props.theme.focusBorderThickness;
113
+ }, function (props) {
114
+ return props.theme.focusBorderRadius;
115
+ });
116
+
117
+ var _default = DxcQuickNav;
118
+ exports["default"] = _default;
@@ -0,0 +1,264 @@
1
+ import React from "react";
2
+ import styled from "styled-components";
3
+ import DxcQuickNav from "./QuickNav";
4
+ import DxcHeading from "../heading/Heading";
5
+ import DxcParagraph from "../paragraph/Paragraph";
6
+ import Title from "../../.storybook/components/Title";
7
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
8
+
9
+ export default {
10
+ title: "QuickNav",
11
+ component: DxcQuickNav,
12
+ };
13
+
14
+ const links = [
15
+ {
16
+ label: "Overview",
17
+ id: "overview",
18
+ links: [
19
+ {
20
+ label: "Introduction",
21
+ id: "introduction",
22
+ },
23
+ ],
24
+ },
25
+ {
26
+ label: "Principles very very very very very very very very long",
27
+ id: "principles",
28
+ links: [
29
+ { label: "Color very very very very very very very very long", id: "color" },
30
+ { label: "Spacingveryveryveryveryveryveryveryverylong", id: "spacing" },
31
+ { label: "Typography", id: "typography" },
32
+ ],
33
+ },
34
+ {
35
+ label: "Componentsveryveryveryveryveryveryveryverylong",
36
+ id: "components",
37
+ links: [
38
+ {
39
+ label: "Accordion",
40
+ id: "accordion",
41
+ },
42
+ ],
43
+ },
44
+ ];
45
+
46
+ export const Chromatic = () => (
47
+ <>
48
+ <ExampleContainer>
49
+ <Title title="Default" level={4} />
50
+ <QuickNavContainer>
51
+ <DxcQuickNav links={links}></DxcQuickNav>
52
+ </QuickNavContainer>
53
+ </ExampleContainer>
54
+ <ExampleContainer pseudoState="pseudo-hover">
55
+ <Title title="Link hovered" level={4} />
56
+ <QuickNavContainer>
57
+ <DxcQuickNav links={links}></DxcQuickNav>
58
+ </QuickNavContainer>
59
+ </ExampleContainer>
60
+ <ExampleContainer pseudoState="pseudo-focus">
61
+ <Title title="Link focus" level={4} />
62
+ <QuickNavContainer>
63
+ <DxcQuickNav links={links}></DxcQuickNav>
64
+ </QuickNavContainer>
65
+ </ExampleContainer>
66
+ <ExampleContainer>
67
+ <Title title="QuickNav with content" level={4} />
68
+ <Container>
69
+ <ContentContainer>
70
+ <Content id="overview">
71
+ <DxcHeading level={1} text="Overview" margin={{ bottom: "small" }} />
72
+ <DxcParagraph>
73
+ Halstack is the DXC Technology's open source design system for insurance products and digital experiences.
74
+ Our system provides all the tools and resources needed to create superior, beautiful but above all,
75
+ functional user experiences. Halstack is the DXC Technology's open source design system for insurance
76
+ products and digital experiences. Our system provides all the tools and resources needed to create
77
+ superior, beautiful but above all, functional user experiences.Halstack is the DXC Technology's open
78
+ source design system for insurance products and digital experiences. Our system provides all the tools and
79
+ resources needed to create superior, beautiful but above all, functional user experiences.Halstack is the
80
+ DXC Technology's open source design system for insurance products and digital experiences. Our system
81
+ provides all the tools and resources needed to create superior, beautiful but above all, functional user
82
+ experiences.Halstack is the DXC Technology's open source design system for insurance products and digital
83
+ experiences. Our system provides all the tools and resources needed to create superior, beautiful but
84
+ above all, functional user experiences.Halstack is the DXC Technology's open source design system for
85
+ insurance products and digital experiences. Our system provides all the tools and resources needed to
86
+ create superior, beautiful but above all, functional user experiences.Halstack is the DXC Technology's
87
+ open source design system for insurance products and digital experiences. Our system provides all the
88
+ tools and resources needed to create superior, beautiful but above all, functional user experiences.
89
+ </DxcParagraph>
90
+ <Content id="introduction">
91
+ <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
92
+ <DxcParagraph>
93
+ Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
94
+ provide guidance for development teams in order to deliver delightful and consistent user experiences to
95
+ our customers: Balance Consistency Visual hierarchy All our components, design tokens, accessibility
96
+ guidelines, responsive design techniques, and layout proposals have been carefully curated by DXC design
97
+ and engineering teams with the objective of creating a unique visual language and ecosystem for our
98
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
99
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
100
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
101
+ design new features, or help us improve the project documentation. If you're interested, definitely
102
+ check out our contribution guidelines.Design principles Halstack design principles are the fundamental
103
+ part of DXC Technology's approach to provide guidance for development teams in order to deliver
104
+ delightful and consistent user experiences to our customers: Balance Consistency Visual hierarchy All
105
+ our components, design tokens, accessibility guidelines, responsive design techniques, and layout
106
+ proposals have been carefully curated by DXC design and engineering teams with the objective of creating
107
+ a unique visual language and ecosystem for our applications. This is the DXC way of creating User
108
+ Experiences. Open Source Halstack is an open source design system, this means that we work towards DXC
109
+ Technology bussines needs, but it is open for anyone to use and contribute back to. We are charmed to
110
+ receive external contributions to help us find bugs, design new features, or help us improve the project
111
+ documentation. If you're interested, definitely check out our contribution guidelines.Design principles
112
+ Halstack design principles are the fundamental part of DXC Technology's approach to provide guidance for
113
+ development teams in order to deliver delightful and consistent user experiences to our customers:
114
+ Balance Consistency Visual hierarchy All our components, design tokens, accessibility guidelines,
115
+ responsive design techniques, and layout proposals have been carefully curated by DXC design and
116
+ engineering teams with the objective of creating a unique visual language and ecosystem for our
117
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
118
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
119
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
120
+ design new features, or help us improve the project documentation. If you're interested, definitely
121
+ check out our contribution guidelines.
122
+ </DxcParagraph>
123
+ </Content>
124
+ </Content>
125
+ <Content id="principles">
126
+ <DxcHeading level={1} text="Principles" margin={{ top: "small", bottom: "xsmall" }} />
127
+ <Content id="color">
128
+ <DxcHeading level={2} text="Color" margin={{ top: "xsmall", bottom: "xsmall" }} />
129
+ <DxcParagraph>
130
+ The color palette is an essential asset as a communication resource of our design system. Halstack color
131
+ palette brings a unified consistency and helps in guiding the user's perception order. Our color palette
132
+ is based in the HSL model . All our color families are calculated using the lightness value of the
133
+ standard DXC palette colors. Color Tokens Halstack uses tokens to manage color. Appart from a
134
+ multi-purpose greyscale family, purple and blue are the core color families used in our set of
135
+ components. Additional families as red, green and yellow help as feedback role-based color palettes and
136
+ must not be used outside this context.The color palette is an essential asset as a communication
137
+ resource of our design system. Halstack color palette brings a unified consistency and helps in guiding
138
+ the user's perception order. Our color palette is based in the HSL model . All our color families are
139
+ calculated using the lightness value of the standard DXC palette colors. Color Tokens Halstack uses
140
+ tokens to manage color. Appart from a multi-purpose greyscale family, purple and blue are the core color
141
+ families used in our set of components. Additional families as red, green and yellow help as feedback
142
+ role-based color palettes and must not be used outside this context.The color palette is an essential
143
+ asset as a communication resource of our design system. Halstack color palette brings a unified
144
+ consistency and helps in guiding the user's perception order. Our color palette is based in the HSL
145
+ model . All our color families are calculated using the lightness value of the standard DXC palette
146
+ colors. Color Tokens Halstack uses tokens to manage color. Appart from a multi-purpose greyscale family,
147
+ purple and blue are the core color families used in our set of components. Additional families as red,
148
+ green and yellow help as feedback role-based color palettes and must not be used outside this
149
+ context.The color palette is an essential asset as a communication resource of our design system.
150
+ Halstack color palette brings a unified consistency and helps in guiding the user's perception order.
151
+ Our color palette is based in the HSL model . All our color families are calculated using the lightness
152
+ value of the standard DXC palette colors. Color Tokens Halstack uses tokens to manage color. Appart from
153
+ a multi-purpose greyscale family, purple and blue are the core color families used in our set of
154
+ components. Additional families as red, green and yellow help as feedback role-based color palettes and
155
+ must not be used outside this context.The color palette is an essential asset as a communication
156
+ resource of our design system. Halstack color palette brings a unified consistency and helps in guiding
157
+ the user's perception order. Our color palette is based in the HSL model . All our color families are
158
+ calculated using the lightness value of the standard DXC palette colors. Color Tokens Halstack uses
159
+ tokens to manage color. Appart from a multi-purpose greyscale family, purple and blue are the core color
160
+ families used in our set of components. Additional families as red, green and yellow help as feedback
161
+ role-based color palettes and must not be used outside this context.
162
+ </DxcParagraph>
163
+ </Content>
164
+ <Content id="spacing">
165
+ <DxcHeading level={2} text="Spacing" margin={{ top: "xsmall", bottom: "xsmall" }} />
166
+ <DxcParagraph>
167
+ In the search of consistent alignment between the elements we provide a spacing scale based on a root
168
+ values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and consistent,
169
+ yet distinct enough, steps between them.In the search of consistent alignment between the elements we
170
+ provide a spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are easily
171
+ multiplied, they provide flexible and consistent, yet distinct enough, steps between them.In the search
172
+ of consistent alignment between the elements we provide a spacing scale based on a root values of 8px
173
+ and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and consistent, yet distinct
174
+ enough, steps between them.In the search of consistent alignment between the elements we provide a
175
+ spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they
176
+ provide flexible and consistent, yet distinct enough, steps between them.In the search of consistent
177
+ alignment between the elements we provide a spacing scale based on a root values of 8px and 4px. The
178
+ numbers 4 and 8 are easily multiplied, they provide flexible and consistent, yet distinct enough, steps
179
+ between them.In the search of consistent alignment between the elements we provide a spacing scale based
180
+ on a root values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and
181
+ consistent, yet distinct enough, steps between them.In the search of consistent alignment between the
182
+ elements we provide a spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are
183
+ easily multiplied, they provide flexible and consistent, yet distinct enough, steps between them.
184
+ </DxcParagraph>
185
+ </Content>
186
+ <Content id="typography">
187
+ <DxcHeading level={2} text="Typography" margin={{ top: "xsmall", bottom: "xsmall" }} />
188
+ <DxcParagraph>
189
+ Our selected typography helps in structuring our user's experience based on the visual impact that it
190
+ has on the user interface content. It defines what is the first noticeable piece of information or data
191
+ based on the font shape, size, color, or type and it highlights some pieces of text over the rest. Some
192
+ typographic elements used in Halstack Design System include headers, body, taglines, captions, and
193
+ labels. Make sure you include all the different typographic variants in order to enhance the
194
+ application's content structure, including the Heading component which defines different levels of page
195
+ and section titles.Our selected typography helps in structuring our user's experience based on the
196
+ visual impact that it has on the user interface content. It defines what is the first noticeable piece
197
+ of information or data based on the font shape, size, color, or type and it highlights some pieces of
198
+ text over the rest. Some typographic elements used in Halstack Design System include headers, body,
199
+ taglines, captions, and labels. Make sure you include all the different typographic variants in order to
200
+ enhance the application's content structure, including the Heading component which defines different
201
+ levels of page and section titles.Our selected typography helps in structuring our user's experience
202
+ based on the visual impact that it has on the user interface content. It defines what is the first
203
+ noticeable piece of information or data based on the font shape, size, color, or type and it highlights
204
+ some pieces of text over the rest. Some typographic elements used in Halstack Design System include
205
+ headers, body, taglines, captions, and labels. Make sure you include all the different typographic
206
+ variants in order to enhance the application's content structure, including the Heading component which
207
+ defines different levels of page and section titles.Our selected typography helps in structuring our
208
+ user's experience based on the visual impact that it has on the user interface content. It defines what
209
+ is the first noticeable piece of information or data based on the font shape, size, color, or type and
210
+ it highlights some pieces of text over the rest. Some typographic elements used in Halstack Design
211
+ System include headers, body, taglines, captions, and labels. Make sure you include all the different
212
+ typographic variants in order to enhance the application's content structure, including the Heading
213
+ component which defines different levels of page and section titles.Our selected typography helps in
214
+ structuring our user's experience based on the visual impact that it has on the user interface content.
215
+ It defines what is the first noticeable piece of information or data based on the font shape, size,
216
+ color, or type and it highlights some pieces of text over the rest. Some typographic elements used in
217
+ Halstack Design System include headers, body, taglines, captions, and labels. Make sure you include all
218
+ the different typographic variants in order to enhance the application's content structure, including
219
+ the Heading component which defines different levels of page and section titles.
220
+ </DxcParagraph>
221
+ </Content>
222
+ </Content>
223
+ <Content id="components">
224
+ <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
225
+ <Content id="accordion">
226
+ <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
227
+ <DxcParagraph>
228
+ Accordions are used to group similar content and hide or show it depending on user needs or preferences.
229
+ Accordions give users more granular control over the interface and help digest content in stages, rather
230
+ than all at once.
231
+ </DxcParagraph>
232
+ </Content>
233
+ </Content>
234
+ </ContentContainer>
235
+ <QuickNavContainer>
236
+ <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
237
+ </QuickNavContainer>
238
+ </Container>
239
+ </ExampleContainer>
240
+ </>
241
+ );
242
+
243
+ const Container = styled.div`
244
+ display: flex;
245
+ flex-direction: row;
246
+ width: 100%;
247
+ `;
248
+
249
+ const ContentContainer = styled.div`
250
+ display: flex;
251
+ flex-direction: column;
252
+ padding: 60px;
253
+ margin: 0 auto;
254
+ width: 800px;
255
+ `;
256
+
257
+ const Content = styled.div``;
258
+
259
+ const QuickNavContainer = styled.div`
260
+ max-height: calc(100vh - 100px);
261
+ position: sticky;
262
+ top: 100px;
263
+ width: 300px;
264
+ `;
@@ -0,0 +1,21 @@
1
+ declare type Props = {
2
+ /**
3
+ * Title of the quick nav component.
4
+ */
5
+ title?: string;
6
+ /**
7
+ * Links to be shown inside the quick nav component.
8
+ */
9
+ links: LinkType[];
10
+ };
11
+ declare type LinkType = {
12
+ /**
13
+ * Label to be shown in the link.
14
+ */
15
+ label: string;
16
+ /**
17
+ * Sublinks of the link.
18
+ */
19
+ links?: LinkType[];
20
+ };
21
+ export default Props;
File without changes
@@ -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, onFocus, error, disabled, focused, readonly, }: RadioProps) => JSX.Element>;
3
+ declare const _default: React.MemoExoticComponent<({ option, currentValue, onClick, error, disabled, focused, readonly, tabIndex, }: RadioProps) => JSX.Element>;
4
4
  export default _default;
@@ -28,14 +28,16 @@ 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
+
31
33
  var option = _ref.option,
32
34
  currentValue = _ref.currentValue,
33
- _onClick = _ref.onClick,
34
- onFocus = _ref.onFocus,
35
+ onClick = _ref.onClick,
35
36
  error = _ref.error,
36
37
  disabled = _ref.disabled,
37
38
  focused = _ref.focused,
38
- readonly = _ref.readonly;
39
+ readonly = _ref.readonly,
40
+ tabIndex = _ref.tabIndex;
39
41
 
40
42
  var _useState = (0, _react.useState)("radio-".concat((0, _uuid.v4)())),
41
43
  _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
@@ -43,7 +45,13 @@ var DxcRadio = function DxcRadio(_ref) {
43
45
 
44
46
  var ref = (0, _react.useRef)(null);
45
47
  var colorsTheme = (0, _useTheme["default"])();
46
- var checked = option.value === currentValue;
48
+
49
+ var handleOnClick = function handleOnClick() {
50
+ var _ref$current;
51
+
52
+ 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());
54
+ };
47
55
 
48
56
  var _useState3 = (0, _react.useState)(true),
49
57
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
@@ -51,7 +59,7 @@ var DxcRadio = function DxcRadio(_ref) {
51
59
  setFirstUpdate = _useState4[1];
52
60
 
53
61
  (0, _react.useLayoutEffect)(function () {
54
- var _ref$current;
62
+ var _ref$current2;
55
63
 
56
64
  // Don't apply in the first render
57
65
  if (firstUpdate) {
@@ -59,7 +67,7 @@ var DxcRadio = function DxcRadio(_ref) {
59
67
  return;
60
68
  }
61
69
 
62
- focused && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
70
+ focused && (ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus());
63
71
  }, [focused]);
64
72
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
65
73
  theme: colorsTheme.radioGroup
@@ -68,28 +76,21 @@ var DxcRadio = function DxcRadio(_ref) {
68
76
  disabled: disabled,
69
77
  readonly: readonly,
70
78
  onMouseDown: function onMouseDown(event) {
71
- // Prevents div's onclick from stealing the radio button's focus
79
+ // Prevents div's onClick from stealing the radio input's focus
72
80
  event.preventDefault();
73
81
  },
74
- onClick: function onClick() {
75
- var _ref$current2;
76
-
77
- ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus();
78
-
79
- _onClick();
80
- }
82
+ onClick: handleOnClick
81
83
  }, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
82
84
  error: error,
83
85
  disabled: disabled,
84
86
  readonly: readonly,
85
- onFocus: onFocus,
86
87
  role: "radio",
87
- "aria-checked": checked,
88
- "aria-disabled": option.disabled,
88
+ "aria-checked": option.value === currentValue,
89
+ "aria-disabled": (_option$disabled = option.disabled) !== null && _option$disabled !== void 0 ? _option$disabled : false,
89
90
  "aria-labelledby": radioLabelId,
90
- tabIndex: disabled ? -1 : focused ? 0 : -1,
91
+ tabIndex: disabled ? -1 : focused ? tabIndex : -1,
91
92
  ref: ref
92
- }, checked && /*#__PURE__*/_react["default"].createElement(Dot, {
93
+ }, option.value === currentValue && /*#__PURE__*/_react["default"].createElement(Dot, {
93
94
  disabled: disabled,
94
95
  readonly: readonly,
95
96
  error: error
@@ -101,18 +102,18 @@ var DxcRadio = function DxcRadio(_ref) {
101
102
 
102
103
  var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
103
104
 
104
- 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) {
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) {
105
106
  return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
106
107
  }, function (props) {
107
- 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 ");
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;";
108
109
  });
109
110
 
110
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"])));
111
112
 
112
- 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 box-shadow: 0 0 0 2px transparent;\n\n ", "\n"])), function (props) {
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) {
113
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;
114
115
  }, function (props) {
115
- 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 pointer-events: none;\n :focus-visible {\n outline: none;\n }\n ";
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 ";
116
117
  });
117
118
 
118
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) {
@@ -132,7 +133,7 @@ var Label = _styledComponents["default"].span(_templateObject6 || (_templateObje
132
133
  }, function (props) {
133
134
  return props.theme.radioInputLabelLineHeight;
134
135
  }, function (props) {
135
- return props.disabled && "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;");
136
+ return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;") : "color: ".concat(props.theme.radioInputLabelFontColor);
136
137
  });
137
138
 
138
139
  var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);