@dxc-technology/halstack-react 0.0.0-f6d6be5 → 0.0.0-f70a97e

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 (270) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +4 -21
  3. package/HalstackContext.d.ts +43 -138
  4. package/HalstackContext.js +10 -35
  5. package/accordion/Accordion.js +23 -63
  6. package/accordion/Accordion.stories.tsx +1 -15
  7. package/accordion/Accordion.test.js +18 -33
  8. package/accordion/types.d.ts +5 -5
  9. package/accordion-group/AccordionGroup.js +15 -42
  10. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  11. package/accordion-group/AccordionGroup.test.js +42 -60
  12. package/accordion-group/AccordionGroupAccordion.js +9 -21
  13. package/accordion-group/types.d.ts +6 -6
  14. package/action-icon/ActionIcon.d.ts +4 -0
  15. package/action-icon/ActionIcon.js +47 -0
  16. package/action-icon/ActionIcon.stories.tsx +41 -0
  17. package/action-icon/ActionIcon.test.js +64 -0
  18. package/action-icon/types.d.ts +26 -0
  19. package/alert/Alert.js +15 -50
  20. package/alert/Alert.test.js +28 -45
  21. package/alert/types.d.ts +5 -5
  22. package/badge/Badge.d.ts +1 -1
  23. package/badge/Badge.js +141 -43
  24. package/badge/Badge.stories.tsx +210 -0
  25. package/badge/Badge.test.js +30 -0
  26. package/badge/types.d.ts +52 -3
  27. package/bleed/Bleed.js +13 -21
  28. package/bleed/types.d.ts +2 -2
  29. package/box/Box.js +11 -33
  30. package/box/Box.test.js +1 -6
  31. package/box/types.d.ts +3 -3
  32. package/bulleted-list/BulletedList.js +18 -54
  33. package/bulleted-list/BulletedList.stories.tsx +1 -92
  34. package/bulleted-list/types.d.ts +5 -5
  35. package/button/Button.js +36 -59
  36. package/button/Button.stories.tsx +33 -132
  37. package/button/Button.test.js +13 -21
  38. package/button/types.d.ts +5 -5
  39. package/card/Card.js +21 -44
  40. package/card/Card.test.js +10 -21
  41. package/card/types.d.ts +5 -5
  42. package/checkbox/Checkbox.js +85 -120
  43. package/checkbox/Checkbox.stories.tsx +16 -54
  44. package/checkbox/Checkbox.test.js +107 -63
  45. package/checkbox/types.d.ts +8 -4
  46. package/chip/Chip.js +12 -31
  47. package/chip/Chip.stories.tsx +1 -1
  48. package/chip/Chip.test.js +15 -28
  49. package/chip/types.d.ts +4 -4
  50. package/common/coreTokens.d.ts +105 -14
  51. package/common/coreTokens.js +40 -23
  52. package/common/utils.js +2 -8
  53. package/common/variables.d.ts +44 -139
  54. package/common/variables.js +55 -157
  55. package/container/Container.d.ts +4 -0
  56. package/container/Container.js +194 -0
  57. package/container/Container.stories.tsx +214 -0
  58. package/container/types.d.ts +74 -0
  59. package/container/types.js +5 -0
  60. package/contextual-menu/ContextualMenu.d.ts +7 -0
  61. package/contextual-menu/ContextualMenu.js +71 -0
  62. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  63. package/contextual-menu/ContextualMenu.test.js +71 -0
  64. package/contextual-menu/MenuItemAction.d.ts +4 -0
  65. package/contextual-menu/MenuItemAction.js +46 -0
  66. package/contextual-menu/types.d.ts +22 -0
  67. package/contextual-menu/types.js +5 -0
  68. package/date-input/Calendar.js +13 -57
  69. package/date-input/DateInput.js +50 -96
  70. package/date-input/DateInput.stories.tsx +11 -30
  71. package/date-input/DateInput.test.js +674 -701
  72. package/date-input/DatePicker.js +11 -42
  73. package/date-input/Icons.d.ts +6 -6
  74. package/date-input/Icons.js +6 -23
  75. package/date-input/YearPicker.js +8 -34
  76. package/date-input/types.d.ts +28 -22
  77. package/dialog/Dialog.js +13 -40
  78. package/dialog/Dialog.stories.tsx +170 -0
  79. package/dialog/Dialog.test.js +125 -187
  80. package/dialog/types.d.ts +18 -13
  81. package/divider/Divider.d.ts +4 -0
  82. package/divider/Divider.js +36 -0
  83. package/divider/Divider.stories.tsx +223 -0
  84. package/divider/Divider.test.js +38 -0
  85. package/divider/types.d.ts +19 -0
  86. package/divider/types.js +5 -0
  87. package/dropdown/Dropdown.js +48 -100
  88. package/dropdown/Dropdown.test.js +391 -378
  89. package/dropdown/DropdownMenu.js +8 -19
  90. package/dropdown/DropdownMenuItem.js +5 -17
  91. package/dropdown/types.d.ts +18 -20
  92. package/file-input/FileInput.js +180 -248
  93. package/file-input/FileInput.stories.tsx +1 -1
  94. package/file-input/FileInput.test.js +356 -354
  95. package/file-input/FileItem.js +12 -39
  96. package/file-input/types.d.ts +9 -9
  97. package/flex/Flex.js +25 -39
  98. package/flex/types.d.ts +6 -6
  99. package/footer/Footer.d.ts +1 -1
  100. package/footer/Footer.js +38 -65
  101. package/footer/Footer.stories.tsx +19 -0
  102. package/footer/Footer.test.js +18 -32
  103. package/footer/Icons.d.ts +3 -2
  104. package/footer/Icons.js +66 -7
  105. package/footer/types.d.ts +16 -16
  106. package/grid/Grid.js +1 -16
  107. package/grid/types.d.ts +10 -10
  108. package/header/Header.d.ts +1 -1
  109. package/header/Header.js +28 -84
  110. package/header/Header.test.js +12 -25
  111. package/header/Icons.d.ts +2 -2
  112. package/header/Icons.js +2 -7
  113. package/header/types.d.ts +7 -8
  114. package/heading/Heading.js +9 -31
  115. package/heading/Heading.test.js +70 -87
  116. package/heading/types.d.ts +7 -7
  117. package/icon/Icon.d.ts +4 -0
  118. package/icon/Icon.js +33 -0
  119. package/icon/Icon.stories.tsx +26 -0
  120. package/icon/types.d.ts +4 -0
  121. package/icon/types.js +5 -0
  122. package/image/Image.d.ts +2 -2
  123. package/image/Image.js +17 -32
  124. package/image/Image.stories.tsx +3 -1
  125. package/image/types.d.ts +2 -2
  126. package/inset/Inset.js +13 -21
  127. package/inset/types.d.ts +2 -2
  128. package/layout/ApplicationLayout.d.ts +2 -2
  129. package/layout/ApplicationLayout.js +14 -54
  130. package/layout/Icons.d.ts +5 -5
  131. package/layout/Icons.js +1 -5
  132. package/layout/SidenavContext.d.ts +1 -1
  133. package/layout/SidenavContext.js +3 -9
  134. package/layout/types.d.ts +3 -3
  135. package/link/Link.js +21 -42
  136. package/link/Link.test.js +23 -41
  137. package/link/types.d.ts +14 -14
  138. package/main.d.ts +7 -4
  139. package/main.js +32 -60
  140. package/nav-tabs/NavTabs.js +17 -46
  141. package/nav-tabs/NavTabs.stories.tsx +7 -5
  142. package/nav-tabs/NavTabs.test.js +38 -44
  143. package/nav-tabs/Tab.js +22 -50
  144. package/nav-tabs/types.d.ts +9 -9
  145. package/number-input/NumberInput.d.ts +1 -1
  146. package/number-input/NumberInput.js +45 -37
  147. package/number-input/NumberInput.stories.tsx +42 -26
  148. package/number-input/NumberInput.test.js +839 -575
  149. package/number-input/types.d.ts +11 -5
  150. package/package.json +29 -27
  151. package/paginator/Icons.d.ts +5 -5
  152. package/paginator/Icons.js +5 -19
  153. package/paginator/Paginator.js +15 -43
  154. package/paginator/Paginator.test.js +224 -207
  155. package/paginator/types.d.ts +3 -3
  156. package/paragraph/Paragraph.js +3 -19
  157. package/paragraph/Paragraph.stories.tsx +0 -17
  158. package/password-input/Icons.d.ts +3 -3
  159. package/password-input/Icons.js +1 -5
  160. package/password-input/PasswordInput.js +26 -48
  161. package/password-input/PasswordInput.stories.tsx +1 -34
  162. package/password-input/PasswordInput.test.js +153 -129
  163. package/password-input/types.d.ts +8 -7
  164. package/progress-bar/ProgressBar.js +21 -53
  165. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +1 -1
  166. package/progress-bar/ProgressBar.test.js +35 -52
  167. package/progress-bar/types.d.ts +3 -3
  168. package/quick-nav/QuickNav.js +4 -27
  169. package/quick-nav/QuickNav.stories.tsx +1 -1
  170. package/quick-nav/types.d.ts +10 -10
  171. package/radio-group/Radio.d.ts +1 -1
  172. package/radio-group/Radio.js +22 -54
  173. package/radio-group/RadioGroup.js +37 -83
  174. package/radio-group/RadioGroup.stories.tsx +10 -10
  175. package/radio-group/RadioGroup.test.js +504 -470
  176. package/radio-group/types.d.ts +8 -8
  177. package/resultset-table/Icons.d.ts +7 -0
  178. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  179. package/resultset-table/ResultsetTable.d.ts +7 -0
  180. package/{resultsetTable → resultset-table}/ResultsetTable.js +35 -64
  181. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +102 -5
  182. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +138 -92
  183. package/{resultsetTable → resultset-table}/types.d.ts +13 -7
  184. package/resultset-table/types.js +5 -0
  185. package/select/Icons.d.ts +7 -7
  186. package/select/Icons.js +1 -5
  187. package/select/Listbox.js +13 -39
  188. package/select/Option.js +17 -27
  189. package/select/Select.js +87 -163
  190. package/select/Select.test.js +1942 -1800
  191. package/select/types.d.ts +14 -15
  192. package/sidenav/Icons.d.ts +4 -4
  193. package/sidenav/Icons.js +1 -5
  194. package/sidenav/Sidenav.js +28 -69
  195. package/sidenav/Sidenav.test.js +3 -10
  196. package/sidenav/types.d.ts +18 -18
  197. package/slider/Slider.js +68 -125
  198. package/slider/Slider.test.js +107 -103
  199. package/slider/types.d.ts +4 -4
  200. package/spinner/Spinner.js +16 -54
  201. package/spinner/Spinner.test.js +25 -34
  202. package/spinner/types.d.ts +3 -3
  203. package/status-light/StatusLight.d.ts +4 -0
  204. package/status-light/StatusLight.js +51 -0
  205. package/status-light/StatusLight.stories.tsx +74 -0
  206. package/status-light/StatusLight.test.js +25 -0
  207. package/status-light/types.d.ts +17 -0
  208. package/status-light/types.js +5 -0
  209. package/switch/Switch.js +49 -97
  210. package/switch/Switch.stories.tsx +0 -34
  211. package/switch/Switch.test.js +51 -96
  212. package/switch/types.d.ts +4 -4
  213. package/table/DropdownTheme.js +62 -0
  214. package/table/Table.d.ts +6 -2
  215. package/table/Table.js +85 -33
  216. package/table/{Table.stories.jsx → Table.stories.tsx} +304 -2
  217. package/table/Table.test.js +93 -6
  218. package/table/types.d.ts +48 -6
  219. package/tabs/Tab.js +17 -33
  220. package/tabs/Tabs.js +52 -129
  221. package/tabs/Tabs.stories.tsx +1 -1
  222. package/tabs/Tabs.test.js +62 -118
  223. package/tabs/types.d.ts +19 -19
  224. package/tag/Tag.js +21 -51
  225. package/tag/Tag.test.js +19 -30
  226. package/tag/types.d.ts +7 -7
  227. package/text-input/Icons.d.ts +5 -5
  228. package/text-input/Icons.js +1 -5
  229. package/text-input/Suggestion.js +9 -26
  230. package/text-input/Suggestions.d.ts +1 -1
  231. package/text-input/Suggestions.js +15 -65
  232. package/text-input/TextInput.js +192 -284
  233. package/text-input/TextInput.stories.tsx +48 -152
  234. package/text-input/TextInput.test.js +1227 -1194
  235. package/text-input/types.d.ts +25 -17
  236. package/textarea/Textarea.js +67 -109
  237. package/textarea/{Textarea.stories.jsx → Textarea.stories.tsx} +58 -100
  238. package/textarea/Textarea.test.js +150 -179
  239. package/textarea/types.d.ts +9 -5
  240. package/toggle-group/ToggleGroup.js +21 -61
  241. package/toggle-group/ToggleGroup.stories.tsx +1 -1
  242. package/toggle-group/ToggleGroup.test.js +48 -81
  243. package/toggle-group/types.d.ts +10 -10
  244. package/typography/Typography.js +4 -13
  245. package/typography/types.d.ts +1 -1
  246. package/useTheme.d.ts +41 -136
  247. package/useTheme.js +1 -8
  248. package/useTranslatedLabels.js +1 -7
  249. package/utils/BaseTypography.d.ts +2 -2
  250. package/utils/BaseTypography.js +16 -30
  251. package/utils/FocusLock.js +25 -39
  252. package/wizard/Wizard.js +14 -49
  253. package/wizard/Wizard.test.js +53 -80
  254. package/wizard/types.d.ts +7 -7
  255. package/common/OpenSans.css +0 -69
  256. package/common/fonts/OpenSans-Bold.ttf +0 -0
  257. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  258. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  259. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  260. package/common/fonts/OpenSans-Italic.ttf +0 -0
  261. package/common/fonts/OpenSans-Light.ttf +0 -0
  262. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  263. package/common/fonts/OpenSans-Regular.ttf +0 -0
  264. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  265. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  266. package/resultsetTable/Icons.d.ts +0 -7
  267. package/resultsetTable/ResultsetTable.d.ts +0 -4
  268. package/slider/Slider.stories.tsx +0 -240
  269. /package/{resultsetTable → action-icon}/types.js +0 -0
  270. /package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
