@dxc-technology/halstack-react 0.0.0-453c87a → 0.0.0-456a6f5

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 (176) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +113 -72
  5. package/accordion/Accordion.js +6 -11
  6. package/accordion/Accordion.stories.tsx +52 -3
  7. package/accordion/Accordion.test.js +1 -1
  8. package/accordion/types.d.ts +3 -3
  9. package/accordion-group/AccordionGroup.js +2 -2
  10. package/accordion-group/AccordionGroup.test.js +1 -1
  11. package/accordion-group/types.d.ts +2 -2
  12. package/alert/Alert.js +4 -8
  13. package/alert/Alert.stories.tsx +28 -0
  14. package/alert/Alert.test.js +1 -1
  15. package/bleed/Bleed.stories.tsx +1 -0
  16. package/box/Box.js +3 -5
  17. package/box/Box.stories.tsx +15 -0
  18. package/box/Box.test.js +1 -1
  19. package/bulleted-list/BulletedList.js +4 -2
  20. package/bulleted-list/BulletedList.stories.tsx +7 -1
  21. package/bulleted-list/types.d.ts +31 -4
  22. package/button/Button.js +2 -3
  23. package/button/Button.stories.tsx +102 -11
  24. package/button/Button.test.js +1 -1
  25. package/button/types.d.ts +3 -3
  26. package/card/Card.js +12 -13
  27. package/card/Card.stories.tsx +12 -13
  28. package/card/Card.test.js +1 -1
  29. package/checkbox/Checkbox.js +3 -3
  30. package/checkbox/Checkbox.stories.tsx +52 -0
  31. package/checkbox/Checkbox.test.js +1 -1
  32. package/checkbox/types.d.ts +2 -2
  33. package/chip/Chip.js +25 -34
  34. package/chip/Chip.stories.tsx +80 -17
  35. package/chip/Chip.test.js +3 -5
  36. package/common/OpenSans.css +68 -80
  37. package/common/coreTokens.d.ts +146 -0
  38. package/common/coreTokens.js +167 -0
  39. package/common/utils.d.ts +1 -0
  40. package/common/utils.js +4 -4
  41. package/common/variables.d.ts +1482 -0
  42. package/common/variables.js +963 -1114
  43. package/date-input/Calendar.js +24 -12
  44. package/date-input/DateInput.stories.tsx +67 -0
  45. package/date-input/DatePicker.js +26 -12
  46. package/date-input/YearPicker.js +20 -10
  47. package/dialog/Dialog.js +61 -74
  48. package/dialog/Dialog.stories.tsx +211 -159
  49. package/dialog/Dialog.test.js +302 -3
  50. package/dialog/types.d.ts +2 -2
  51. package/dropdown/Dropdown.js +2 -3
  52. package/dropdown/Dropdown.stories.tsx +200 -82
  53. package/dropdown/Dropdown.test.js +3 -2
  54. package/dropdown/DropdownMenu.js +12 -18
  55. package/dropdown/DropdownMenuItem.js +4 -17
  56. package/dropdown/types.d.ts +3 -3
  57. package/file-input/FileInput.js +4 -8
  58. package/file-input/FileInput.stories.tsx +85 -2
  59. package/file-input/FileInput.test.js +1 -42
  60. package/file-input/FileItem.js +1 -0
  61. package/flex/Flex.js +4 -2
  62. package/flex/Flex.stories.tsx +35 -26
  63. package/flex/types.d.ts +70 -5
  64. package/footer/Footer.js +6 -8
  65. package/footer/Footer.stories.tsx +91 -0
  66. package/footer/Footer.test.js +14 -26
  67. package/grid/Grid.d.ts +7 -0
  68. package/grid/Grid.js +91 -0
  69. package/grid/Grid.stories.tsx +219 -0
  70. package/grid/types.d.ts +115 -0
  71. package/header/Header.d.ts +3 -2
  72. package/header/Header.js +21 -23
  73. package/header/Header.stories.tsx +149 -6
  74. package/header/Header.test.js +2 -2
  75. package/header/types.d.ts +2 -2
  76. package/heading/Heading.js +1 -1
  77. package/heading/Heading.test.js +1 -1
  78. package/inset/Inset.stories.tsx +2 -1
  79. package/layout/ApplicationLayout.d.ts +3 -3
  80. package/layout/ApplicationLayout.js +1 -1
  81. package/layout/types.d.ts +2 -3
  82. package/link/Link.js +3 -3
  83. package/link/Link.stories.tsx +60 -0
  84. package/link/Link.test.js +2 -4
  85. package/link/types.d.ts +2 -2
  86. package/main.d.ts +3 -2
  87. package/main.js +9 -1
  88. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  89. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +89 -1
  90. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  91. package/{tabs-nav → nav-tabs}/Tab.js +32 -10
  92. package/nav-tabs/types.js +5 -0
  93. package/number-input/NumberInput.test.js +1 -1
  94. package/package.json +2 -2
  95. package/paginator/Paginator.js +1 -3
  96. package/paginator/Paginator.stories.tsx +24 -0
  97. package/paginator/Paginator.test.js +44 -47
  98. package/paragraph/Paragraph.d.ts +3 -4
  99. package/paragraph/Paragraph.js +5 -5
  100. package/password-input/PasswordInput.test.js +1 -1
  101. package/progress-bar/ProgressBar.d.ts +2 -2
  102. package/progress-bar/ProgressBar.js +5 -5
  103. package/progress-bar/ProgressBar.stories.jsx +35 -2
  104. package/progress-bar/ProgressBar.test.js +1 -1
  105. package/progress-bar/types.d.ts +4 -3
  106. package/quick-nav/QuickNav.stories.tsx +14 -0
  107. package/radio-group/RadioGroup.stories.tsx +131 -18
  108. package/radio-group/RadioGroup.test.js +1 -1
  109. package/resultsetTable/ResultsetTable.js +2 -2
  110. package/resultsetTable/ResultsetTable.test.js +18 -23
  111. package/resultsetTable/types.d.ts +3 -3
  112. package/select/Listbox.d.ts +1 -1
  113. package/select/Listbox.js +5 -34
  114. package/select/Option.js +3 -14
  115. package/select/Select.js +56 -35
  116. package/select/Select.stories.tsx +475 -187
  117. package/select/Select.test.js +76 -81
  118. package/select/types.d.ts +2 -2
  119. package/sidenav/Icons.d.ts +7 -0
  120. package/sidenav/Icons.js +51 -0
  121. package/sidenav/Sidenav.d.ts +2 -2
  122. package/sidenav/Sidenav.js +66 -94
  123. package/sidenav/Sidenav.stories.tsx +110 -17
  124. package/sidenav/types.d.ts +21 -18
  125. package/slider/Slider.js +2 -3
  126. package/slider/Slider.stories.tsx +57 -0
  127. package/slider/Slider.test.js +1 -1
  128. package/slider/types.d.ts +2 -2
  129. package/spinner/Spinner.js +15 -21
  130. package/spinner/Spinner.stories.jsx +53 -27
  131. package/spinner/Spinner.test.js +1 -1
  132. package/switch/Switch.js +2 -2
  133. package/switch/Switch.stories.tsx +33 -0
  134. package/switch/Switch.test.js +1 -1
  135. package/switch/types.d.ts +2 -2
  136. package/table/Table.js +2 -2
  137. package/table/Table.stories.jsx +80 -1
  138. package/table/Table.test.js +1 -1
  139. package/tabs/Tab.js +9 -10
  140. package/tabs/Tabs.js +11 -17
  141. package/tabs/Tabs.stories.tsx +38 -0
  142. package/tabs/Tabs.test.js +4 -5
  143. package/tabs/types.d.ts +2 -2
  144. package/tag/Tag.js +7 -9
  145. package/tag/Tag.stories.tsx +14 -1
  146. package/tag/Tag.test.js +1 -1
  147. package/text-input/Suggestion.js +2 -2
  148. package/text-input/TextInput.js +4 -4
  149. package/text-input/TextInput.stories.tsx +69 -1
  150. package/text-input/TextInput.test.js +1 -2
  151. package/textarea/Textarea.js +3 -4
  152. package/textarea/Textarea.stories.jsx +60 -1
  153. package/textarea/Textarea.test.js +2 -4
  154. package/toggle-group/ToggleGroup.d.ts +2 -2
  155. package/toggle-group/ToggleGroup.js +7 -4
  156. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  157. package/toggle-group/ToggleGroup.test.js +1 -1
  158. package/toggle-group/types.d.ts +1 -1
  159. package/typography/Typography.d.ts +2 -2
  160. package/typography/Typography.js +14 -113
  161. package/typography/Typography.stories.tsx +1 -1
  162. package/useTheme.d.ts +1234 -1
  163. package/useTheme.js +1 -1
  164. package/useTranslatedLabels.d.ts +84 -1
  165. package/utils/BaseTypography.d.ts +21 -0
  166. package/utils/BaseTypography.js +108 -0
  167. package/utils/FocusLock.d.ts +13 -0
  168. package/utils/FocusLock.js +138 -0
  169. package/wizard/Wizard.js +2 -2
  170. package/wizard/Wizard.stories.tsx +20 -0
  171. package/wizard/Wizard.test.js +1 -1
  172. package/wizard/types.d.ts +5 -6
  173. /package/{tabs-nav → grid}/types.js +0 -0
  174. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  175. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  176. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
