@dxc-technology/halstack-react 0.0.0-dcd93c4 → 0.0.0-dcee34a

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 (200) hide show
  1. package/HalstackContext.js +98 -50
  2. package/accordion/Accordion.js +117 -104
  3. package/accordion/Accordion.stories.tsx +103 -15
  4. package/accordion/Accordion.test.js +9 -10
  5. package/accordion/types.d.ts +5 -4
  6. package/accordion-group/AccordionGroup.js +1 -21
  7. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  8. package/accordion-group/AccordionGroup.test.js +20 -45
  9. package/accordion-group/types.d.ts +10 -3
  10. package/alert/Alert.js +1 -1
  11. package/alert/Alert.stories.tsx +28 -0
  12. package/bleed/Bleed.stories.tsx +63 -63
  13. package/box/Box.js +1 -1
  14. package/box/Box.stories.tsx +15 -0
  15. package/box/types.d.ts +1 -0
  16. package/bulleted-list/BulletedList.d.ts +7 -0
  17. package/bulleted-list/BulletedList.js +123 -0
  18. package/bulleted-list/BulletedList.stories.tsx +200 -0
  19. package/bulleted-list/types.d.ts +11 -0
  20. package/button/Button.js +50 -70
  21. package/button/Button.stories.tsx +159 -8
  22. package/button/types.d.ts +7 -7
  23. package/card/types.d.ts +1 -0
  24. package/checkbox/Checkbox.d.ts +2 -2
  25. package/checkbox/Checkbox.js +92 -99
  26. package/checkbox/Checkbox.stories.tsx +131 -59
  27. package/checkbox/Checkbox.test.js +93 -16
  28. package/checkbox/types.d.ts +6 -2
  29. package/chip/Chip.js +16 -22
  30. package/chip/Chip.stories.tsx +96 -9
  31. package/chip/types.d.ts +1 -1
  32. package/common/variables.js +328 -260
  33. package/date-input/Calendar.d.ts +4 -0
  34. package/date-input/Calendar.js +258 -0
  35. package/date-input/DateInput.js +134 -237
  36. package/date-input/DateInput.stories.tsx +199 -33
  37. package/date-input/DateInput.test.js +494 -138
  38. package/date-input/DatePicker.d.ts +4 -0
  39. package/date-input/DatePicker.js +146 -0
  40. package/date-input/Icons.d.ts +6 -0
  41. package/date-input/Icons.js +75 -0
  42. package/date-input/YearPicker.d.ts +4 -0
  43. package/date-input/YearPicker.js +126 -0
  44. package/date-input/types.d.ts +51 -0
  45. package/dialog/Dialog.js +50 -28
  46. package/dialog/Dialog.stories.tsx +99 -22
  47. package/dialog/Dialog.test.js +34 -4
  48. package/dialog/types.d.ts +3 -2
  49. package/dropdown/Dropdown.d.ts +1 -1
  50. package/dropdown/Dropdown.js +246 -249
  51. package/dropdown/Dropdown.stories.tsx +245 -56
  52. package/dropdown/Dropdown.test.js +504 -108
  53. package/dropdown/DropdownMenu.d.ts +4 -0
  54. package/dropdown/DropdownMenu.js +70 -0
  55. package/dropdown/DropdownMenuItem.d.ts +4 -0
  56. package/dropdown/DropdownMenuItem.js +81 -0
  57. package/dropdown/types.d.ts +25 -5
  58. package/file-input/FileInput.d.ts +2 -2
  59. package/file-input/FileInput.js +177 -219
  60. package/file-input/FileInput.stories.tsx +122 -11
  61. package/file-input/FileInput.test.js +53 -12
  62. package/file-input/FileItem.d.ts +4 -14
  63. package/file-input/FileItem.js +38 -63
  64. package/file-input/types.d.ts +17 -0
  65. package/flex/Flex.d.ts +4 -0
  66. package/flex/Flex.js +69 -0
  67. package/flex/Flex.stories.tsx +103 -0
  68. package/flex/types.d.ts +32 -0
  69. package/footer/Footer.stories.tsx +99 -1
  70. package/footer/types.d.ts +2 -1
  71. package/header/Header.js +87 -87
  72. package/header/Header.stories.tsx +152 -9
  73. package/header/Icons.js +2 -2
  74. package/header/types.d.ts +3 -2
  75. package/inset/Inset.stories.tsx +4 -4
  76. package/layout/ApplicationLayout.d.ts +15 -6
  77. package/layout/ApplicationLayout.js +36 -64
  78. package/layout/ApplicationLayout.stories.tsx +80 -44
  79. package/layout/types.d.ts +17 -27
  80. package/link/Link.js +2 -2
  81. package/link/Link.stories.tsx +72 -5
  82. package/link/types.d.ts +1 -1
  83. package/main.d.ts +6 -10
  84. package/main.js +28 -60
  85. package/{tabs-nav → nav-tabs}/NavTabs.js +6 -6
  86. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  87. package/{tabs-nav → nav-tabs}/Tab.js +37 -20
  88. package/{tabs-nav → nav-tabs}/types.d.ts +1 -1
  89. package/number-input/NumberInput.test.js +43 -7
  90. package/package.json +16 -21
  91. package/paginator/Icons.d.ts +5 -0
  92. package/paginator/Icons.js +16 -28
  93. package/paginator/Paginator.js +6 -12
  94. package/paginator/Paginator.stories.tsx +24 -0
  95. package/paginator/Paginator.test.js +18 -11
  96. package/paragraph/Paragraph.d.ts +6 -0
  97. package/paragraph/Paragraph.js +38 -0
  98. package/paragraph/Paragraph.stories.tsx +44 -0
  99. package/password-input/PasswordInput.test.js +13 -12
  100. package/progress-bar/ProgressBar.d.ts +2 -2
  101. package/progress-bar/ProgressBar.js +59 -53
  102. package/progress-bar/ProgressBar.stories.jsx +38 -3
  103. package/progress-bar/ProgressBar.test.js +67 -22
  104. package/progress-bar/types.d.ts +3 -4
  105. package/quick-nav/QuickNav.js +18 -17
  106. package/quick-nav/QuickNav.stories.tsx +145 -26
  107. package/radio-group/Radio.d.ts +1 -1
  108. package/radio-group/Radio.js +43 -28
  109. package/radio-group/RadioGroup.js +24 -24
  110. package/radio-group/RadioGroup.stories.tsx +132 -18
  111. package/radio-group/RadioGroup.test.js +123 -96
  112. package/radio-group/types.d.ts +2 -2
  113. package/resultsetTable/Icons.d.ts +7 -0
  114. package/resultsetTable/Icons.js +51 -0
  115. package/resultsetTable/ResultsetTable.js +48 -107
  116. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  117. package/resultsetTable/ResultsetTable.test.js +40 -63
  118. package/resultsetTable/types.d.ts +2 -2
  119. package/select/Listbox.js +4 -10
  120. package/select/Option.js +11 -24
  121. package/select/Select.js +54 -50
  122. package/select/Select.stories.tsx +494 -149
  123. package/select/Select.test.js +338 -272
  124. package/select/types.d.ts +3 -5
  125. package/sidenav/Sidenav.d.ts +6 -5
  126. package/sidenav/Sidenav.js +174 -55
  127. package/sidenav/Sidenav.stories.tsx +249 -149
  128. package/sidenav/Sidenav.test.js +25 -37
  129. package/sidenav/types.d.ts +50 -27
  130. package/slider/Slider.d.ts +2 -2
  131. package/slider/Slider.js +120 -95
  132. package/slider/Slider.stories.tsx +64 -1
  133. package/slider/Slider.test.js +121 -21
  134. package/slider/types.d.ts +6 -2
  135. package/spinner/Spinner.js +2 -2
  136. package/spinner/Spinner.stories.jsx +27 -1
  137. package/switch/Switch.d.ts +2 -2
  138. package/switch/Switch.js +135 -68
  139. package/switch/Switch.stories.tsx +41 -30
  140. package/switch/Switch.test.js +144 -17
  141. package/switch/types.d.ts +6 -2
  142. package/table/Table.js +1 -1
  143. package/table/Table.stories.jsx +80 -1
  144. package/table/Table.test.js +1 -1
  145. package/tabs/Tab.d.ts +4 -0
  146. package/tabs/Tab.js +133 -0
  147. package/tabs/Tabs.js +360 -104
  148. package/tabs/Tabs.stories.tsx +119 -5
  149. package/tabs/Tabs.test.js +217 -6
  150. package/tabs/types.d.ts +15 -5
  151. package/tag/Tag.js +1 -1
  152. package/tag/Tag.stories.tsx +14 -1
  153. package/tag/types.d.ts +1 -1
  154. package/text-input/Icons.d.ts +8 -0
  155. package/text-input/Icons.js +60 -0
  156. package/text-input/Suggestion.js +38 -9
  157. package/text-input/Suggestions.d.ts +4 -0
  158. package/text-input/Suggestions.js +134 -0
  159. package/text-input/TextInput.js +195 -292
  160. package/text-input/TextInput.stories.tsx +280 -185
  161. package/text-input/TextInput.test.js +737 -725
  162. package/text-input/types.d.ts +22 -3
  163. package/textarea/Textarea.stories.jsx +60 -1
  164. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  165. package/toggle-group/types.d.ts +1 -1
  166. package/typography/Typography.d.ts +4 -0
  167. package/typography/Typography.js +131 -0
  168. package/typography/Typography.stories.tsx +198 -0
  169. package/typography/types.d.ts +18 -0
  170. package/wizard/Wizard.js +9 -16
  171. package/wizard/Wizard.stories.tsx +40 -1
  172. package/wizard/types.d.ts +5 -4
  173. package/common/RequiredComponent.js +0 -32
  174. package/inline/Inline.d.ts +0 -4
  175. package/inline/Inline.js +0 -60
  176. package/inline/Inline.stories.tsx +0 -319
  177. package/inline/types.d.ts +0 -36
  178. package/list/List.d.ts +0 -4
  179. package/list/List.js +0 -47
  180. package/list/List.stories.tsx +0 -89
  181. package/list/types.d.ts +0 -7
  182. package/row/Row.d.ts +0 -3
  183. package/row/Row.js +0 -127
  184. package/row/Row.stories.tsx +0 -237
  185. package/row/types.d.ts +0 -28
  186. package/stack/Stack.d.ts +0 -4
  187. package/stack/Stack.js +0 -56
  188. package/stack/Stack.stories.tsx +0 -263
  189. package/stack/types.d.ts +0 -32
  190. package/tabs-nav/types.js +0 -5
  191. package/text/Text.d.ts +0 -7
  192. package/text/Text.js +0 -30
  193. package/text/Text.stories.tsx +0 -19
  194. /package/{inline → bulleted-list}/types.js +0 -0
  195. /package/{list → flex}/types.js +0 -0
  196. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  197. /package/{tabs-nav → nav-tabs}/NavTabs.test.js +0 -0
  198. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  199. /package/{row → nav-tabs}/types.js +0 -0
  200. /package/{stack → typography}/types.js +0 -0