package/button/Button.js CHANGED
@@ -1,59 +1,43 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
- var _react = _interopRequireWildcard(require("react"));
17
-
11
+ var _react = _interopRequireDefault(require("react"));
18
12
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
-
20
13
  var _variables = require("../common/variables");
21
-
22
14
  var _utils = require("../common/utils");
23
-
24
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
26
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
27
-
16
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
28
17
  var _templateObject, _templateObject2, _templateObject3;
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
33
-
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
34
20
  var DxcButton = function DxcButton(_ref) {
35
21
  var _ref$label = _ref.label,
36
- label = _ref$label === void 0 ? "" : _ref$label,
37
- _ref$mode = _ref.mode,
38
- mode = _ref$mode === void 0 ? "primary" : _ref$mode,
39
- _ref$disabled = _ref.disabled,
40
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
41
- _ref$iconPosition = _ref.iconPosition,
42
- iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
43
- title = _ref.title,
44
- _ref$type = _ref.type,
45
- type = _ref$type === void 0 ? "button" : _ref$type,
46
- icon = _ref.icon,
47
- _ref$onClick = _ref.onClick,
48
- _onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick,
49
- margin = _ref.margin,
50
- _ref$size = _ref.size,
51
- size = _ref$size === void 0 ? "fitContent" : _ref$size,
52
- _ref$tabIndex = _ref.tabIndex,
53
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
54
-
22
+ label = _ref$label === void 0 ? "" : _ref$label,
23
+ _ref$mode = _ref.mode,
24
+ mode = _ref$mode === void 0 ? "primary" : _ref$mode,
25
+ _ref$disabled = _ref.disabled,
26
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
27
+ _ref$iconPosition = _ref.iconPosition,
28
+ iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
29
+ title = _ref.title,
30
+ _ref$type = _ref.type,
31
+ type = _ref$type === void 0 ? "button" : _ref$type,
32
+ icon = _ref.icon,
33
+ _ref$onClick = _ref.onClick,
34
+ _onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick,
35
+ margin = _ref.margin,
36
+ _ref$size = _ref.size,
37
+ size = _ref$size === void 0 ? "fitContent" : _ref$size,
38
+ _ref$tabIndex = _ref.tabIndex,
39
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
55
40
  var colorsTheme = (0, _useTheme["default"])();
56
- var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
57
41
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
58
42
  theme: colorsTheme.button
59
43
  }, /*#__PURE__*/_react["default"].createElement(Button, {
@@ -69,14 +53,12 @@ var DxcButton = function DxcButton(_ref) {
69
53
  hasLabel: label ? true : false,
70
54
  hasIcon: icon ? true : false,
71
55
  iconPosition: iconPosition,
72
- backgroundType: backgroundType,
73
56
  size: size,
74
57
  margin: margin
75
- }, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
76
- src: icon
58
+ }, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
59
+ icon: icon
77
60
  }) : icon)));