@@ -70,6 +70,14 @@ const advancedTheme = {
70
70
  },
71
71
  };
72
72
 
73
+ const opinionatedTheme = {
74
+ accordion: {
75
+ accentColor: "#5f249f",
76
+ titleFontColor: "#000000",
77
+ assistiveTextFontColor: "#666666",
78
+ },
79
+ };
80
+
73
81
  export const Chromatic = () => (
74
82
  <>
75
83
  <Title title="Component anatomy" theme="light" level={2} />
@@ -111,7 +119,7 @@ export const Chromatic = () => (
111
119
  </ExampleContainer>
112
120
  <ExampleContainer>
113
121
  <Title title="With bigger icon (SVG)" theme="light" level={4} />
114
- <DxcAccordion label="Accordion" assistiveText="Assistive text" icon={facebookIcon}>
122
+ <DxcAccordion label="AccordionTest" assistiveText="Assistive text" icon={facebookIcon}>
115
123
  <div>
116
124
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo
117
125
  lobortis eget.
@@ -123,7 +131,7 @@ export const Chromatic = () => (
123
131
  <DxcAccordion
124
132
  label="Accordion"
125
133
  assistiveText="Assistive text"
126
- icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
134
+ icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
127
135
  >
128
136
  <div>
129
137
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo
@@ -340,7 +348,48 @@ export const Chromatic = () => (
340
348
  lobortis eget.
341
349
  </div>
342
350
  </DxcAccordion>
343
- <hr />
351
+ </ExampleContainer>
352
+ <Title title="Opinionated theme" theme="light" level={2} />
353
+ <ExampleContainer>
354
+ <Title title="With assistive text and icon" theme="light" level={4} />
355
+ <HalstackProvider theme={opinionatedTheme}>
356
+ <DxcAccordion label="Accordion" assistiveText="Assistive text" icon={folderIcon}>
357
+ Content
358
+ </DxcAccordion>
359
+ </HalstackProvider>
360
+ </ExampleContainer>
361
+ <ExampleContainer pseudoState="pseudo-hover">
362
+ <Title title="Hovered" theme="light" level={4} />
363
+ <HalstackProvider theme={opinionatedTheme}>
364
+ <DxcAccordion label="Hovered">
365
+ <div>
366
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
367
+ leo lobortis eget.
368
+ </div>
369
+ </DxcAccordion>
370
+ </HalstackProvider>
371
+ </ExampleContainer>
372
+ <ExampleContainer pseudoState="pseudo-active">
373
+ <Title title="Active" theme="light" level={4} />
374
+ <HalstackProvider theme={opinionatedTheme}>
375
+ <DxcAccordion label="Active">
376
+ <div>
377
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
378
+ leo lobortis eget.
379
+ </div>
380
+ </DxcAccordion>
381
+ </HalstackProvider>
382
+ </ExampleContainer>
383
+ <ExampleContainer>
384
+ <Title title="Disabled" theme="light" level={4} />
385
+ <HalstackProvider theme={opinionatedTheme}>
386
+ <DxcAccordion label="Disabled" assistiveText="Assistive text" icon={folderIcon} disabled>
387
+ <div>
388
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
389
+ leo lobortis eget.
390
+ </div>
391
+ </DxcAccordion>
392
+ </HalstackProvider>
344
393
  </ExampleContainer>
345
394
  </>
346
395
  );
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Accordion = _interopRequireDefault(require("./Accordion"));
9
+ var _Accordion = _interopRequireDefault(require("./Accordion.tsx"));
10
10
 
11
11
  describe("Accordion component tests", function () {
12
12
  test("Renders with correct aria accessibility attributes", function () {
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export declare type Margin = {
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- export declare type Padding = {
9
+ declare type Padding = {
10
10
  top?: Space;
11
11
  bottom?: Space;
12
12
  left?: Space;
@@ -25,9 +25,9 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
25
25
 
26
26
  var _Accordion = _interopRequireDefault(require("../accordion/Accordion"));
27
27
 
28
- var _utils = require("../common/utils.js");
28
+ var _utils = require("../common/utils");
29
29
 
30
- var _variables = require("../common/variables.js");
30
+ var _variables = require("../common/variables");
31
31
 
32
32
  var _useTheme = _interopRequireDefault(require("../useTheme"));
33
33
 
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _AccordionGroup = _interopRequireDefault(require("./AccordionGroup"));
9
+ var _AccordionGroup = _interopRequireDefault(require("./AccordionGroup.tsx"));
10
10
 
11
11
  describe("Accordion component tests", function () {
12
12
  test("Uncontrolled accordion group calls correct function on click", function () {
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export declare type Margin = {
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
package/alert/Alert.js CHANGED
@@ -17,9 +17,9 @@ var _react = _interopRequireDefault(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
- var _variables = require("../common/variables.js");
20
+ var _variables = require("../common/variables");
21
21
 
22
- var _utils = require("../common/utils.js");
22
+ var _utils = require("../common/utils");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
@@ -131,9 +131,7 @@ var DxcAlert = function DxcAlert(_ref) {
131
131
  size: size
132
132
  }, /*#__PURE__*/_react["default"].createElement(AlertInfo, null, /*#__PURE__*/_react["default"].createElement(AlertIcon, {
133
133
  type: type
134
- }, type === "info" && alertIcons.info || type === "confirm" && alertIcons.success || type === "warning" && alertIcons.warning || type === "error" && alertIcons.error), /*#__PURE__*/_react["default"].createElement(AlertText, null, /*#__PURE__*/_react["default"].createElement(AlertTitle, {
135
- type: type
136
- }, getTypeText()), inlineText && inlineText !== "" && "-", /*#__PURE__*/_react["default"].createElement(AlertInlineText, null, inlineText)), onClose && /*#__PURE__*/_react["default"].createElement(AlertCloseAction, {
134
+ }, type === "info" && alertIcons.info || type === "confirm" && alertIcons.success || type === "warning" && alertIcons.warning || type === "error" && alertIcons.error), /*#__PURE__*/_react["default"].createElement(AlertText, null, /*#__PURE__*/_react["default"].createElement(AlertTitle, null, getTypeText()), inlineText && inlineText !== "" && "-", /*#__PURE__*/_react["default"].createElement(AlertInlineText, null, inlineText)), onClose && /*#__PURE__*/_react["default"].createElement(AlertCloseAction, {
137
135
  onClick: onClose,
138
136
  tabIndex: tabIndex
139
137
  }, alertIcons.close)), children && /*#__PURE__*/_react["default"].createElement(AlertContent, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
@@ -279,12 +277,10 @@ var AlertContent = _styledComponents["default"].div(_templateObject9 || (_templa
279
277
  return "".concat(props.theme.contentPaddingTop, " ").concat(props.theme.contentPaddingRight, " ").concat(props.theme.contentPaddingBottom, " ").concat(props.theme.contentPaddingLeft);
280
278
  });
281
279
 
282
- var AlertCloseAction = _styledComponents["default"].button(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n border: 1px solid transparent;\n border-radius: 2px;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n margin-left: 12px;\n background-color: transparent;\n color: #000000;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
280
+ var AlertCloseAction = _styledComponents["default"].button(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n border: 1px solid transparent;\n border-radius: 2px;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n margin-left: 12px;\n background-color: transparent;\n color: #000000;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
283
281
  return props.theme.hoverActionBackgroundColor;
284
282
  }, function (props) {
285
283
  return props.theme.focusActionBorderColor;
286
- }, function (props) {
287
- return props.theme.focusActionBorderColor;
288
284
  }, function (props) {
289
285
  return props.theme.activeActionBackgroundColor;
290
286
  });
@@ -2,12 +2,21 @@ import React from "react";
2
2
  import DxcAlert from "./Alert";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import { HalstackProvider } from "../HalstackContext";
5
6
 
6
7
  export default {
7
8
  title: "Alert",
8
9
  component: DxcAlert,
9
10
  };
10
11
 
12
+ const opinionatedTheme = {
13
+ alert: {
14
+ baseColor: "#e6f4ff",
15
+ accentColor: "#0067b3",
16
+ overlayColor: "#000000b3",
17
+ },
18
+ };
19
+
11
20
  export const Chromatic = () => (
12
21
  <>
13
22
  <ExampleContainer>
@@ -155,6 +164,12 @@ export const Chromatic = () => (
155
164
  </div>
156
165
  </DxcAlert>
157
166
  </ExampleContainer>
167
+ <Title title="Opinionated theme" theme="light" level={2} />
168
+ <ExampleContainer>
169
+ <HalstackProvider theme={opinionatedTheme}>
170
+ <DxcAlert inlineText="Info type alert with inline text." />
171
+ </HalstackProvider>
172
+ </ExampleContainer>
158
173
  </>
159
174
  );
160
175
 
@@ -168,3 +183,16 @@ export const ModalAlert = () => (
168
183
  </DxcAlert>
169
184
  </ExampleContainer>
170
185
  );
186
+
187
+ export const ModalAlertOpinionated = () => (
188
+ <ExampleContainer>
189
+ <HalstackProvider theme={opinionatedTheme}>
190
+ <DxcAlert inlineText="Modal alert." mode="modal" onClose={() => {}}>
191
+ <div>
192
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo
193
+ lobortis eget.
194
+ </div>
195
+ </DxcAlert>
196
+ </HalstackProvider>
197
+ </ExampleContainer>
198
+ );
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Alert = _interopRequireDefault(require("./Alert"));
9
+ var _Alert = _interopRequireDefault(require("./Alert.tsx"));
10
10
 
11
11
  describe("Alert component tests", function () {
12
12
  test("Info alert renders with correct text", function () {
@@ -337,5 +337,6 @@ const Placeholder = styled.div`
337
337
  min-height: 40px;
338
338
  min-width: 120px;
339
339
  border: 1px solid #a46ede;
340
+ border-radius: 0.5rem;
340
341
  background-color: #e5d5f6;
341
342
  `;
package/box/Box.js CHANGED
@@ -17,9 +17,9 @@ var _react = _interopRequireDefault(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
- var _variables = require("../common/variables.js");
20
+ var _variables = require("../common/variables");
21
21
 
22
- var _utils = require("../common/utils.js");
22
+ var _utils = require("../common/utils");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
@@ -71,7 +71,7 @@ var calculateWidth = function calculateWidth(margin, size, padding) {
71
71
  return sizes[size];
72
72
  };
73
73
 
74
- var StyledDxcBox = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n letter-spacing: ", ";\n overflow: hidden;\n width: ", ";\n background-color: ", ";\n box-shadow: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
74
+ var StyledDxcBox = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n overflow: hidden;\n width: ", ";\n background-color: ", ";\n box-shadow: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
75
75
  return props.display;
76
76
  }, function (props) {
77
77
  return props.theme.borderRadius;
@@ -81,8 +81,6 @@ var StyledDxcBox = _styledComponents["default"].div(_templateObject || (_templat
81
81
  return props.theme.borderStyle;
82
82
  }, function (props) {
83
83
  return props.theme.borderColor;
84
- }, function (props) {
85
- return props.theme.letterSpacing;
86
84
  }, function (props) {
87
85
  return calculateWidth(props.margin, props.size, props.padding);
88
86
  }, function (props) {
@@ -2,12 +2,19 @@ import React from "react";
2
2
  import Title from "../../.storybook/components/Title";
3
3
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
4
4
  import DxcBox from "./Box";
5
+ import { HalstackProvider } from "../HalstackContext";
5
6
 
6
7
  export default {
7
8
  title: "Box ",
8
9
  component: DxcBox,
9
10
  };
10
11
 
12
+ const opinionatedTheme = {
13
+ box: {
14
+ baseColor: "#ffffff",
15
+ },
16
+ };
17
+
11
18
  export const Chromatic = () => (
12
19
  <>
13
20
  <Title title="Display flex" theme="light" level={2} />
@@ -128,5 +135,13 @@ export const Chromatic = () => (
128
135
  <Title title="FitContent" theme="light" level={4} />
129
136
  <DxcBox size="fitContent">Box</DxcBox>
130
137
  </ExampleContainer>
138
+ <Title title="Opinionated theme" theme="light" level={2} />
139
+ <ExampleContainer>
140
+ <HalstackProvider theme={opinionatedTheme}>
141
+ <DxcBox display="flex" padding="medium">
142
+ Box
143
+ </DxcBox>
144
+ </HalstackProvider>
145
+ </ExampleContainer>
131
146
  </>
132
147
  );
package/box/Box.test.js CHANGED
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Card = _interopRequireDefault(require("../card/Card"));
9
+ var _Card = _interopRequireDefault(require("../card/Card.tsx"));
10
10
 
11
11
  describe("Box component tests", function () {
12
12
  test("Box renders with correct text", function () {
@@ -57,7 +57,9 @@ var DxcBulletedList = function DxcBulletedList(_ref2) {
57
57
  backgroundType: backgroundType
58
58
  })) : type === "icon" ? /*#__PURE__*/_react["default"].createElement(Bullet, null, /*#__PURE__*/_react["default"].createElement(Icon, {
59
59
  backgroundType: backgroundType
60
- }, icon)) : /*#__PURE__*/_react["default"].createElement(Bullet, null, /*#__PURE__*/_react["default"].createElement(Disc, {
60
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
61
+ src: icon
62
+ }) : icon)) : /*#__PURE__*/_react["default"].createElement(Bullet, null, /*#__PURE__*/_react["default"].createElement(Disc, {
61
63
  backgroundType: backgroundType
62
64
  })), /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
63
65
  color: backgroundType && backgroundType === "dark" ? colorsTheme.bulletedList.fontColorOnDark : colorsTheme.bulletedList.fontColor
@@ -73,7 +75,7 @@ var Bullet = _styledComponents["default"].div(_templateObject2 || (_templateObje
73
75
 
74
76
  var GeneralContent = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n"])));
75
77
 
76
- var Icon = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: 1.5rem;\n width: auto;\n margin-right: ", ";\n align-content: center;\n color: ", ";\n & > svg {\n height: ", ";\n width: ", ";\n }\n"])), function (props) {
78
+ var Icon = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: 1.5rem;\n width: auto;\n margin-right: ", ";\n align-content: center;\n color: ", ";\n svg,\n img {\n height: ", ";\n width: ", ";\n }\n"])), function (props) {
77
79
  return props.theme.bulletMarginRight;
78
80
  }, function (props) {
79
81
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
@@ -20,12 +20,18 @@ const icon = (
20
20
  export const Chromatic = () => (
21
21
  <>
22
22
  <ExampleContainer>
23
- <Title title="Icon list" level={4} />
23
+ <Title title="Icon list (SVG)" level={4} />
24
24
  <DxcBulletedList type="icon" icon={icon}>
25
25
  <DxcBulletedList.Item>Code</DxcBulletedList.Item>
26
26
  <DxcBulletedList.Item>Usage</DxcBulletedList.Item>
27
27
  <DxcBulletedList.Item>Specifications</DxcBulletedList.Item>
28
28
  </DxcBulletedList>
29
+ <Title title="Icon list (path)" level={4} />
30
+ <DxcBulletedList type="icon" icon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg">
31
+ <DxcBulletedList.Item>Code</DxcBulletedList.Item>
32
+ <DxcBulletedList.Item>Usage</DxcBulletedList.Item>
33
+ <DxcBulletedList.Item>Specifications</DxcBulletedList.Item>
34
+ </DxcBulletedList>
29
35
  <Title title="Number list" level={4} />
30
36
  <DxcBulletedList type="number">
31
37
  <DxcBulletedList.Item>Code</DxcBulletedList.Item>
@@ -1,11 +1,38 @@
1
1
  /// <reference types="react" />
2
- declare type SVG = React.ReactNode & (React.SVGProps<SVGSVGElement> | React.FunctionComponent<React.SVGProps<SVGSVGElement>>);
3
- declare type Props = {
2
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
3
+ declare type IconProps = {
4
+ /**
5
+ * Defines the style of the bullet point in the list.
6
+ */
7
+ type: "icon";
8
+ /**
9
+ * Icon to display as bullet.
10
+ */
11
+ icon: string | SVG;
12
+ /**
13
+ * Text to be shown in the list.
14
+ */
4
15
  children: React.ReactNode;
5
- type?: "disc" | "circle" | "square" | "number" | "icon";
6
- icon?: string | SVG;
7
16
  };
17
+ declare type OtherProps = {
18
+ /**
19
+ * Defines the style of the bullet point in the list.
20
+ */
21
+ type?: "disc" | "circle" | "square" | "number";
22
+ /**
23
+ * Icon to display as bullet.
24
+ */
25
+ icon?: never;
26
+ /**
27
+ * Text to be shown in the list.
28
+ */
29
+ children: React.ReactNode;
30
+ };
31
+ declare type Props = IconProps | OtherProps;
8
32
  export default Props;
9
33
  export declare type BulletedListItemPropsType = {
34
+ /**
35
+ * Text to be shown in the list.
36
+ */
10
37
  children?: React.ReactNode;
11
38
  };
package/button/Button.js CHANGED
@@ -17,9 +17,9 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
- var _variables = require("../common/variables.js");
20
+ var _variables = require("../common/variables");
21
21
 
22
- var _utils = require("../common/utils.js");
22
+ var _utils = require("../common/utils");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
@@ -75,7 +75,6 @@ var DxcButton = function DxcButton(_ref) {
75
75
  type: type,
76
76
  mode: mode !== "primary" && mode !== "secondary" && mode !== "text" ? "primary" : mode,
77
77
  disabled: disabled,
78
- "aria-disabled": disabled,
79
78
  tabIndex: disabled ? -1 : tabIndex,
80
79
  backgroundType: backgroundType,
81
80
  size: size,
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
+ import { BackgroundColorProvider } from "../BackgroundColorContext";
2
3
  import DxcButton from "./Button";
3
4
  import DxcFlex from "./../flex/Flex";
4
- import { BackgroundColorProvider } from "../BackgroundColorContext";
5
5
  import Title from "../../.storybook/components/Title";
6
6
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
7
7
  import DarkContainer from "../../.storybook/components/DarkSection";
8
+ import { HalstackProvider } from "../HalstackContext";
8
9
 
9
10
  export default {
10
11
  title: "Button",
@@ -48,6 +49,14 @@ const smallIcon = (
48
49
  </svg>
49
50
  );
50
51
 
52
+ const opinionatedTheme = {
53
+ button: {
54
+ baseColor: "#5f249f",
55
+ primaryFontColor: "#ffffff",
56
+ secondaryHoverFontColor: "#ffffff",
57
+ },
58
+ };
59
+
51
60
  export const Chromatic = () => (
52
61
  <>
53
62
  <Title title="Primary" theme="light" level={2} />
@@ -69,7 +78,7 @@ export const Chromatic = () => (
69
78
  </ExampleContainer>
70
79
  <ExampleContainer>
71
80
  <Title title="Disabled" theme="light" level={4} />
72
- <DxcButton label="Primary disabled" disabled />
81
+ <DxcButton label="Primary disabled" disabled icon={iconSVG} />
73
82
  </ExampleContainer>
74
83
  <ExampleContainer>
75
84
  <Title title="With left icon" theme="light" level={4} />
@@ -89,7 +98,7 @@ export const Chromatic = () => (
89
98
  </ExampleContainer>
90
99
  <ExampleContainer>
91
100
  <Title title="Big icon (image)" theme="light" level={4} />
92
- <DxcButton icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png" />
101
+ <DxcButton icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png" />
93
102
  </ExampleContainer>
94
103
  <ExampleContainer>
95
104
  <Title title="Small icon" theme="light" level={4} />
@@ -114,7 +123,7 @@ export const Chromatic = () => (
114
123
  </ExampleContainer>
115
124
  <ExampleContainer>
116
125
  <Title title="Disabled" theme="light" level={4} />
117
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
126
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
118
127
  </ExampleContainer>
119
128
  <ExampleContainer>
120
129
  <Title title="With icon" theme="light" level={4} />
@@ -122,7 +131,10 @@ export const Chromatic = () => (
122
131
  </ExampleContainer>
123
132
  <ExampleContainer>
124
133
  <Title title="Only icon (image)" theme="light" level={4} />
125
- <DxcButton mode="secondary" icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png" />
134
+ <DxcButton
135
+ mode="secondary"
136
+ icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
137
+ />
126
138
  </ExampleContainer>
127
139
  <Title title="Text" theme="light" level={2} />
128
140
  <ExampleContainer>
@@ -143,7 +155,7 @@ export const Chromatic = () => (
143
155
  </ExampleContainer>
144
156
  <ExampleContainer>
145
157
  <Title title="Disabled" theme="light" level={4} />
146
- <DxcButton mode="text" label="Text disabled" disabled />
158
+ <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
147
159
  </ExampleContainer>
148
160
  <ExampleContainer>
149
161
  <Title title="With icon" theme="light" level={4} />
@@ -151,7 +163,10 @@ export const Chromatic = () => (
151
163
  </ExampleContainer>
152
164
  <ExampleContainer>
153
165
  <Title title="Only icon (image)" theme="light" level={4} />
154
- <DxcButton mode="text" icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png" />
166
+ <DxcButton
167
+ mode="text"
168
+ icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
169
+ />
155
170
  </ExampleContainer>
156
171
  <BackgroundColorProvider color="#333333">
157
172
  <DarkContainer>
@@ -174,7 +189,7 @@ export const Chromatic = () => (
174
189
  </ExampleContainer>
175
190
  <ExampleContainer>
176
191
  <Title title="Disabled" theme="dark" level={4} />
177
- <DxcButton label="Primary disabled" disabled />
192
+ <DxcButton label="Primary disabled" disabled icon={iconSVG} />
178
193
  </ExampleContainer>
179
194
  <ExampleContainer>
180
195
  <Title title="With icon" theme="dark" level={4} />
@@ -199,7 +214,7 @@ export const Chromatic = () => (
199
214
  </ExampleContainer>
200
215
  <ExampleContainer>
201
216
  <Title title="Disabled" theme="dark" level={4} />
202
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
217
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
203
218
  </ExampleContainer>
204
219
  <ExampleContainer>
205
220
  <Title title="With icon" theme="dark" level={4} />
@@ -224,7 +239,7 @@ export const Chromatic = () => (
224
239
  </ExampleContainer>
225
240
  <ExampleContainer>
226
241
  <Title title="Disabled" theme="dark" level={4} />
227
- <DxcButton mode="text" label="Text disabled" disabled />
242
+ <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
228
243
  </ExampleContainer>
229
244
  <ExampleContainer>
230
245
  <Title title="With icon" theme="dark" level={4} />
@@ -324,11 +339,87 @@ export const Chromatic = () => (
324
339
  </ExampleContainer>
325
340
  <Title title="Inside a flex" theme="light" level={2} />
326
341
  <ExampleContainer>
327
- <DxcFlex direction="column" gap="0.75rem">
342
+ <DxcFlex direction="column" gap="1rem">
328
343
  <DxcButton label="Button" />
329
344
  <DxcButton label="Button" />
330
345
  <DxcButton label="Button" />
331
346
  </DxcFlex>
332
347
  </ExampleContainer>
348
+ <Title title="Opinionated theme" theme="light" level={2} />
349
+ <Title title="Primary" theme="light" level={3} />
350
+ <ExampleContainer>
351
+ <Title title="Enabled" theme="light" level={4} />
352
+ <HalstackProvider theme={opinionatedTheme}>
353
+ <DxcButton label="Primary" icon={iconSVG} />
354
+ </HalstackProvider>
355
+ </ExampleContainer>
356
+ <ExampleContainer pseudoState="pseudo-hover">
357
+ <Title title="Hovered" theme="light" level={4} />
358
+ <DxcButton label="Primary hovered" icon={iconSVG} />
359
+ </ExampleContainer>
360
+ <ExampleContainer pseudoState="pseudo-focus">
361
+ <Title title="Focused" theme="light" level={4} />
362
+ <DxcButton label="Primary focused" icon={iconSVG} />
363
+ </ExampleContainer>
364
+ <ExampleContainer pseudoState="pseudo-active">
365
+ <Title title="Actived" theme="light" level={4} />
366
+ <DxcButton label="Primary actived" icon={iconSVG} />
367
+ </ExampleContainer>
368
+ <ExampleContainer>
369
+ <Title title="Disabled" theme="light" level={4} />
370
+ <HalstackProvider theme={opinionatedTheme}>
371
+ <DxcButton label="Primary" icon={iconSVG} disabled />
372
+ </HalstackProvider>
373
+ </ExampleContainer>
374
+ <Title title="Secondary" theme="light" level={3} />
375
+ <ExampleContainer>
376
+ <Title title="Enabled" theme="light" level={4} />
377
+ <HalstackProvider theme={opinionatedTheme}>
378
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
379
+ </HalstackProvider>
380
+ </ExampleContainer>
381
+ <ExampleContainer pseudoState="pseudo-hover">
382
+ <Title title="Hovered" theme="light" level={4} />
383
+ <DxcButton mode="secondary" label="Secondary hovered" icon={iconSVG} />
384
+ </ExampleContainer>
385
+ <ExampleContainer pseudoState="pseudo-focus">
386
+ <Title title="Focused" theme="light" level={4} />
387
+ <DxcButton mode="secondary" label="Secondary focused" icon={iconSVG} />
388
+ </ExampleContainer>
389
+ <ExampleContainer pseudoState="pseudo-active">
390
+ <Title title="Actived" theme="light" level={4} />
391
+ <DxcButton mode="secondary" label="Secondary actived" icon={iconSVG} />
392
+ </ExampleContainer>
393
+ <ExampleContainer>
394
+ <Title title="Disabled" theme="light" level={4} />
395
+ <HalstackProvider theme={opinionatedTheme}>
396
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} disabled />
397
+ </HalstackProvider>
398
+ </ExampleContainer>
399
+ <Title title="Text" theme="light" level={3} />
400
+ <ExampleContainer>
401
+ <Title title="Enabled" theme="light" level={4} />
402
+ <HalstackProvider theme={opinionatedTheme}>
403
+ <DxcButton mode="text" label="Text" icon={iconSVG} />
404
+ </HalstackProvider>
405
+ </ExampleContainer>
406
+ <ExampleContainer pseudoState="pseudo-hover">
407
+ <Title title="Hovered" theme="light" level={4} />
408
+ <DxcButton mode="text" label="Text hovered" icon={iconSVG} />
409
+ </ExampleContainer>
410
+ <ExampleContainer pseudoState="pseudo-focus">
411
+ <Title title="Focused" theme="light" level={4} />
412
+ <DxcButton mode="text" label="Text focused" icon={iconSVG} />
413
+ </ExampleContainer>
414
+ <ExampleContainer pseudoState="pseudo-active">
415
+ <Title title="Actived" theme="light" level={4} />
416
+ <DxcButton mode="text" label="Text actived" icon={iconSVG} />
417
+ </ExampleContainer>
418
+ <ExampleContainer>
419
+ <Title title="Disabled" theme="light" level={4} />
420
+ <HalstackProvider theme={opinionatedTheme}>
421
+ <DxcButton mode="text" label="Text disabled" icon={iconSVG} disabled />
422
+ </HalstackProvider>
423
+ </ExampleContainer>
333
424
  </>
334
425
  );
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Button = _interopRequireDefault(require("./Button"));
9
+ var _Button = _interopRequireDefault(require("./Button.tsx"));
10
10
 
11
11
  describe("Button component tests", function () {
12
12
  test("Button renders with correct text", function () {