@@ -21,11 +21,11 @@ var _useTheme = _interopRequireDefault(require("../useTheme"));
21
21
 
22
22
  var _Heading = _interopRequireDefault(require("../heading/Heading"));
23
23
 
24
- var _Stack = _interopRequireDefault(require("../stack/Stack"));
24
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
25
25
 
26
26
  var _Inset = _interopRequireDefault(require("../inset/Inset"));
27
27
 
28
- var _Text = _interopRequireDefault(require("../text/Text"));
28
+ var _Typography = _interopRequireDefault(require("../typography/Typography"));
29
29
 
30
30
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
31
 
@@ -42,36 +42,37 @@ var DxcQuickNav = function DxcQuickNav(_ref) {
42
42
  var colorsTheme = (0, _useTheme["default"])();
43
43
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
44
44
  theme: colorsTheme.quickNav
45
- }, /*#__PURE__*/_react["default"].createElement(QuickNavContainer, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
46
- gutter: "0.5rem"
45
+ }, /*#__PURE__*/_react["default"].createElement(QuickNavContainer, null, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
46
+ direction: "column",
47
+ gap: "0.5rem"
47
48
  }, /*#__PURE__*/_react["default"].createElement(_Heading["default"], {
48
49
  level: 4,
49
50
  text: title || translatedLabels.quickNav.contentTitle
50
- }), /*#__PURE__*/_react["default"].createElement(ListColumn, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
51
- gutter: "0.5rem"
52
- }, links.map(function (link) {
51
+ }), /*#__PURE__*/_react["default"].createElement(ListColumn, null, links.map(function (link) {
53
52
  var _link$links;
54
53
 
55
- return /*#__PURE__*/_react["default"].createElement(ListRow, {
54
+ return /*#__PURE__*/_react["default"].createElement("li", {
56
55
  key: link.label
57
56
  }, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
58
57
  space: "0.25rem"
59
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
58
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
60
59
  href: "#".concat((0, _slugify["default"])(link === null || link === void 0 ? void 0 : link.label, {
61
60
  lower: true
62
61
  }))
63
- }, link === null || link === void 0 ? void 0 : link.label), /*#__PURE__*/_react["default"].createElement(ListColumn, null, (_link$links = link.links) === null || _link$links === void 0 ? void 0 : _link$links.map(function (sublink) {
64
- return /*#__PURE__*/_react["default"].createElement(ListRow, {
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", {
65
64
  key: sublink.label
66
65
  }, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
67
66
  horizontal: "0.5rem"
68
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
69
- href: "#".concat((0, _slugify["default"])(sublink === null || sublink === void 0 ? void 0 : sublink.label, {
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, {
70
71
  lower: true
71
72
  }))
72
73
  }, sublink === null || sublink === void 0 ? void 0 : sublink.label))));
73
74
  })))));