78
61
  };
79
-
80
62
  var sizes = {
81
63
  small: "42px",
82
64
  medium: "120px",
@@ -84,19 +66,16 @@ var sizes = {
84
66
  fillParent: "100%",
85
67
  fitContent: "fit-content"
86
68
  };
87
-
88
69
  var calculateWidth = function calculateWidth(margin, size) {
89
70
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
90
71
  };
91
-
92
- var getButtonStyles = function getButtonStyles(props) {
93
- var $mode = props.$mode,
94
- backgroundType = props.backgroundType,
95
- disabled = props.disabled;
96
- return "\n border-radius: ".concat($mode === "primary" ? props.theme.primaryBorderRadius : $mode === "secondary" ? props.theme.secondaryBorderRadius : props.theme.textBorderRadius, ";\n border-width: ").concat($mode === "primary" ? props.theme.primaryBorderThickness : $mode === "secondary" ? props.theme.secondaryBorderThickness : props.theme.textBorderThickness, ";\n border-style: ").concat($mode === "primary" ? props.theme.primaryBorderStyle : $mode === "secondary" ? props.theme.secondaryBorderStyle : props.theme.textBorderStyle, ";\n font-family: ").concat($mode === "primary" ? props.theme.primaryFontFamily : $mode === "secondary" ? props.theme.secondaryFontFamily : props.theme.textFontFamily, ";\n font-size: ").concat($mode === "primary" ? props.theme.primaryFontSize : $mode === "secondary" ? props.theme.secondaryFontSize : props.theme.textFontSize, ";\n font-weight: ").concat($mode === "primary" ? props.theme.primaryFontWeight : $mode === "secondary" ? props.theme.secondaryFontWeight : props.theme.textFontWeight, ";\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryBackgroundColorOnDark : props.theme.primaryBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBackgroundColorOnDark : props.theme.secondaryBackgroundColor : backgroundType === "dark" ? props.theme.textBackgroundColorOnDark : props.theme.textBackgroundColor, ";\n color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryFontColorOnDark : props.theme.primaryFontColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryFontColorOnDark : props.theme.secondaryFontColor : backgroundType === "dark" ? props.theme.textFontColorOnDark : props.theme.textFontColor, ";\n border-color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBorderColorOnDark : props.theme.secondaryBorderColor : "", ";\n &:hover {\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryHoverBackgroundColorOnDark : props.theme.primaryHoverBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverBackgroundColorOnDark : props.theme.secondaryHoverBackgroundColor : backgroundType === "dark" ? props.theme.textHoverBackgroundColorOnDark : props.theme.textHoverBackgroundColor, ";\n color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n }\n &:focus {\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n }\n &:active {\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryActiveBackgroundColorOnDark : props.theme.primaryActiveBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryActiveBackgroundColorOnDark : props.theme.secondaryActiveBackgroundColor : backgroundType === "dark" ? props.theme.textActiveBackgroundColorOnDark : props.theme.textActiveBackgroundColor, ";\n color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n outline: none;\n box-shadow: ").concat(!disabled ? "0 0 0 2px ".concat(backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor) : "", ";\n }\n &:disabled {\n cursor: not-allowed;\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledBackgroundColorOnDark : props.theme.primaryDisabledBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBackgroundColorOnDark : props.theme.secondaryDisabledBackgroundColor : backgroundType === "dark" ? props.theme.textDisabledBackgroundColorOnDark : props.theme.textDisabledBackgroundColor, ";\n color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledFontColorOnDark : props.theme.primaryDisabledFontColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledFontColorOnDark : props.theme.secondaryDisabledFontColor : backgroundType === "dark" ? props.theme.textDisabledFontColorOnDark : props.theme.textDisabledFontColor, ";\n border-color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBorderColorOnDark : props.theme.secondaryDisabledBorderColor : "", ";\n }\n ");
72
+ var getButtonStyles = function getButtonStyles($mode, theme) {
73
+ return "\n border-color: ".concat($mode === "secondary" ? theme.secondaryBorderColor : "", ";\n border-radius: ").concat($mode === "primary" ? theme.primaryBorderRadius : $mode === "secondary" ? theme.secondaryBorderRadius : theme.textBorderRadius, ";\n border-width: ").concat($mode === "primary" ? theme.primaryBorderThickness : $mode === "secondary" ? theme.secondaryBorderThickness : theme.textBorderThickness, ";\n border-style: ").concat($mode === "primary" ? theme.primaryBorderStyle : $mode === "secondary" ? theme.secondaryBorderStyle : theme.textBorderStyle, ";\n font-family: ").concat($mode === "primary" ? theme.primaryFontFamily : $mode === "secondary" ? theme.secondaryFontFamily : theme.textFontFamily, ";\n font-size: ").concat($mode === "primary" ? theme.primaryFontSize : $mode === "secondary" ? theme.secondaryFontSize : theme.textFontSize, ";\n font-weight: ").concat($mode === "primary" ? theme.primaryFontWeight : $mode === "secondary" ? theme.secondaryFontWeight : theme.textFontWeight, ";\n background-color: ").concat($mode === "primary" ? theme.primaryBackgroundColor : $mode === "secondary" ? theme.secondaryBackgroundColor : theme.textBackgroundColor, ";\n color: ").concat($mode === "primary" ? theme.primaryFontColor : $mode === "secondary" ? theme.secondaryFontColor : theme.textFontColor, ";\n ");
97
74
  };
98
-
99
- var Button = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: ", ";\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: 40px;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n cursor: pointer;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px\n ", ";\n }\n\n ", "\n"])), function (props) {
75
+ var getButtonStates = function getButtonStates(disabled, $mode, theme) {
76
+ return "\n &:hover {\n background-color: ".concat($mode === "primary" ? theme.primaryHoverBackgroundColor : $mode === "secondary" ? theme.secondaryHoverBackgroundColor : theme.textHoverBackgroundColor, ";\n color: ").concat($mode === "secondary" ? theme.secondaryHoverFontColor : "", ";\n }\n &:focus {\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n }\n &:active {\n background-color: ").concat($mode === "primary" ? theme.primaryActiveBackgroundColor : $mode === "secondary" ? theme.secondaryActiveBackgroundColor : theme.textActiveBackgroundColor, ";\n color: ").concat($mode === "secondary" ? theme.secondaryHoverFontColor : "", ";\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n outline: none;\n box-shadow: ").concat(!disabled ? "0 0 0 2px ".concat(theme.focusBorderColor) : "", ";\n }\n &:disabled {\n cursor: not-allowed;\n background-color: ").concat($mode === "primary" ? theme.primaryDisabledBackgroundColor : $mode === "secondary" ? theme.secondaryDisabledBackgroundColor : theme.textDisabledBackgroundColor, ";\n color: ").concat($mode === "primary" ? theme.primaryDisabledFontColor : $mode === "secondary" ? theme.secondaryDisabledFontColor : theme.textDisabledFontColor, ";\n border-color: ").concat($mode === "secondary" ? theme.secondaryDisabledBorderColor : "", ";\n }\n");
77
+ };
78
+ var Button = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: ", ";\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: 40px;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n cursor: pointer;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n\n ", "\n ", "\n"])), function (props) {
100
79
  return props.iconPosition === "after" ? "row" : "row-reverse";
101
80
  }, function (props) {
102
81
  return calculateWidth(props.margin, props.size);
@@ -127,18 +106,16 @@ var Button = _styledComponents["default"].button(_templateObject || (_templateOb
127
106
  }, function (props) {
128
107
  return props.theme.labelLetterSpacing;
129
108
  }, function (props) {
130
- return props.backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor;
109
+ return props.theme.focusBorderColor;
110
+ }, function (props) {
111
+ return getButtonStyles(props.$mode, props.theme);
131
112
  }, function (props) {
132
- return getButtonStyles(props);
113
+ return getButtonStates(props.disabled, props.$mode, props.theme);
133
114
  });
134
-
135
115
  var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n line-height: ", ";\n font-size: ", ";\n text-overflow: ellipsis;\n overflow: hidden;\n text-transform: none;\n white-space: nowrap;\n"])), function (props) {
136
116
  return props.theme.labelFontLineHeight;
137
117
  }, function (props) {
138
118
  return props.theme.fontSize;
139
119
  });
