@dxc-technology/halstack-react 0.0.0-b2237e2 → 0.0.0-b230d97

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 (148) hide show
  1. package/HalstackContext.js +55 -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/box/Box.js +1 -1
  12. package/box/types.d.ts +1 -0
  13. package/bulleted-list/types.d.ts +1 -1
  14. package/button/Button.js +50 -70
  15. package/button/Button.stories.tsx +159 -8
  16. package/button/types.d.ts +7 -7
  17. package/card/types.d.ts +1 -0
  18. package/checkbox/Checkbox.d.ts +2 -2
  19. package/checkbox/Checkbox.js +92 -99
  20. package/checkbox/Checkbox.stories.tsx +131 -59
  21. package/checkbox/Checkbox.test.js +93 -16
  22. package/checkbox/types.d.ts +6 -2
  23. package/chip/Chip.js +16 -22
  24. package/chip/Chip.stories.tsx +96 -9
  25. package/chip/types.d.ts +1 -1
  26. package/common/variables.js +281 -259
  27. package/date-input/Calendar.d.ts +4 -0
  28. package/date-input/Calendar.js +258 -0
  29. package/date-input/DateInput.js +134 -237
  30. package/date-input/DateInput.stories.tsx +137 -38
  31. package/date-input/DateInput.test.js +494 -138
  32. package/date-input/DatePicker.d.ts +4 -0
  33. package/date-input/DatePicker.js +146 -0
  34. package/date-input/Icons.d.ts +6 -0
  35. package/date-input/Icons.js +75 -0
  36. package/date-input/YearPicker.d.ts +4 -0
  37. package/date-input/YearPicker.js +126 -0
  38. package/date-input/types.d.ts +51 -0
  39. package/dialog/Dialog.js +52 -28
  40. package/dialog/Dialog.stories.tsx +57 -2
  41. package/dialog/Dialog.test.js +34 -4
  42. package/dialog/types.d.ts +3 -2
  43. package/dropdown/Dropdown.d.ts +1 -1
  44. package/dropdown/Dropdown.js +246 -249
  45. package/dropdown/Dropdown.stories.tsx +245 -56
  46. package/dropdown/Dropdown.test.js +504 -108
  47. package/dropdown/DropdownMenu.d.ts +4 -0
  48. package/dropdown/DropdownMenu.js +70 -0
  49. package/dropdown/DropdownMenuItem.d.ts +4 -0
  50. package/dropdown/DropdownMenuItem.js +81 -0
  51. package/dropdown/types.d.ts +25 -5
  52. package/file-input/FileInput.d.ts +2 -2
  53. package/file-input/FileInput.js +177 -219
  54. package/file-input/FileInput.stories.tsx +122 -11
  55. package/file-input/FileInput.test.js +53 -12
  56. package/file-input/FileItem.d.ts +4 -14
  57. package/file-input/FileItem.js +38 -63
  58. package/file-input/types.d.ts +17 -0
  59. package/flex/Flex.d.ts +1 -1
  60. package/flex/Flex.js +31 -19
  61. package/flex/types.d.ts +15 -4
  62. package/footer/Footer.stories.tsx +99 -1
  63. package/footer/types.d.ts +2 -1
  64. package/header/Header.js +87 -87
  65. package/header/Header.stories.tsx +127 -6
  66. package/header/Icons.js +2 -2
  67. package/header/types.d.ts +3 -2
  68. package/layout/ApplicationLayout.js +3 -3
  69. package/layout/ApplicationLayout.stories.tsx +1 -0
  70. package/link/Link.js +1 -1
  71. package/link/types.d.ts +1 -1
  72. package/number-input/NumberInput.test.js +43 -7
  73. package/package.json +16 -21
  74. package/paginator/Icons.d.ts +5 -0
  75. package/paginator/Icons.js +16 -28
  76. package/paginator/Paginator.js +6 -12
  77. package/paginator/Paginator.stories.tsx +24 -0
  78. package/paginator/Paginator.test.js +18 -11
  79. package/password-input/PasswordInput.test.js +13 -12
  80. package/progress-bar/ProgressBar.d.ts +2 -2
  81. package/progress-bar/ProgressBar.js +56 -50
  82. package/progress-bar/ProgressBar.stories.jsx +36 -3
  83. package/progress-bar/ProgressBar.test.js +67 -22
  84. package/progress-bar/types.d.ts +3 -4
  85. package/quick-nav/QuickNav.js +11 -12
  86. package/quick-nav/QuickNav.stories.tsx +111 -19
  87. package/radio-group/Radio.d.ts +1 -1
  88. package/radio-group/Radio.js +43 -28
  89. package/radio-group/RadioGroup.js +24 -24
  90. package/radio-group/RadioGroup.stories.tsx +132 -18
  91. package/radio-group/RadioGroup.test.js +123 -96
  92. package/radio-group/types.d.ts +2 -2
  93. package/resultsetTable/Icons.d.ts +7 -0
  94. package/resultsetTable/Icons.js +51 -0
  95. package/resultsetTable/ResultsetTable.js +48 -107
  96. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  97. package/resultsetTable/ResultsetTable.test.js +40 -63
  98. package/resultsetTable/types.d.ts +2 -2
  99. package/select/Listbox.js +4 -10
  100. package/select/Option.js +11 -24
  101. package/select/Select.js +54 -50
  102. package/select/Select.stories.tsx +494 -149
  103. package/select/Select.test.js +338 -272
  104. package/select/types.d.ts +3 -5
  105. package/sidenav/Sidenav.js +8 -10
  106. package/sidenav/Sidenav.stories.tsx +148 -46
  107. package/sidenav/types.d.ts +1 -1
  108. package/slider/Slider.d.ts +2 -2
  109. package/slider/Slider.js +120 -95
  110. package/slider/Slider.stories.tsx +64 -1
  111. package/slider/Slider.test.js +121 -21
  112. package/slider/types.d.ts +6 -2
  113. package/spinner/Spinner.js +2 -2
  114. package/spinner/Spinner.stories.jsx +27 -1
  115. package/switch/Switch.d.ts +2 -2
  116. package/switch/Switch.js +135 -68
  117. package/switch/Switch.stories.tsx +41 -30
  118. package/switch/Switch.test.js +144 -17
  119. package/switch/types.d.ts +6 -2
  120. package/table/Table.js +1 -1
  121. package/table/Table.stories.jsx +80 -1
  122. package/table/Table.test.js +1 -1
  123. package/tabs/Tab.d.ts +4 -0
  124. package/tabs/Tab.js +133 -0
  125. package/tabs/Tabs.js +360 -104
  126. package/tabs/Tabs.stories.tsx +119 -5
  127. package/tabs/Tabs.test.js +217 -6
  128. package/tabs/types.d.ts +15 -5
  129. package/tabs-nav/NavTabs.js +5 -5
  130. package/tabs-nav/NavTabs.stories.tsx +8 -6
  131. package/tabs-nav/Tab.js +8 -12
  132. package/tabs-nav/types.d.ts +1 -1
  133. package/tag/Tag.js +1 -1
  134. package/tag/types.d.ts +1 -1
  135. package/text-input/Icons.d.ts +8 -0
  136. package/text-input/Icons.js +60 -0
  137. package/text-input/Suggestion.js +38 -9
  138. package/text-input/Suggestions.d.ts +4 -0
  139. package/text-input/Suggestions.js +134 -0
  140. package/text-input/TextInput.js +195 -292
  141. package/text-input/TextInput.stories.tsx +280 -185
  142. package/text-input/TextInput.test.js +737 -725
  143. package/text-input/types.d.ts +22 -3
  144. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  145. package/toggle-group/types.d.ts +1 -1
  146. package/wizard/Wizard.stories.tsx +20 -0
  147. package/wizard/types.d.ts +1 -1
  148. package/common/RequiredComponent.js +0 -32