74
- }))))));
75
+ })))));
75
76
  };
76
77
 
77
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) {
@@ -86,11 +87,11 @@ var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_te
86
87
  return props.theme.dividerBorderColor;
87
88
  });
88
89
 
89
- var ListColumn = _styledComponents["default"].ul(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n list-style-type: none;\n margin: 0;\n padding: 0;\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"])));
90
91
 
91
- var ListRow = _styledComponents["default"].li(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])([""])));
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"])));
92
93
 
93
- 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\n &:hover {\n color: ", ";\n }\n &:focus {\n outline-color: ", ";\n outline-style: ", ";\n outline-width: ", ";\n border-radius: ", ";\n }\n"])), function (props) {
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) {
94
95
  return props.theme.fontSize;
95
96
  }, function (props) {
96
97
  return props.theme.fontFamily;
@@ -2,33 +2,78 @@ 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
+ import { HalstackProvider } from "../HalstackContext";
8
9
 
9
10
  export default {
10
11
  title: "QuickNav",
11
12
  component: DxcQuickNav,
12
13
  };
13
14
 
15
+ const opinionatedTheme = {
16
+ quickNav: {
17
+ fontColor: "#666666",
18
+ accentColor: "#9a6bb2",
19
+ },
20
+ };
21
+
22
+ const defaultLinks = [
23
+ {
24
+ label: "Overview",
25
+ },
26
+ {
27
+ label: "Principles",
28
+ links: [{ label: "Color" }, { label: "Spacing" }, { label: "Typography" }],
29
+ },
30
+ {
31
+ label: "Components",
32
+ links: [
33
+ {
34
+ label: "Accordion",
35
+ },
36
+ {
37
+ label: "Button",
38
+ },
39
+ ],
40
+ },
41
+ ];
42
+
14
43
  const links = [
15
44
  {
16
45
  label: "Overview",
17
- id: "overview",
18
46
  links: [
19
47
  {
20
48
  label: "Introduction",
21
- id: "introduction",
22
49
  },
23
50
  ],
24
51
  },
25
52
  {
26
- label: "Principles",
27
- id: "principles",
53
+ label: "Components",
28
54
  links: [
29
- { label: "Color", id: "color" },
30
- { label: "Spacing", id: "spacing" },
31
- { label: "Typography", id: "typography" },
55
+ {
56
+ label: "Introduction",
57
+ },
58
+ {
59
+ label: "Accordion",
60
+ },
61
+ ],
62
+ },
63
+ {
64
+ label: "Principles very very very very very very very very long",
65
+ links: [
66
+ { label: "Color very very very very very very very very long" },
67
+ { label: "Spacingveryveryveryveryveryveryveryverylong" },
68
+ { label: "Typography" },
69
+ ],
70
+ },
71
+ {
72
+ label: "Componentsveryveryveryveryveryveryveryverylong",
73
+ links: [
74
+ {
75
+ label: "Accordion",
76
+ },
32
77
  ],
33
78
  },
34
79
  ];
@@ -38,13 +83,25 @@ export const Chromatic = () => (
38
83
  <ExampleContainer>
39
84
  <Title title="Default" level={4} />
40
85
  <QuickNavContainer>
41
- <DxcQuickNav links={links}></DxcQuickNav>
86
+ <DxcQuickNav links={defaultLinks} />
87
+ </QuickNavContainer>
88
+ </ExampleContainer>
89
+ <ExampleContainer>
90
+ <Title title="Text overflow" level={4} />
91
+ <QuickNavContainer>
92
+ <DxcQuickNav links={links} />
42
93
  </QuickNavContainer>
43
94
  </ExampleContainer>
44
95
  <ExampleContainer pseudoState="pseudo-hover">
45
96
  <Title title="Link hovered" level={4} />
46
97
  <QuickNavContainer>
47
- <DxcQuickNav links={links}></DxcQuickNav>
98
+ <DxcQuickNav links={links} />
99
+ </QuickNavContainer>
100
+ </ExampleContainer>
101
+ <ExampleContainer pseudoState="pseudo-focus">
102
+ <Title title="Link focus" level={4} />
103
+ <QuickNavContainer>
104
+ <DxcQuickNav links={links} />
48
105
  </QuickNavContainer>
49
106
  </ExampleContainer>
50
107
  <ExampleContainer>
@@ -53,7 +110,7 @@ export const Chromatic = () => (
53
110
  <ContentContainer>
54
111
  <Content id="overview">
55
112
  <DxcHeading level={1} text="Overview" margin={{ bottom: "small" }} />
56
- <DxcText>
113
+ <DxcParagraph>
57
114
  Halstack is the DXC Technology's open source design system for insurance products and digital experiences.
58
115
  Our system provides all the tools and resources needed to create superior, beautiful but above all,
59
116
  functional user experiences. Halstack is the DXC Technology's open source design system for insurance
@@ -70,10 +127,10 @@ export const Chromatic = () => (
70
127
  create superior, beautiful but above all, functional user experiences.Halstack is the DXC Technology's
71
128
  open source design system for insurance products and digital experiences. Our system provides all the
72
129
  tools and resources needed to create superior, beautiful but above all, functional user experiences.
73
- </DxcText>
74
- <Content id="introduction">
130
+ </DxcParagraph>
131
+ <Content id="overview-introduction">
75
132
  <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
76
- <DxcText>
133
+ <DxcParagraph>
77
134
  Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
78
135
  provide guidance for development teams in order to deliver delightful and consistent user experiences to
79
136
  our customers: Balance Consistency Visual hierarchy All our components, design tokens, accessibility
@@ -103,14 +160,59 @@ export const Chromatic = () => (
103
160
  to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
104
161
  design new features, or help us improve the project documentation. If you're interested, definitely
105
162
  check out our contribution guidelines.
106
- </DxcText>
163
+ </DxcParagraph>
107
164
  </Content>
108
165
  </Content>
109
- <Content id="principles">
166
+ <Content id="components">
167
+ <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
168
+ <Content id="components-introduction">
169
+ <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
170
+ <DxcParagraph>
171
+ Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
172
+ provide guidance for development teams in order to deliver delightful and consistent user experiences to
173
+ our customers: Balance Consistency Visual hierarchy All our components, design tokens, accessibility
174
+ guidelines, responsive design techniques, and layout proposals have been carefully curated by DXC design
175
+ and engineering teams with the objective of creating a unique visual language and ecosystem for our
176
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
177
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
178
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
179
+ design new features, or help us improve the project documentation. If you're interested, definitely
180
+ check out our contribution guidelines.Design principles Halstack design principles are the fundamental
181
+ part of DXC Technology's approach to provide guidance for development teams in order to deliver
182
+ delightful and consistent user experiences to our customers: Balance Consistency Visual hierarchy All
183
+ our components, design tokens, accessibility guidelines, responsive design techniques, and layout
184
+ proposals have been carefully curated by DXC design and engineering teams with the objective of creating
185
+ a unique visual language and ecosystem for our applications. This is the DXC way of creating User
186
+ Experiences. Open Source Halstack is an open source design system, this means that we work towards DXC
187
+ Technology bussines needs, but it is open for anyone to use and contribute back to. We are charmed to
188
+ receive external contributions to help us find bugs, design new features, or help us improve the project
189
+ documentation. If you're interested, definitely check out our contribution guidelines.Design principles
190
+ Halstack design principles are the fundamental part of DXC Technology's approach to provide guidance for
191
+ development teams in order to deliver delightful and consistent user experiences to our customers:
192
+ Balance Consistency Visual hierarchy All our components, design tokens, accessibility guidelines,
193
+ responsive design techniques, and layout proposals have been carefully curated by DXC design and
194
+ engineering teams with the objective of creating a unique visual language and ecosystem for our
195
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
196
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
197
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
198
+ design new features, or help us improve the project documentation. If you're interested, definitely
199
+ check out our contribution guidelines.
200
+ </DxcParagraph>
201
+ </Content>
202
+ <Content id="components-accordion">
203
+ <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
204
+ <DxcParagraph>
205
+ Accordions are used to group similar content and hide or show it depending on user needs or preferences.
206
+ Accordions give users more granular control over the interface and help digest content in stages, rather
207
+ than all at once.
208
+ </DxcParagraph>
209
+ </Content>
210
+ </Content>
211
+ <Content id="principles-very-very-very-very-very-very-very-very-long">
110
212
  <DxcHeading level={1} text="Principles" margin={{ top: "small", bottom: "xsmall" }} />
111
- <Content id="color">
213
+ <Content id="principles-very-very-very-very-very-very-very-very-long-color-very-very-very-very-very-very-very-very-long">
112
214
  <DxcHeading level={2} text="Color" margin={{ top: "xsmall", bottom: "xsmall" }} />
113
- <DxcText>
215
+ <DxcParagraph>
114
216
  The color palette is an essential asset as a communication resource of our design system. Halstack color
115
217
  palette brings a unified consistency and helps in guiding the user's perception order. Our color palette
116
218
  is based in the HSL model . All our color families are calculated using the lightness value of the
@@ -143,11 +245,11 @@ export const Chromatic = () => (
143
245
  tokens to manage color. Appart from a multi-purpose greyscale family, purple and blue are the core color
144
246
  families used in our set of components. Additional families as red, green and yellow help as feedback
145
247
  role-based color palettes and must not be used outside this context.
146
- </DxcText>
248
+ </DxcParagraph>
147
249
  </Content>
148
- <Content id="spacing">
250
+ <Content id="principles-very-very-very-very-very-very-very-very-long-spacingveryveryveryveryveryveryveryverylong">
149
251
  <DxcHeading level={2} text="Spacing" margin={{ top: "xsmall", bottom: "xsmall" }} />
150
- <DxcText>
252
+ <DxcParagraph>
151
253
  In the search of consistent alignment between the elements we provide a spacing scale based on a root
152
254
  values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and consistent,
153
255
  yet distinct enough, steps between them.In the search of consistent alignment between the elements we
@@ -165,11 +267,11 @@ export const Chromatic = () => (
165
267
  consistent, yet distinct enough, steps between them.In the search of consistent alignment between the
166
268
  elements we provide a spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are
167
269
  easily multiplied, they provide flexible and consistent, yet distinct enough, steps between them.
168
- </DxcText>
270
+ </DxcParagraph>
169
271
  </Content>
170
- <Content id="typography">
272
+ <Content id="principles-very-very-very-very-very-very-very-very-long-typography">
171
273
  <DxcHeading level={2} text="Typography" margin={{ top: "xsmall", bottom: "xsmall" }} />
172
- <DxcText>
274
+ <DxcParagraph>
173
275
  Our selected typography helps in structuring our user's experience based on the visual impact that it
174
276
  has on the user interface content. It defines what is the first noticeable piece of information or data
175
277
  based on the font shape, size, color, or type and it highlights some pieces of text over the rest. Some
@@ -201,15 +303,32 @@ export const Chromatic = () => (
201
303
  Halstack Design System include headers, body, taglines, captions, and labels. Make sure you include all
202
304
  the different typographic variants in order to enhance the application's content structure, including
203
305
  the Heading component which defines different levels of page and section titles.
204
- </DxcText>
306
+ </DxcParagraph>
307
+ </Content>
308
+ </Content>
309
+ <Content id="componentsveryveryveryveryveryveryveryverylong">
310
+ <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
311
+ <Content id="componentsveryveryveryveryveryveryveryverylong-accordion">
312
+ <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
313
+ <DxcParagraph>
314
+ Accordions are used to group similar content and hide or show it depending on user needs or preferences.
315
+ Accordions give users more granular control over the interface and help digest content in stages, rather
316
+ than all at once.
317
+ </DxcParagraph>
205
318
  </Content>
206
319
  </Content>
207
320
  </ContentContainer>
208
321
  <QuickNavContainer>
209
- <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
322
+ <DxcQuickNav title="Sections" links={links} />
210
323
  </QuickNavContainer>
211
324
  </Container>
212
325
  </ExampleContainer>
326
+ <Title title="Opinionated theme" level={2} />
327
+ <ExampleContainer>
328
+ <HalstackProvider theme={opinionatedTheme}>
329
+ <DxcQuickNav links={defaultLinks} />
330
+ </HalstackProvider>
331
+ </ExampleContainer>
213
332
  </>
214
333
  );
215
334
 
@@ -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;") : "color: ".concat(props.theme.radioInputLabelFontColor);
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);
@@ -41,6 +41,8 @@ var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
41
41
  };
42
42
 
43
43
  var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
44
+ var _ref2;
45
+
44
46
  var label = _ref.label,
45
47
  name = _ref.name,
46
48
  helperText = _ref.helperText,
@@ -102,11 +104,11 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
102
104
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
103
105
  onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
104
106
  }
105
- }, [value, innerValue, setInnerValue, onChange]);
107
+ }, [value, innerValue, onChange]);
106
108
 