140
-
141
- var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n img,\n svg {\n height: 24px;\n width: 24px;\n }\n"])));
142
-
143
- var _default = DxcButton;
144
- exports["default"] = _default;
120
+ var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n\n img,\n svg {\n height: 24px;\n width: 24px;\n }\n"])));
121
+ var _default = exports["default"] = DxcButton;
@@ -1,10 +1,8 @@
1
1
  import React from "react";
2
- import { BackgroundColorProvider } from "../BackgroundColorContext";
3
2
  import DxcButton from "./Button";
4
3
  import DxcFlex from "./../flex/Flex";
5
4
  import Title from "../../.storybook/components/Title";
6
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
7
- import DarkContainer from "../../.storybook/components/DarkSection";
8
6
  import { HalstackProvider } from "../HalstackContext";
9
7
 
10
8
  export default {
@@ -78,30 +76,26 @@ export const Chromatic = () => (
78
76
  </ExampleContainer>
79
77
  <ExampleContainer>
80
78
  <Title title="Disabled" theme="light" level={4} />
81
- <DxcButton label="Primary disabled" disabled icon={iconSVG} />
79
+ <DxcButton label="Primary disabled" disabled icon="filled_bottom_app_bar" />
82
80
  </ExampleContainer>
83
81
  <ExampleContainer>
84
82
  <Title title="With left icon" theme="light" level={4} />
85
- <DxcButton label="Primary" icon={iconSVG} />
83
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" />
86
84
  </ExampleContainer>
87
85
  <ExampleContainer>
88
86
  <Title title="With right icon" theme="light" level={4} />
89
- <DxcButton label="Primary" icon={iconSVG} iconPosition="after" />
87
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" iconPosition="after" />
90
88
  </ExampleContainer>
91
89
  <ExampleContainer>
92
90
  <Title title="Only icon" theme="light" level={4} />
93
- <DxcButton icon={iconSVG} />
91
+ <DxcButton icon="filled_bottom_app_bar" />
94
92
  </ExampleContainer>
95
93
  <ExampleContainer>
96
94
  <Title title="Big icon (SVG)" theme="light" level={4} />
97
95
  <DxcButton icon={facebookIcon} />
98
96
  </ExampleContainer>
99
97
  <ExampleContainer>
100
- <Title title="Big icon (image)" theme="light" level={4} />
101
- <DxcButton icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png" />
102
- </ExampleContainer>
103
- <ExampleContainer>
104
- <Title title="Small icon" theme="light" level={4} />
98
+ <Title title="Small icon (SVG)" theme="light" level={4} />
105
99
  <DxcButton icon={smallIcon} />
106
100
  </ExampleContainer>
107
101
  <Title title="Secondary" theme="light" level={2} />
@@ -123,18 +117,11 @@ export const Chromatic = () => (
123
117
  </ExampleContainer>
124
118
  <ExampleContainer>
125
119
  <Title title="Disabled" theme="light" level={4} />
126
- <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
120
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon="filled_bottom_app_bar" />
127
121
  </ExampleContainer>
128
122
  <ExampleContainer>
129
123
  <Title title="With icon" theme="light" level={4} />
130
- <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
131
- </ExampleContainer>
132
- <ExampleContainer>
133
- <Title title="Only icon (image)" theme="light" level={4} />
134
- <DxcButton
135
- mode="secondary"
136
- icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
137
- />
124
+ <DxcButton mode="secondary" label="Secondary" icon="filled_bottom_app_bar" />
138
125
  </ExampleContainer>
139
126
  <Title title="Text" theme="light" level={2} />
140
127
  <ExampleContainer>
@@ -155,98 +142,12 @@ export const Chromatic = () => (
155
142
  </ExampleContainer>
156
143
  <ExampleContainer>
157
144
  <Title title="Disabled" theme="light" level={4} />
158
- <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
145
+ <DxcButton mode="text" label="Text disabled" disabled icon="filled_bottom_app_bar" />
159
146
  </ExampleContainer>
160
147
  <ExampleContainer>
161
148
  <Title title="With icon" theme="light" level={4} />
162
- <DxcButton label="Text" mode="text" icon={iconSVG} />
149
+ <DxcButton label="Text" mode="text" icon="filled_bottom_app_bar" />
163
150
  </ExampleContainer>
164
- <ExampleContainer>
165
- <Title title="Only icon (image)" theme="light" level={4} />
166
- <DxcButton
167
- mode="text"
168
- icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
169
- />
170
- </ExampleContainer>
171
- <BackgroundColorProvider color="#333333">
172
- <DarkContainer>
173
- <Title title="Primary" theme="dark" level={2} />
174
- <ExampleContainer>
175
- <Title title="Enabled" theme="dark" level={4} />
176
- <DxcButton label="Primary enabled" />
177
- </ExampleContainer>
178
- <ExampleContainer pseudoState="pseudo-hover">
179
- <Title title="Hovered" theme="dark" level={4} />
180
- <DxcButton label="Primary hovered" />
181
- </ExampleContainer>
182
- <ExampleContainer pseudoState="pseudo-focus">
183
- <Title title="Focused" theme="dark" level={4} />
184
- <DxcButton label="Primary focused" />
185
- </ExampleContainer>
186
- <ExampleContainer pseudoState="pseudo-active">
187
- <Title title="Actived" theme="dark" level={4} />
188
- <DxcButton label="Primary actived" />
189
- </ExampleContainer>
190
- <ExampleContainer>
191
- <Title title="Disabled" theme="dark" level={4} />
192
- <DxcButton label="Primary disabled" disabled icon={iconSVG} />
193
- </ExampleContainer>
194
- <ExampleContainer>
195
- <Title title="With icon" theme="dark" level={4} />
196
- <DxcButton label="Primary" icon={iconSVG} />
197
- </ExampleContainer>
198
- <Title title="Secondary" theme="dark" level={2} />
199
- <ExampleContainer>
200
- <Title title="Enabled" theme="dark" level={4} />
201
- <DxcButton mode="secondary" label="Secondary enabled" />
202
- </ExampleContainer>
203
- <ExampleContainer pseudoState="pseudo-hover">
204
- <Title title="Hovered" theme="dark" level={4} />
205
- <DxcButton mode="secondary" label="Secondary hovered" />
206
- </ExampleContainer>
207
- <ExampleContainer pseudoState="pseudo-focus">
208
- <Title title="Focused" theme="dark" level={4} />
209
- <DxcButton mode="secondary" label="Secondary focused" />
210
- </ExampleContainer>
211
- <ExampleContainer pseudoState="pseudo-active">
212
- <Title title="Actived" theme="dark" level={4} />
213
- <DxcButton mode="secondary" label="Secondary actived" />
214
- </ExampleContainer>
215
- <ExampleContainer>
216
- <Title title="Disabled" theme="dark" level={4} />
217
- <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
218
- </ExampleContainer>
219
- <ExampleContainer>
220
- <Title title="With icon" theme="dark" level={4} />
221
- <DxcButton mode="secondary" label="Primary" icon={iconSVG} />
222
- </ExampleContainer>
223
- <Title title="Text" theme="dark" level={2} />
224
- <ExampleContainer>
225
- <Title title="Enabled" theme="dark" level={4} />
226
- <DxcButton mode="text" label="Text enabled" />
227
- </ExampleContainer>
228
- <ExampleContainer pseudoState="pseudo-hover">
229
- <Title title="Hovered" theme="dark" level={4} />
230
- <DxcButton mode="text" label="Text hovered" />
231
- </ExampleContainer>
232
- <ExampleContainer pseudoState="pseudo-focus">
233
- <Title title="Focused" theme="dark" level={4} />
234
- <DxcButton mode="text" label="Text focused" />
235
- </ExampleContainer>
236
- <ExampleContainer pseudoState="pseudo-active">
237
- <Title title="Actived" theme="dark" level={4} />
238
- <DxcButton mode="text" label="Text actived" />
239
- </ExampleContainer>
240
- <ExampleContainer>
241
- <Title title="Disabled" theme="dark" level={4} />
242
- <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
243
- </ExampleContainer>
244
- <ExampleContainer>
245
- <Title title="With icon" theme="dark" level={4} />
246
- <DxcButton mode="text" label="Primary" icon={iconSVG} />
247
- </ExampleContainer>
248
- </DarkContainer>
249
- </BackgroundColorProvider>
250
151
  <Title title="Sizes" theme="light" level={2} />
251
152
  <ExampleContainer>
252
153
  <Title title="Small size" theme="light" level={4} />
@@ -254,7 +155,7 @@ export const Chromatic = () => (
254
155
  </ExampleContainer>
255
156
  <ExampleContainer>
256
157
  <Title title="Medium size" theme="light" level={4} />
257
- <DxcButton label="MediumSiz" size="medium" />
158
+ <DxcButton label="MediumSize" size="medium" />
258
159
  </ExampleContainer>
259
160
  <ExampleContainer>
260
161
  <Title title="Medium size with ellipsis" theme="light" level={4} />
@@ -262,19 +163,19 @@ export const Chromatic = () => (
262
163
  </ExampleContainer>
263
164
  <ExampleContainer>
264
165
  <Title title="Medium size icon after" theme="light" level={4} />
265
- <DxcButton label="Mediu" iconPosition="after" icon={iconSVG} size="medium" />
166
+ <DxcButton label="Medium" iconPosition="after" icon="filled_bottom_app_bar" size="medium" />
266
167
  </ExampleContainer>
267
168
  <ExampleContainer>
268
169
  <Title title="Medium size icon before" theme="light" level={4} />
269
- <DxcButton label="Mediu" iconPosition="before" icon={iconSVG} size="medium" />
170
+ <DxcButton label="Medium" iconPosition="before" icon="filled_bottom_app_bar" size="medium" />
270
171
  </ExampleContainer>
271
172
  <ExampleContainer>
272
173
  <Title title="Medium size icon after with ellipsis" theme="light" level={4} />
273
- <DxcButton label="Medium" iconPosition="after" icon={iconSVG} size="medium" />
174
+ <DxcButton label="Medium" iconPosition="after" icon="filled_bottom_app_bar" size="medium" />
274
175
  </ExampleContainer>
275
176
  <ExampleContainer>
276
177
  <Title title="Medium size icon before with ellipsis" theme="light" level={4} />
277
- <DxcButton label="Medium" iconPosition="before" icon={iconSVG} size="medium" />
178
+ <DxcButton label="Medium" iconPosition="before" icon="filled_bottom_app_bar" size="medium" />
278
179
  </ExampleContainer>
279
180
  <ExampleContainer>
280
181
  <Title title="Large size" theme="light" level={4} />
@@ -286,19 +187,19 @@ export const Chromatic = () => (
286
187
  </ExampleContainer>
287
188
  <ExampleContainer>
288
189
  <Title title="Large size icon after" theme="light" level={4} />
289
- <DxcButton label="LargeSizePrimaryButto" iconPosition="after" icon={iconSVG} size="large" />
190
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon="filled_bottom_app_bar" size="large" />
290
191
  </ExampleContainer>
291
192
  <ExampleContainer>
292
193
  <Title title="Large size icon before" theme="light" level={4} />
293
- <DxcButton label="LargeSizePrimaryButto" iconPosition="before" icon={iconSVG} size="large" />
194
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon="filled_bottom_app_bar" size="large" />
294
195
  </ExampleContainer>
295
196
  <ExampleContainer>
296
197
  <Title title="Large size icon after with ellipsis" theme="light" level={4} />
297
- <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon={iconSVG} size="large" />
198
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon="filled_bottom_app_bar" size="large" />
298
199
  </ExampleContainer>
299
200
  <ExampleContainer>
300
201
  <Title title="Large size icon before with ellipsis" theme="light" level={4} />
301
- <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon={iconSVG} size="large" />
202
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon="filled_bottom_app_bar" size="large" />
302
203
  </ExampleContainer>
303
204
  <ExampleContainer>
304
205
  <Title title="FillParent size" theme="light" level={4} />
@@ -350,75 +251,75 @@ export const Chromatic = () => (
350
251
  <ExampleContainer>
351
252
  <Title title="Enabled" theme="light" level={4} />
352
253
  <HalstackProvider theme={opinionatedTheme}>
353
- <DxcButton label="Primary" icon={iconSVG} />
254
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" />
354
255
  </HalstackProvider>
355
256
  </ExampleContainer>
356
257
  <ExampleContainer pseudoState="pseudo-hover">
357
258
  <Title title="Hovered" theme="light" level={4} />
358
- <DxcButton label="Primary hovered" icon={iconSVG} />
259
+ <DxcButton label="Primary hovered" icon="filled_bottom_app_bar" />
359
260
  </ExampleContainer>
360
261
  <ExampleContainer pseudoState="pseudo-focus">
361
262
  <Title title="Focused" theme="light" level={4} />
362
- <DxcButton label="Primary focused" icon={iconSVG} />
263
+ <DxcButton label="Primary focused" icon="filled_bottom_app_bar" />
363
264
  </ExampleContainer>
364
265
  <ExampleContainer pseudoState="pseudo-active">
365
266
  <Title title="Actived" theme="light" level={4} />
366
- <DxcButton label="Primary actived" icon={iconSVG} />
267
+ <DxcButton label="Primary actived" icon="filled_bottom_app_bar" />
367
268
  </ExampleContainer>
368
269
  <ExampleContainer>
369
270
  <Title title="Disabled" theme="light" level={4} />
370
271
  <HalstackProvider theme={opinionatedTheme}>
371
- <DxcButton label="Primary" icon={iconSVG} disabled />
272
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" disabled />
372
273
  </HalstackProvider>
373
274
  </ExampleContainer>
374
275
  <Title title="Secondary" theme="light" level={3} />
375
276
  <ExampleContainer>
376
277
  <Title title="Enabled" theme="light" level={4} />
377
278
  <HalstackProvider theme={opinionatedTheme}>
378
- <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
279
+ <DxcButton mode="secondary" label="Secondary" icon="filled_bottom_app_bar" />
379
280
  </HalstackProvider>
380
281
  </ExampleContainer>
381
282
  <ExampleContainer pseudoState="pseudo-hover">
382
283
  <Title title="Hovered" theme="light" level={4} />
383
- <DxcButton mode="secondary" label="Secondary hovered" icon={iconSVG} />
284
+ <DxcButton mode="secondary" label="Secondary hovered" icon="filled_bottom_app_bar" />
384
285
  </ExampleContainer>
385
286
  <ExampleContainer pseudoState="pseudo-focus">
386
287
  <Title title="Focused" theme="light" level={4} />
387
- <DxcButton mode="secondary" label="Secondary focused" icon={iconSVG} />
288
+ <DxcButton mode="secondary" label="Secondary focused" icon="filled_bottom_app_bar" />
388
289
  </ExampleContainer>
389
290
  <ExampleContainer pseudoState="pseudo-active">
390
291
  <Title title="Actived" theme="light" level={4} />
391
- <DxcButton mode="secondary" label="Secondary actived" icon={iconSVG} />
292
+ <DxcButton mode="secondary" label="Secondary actived" icon="filled_bottom_app_bar" />
392
293
  </ExampleContainer>
393
294
  <ExampleContainer>
394
295
  <Title title="Disabled" theme="light" level={4} />
395
296
  <HalstackProvider theme={opinionatedTheme}>
396
- <DxcButton mode="secondary" label="Secondary" icon={iconSVG} disabled />
297
+ <DxcButton mode="secondary" label="Secondary" icon="filled_bottom_app_bar" disabled />
397
298
  </HalstackProvider>
398
299
  </ExampleContainer>
399
300
  <Title title="Text" theme="light" level={3} />
400
301
  <ExampleContainer>
401
302
  <Title title="Enabled" theme="light" level={4} />
402
303
  <HalstackProvider theme={opinionatedTheme}>
403
- <DxcButton mode="text" label="Text" icon={iconSVG} />
304
+ <DxcButton mode="text" label="Text" icon="filled_bottom_app_bar" />
404
305
  </HalstackProvider>
405
306
  </ExampleContainer>
406
307
  <ExampleContainer pseudoState="pseudo-hover">
407
308
  <Title title="Hovered" theme="light" level={4} />
408
- <DxcButton mode="text" label="Text hovered" icon={iconSVG} />
309
+ <DxcButton mode="text" label="Text hovered" icon="filled_bottom_app_bar" />
409
310
  </ExampleContainer>
410
311
  <ExampleContainer pseudoState="pseudo-focus">
411
312
  <Title title="Focused" theme="light" level={4} />
412
- <DxcButton mode="text" label="Text focused" icon={iconSVG} />
313
+ <DxcButton mode="text" label="Text focused" icon="filled_bottom_app_bar" />
413
314
  </ExampleContainer>
414
315
  <ExampleContainer pseudoState="pseudo-active">
415
316
  <Title title="Actived" theme="light" level={4} />
416
- <DxcButton mode="text" label="Text actived" icon={iconSVG} />
317
+ <DxcButton mode="text" label="Text actived" icon="filled_bottom_app_bar" />
417
318
  </ExampleContainer>
418
319
  <ExampleContainer>
419
320
  <Title title="Disabled" theme="light" level={4} />
420
321
  <HalstackProvider theme={opinionatedTheme}>
421
- <DxcButton mode="text" label="Text disabled" icon={iconSVG} disabled />
322
+ <DxcButton mode="text" label="Text disabled" icon="filled_bottom_app_bar" disabled />
422
323
  </HalstackProvider>
423
324
  </ExampleContainer>
424
325
  </>
@@ -1,46 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _react = _interopRequireDefault(require("react"));
6
-
7
5
  var _react2 = require("@testing-library/react");
8
-
9
6
  var _Button = _interopRequireDefault(require("./Button.tsx"));
10
-
11
7
  describe("Button component tests", function () {
12
8
  test("Button renders with correct text", function () {
13
9
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
14
- label: "Button"
15
- })),
16
- getByText = _render.getByText;
17
-
10
+ label: "Button"
11
+ })),
12
+ getByText = _render.getByText;
18
13
  expect(getByText("Button")).toBeTruthy();
19
14
  });
20
15
  test("Calls correct function on click", function () {
21
16
  var onClick = jest.fn();
22
-
23
17
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
24
- label: "Button",
25
- onClick: onClick
26
- })),
27
- getByText = _render2.getByText;
28
-
18
+ label: "Button",
19
+ onClick: onClick
20
+ })),
21
+ getByText = _render2.getByText;
29
22
  var button = getByText("Button");