package/select/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
3
  declare type Margin = {
4
4
  top?: Space;
@@ -6,7 +6,7 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement>;
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type OptionGroup = {
11
11
  /**
12
12
  * Label of the group to be shown in the select's listbox.
@@ -201,9 +201,7 @@ export declare type ListboxProps = {
201
201
  optionalItem: Option;
202
202
  searchable: boolean;
203
203
  handleOptionOnClick: (option: Option) => void;
204
- styles: {
205
- width: number;
206
- };
204
+ styles: React.CSSProperties;
207
205
  };
208
206
  /**
209
207
  * Reference to the select component.
@@ -33,7 +33,7 @@ var _Flex = _interopRequireDefault(require("../flex/Flex"));
33
33
 
34
34
  var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
35
35
 
36
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
36
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
37
37
 
38
38
  var _excluded = ["href", "children", "newWindow", "selected", "icon", "tabIndex", "onClick"];
39
39
 
@@ -138,9 +138,9 @@ var Group = function Group(_ref4) {
138
138
  return setCollapsed(!collapsed);
139
139
  },
140
140
  selectedGroup: selectedGroup
141
- }, /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
141
+ }, /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
142
142
  src: icon
143
- }) : icon, title), collapsed ? collapsedIcon : collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
143
+ }) : icon, title), collapsed ? collapsedIcon : collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
144
144
  src: icon
145
145
  }) : icon, title), !collapsed && children);
146
146
  };
@@ -171,7 +171,7 @@ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
171
171
  ref: ref,
172
172
  tabIndex: tabIndex,
173
173
  onClick: handleClick
174
- }, otherProps), /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
174
+ }, otherProps), /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
175
175
  src: icon
176
176
  }) : icon, children), newWindow && externalLinkIcon);
177
177
  });
@@ -204,7 +204,7 @@ var Divider = _styledComponents["default"].div(_templateObject3 || (_templateObj
204
204
 
205
205
  var SidenavGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n a {\n padding: 0.5rem 1.2rem 0.5rem 2.25rem;\n }\n"])));
206
206
 
207
- var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n box-sizing: border-box;\n width: 100%;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 18px;\n\n display: flex;\n align-items: center;\n margin: 0px;\n padding: 0.5rem 1.2rem;\n"])), function (props) {
207
+ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 18px;\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
208
208
  return props.theme.groupTitleFontFamily;
209
209
  }, function (props) {
210
210
  return props.theme.groupTitleFontStyle;
@@ -214,7 +214,7 @@ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_
214
214
  return props.theme.groupTitleFontSize;
215
215
  });
216
216
 
217
- var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n cursor: pointer;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n display: flex;\n align-items: center;\n margin: 0px;\n padding: 0.5rem 1.2rem;\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n ", "\n svg {\n width: 18px;\n height: auto;\n }\n"])), function (props) {
217
+ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0.5rem 1.2rem;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n cursor: pointer;\n\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n ", "\n\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
218
218
  return props.theme.groupTitleFontFamily;
219
219
  }, function (props) {
220
220
  return props.theme.groupTitleFontStyle;
@@ -234,7 +234,7 @@ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObjec
234
234
  return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedFontColor, "; background: ").concat(props.theme.groupTitleSelectedBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background: transparent;");
235
235
  });
236
236
 
237
- var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n letter-spacing: ", ";\n\n text-transform: ", ";\n text-decoration: ", ";\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n ", "\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n box-shadow: 0 0 0 2px transparent;\n\n padding: 0.5rem 1.2rem;\n\n cursor: pointer;\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n\n &:hover {\n ", "\n }\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n\n &:active {\n color: #ffffff;\n background: #4d4d4d;\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n"])), function (props) {
237
+ var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n box-shadow: 0 0 0 2px transparent;\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n ", "\n\n cursor: pointer;\n\n &:hover {\n ", "\n }\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:active {\n color: #ffffff;\n background: #4d4d4d;\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
238
238
  return props.theme.linkFontLetterSpacing;
239
239
  }, function (props) {
240
240
  return props.theme.linkFontTextTransform;
@@ -256,9 +256,7 @@ var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateO
256
256
  return props.theme.linkFocusColor;
257
257
  });
258
258
 
259
- var SidenavContent = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n"])));
260
-
261
- var SidenavIcon = _styledComponents["default"].img(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n margin-right: 0.5rem;\n"])));
259
+ var SidenavContent = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])));
262
260
 
263
261
  DxcSidenav.Section = Section;
264
262
  DxcSidenav.Group = Group;
@@ -3,6 +3,7 @@ import DxcSidenav from "./Sidenav";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
5
  import { userEvent, within } from "@storybook/testing-library";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "Sidenav",
@@ -10,9 +11,26 @@ export default {
10
11
  };
11
12
 
12
13
  const iconSVG = (
13
- <svg viewBox="0 0 24 24" fill="currentColor">
14
- <path d="M0 0h24v24H0z" fill="none" />
15
- <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
14
+ <svg
15
+ version="1.1"
16
+ id="Capa_1"
17
+ x="0px"
18
+ y="0px"
19
+ width="438.536px"
20
+ height="438.536px"
21
+ viewBox="0 0 438.536 438.536"
22
+ fill="currentColor"
23
+ >
24
+ <g>
25
+ <path
26
+ d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
27
+ C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
28
+ h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
29
+ C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
30
+ c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
31
+ c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
32
+ />
33
+ </g>
16
34
  </svg>
17
35
  );
18
36
 
@@ -20,11 +38,17 @@ const TitleComponent = () => {
20
38
  return <DxcSidenav.Title>Dxc technology</DxcSidenav.Title>;
21
39
  };
22
40
 
41
+ const opinionatedTheme = {
42
+ sidenav: {
43
+ baseColor: "#f2f2f2",
44
+ },
45
+ };
46
+
23
47
  export const Chromatic = () => (
24
48
  <>
25
49
  <ExampleContainer>
26
50
  <Title title="Default sidenav" theme="light" level={4} />
27
- <DxcSidenav title={<TitleComponent />}>
51
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
28
52
  <DxcSidenav.Section>
29
53
  <p>
30
54
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
@@ -41,12 +65,18 @@ export const Chromatic = () => (
41
65
  </DxcSidenav.Group>
42
66
  </DxcSidenav.Section>
43
67
  <DxcSidenav.Section>
44
- <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
68
+ <DxcSidenav.Group
69
+ collapsable={true}
70
+ title="Section Group"
71
+ icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png"
72
+ >
45
73
  <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
46
74
  <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
47
75
  </DxcSidenav.Group>
48
- <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
49
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
76
+ <DxcSidenav.Link icon="https://upload.wikimedia.org/wikipedia/commons/7/73/Flat_tick_icon.svg" newWindow>
77
+ Single Link
78
+ </DxcSidenav.Link>
79
+ <DxcSidenav.Link newWindow>Single Link</DxcSidenav.Link>
50
80
  <DxcSidenav.Group collapsable={false} title="Section Group">
51
81
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
52
82
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -55,51 +85,76 @@ export const Chromatic = () => (
55
85
  </DxcSidenav.Section>
56
86
  </DxcSidenav>
57
87
  </ExampleContainer>
88
+ <ExampleContainer pseudoState="pseudo-focus">
89
+ <Title title="Focused options sidenav" theme="light" level={4} />
90
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
91
+ <DxcSidenav.Section>
92
+ <p>
93
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
94
+ vitae lacinia libero.
95
+ </p>
96
+ </DxcSidenav.Section>
97
+ <DxcSidenav.Section>
98
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
99
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
100
+ <DxcSidenav.Link icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png">Group Link</DxcSidenav.Link>
101
+ </DxcSidenav.Group>
102
+ </DxcSidenav.Section>
103
+ <DxcSidenav.Section>
104
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
105
+ <DxcSidenav.Link selected icon={iconSVG}>
106
+ Group Link
107
+ </DxcSidenav.Link>
108
+ </DxcSidenav.Group>
109
+ <DxcSidenav.Group collapsable={false} title="Section Group">
110
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
111
+ </DxcSidenav.Group>
112
+ </DxcSidenav.Section>
113
+ </DxcSidenav>
114
+ </ExampleContainer>
115
+ <Title title="Opinionated theme" theme="light" level={2} />
116
+ <ExampleContainer>
117
+ <HalstackProvider theme={opinionatedTheme}>
118
+ <DxcSidenav title={<TitleComponent />}>
119
+ <DxcSidenav.Section>
120
+ <p>
121
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
122
+ vitae lacinia libero.
123
+ </p>
124
+ </DxcSidenav.Section>
125
+ <DxcSidenav.Section>
126
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
127
+ <DxcSidenav.Group collapsable={false} title="Single Group" icon={iconSVG}>
128
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
129
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
130
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
131
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
132
+ </DxcSidenav.Group>
133
+ </DxcSidenav.Section>
134
+ <DxcSidenav.Section>
135
+ <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
136
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
137
+ <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
138
+ </DxcSidenav.Group>
139
+ <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
140
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
141
+ <DxcSidenav.Group collapsable={false} title="Section Group">
142
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
143
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
144
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
145
+ </DxcSidenav.Group>
146
+ </DxcSidenav.Section>
147
+ </DxcSidenav>
148
+ </HalstackProvider>
149
+ </ExampleContainer>
58
150
  </>
59
151
  );
60
152
 
61
- export const FocusedSidenav = () => (
62
- <ExampleContainer pseudoState="pseudo-focus">
63
- <Title title="Default sidenav" theme="light" level={4} />
64
- <DxcSidenav title={<TitleComponent />}>
65
- <DxcSidenav.Section>
66
- <p>
67
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse vitae
68
- lacinia libero.
69
- </p>
70
- </DxcSidenav.Section>
71
- <DxcSidenav.Section>
72
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
73
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
74
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
75
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
76
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
77
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
78
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
79
- </DxcSidenav.Group>
80
- </DxcSidenav.Section>
81
- <DxcSidenav.Section>
82
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
83
- <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
84
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
85
- </DxcSidenav.Group>
86
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
87
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
88
- <DxcSidenav.Group collapsable={false} title="Section Group">
89
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
90
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
91
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
92
- </DxcSidenav.Group>
93
- </DxcSidenav.Section>
94
- </DxcSidenav>
95
- </ExampleContainer>
96
- );
97
-
98
153
  const CollapsedGroup = () => (
99
154
  <>
100
155
  <ExampleContainer>
101
156
  <Title title="Default sidenav" theme="light" level={4} />
102
- <DxcSidenav title={<TitleComponent />}>
157
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
103
158
  <DxcSidenav.Section>
104
159
  <DxcSidenav.Group collapsable={true} title="Collapsable Group" icon={iconSVG}>
105
160
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -127,7 +182,7 @@ const CollapsedGroup = () => (
127
182
  const HoverSidenav = () => (
128
183
  <ExampleContainer pseudoState="pseudo-hover">
129
184
  <Title title="Default sidenav" theme="light" level={4} />
130
- <DxcSidenav title={<TitleComponent />}>
185
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
131
186
  <DxcSidenav.Section>
132
187
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
133
188
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
@@ -161,6 +216,44 @@ const HoverSidenav = () => (
161
216
  </ExampleContainer>
162
217
  );
163
218
 
219
+ const HoverSidenavOpinionated = () => (
220
+ <ExampleContainer pseudoState="pseudo-hover">
221
+ <Title title="Default sidenav" theme="light" level={4} />
222
+ <HalstackProvider theme={opinionatedTheme}>
223
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
224
+ <DxcSidenav.Section>
225
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
226
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
227
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
228
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
229
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
230
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
231
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
232
+ </DxcSidenav.Group>
233
+ </DxcSidenav.Section>
234
+ <DxcSidenav.Section>
235
+ <DxcSidenav.Group collapsable={true} title="Not Collapsed Group">
236
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
237
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
238
+ </DxcSidenav.Group>
239
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
240
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
241
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
242
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
243
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
244
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
245
+ </DxcSidenav.Group>
246
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
247
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
248
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
249
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
250
+ </DxcSidenav.Group>
251
+ </DxcSidenav.Section>
252
+ </DxcSidenav>
253
+ </HalstackProvider>
254
+ </ExampleContainer>
255
+ );
256
+
164
257
  export const CollapseGroup = CollapsedGroup.bind({});
165
258
  CollapseGroup.play = async ({ canvasElement }) => {
166
259
  const canvas = within(canvasElement);
@@ -178,3 +271,12 @@ CollapseHoverGroup.play = async ({ canvasElement }) => {
178
271
  userEvent.click(group);
179
272
  });
180
273
  };
274
+
275
+ export const CollapseHoverGroupOpinionated = HoverSidenavOpinionated.bind({});
276
+ CollapseHoverGroupOpinionated.play = async ({ canvasElement }) => {
277
+ const canvas = within(canvasElement);
278
+ const collapsableGroups = canvas.getAllByText("Collapsable Group");
279
+ collapsableGroups.forEach((group) => {
280
+ userEvent.click(group);
281
+ });
282
+ };
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- declare type SVG = React.SVGProps<SVGSVGElement>;
2
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
3
3
  declare type SidenavPropsType = {
4
4
  /**
5
5
  * The area inside the sidenav. This area can be used to render the content inside the sidenav.
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import SliderPropsType from "./types";
3
- declare const DxcSlider: ({ label, name, defaultValue, value, helperText, minValue, maxValue, step, showLimitsValues, showInput, disabled, marks, onChange, onDragEnd, labelFormatCallback, margin, size, }: SliderPropsType) => JSX.Element;
3
+ declare const DxcSlider: React.ForwardRefExoticComponent<SliderPropsType & React.RefAttributes<HTMLDivElement>>;
4
4
  export default DxcSlider;