107
- var handleOnBlur = function handleOnBlur(e) {
109
+ var handleOnBlur = function handleOnBlur(event) {
108
110
  // If the radio group loses the focus to an element not contained inside it...
109
- if (!e.currentTarget.contains(e.relatedTarget)) {
111
+ if (!event.currentTarget.contains(event.relatedTarget)) {
110
112
  setFirstTimeFocus(true);
111
113
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
112
114
  !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
@@ -149,27 +151,24 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
149
151
  };
150
152
 
151
153
  var handleOnKeyDown = function handleOnKeyDown(event) {
152
- switch (event.keyCode) {
153
- case 37: // arrow left
154
-
155
- case 38:
156
- // arrow up
154
+ switch (event.key) {
155
+ case "Left":
156
+ case "ArrowLeft":
157
+ case "Up":
158
+ case "ArrowUp":
157
159
  event.preventDefault();
158
160
  setPreviousRadioChecked();
159
161
  break;
160
162
 
161
- case 39: // arrow right
162
-
163
- case 40:
164
- // arrow down
163
+ case "Right":
164
+ case "ArrowRight":
165
+ case "Down":
166
+ case "ArrowDown":
165
167
  event.preventDefault();
166
168
  setNextRadioChecked();
167
169
  break;
168
170
 
169
- case 13: // enter
170
-
171
- case 32:
172
- // space
171
+ case " ":
173
172
  event.preventDefault();
174
173
  handleOnChange(innerOptions[currentFocusIndex].value);
175
174
  break;
@@ -184,7 +183,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
184
183
  id: radioGroupLabelId,
185
184
  helperText: helperText,
186
185
  disabled: disabled
187
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
186
+ }, label, optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, " ".concat(translatedLabels.formFields.optionalLabel))), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
188
187
  disabled: disabled
189
188
  }, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
190
189
  onBlur: handleOnBlur,
@@ -194,20 +193,22 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
194
193
  role: "radiogroup",
195
194
  "aria-disabled": disabled,
196
195
  "aria-labelledby": radioGroupLabelId,
197
- "aria-invalid": error ? "true" : "false",
196
+ "aria-invalid": error ? true : false,
198
197
  "aria-errormessage": error ? errorId : undefined,
199
198
  "aria-required": !disabled && !readonly && !optional,
200
199
  "aria-readonly": readonly,
201
200
  "aria-orientation": stacking === "column" ? "vertical" : "horizontal"
202
201
  }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
203
202
  name: name,
204
- value: value !== null && value !== void 0 ? value : innerValue,
203
+ disabled: disabled,
204
+ value: (_ref2 = value !== null && value !== void 0 ? value : innerValue) !== null && _ref2 !== void 0 ? _ref2 : "",
205
205
  readOnly: true,
206
206
  "aria-hidden": "true"
207
207
  }), innerOptions.map(function (option, index) {
208
208
  return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
209
- option: option,
210
- currentValue: value !== null && value !== void 0 ? value : innerValue,
209
+ key: "radio-".concat(index),
210
+ label: option.label,
211
+ checked: (value !== null && value !== void 0 ? value : innerValue) === option.value,
211
212
  onClick: function onClick() {
212
213
  handleOnChange(option.value);
213
214
  setCurrentFocusIndex(index);
@@ -216,8 +217,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
216
217
  disabled: option.disabled || disabled,
217
218
  focused: currentFocusIndex === index,
218
219
  readonly: readonly,
219
- tabIndex: tabIndex,
220
- key: "radio-".concat(index)
220
+ tabIndex: tabIndex
221
221
  });
222
222
  })), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
223
223
  id: errorId,
@@ -263,7 +263,7 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
263
263
  return props.theme.groupLabelMargin;
264
264
  });
265
265
 
266
- var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
266
+ var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
267
267
  return props.stacking;
268
268
  }, function (props) {
269
269
  return props.theme.groupVerticalGutter;