30
-
31
23
  _react2.fireEvent.click(button);
32
-
33
24
  expect(onClick).toHaveBeenCalled();
34
25
  });
35
26
  test("Renders with correct accessibility attributes", function () {
36
27
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
37
- label: "Home",
38
- title: "Go home"
39
- })),
40
- getByRole = _render3.getByRole;
41
-
28
+ label: "Home",
29
+ title: "Go home",
30
+ tabIndex: 1
31
+ })),
32
+ getByRole = _render3.getByRole;
42
33
  var button = getByRole("button");
43
34
  expect(button.getAttribute("aria-label")).toBe("Go home");
44
35
  expect(button.getAttribute("title")).toBe("Go home");
36
+ expect(button.getAttribute("tabindex")).toBe("1");
45
37
  });
46
38
  });
package/button/types.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
- declare type Props = {
9
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
+ type Props = {
11
11
  /**
12
12
  * Text to be placed in the button.
13
13
  */
@@ -33,7 +33,7 @@ declare type Props = {
33
33
  */
34
34
  type?: "button" | "reset" | "submit";
35
35
  /**
36
- * Element or path used as the icon that will be placed next to the label.
36
+ * Material Symbol name or SVG element as the icon that will be placed next to the label.
37
37
  */
38
38
  icon?: string | SVG;
39
39
  /**