@dxc-technology/halstack-react 0.0.0-0a9608a → 0.0.0-0ae5b08

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 (316) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1243 -6
  4. package/HalstackContext.js +122 -106
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +31 -88
  8. package/accordion/Accordion.stories.tsx +52 -115
  9. package/accordion/Accordion.test.js +19 -34
  10. package/accordion/types.d.ts +5 -17
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +29 -77
  13. package/accordion-group/AccordionGroup.stories.tsx +78 -77
  14. package/accordion-group/AccordionGroup.test.js +44 -72
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +6 -18
  18. package/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +47 -0
  20. package/action-icon/ActionIcon.stories.tsx +41 -0
  21. package/action-icon/ActionIcon.test.js +64 -0
  22. package/action-icon/types.d.ts +26 -0
  23. package/alert/Alert.js +19 -58
  24. package/alert/Alert.stories.tsx +28 -0
  25. package/alert/Alert.test.js +29 -46
  26. package/alert/types.d.ts +5 -5
  27. package/badge/Badge.d.ts +1 -1
  28. package/badge/Badge.js +141 -43
  29. package/badge/Badge.stories.tsx +210 -0
  30. package/badge/Badge.test.js +30 -0
  31. package/badge/types.d.ts +52 -3
  32. package/bleed/Bleed.js +13 -21
  33. package/bleed/Bleed.stories.tsx +1 -0
  34. package/bleed/types.d.ts +2 -2
  35. package/box/Box.d.ts +1 -1
  36. package/box/Box.js +18 -59
  37. package/box/Box.stories.tsx +38 -51
  38. package/box/Box.test.js +2 -7
  39. package/box/types.d.ts +3 -15
  40. package/bulleted-list/BulletedList.js +19 -53
  41. package/bulleted-list/BulletedList.stories.tsx +8 -93
  42. package/bulleted-list/types.d.ts +32 -5
  43. package/button/Button.d.ts +1 -1
  44. package/button/Button.js +68 -102
  45. package/button/Button.stories.tsx +97 -93
  46. package/button/Button.test.js +20 -17
  47. package/button/types.d.ts +8 -4
  48. package/card/Card.d.ts +1 -1
  49. package/card/Card.js +48 -89
  50. package/card/Card.stories.tsx +12 -42
  51. package/card/Card.test.js +11 -22
  52. package/card/types.d.ts +6 -12
  53. package/checkbox/Checkbox.js +87 -122
  54. package/checkbox/Checkbox.stories.tsx +68 -54
  55. package/checkbox/Checkbox.test.js +108 -64
  56. package/checkbox/types.d.ts +8 -4
  57. package/chip/Chip.js +36 -64
  58. package/chip/Chip.stories.tsx +80 -17
  59. package/chip/Chip.test.js +16 -31
  60. package/chip/types.d.ts +4 -4
  61. package/common/coreTokens.d.ts +237 -0
  62. package/common/coreTokens.js +184 -0
  63. package/common/utils.d.ts +1 -0
  64. package/common/utils.js +6 -12
  65. package/common/variables.d.ts +1395 -0
  66. package/common/variables.js +898 -1143
  67. package/container/Container.d.ts +4 -0
  68. package/container/Container.js +194 -0
  69. package/container/Container.stories.tsx +214 -0
  70. package/container/types.d.ts +74 -0
  71. package/contextual-menu/ContextualMenu.d.ts +7 -0
  72. package/contextual-menu/ContextualMenu.js +71 -0
  73. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  74. package/contextual-menu/ContextualMenu.test.js +71 -0
  75. package/contextual-menu/MenuItemAction.d.ts +4 -0
  76. package/contextual-menu/MenuItemAction.js +46 -0
  77. package/contextual-menu/types.d.ts +22 -0
  78. package/date-input/Calendar.js +38 -70
  79. package/date-input/DateInput.js +50 -96
  80. package/date-input/DateInput.stories.tsx +78 -30
  81. package/date-input/DateInput.test.js +674 -701
  82. package/date-input/DatePicker.js +36 -53
  83. package/date-input/Icons.d.ts +6 -6
  84. package/date-input/Icons.js +6 -23
  85. package/date-input/YearPicker.js +28 -44
  86. package/date-input/types.d.ts +28 -22
  87. package/dialog/Dialog.d.ts +1 -1
  88. package/dialog/Dialog.js +61 -119
  89. package/dialog/Dialog.stories.tsx +310 -212
  90. package/dialog/Dialog.test.js +269 -32
  91. package/dialog/types.d.ts +18 -26
  92. package/divider/Divider.d.ts +4 -0
  93. package/divider/Divider.js +36 -0
  94. package/divider/Divider.stories.tsx +223 -0
  95. package/divider/Divider.test.js +38 -0
  96. package/divider/types.d.ts +19 -0
  97. package/divider/types.js +5 -0
  98. package/dropdown/Dropdown.js +50 -102
  99. package/dropdown/Dropdown.stories.tsx +46 -1
  100. package/dropdown/Dropdown.test.js +393 -379
  101. package/dropdown/DropdownMenu.js +13 -20
  102. package/dropdown/DropdownMenuItem.js +5 -19
  103. package/dropdown/types.d.ts +18 -20
  104. package/file-input/FileInput.js +184 -256
  105. package/file-input/FileInput.stories.tsx +86 -3
  106. package/file-input/FileInput.test.js +356 -395
  107. package/file-input/FileItem.js +15 -41
  108. package/file-input/types.d.ts +10 -10
  109. package/flex/Flex.js +27 -39
  110. package/flex/Flex.stories.tsx +35 -26
  111. package/flex/types.d.ts +74 -9
  112. package/footer/Footer.d.ts +1 -1
  113. package/footer/Footer.js +70 -117
  114. package/footer/Footer.stories.tsx +55 -21
  115. package/footer/Footer.test.js +33 -57
  116. package/footer/Icons.d.ts +3 -2
  117. package/footer/Icons.js +66 -7
  118. package/footer/types.d.ts +25 -27
  119. package/grid/Grid.d.ts +7 -0
  120. package/grid/Grid.js +76 -0
  121. package/grid/Grid.stories.tsx +219 -0
  122. package/grid/types.d.ts +115 -0
  123. package/grid/types.js +5 -0
  124. package/header/Header.d.ts +4 -3
  125. package/header/Header.js +34 -117
  126. package/header/Header.stories.tsx +81 -35
  127. package/header/Header.test.js +13 -26
  128. package/header/Icons.d.ts +2 -2
  129. package/header/Icons.js +2 -7
  130. package/header/types.d.ts +7 -22
  131. package/heading/Heading.js +10 -32
  132. package/heading/Heading.test.js +71 -88
  133. package/heading/types.d.ts +7 -7
  134. package/icon/Icon.d.ts +4 -0
  135. package/icon/Icon.js +33 -0
  136. package/icon/Icon.stories.tsx +26 -0
  137. package/icon/types.d.ts +4 -0
  138. package/icon/types.js +5 -0
  139. package/image/Image.d.ts +4 -0
  140. package/image/Image.js +70 -0
  141. package/image/Image.stories.tsx +129 -0
  142. package/image/types.d.ts +72 -0
  143. package/image/types.js +5 -0
  144. package/inset/Inset.js +13 -21
  145. package/inset/Inset.stories.tsx +2 -1
  146. package/inset/types.d.ts +2 -2
  147. package/layout/ApplicationLayout.d.ts +5 -5
  148. package/layout/ApplicationLayout.js +29 -66
  149. package/layout/ApplicationLayout.stories.tsx +1 -1
  150. package/layout/Icons.d.ts +8 -5
  151. package/layout/Icons.js +51 -59
  152. package/layout/SidenavContext.d.ts +1 -1
  153. package/layout/SidenavContext.js +3 -9
  154. package/layout/types.d.ts +5 -6
  155. package/link/Link.js +24 -45
  156. package/link/Link.stories.tsx +60 -0
  157. package/link/Link.test.js +24 -44
  158. package/link/types.d.ts +14 -14
  159. package/main.d.ts +9 -5
  160. package/main.js +40 -59
  161. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  162. package/{tabs-nav → nav-tabs}/NavTabs.js +23 -55
  163. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +109 -5
  164. package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -45
  165. package/nav-tabs/Tab.js +118 -0
  166. package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
  167. package/nav-tabs/types.js +5 -0
  168. package/number-input/NumberInput.d.ts +7 -0
  169. package/number-input/NumberInput.js +47 -37
  170. package/number-input/NumberInput.stories.tsx +42 -26
  171. package/number-input/NumberInput.test.js +860 -413
  172. package/number-input/types.d.ts +11 -5
  173. package/package.json +31 -29
  174. package/paginator/Icons.d.ts +5 -5
  175. package/paginator/Icons.js +5 -19
  176. package/paginator/Paginator.js +17 -47
  177. package/paginator/Paginator.stories.tsx +24 -0
  178. package/paginator/Paginator.test.js +235 -215
  179. package/paginator/types.d.ts +3 -3
  180. package/paragraph/Paragraph.d.ts +3 -4
  181. package/paragraph/Paragraph.js +6 -22
  182. package/paragraph/Paragraph.stories.tsx +0 -17
  183. package/password-input/Icons.d.ts +6 -0
  184. package/password-input/Icons.js +35 -0
  185. package/password-input/PasswordInput.js +57 -126
  186. package/password-input/PasswordInput.stories.tsx +1 -33
  187. package/password-input/PasswordInput.test.js +158 -141
  188. package/password-input/types.d.ts +8 -7
  189. package/progress-bar/ProgressBar.d.ts +2 -2
  190. package/progress-bar/ProgressBar.js +23 -55
  191. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
  192. package/progress-bar/ProgressBar.test.js +36 -53
  193. package/progress-bar/types.d.ts +4 -3
  194. package/quick-nav/QuickNav.js +4 -27
  195. package/quick-nav/QuickNav.stories.tsx +15 -1
  196. package/quick-nav/types.d.ts +10 -10
  197. package/radio-group/Radio.d.ts +1 -1
  198. package/radio-group/Radio.js +31 -63
  199. package/radio-group/RadioGroup.js +45 -93
  200. package/radio-group/RadioGroup.stories.tsx +131 -18
  201. package/radio-group/RadioGroup.test.js +505 -471
  202. package/radio-group/types.d.ts +8 -8
  203. package/resultset-table/Icons.d.ts +7 -0
  204. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  205. package/resultset-table/ResultsetTable.d.ts +7 -0
  206. package/{resultsetTable → resultset-table}/ResultsetTable.js +37 -66
  207. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +102 -5
  208. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +139 -93
  209. package/{resultsetTable → resultset-table}/types.d.ts +13 -7
  210. package/resultset-table/types.js +5 -0
  211. package/select/Icons.d.ts +7 -7
  212. package/select/Icons.js +1 -5
  213. package/select/Listbox.js +13 -39
  214. package/select/Option.js +17 -27
  215. package/select/Select.js +94 -168
  216. package/select/Select.stories.tsx +480 -178
  217. package/select/Select.test.js +1952 -1810
  218. package/select/types.d.ts +14 -15
  219. package/sidenav/Icons.d.ts +7 -0
  220. package/sidenav/Icons.js +47 -0
  221. package/sidenav/Sidenav.d.ts +2 -2
  222. package/sidenav/Sidenav.js +82 -151
  223. package/sidenav/Sidenav.stories.tsx +110 -17
  224. package/sidenav/Sidenav.test.js +3 -10
  225. package/sidenav/types.d.ts +31 -28
  226. package/slider/Slider.js +70 -128
  227. package/slider/Slider.test.js +108 -104
  228. package/slider/types.d.ts +4 -4
  229. package/spinner/Spinner.js +29 -73
  230. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  231. package/spinner/Spinner.test.js +26 -35
  232. package/spinner/types.d.ts +3 -3
  233. package/status-light/StatusLight.d.ts +4 -0
  234. package/status-light/StatusLight.js +51 -0
  235. package/status-light/StatusLight.stories.tsx +74 -0
  236. package/status-light/StatusLight.test.js +25 -0
  237. package/status-light/types.d.ts +17 -0
  238. package/status-light/types.js +5 -0
  239. package/switch/Switch.js +51 -99
  240. package/switch/Switch.stories.tsx +33 -34
  241. package/switch/Switch.test.js +52 -97
  242. package/switch/types.d.ts +4 -4
  243. package/table/DropdownTheme.js +62 -0
  244. package/table/Table.d.ts +6 -2
  245. package/table/Table.js +87 -35
  246. package/table/Table.stories.tsx +658 -0
  247. package/table/Table.test.js +94 -7
  248. package/table/types.d.ts +48 -6
  249. package/tabs/Tab.js +23 -40
  250. package/tabs/Tabs.js +62 -145
  251. package/tabs/Tabs.stories.tsx +39 -1
  252. package/tabs/Tabs.test.js +66 -123
  253. package/tabs/types.d.ts +19 -19
  254. package/tag/Tag.js +28 -60
  255. package/tag/Tag.stories.tsx +14 -1
  256. package/tag/Tag.test.js +20 -31
  257. package/tag/types.d.ts +7 -7
  258. package/text-input/Icons.d.ts +5 -5
  259. package/text-input/Icons.js +1 -5
  260. package/text-input/Suggestion.js +11 -28
  261. package/text-input/Suggestions.d.ts +1 -1
  262. package/text-input/Suggestions.js +15 -65
  263. package/text-input/TextInput.js +220 -328
  264. package/text-input/TextInput.stories.tsx +116 -152
  265. package/text-input/TextInput.test.js +1228 -1196
  266. package/text-input/types.d.ts +25 -17
  267. package/textarea/Textarea.js +70 -113
  268. package/textarea/Textarea.stories.tsx +174 -0
  269. package/textarea/Textarea.test.js +152 -183
  270. package/textarea/types.d.ts +9 -5
  271. package/toggle-group/ToggleGroup.d.ts +2 -2
  272. package/toggle-group/ToggleGroup.js +92 -106
  273. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  274. package/toggle-group/ToggleGroup.test.js +69 -88
  275. package/toggle-group/types.d.ts +26 -17
  276. package/typography/Typography.d.ts +2 -2
  277. package/typography/Typography.js +15 -123
  278. package/typography/Typography.stories.tsx +1 -1
  279. package/typography/types.d.ts +1 -1
  280. package/useTheme.d.ts +1147 -1
  281. package/useTheme.js +2 -9
  282. package/useTranslatedLabels.d.ts +84 -1
  283. package/useTranslatedLabels.js +1 -7
  284. package/utils/BaseTypography.d.ts +21 -0
  285. package/utils/BaseTypography.js +94 -0
  286. package/utils/FocusLock.d.ts +13 -0
  287. package/utils/FocusLock.js +124 -0
  288. package/wizard/Wizard.js +16 -51
  289. package/wizard/Wizard.stories.tsx +20 -0
  290. package/wizard/Wizard.test.js +54 -81
  291. package/wizard/types.d.ts +9 -10
  292. package/card/ice-cream.jpg +0 -0
  293. package/common/OpenSans.css +0 -81
  294. package/common/fonts/OpenSans-Bold.ttf +0 -0
  295. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  296. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  297. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  298. package/common/fonts/OpenSans-Italic.ttf +0 -0
  299. package/common/fonts/OpenSans-Light.ttf +0 -0
  300. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  301. package/common/fonts/OpenSans-Regular.ttf +0 -0
  302. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  303. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  304. package/number-input/NumberInputContext.d.ts +0 -4
  305. package/number-input/NumberInputContext.js +0 -19
  306. package/number-input/numberInputContextTypes.d.ts +0 -19
  307. package/resultsetTable/Icons.d.ts +0 -7
  308. package/resultsetTable/ResultsetTable.d.ts +0 -4
  309. package/slider/Slider.stories.tsx +0 -183
  310. package/table/Table.stories.jsx +0 -277
  311. package/tabs-nav/Tab.js +0 -128
  312. package/textarea/Textarea.stories.jsx +0 -157
  313. /package/{resultsetTable → action-icon}/types.js +0 -0
  314. /package/{tabs-nav → container}/types.js +0 -0
  315. /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
  316. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
package/button/Button.js CHANGED
@@ -1,103 +1,84 @@
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
- var _variables = require("../common/variables.js");
21
-
22
- var _utils = require("../common/utils.js");
23
-
13
+ var _variables = require("../common/variables");
14
+ var _utils = require("../common/utils");
24
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
26
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
27
-
28
16
  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
-
34
- var sizes = {
35
- small: "42px",
36
- medium: "120px",
37
- large: "240px",
38
- fillParent: "100%",
39
- fitContent: "fit-content"
40
- };
41
-
42
- var calculateWidth = function calculateWidth(margin, size) {
43
- if (size === "fillParent") {
44
- return "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
45
- }
46
-
47
- return sizes[size];
48
- };
49
-
17
+ 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); }
18
+ 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; }
50
19
  var DxcButton = function DxcButton(_ref) {
51
20
  var _ref$label = _ref.label,
52
- label = _ref$label === void 0 ? "" : _ref$label,
53
- _ref$mode = _ref.mode,
54
- mode = _ref$mode === void 0 ? "primary" : _ref$mode,
55
- _ref$disabled = _ref.disabled,
56
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
57
- _ref$iconPosition = _ref.iconPosition,
58
- iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
59
- _ref$type = _ref.type,
60
- type = _ref$type === void 0 ? "button" : _ref$type,
61
- icon = _ref.icon,
62
- _ref$onClick = _ref.onClick,
63
- _onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick,
64
- margin = _ref.margin,
65
- _ref$size = _ref.size,
66
- size = _ref$size === void 0 ? "fitContent" : _ref$size,
67
- _ref$tabIndex = _ref.tabIndex,
68
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
69
-
21
+ label = _ref$label === void 0 ? "" : _ref$label,
22
+ _ref$mode = _ref.mode,
23
+ mode = _ref$mode === void 0 ? "primary" : _ref$mode,
24
+ _ref$disabled = _ref.disabled,
25
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
26
+ _ref$iconPosition = _ref.iconPosition,
27
+ iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
28
+ title = _ref.title,
29
+ _ref$type = _ref.type,
30
+ type = _ref$type === void 0 ? "button" : _ref$type,
31
+ icon = _ref.icon,
32
+ _ref$onClick = _ref.onClick,
33
+ _onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick,
34
+ margin = _ref.margin,
35
+ _ref$size = _ref.size,
36
+ size = _ref$size === void 0 ? "fitContent" : _ref$size,
37
+ _ref$tabIndex = _ref.tabIndex,
38
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
70
39
  var colorsTheme = (0, _useTheme["default"])();
71
- var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
72
40
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
73
41
  theme: colorsTheme.button
74
42
  }, /*#__PURE__*/_react["default"].createElement(Button, {
75
- type: type,
76
- mode: mode !== "primary" && mode !== "secondary" && mode !== "text" ? "primary" : mode,
43
+ "aria-label": title,
77
44
  disabled: disabled,
78
- "aria-disabled": disabled,
79
- tabIndex: disabled ? -1 : tabIndex,
80
- backgroundType: backgroundType,
81
- size: size,
82
- margin: margin,
83
45
  onClick: function onClick() {
84
46
  _onClick();
85
- }
86
- }, label && iconPosition === "after" && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
87
- icon: icon,
88
- iconPosition: iconPosition
89
- }, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
90
- label: label,
91
- iconPosition: iconPosition
92
- }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
47
+ },
48
+ tabIndex: disabled ? -1 : tabIndex,
49
+ title: title,
50
+ type: type,
51
+ $mode: mode !== "primary" && mode !== "secondary" && mode !== "text" ? "primary" : mode,
52
+ hasLabel: label ? true : false,
53
+ hasIcon: icon ? true : false,
54
+ iconPosition: iconPosition,
55
+ size: size,
56
+ margin: margin
57
+ }, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
93
58
  src: icon
94
- }) : icon), label && iconPosition === "before" && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
95
- icon: icon,
96
- iconPosition: iconPosition
97
- }, label)));
59
+ }) : icon)));
98
60
  };
99
-
100
- var Button = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n display: inline-flex;\n width: ", ";\n height: 40px;\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n align-items: center;\n justify-content: center;\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n cursor: pointer;\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px\n ", ";\n }\n ", "\n"])), function (props) {
61
+ var sizes = {
62
+ small: "42px",
63
+ medium: "120px",
64
+ large: "240px",
65
+ fillParent: "100%",
66
+ fitContent: "fit-content"
67
+ };
68
+ var calculateWidth = function calculateWidth(margin, size) {
69
+ return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
70
+ };
71
+ var getButtonStyles = function getButtonStyles($mode, theme) {
72
+ 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 ");
73
+ };
74
+ var getButtonStates = function getButtonStates(disabled, $mode, theme) {
75
+ 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");
76
+ };
77
+ 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) {
78
+ return props.iconPosition === "after" ? "row" : "row-reverse";
79
+ }, function (props) {
80
+ return calculateWidth(props.margin, props.size);
81
+ }, function (props) {
101
82
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
102
83
  }, function (props) {
103
84
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
@@ -107,16 +88,14 @@ var Button = _styledComponents["default"].button(_templateObject || (_templateOb
107
88
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
108
89
  }, function (props) {
109
90
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
110
- }, function (props) {
111
- return calculateWidth(props.margin, props.size);
112
- }, function (props) {
113
- return props.theme.paddingLeft;
114
- }, function (props) {
115
- return props.theme.paddingRight;
116
91
  }, function (props) {
117
92
  return props.theme.paddingTop;
118
93
  }, function (props) {
119
94
  return props.theme.paddingBottom;
95
+ }, function (props) {
96
+ return props.hasIcon && !props.hasLabel ? props.theme.paddingLeft : "calc(".concat(props.theme.paddingLeft, " + 8px)");
97
+ }, function (props) {
98
+ return props.hasIcon && !props.hasLabel ? props.theme.paddingRight : "calc(".concat(props.theme.paddingRight, " + 8px)");
120
99
  }, function (props) {
121
100
  return props.theme.fontFamily;
122
101
  }, function (props) {
@@ -126,29 +105,16 @@ var Button = _styledComponents["default"].button(_templateObject || (_templateOb
126
105
  }, function (props) {
127
106
  return props.theme.labelLetterSpacing;
128
107
  }, function (props) {
129
- return props.backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor;
108
+ return props.theme.focusBorderColor;
109
+ }, function (props) {
110
+ return getButtonStyles(props.$mode, props.theme);
130
111
  }, function (props) {
131
- var mode = props.mode,
132
- backgroundType = props.backgroundType,
133
- disabled = props.disabled;
134
- return "\n border-radius: ".concat(props.mode === "primary" ? props.theme.primaryBorderRadius : props.mode === "secondary" ? props.theme.secondaryBorderRadius : props.theme.textBorderRadius, ";\n border-width: ").concat(props.mode === "primary" ? props.theme.primaryBorderThickness : props.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 ");
112
+ return getButtonStates(props.disabled, props.$mode, props.theme);
135
113
  });
136
-
137
- 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 margin-right: ", ";\n margin-left: ", ";\n"])), function (props) {
114
+ 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) {
138
115
  return props.theme.labelFontLineHeight;
139
116
  }, function (props) {
140
117
  return props.theme.fontSize;
141
- }, function (props) {
142
- return !props.icon || props.iconPosition === "before" ? "8px" : "0px";
143
- }, function (props) {
144
- return !props.icon || props.iconPosition === "after" ? "8px" : "0px";
145
118
  });
146
-
147
- var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n margin-left: ", ";\n margin-right: ", ";\n\n img,\n svg {\n height: 24px;\n width: 24px;\n }\n"])), function (props) {
148
- return !props.label ? "0px" : props.iconPosition === "after" && props.label !== "" && "8px" || "8px";
149
- }, function (props) {
150
- return !props.label ? "0px" : props.iconPosition === "before" && props.label !== "" && "8px" || "8px";
151
- });
152
-
153
- var _default = DxcButton;
154
- exports["default"] = _default;
119
+ 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"])));
120
+ var _default = exports["default"] = DxcButton;
@@ -1,10 +1,9 @@
1
1
  import React from "react";
2
2
  import DxcButton from "./Button";
3
3
  import DxcFlex from "./../flex/Flex";
4
- import { BackgroundColorProvider } from "../BackgroundColorContext";
5
4
  import Title from "../../.storybook/components/Title";
6
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
7
- import DarkContainer from "../../.storybook/components/DarkSection";
6
+ import { HalstackProvider } from "../HalstackContext";
8
7
 
9
8
  export default {
10
9
  title: "Button",
@@ -48,6 +47,14 @@ const smallIcon = (
48
47
  </svg>
49
48
  );
50
49
 
50
+ const opinionatedTheme = {
51
+ button: {
52
+ baseColor: "#5f249f",
53
+ primaryFontColor: "#ffffff",
54
+ secondaryHoverFontColor: "#ffffff",
55
+ },
56
+ };
57
+
51
58
  export const Chromatic = () => (
52
59
  <>
53
60
  <Title title="Primary" theme="light" level={2} />
@@ -69,7 +76,7 @@ export const Chromatic = () => (
69
76
  </ExampleContainer>
70
77
  <ExampleContainer>
71
78
  <Title title="Disabled" theme="light" level={4} />
72
- <DxcButton label="Primary disabled" disabled />
79
+ <DxcButton label="Primary disabled" disabled icon={iconSVG} />
73
80
  </ExampleContainer>
74
81
  <ExampleContainer>
75
82
  <Title title="With left icon" theme="light" level={4} />
@@ -89,7 +96,7 @@ export const Chromatic = () => (
89
96
  </ExampleContainer>
90
97
  <ExampleContainer>
91
98
  <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" />
99
+ <DxcButton icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png" />
93
100
  </ExampleContainer>
94
101
  <ExampleContainer>
95
102
  <Title title="Small icon" theme="light" level={4} />
@@ -114,7 +121,7 @@ export const Chromatic = () => (
114
121
  </ExampleContainer>
115
122
  <ExampleContainer>
116
123
  <Title title="Disabled" theme="light" level={4} />
117
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
124
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
118
125
  </ExampleContainer>
119
126
  <ExampleContainer>
120
127
  <Title title="With icon" theme="light" level={4} />
@@ -124,7 +131,7 @@ export const Chromatic = () => (
124
131
  <Title title="Only icon (image)" theme="light" level={4} />
125
132
  <DxcButton
126
133
  mode="secondary"
127
- 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"
128
135
  />
129
136
  </ExampleContainer>
130
137
  <Title title="Text" theme="light" level={2} />
@@ -146,7 +153,7 @@ export const Chromatic = () => (
146
153
  </ExampleContainer>
147
154
  <ExampleContainer>
148
155
  <Title title="Disabled" theme="light" level={4} />
149
- <DxcButton mode="text" label="Text disabled" disabled />
156
+ <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
150
157
  </ExampleContainer>
151
158
  <ExampleContainer>
152
159
  <Title title="With icon" theme="light" level={4} />
@@ -156,88 +163,9 @@ export const Chromatic = () => (
156
163
  <Title title="Only icon (image)" theme="light" level={4} />
157
164
  <DxcButton
158
165
  mode="text"
159
- icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
166
+ icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
160
167
  />
161
168
  </ExampleContainer>
162
- <BackgroundColorProvider color="#333333">
163
- <DarkContainer>
164
- <Title title="Primary" theme="dark" level={2} />
165
- <ExampleContainer>
166
- <Title title="Enabled" theme="dark" level={4} />
167
- <DxcButton label="Primary enabled" />
168
- </ExampleContainer>
169
- <ExampleContainer pseudoState="pseudo-hover">
170
- <Title title="Hovered" theme="dark" level={4} />
171
- <DxcButton label="Primary hovered" />
172
- </ExampleContainer>
173
- <ExampleContainer pseudoState="pseudo-focus">
174
- <Title title="Focused" theme="dark" level={4} />
175
- <DxcButton label="Primary focused" />
176
- </ExampleContainer>
177
- <ExampleContainer pseudoState="pseudo-active">
178
- <Title title="Actived" theme="dark" level={4} />
179
- <DxcButton label="Primary actived" />
180
- </ExampleContainer>
181
- <ExampleContainer>
182
- <Title title="Disabled" theme="dark" level={4} />
183
- <DxcButton label="Primary disabled" disabled />
184
- </ExampleContainer>
185
- <ExampleContainer>
186
- <Title title="With icon" theme="dark" level={4} />
187
- <DxcButton label="Primary" icon={iconSVG} />
188
- </ExampleContainer>
189
- <Title title="Secondary" theme="dark" level={2} />
190
- <ExampleContainer>
191
- <Title title="Enabled" theme="dark" level={4} />
192
- <DxcButton mode="secondary" label="Secondary enabled" />
193
- </ExampleContainer>
194
- <ExampleContainer pseudoState="pseudo-hover">
195
- <Title title="Hovered" theme="dark" level={4} />
196
- <DxcButton mode="secondary" label="Secondary hovered" />
197
- </ExampleContainer>
198
- <ExampleContainer pseudoState="pseudo-focus">
199
- <Title title="Focused" theme="dark" level={4} />
200
- <DxcButton mode="secondary" label="Secondary focused" />
201
- </ExampleContainer>
202
- <ExampleContainer pseudoState="pseudo-active">
203
- <Title title="Actived" theme="dark" level={4} />
204
- <DxcButton mode="secondary" label="Secondary actived" />
205
- </ExampleContainer>
206
- <ExampleContainer>
207
- <Title title="Disabled" theme="dark" level={4} />
208
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
209
- </ExampleContainer>
210
- <ExampleContainer>
211
- <Title title="With icon" theme="dark" level={4} />
212
- <DxcButton mode="secondary" label="Primary" icon={iconSVG} />
213
- </ExampleContainer>
214
- <Title title="Text" theme="dark" level={2} />
215
- <ExampleContainer>
216
- <Title title="Enabled" theme="dark" level={4} />
217
- <DxcButton mode="text" label="Text enabled" />
218
- </ExampleContainer>
219
- <ExampleContainer pseudoState="pseudo-hover">
220
- <Title title="Hovered" theme="dark" level={4} />
221
- <DxcButton mode="text" label="Text hovered" />
222
- </ExampleContainer>
223
- <ExampleContainer pseudoState="pseudo-focus">
224
- <Title title="Focused" theme="dark" level={4} />
225
- <DxcButton mode="text" label="Text focused" />
226
- </ExampleContainer>
227
- <ExampleContainer pseudoState="pseudo-active">
228
- <Title title="Actived" theme="dark" level={4} />
229
- <DxcButton mode="text" label="Text actived" />
230
- </ExampleContainer>
231
- <ExampleContainer>
232
- <Title title="Disabled" theme="dark" level={4} />
233
- <DxcButton mode="text" label="Text disabled" disabled />
234
- </ExampleContainer>
235
- <ExampleContainer>
236
- <Title title="With icon" theme="dark" level={4} />
237
- <DxcButton mode="text" label="Primary" icon={iconSVG} />
238
- </ExampleContainer>
239
- </DarkContainer>
240
- </BackgroundColorProvider>
241
169
  <Title title="Sizes" theme="light" level={2} />
242
170
  <ExampleContainer>
243
171
  <Title title="Small size" theme="light" level={4} />
@@ -245,7 +173,7 @@ export const Chromatic = () => (
245
173
  </ExampleContainer>
246
174
  <ExampleContainer>
247
175
  <Title title="Medium size" theme="light" level={4} />
248
- <DxcButton label="MediumSiz" size="medium" />
176
+ <DxcButton label="MediumSize" size="medium" />
249
177
  </ExampleContainer>
250
178
  <ExampleContainer>
251
179
  <Title title="Medium size with ellipsis" theme="light" level={4} />
@@ -253,11 +181,11 @@ export const Chromatic = () => (
253
181
  </ExampleContainer>
254
182
  <ExampleContainer>
255
183
  <Title title="Medium size icon after" theme="light" level={4} />
256
- <DxcButton label="Mediu" iconPosition="after" icon={iconSVG} size="medium" />
184
+ <DxcButton label="Medium" iconPosition="after" icon={iconSVG} size="medium" />
257
185
  </ExampleContainer>
258
186
  <ExampleContainer>
259
187
  <Title title="Medium size icon before" theme="light" level={4} />
260
- <DxcButton label="Mediu" iconPosition="before" icon={iconSVG} size="medium" />
188
+ <DxcButton label="Medium" iconPosition="before" icon={iconSVG} size="medium" />
261
189
  </ExampleContainer>
262
190
  <ExampleContainer>
263
191
  <Title title="Medium size icon after with ellipsis" theme="light" level={4} />
@@ -277,11 +205,11 @@ export const Chromatic = () => (
277
205
  </ExampleContainer>
278
206
  <ExampleContainer>
279
207
  <Title title="Large size icon after" theme="light" level={4} />
280
- <DxcButton label="LargeSizePrimaryButto" iconPosition="after" icon={iconSVG} size="large" />
208
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon={iconSVG} size="large" />
281
209
  </ExampleContainer>
282
210
  <ExampleContainer>
283
211
  <Title title="Large size icon before" theme="light" level={4} />
284
- <DxcButton label="LargeSizePrimaryButto" iconPosition="before" icon={iconSVG} size="large" />
212
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon={iconSVG} size="large" />
285
213
  </ExampleContainer>
286
214
  <ExampleContainer>
287
215
  <Title title="Large size icon after with ellipsis" theme="light" level={4} />
@@ -330,11 +258,87 @@ export const Chromatic = () => (
330
258
  </ExampleContainer>
331
259
  <Title title="Inside a flex" theme="light" level={2} />
332
260
  <ExampleContainer>
333
- <DxcFlex direction="column" gap="0.75rem">
261
+ <DxcFlex direction="column" gap="1rem">
334
262
  <DxcButton label="Button" />
335
263
  <DxcButton label="Button" />
336
264
  <DxcButton label="Button" />
337
265
  </DxcFlex>
338
266
  </ExampleContainer>
267
+ <Title title="Opinionated theme" theme="light" level={2} />
268
+ <Title title="Primary" theme="light" level={3} />
269
+ <ExampleContainer>
270
+ <Title title="Enabled" theme="light" level={4} />
271
+ <HalstackProvider theme={opinionatedTheme}>
272
+ <DxcButton label="Primary" icon={iconSVG} />
273
+ </HalstackProvider>
274
+ </ExampleContainer>
275
+ <ExampleContainer pseudoState="pseudo-hover">
276
+ <Title title="Hovered" theme="light" level={4} />
277
+ <DxcButton label="Primary hovered" icon={iconSVG} />
278
+ </ExampleContainer>
279
+ <ExampleContainer pseudoState="pseudo-focus">
280
+ <Title title="Focused" theme="light" level={4} />
281
+ <DxcButton label="Primary focused" icon={iconSVG} />
282
+ </ExampleContainer>
283
+ <ExampleContainer pseudoState="pseudo-active">
284
+ <Title title="Actived" theme="light" level={4} />
285
+ <DxcButton label="Primary actived" icon={iconSVG} />
286
+ </ExampleContainer>
287
+ <ExampleContainer>
288
+ <Title title="Disabled" theme="light" level={4} />
289
+ <HalstackProvider theme={opinionatedTheme}>
290
+ <DxcButton label="Primary" icon={iconSVG} disabled />
291
+ </HalstackProvider>
292
+ </ExampleContainer>
293
+ <Title title="Secondary" theme="light" level={3} />
294
+ <ExampleContainer>
295
+ <Title title="Enabled" theme="light" level={4} />
296
+ <HalstackProvider theme={opinionatedTheme}>
297
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
298
+ </HalstackProvider>
299
+ </ExampleContainer>
300
+ <ExampleContainer pseudoState="pseudo-hover">
301
+ <Title title="Hovered" theme="light" level={4} />
302
+ <DxcButton mode="secondary" label="Secondary hovered" icon={iconSVG} />
303
+ </ExampleContainer>
304
+ <ExampleContainer pseudoState="pseudo-focus">
305
+ <Title title="Focused" theme="light" level={4} />
306
+ <DxcButton mode="secondary" label="Secondary focused" icon={iconSVG} />
307
+ </ExampleContainer>
308
+ <ExampleContainer pseudoState="pseudo-active">
309
+ <Title title="Actived" theme="light" level={4} />
310
+ <DxcButton mode="secondary" label="Secondary actived" icon={iconSVG} />
311
+ </ExampleContainer>
312
+ <ExampleContainer>
313
+ <Title title="Disabled" theme="light" level={4} />
314
+ <HalstackProvider theme={opinionatedTheme}>
315
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} disabled />
316
+ </HalstackProvider>
317
+ </ExampleContainer>
318
+ <Title title="Text" theme="light" level={3} />
319
+ <ExampleContainer>
320
+ <Title title="Enabled" theme="light" level={4} />
321
+ <HalstackProvider theme={opinionatedTheme}>
322
+ <DxcButton mode="text" label="Text" icon={iconSVG} />
323
+ </HalstackProvider>
324
+ </ExampleContainer>
325
+ <ExampleContainer pseudoState="pseudo-hover">
326
+ <Title title="Hovered" theme="light" level={4} />
327
+ <DxcButton mode="text" label="Text hovered" icon={iconSVG} />
328
+ </ExampleContainer>
329
+ <ExampleContainer pseudoState="pseudo-focus">
330
+ <Title title="Focused" theme="light" level={4} />
331
+ <DxcButton mode="text" label="Text focused" icon={iconSVG} />
332
+ </ExampleContainer>
333
+ <ExampleContainer pseudoState="pseudo-active">
334
+ <Title title="Actived" theme="light" level={4} />
335
+ <DxcButton mode="text" label="Text actived" icon={iconSVG} />
336
+ </ExampleContainer>
337
+ <ExampleContainer>
338
+ <Title title="Disabled" theme="light" level={4} />
339
+ <HalstackProvider theme={opinionatedTheme}>
340
+ <DxcButton mode="text" label="Text disabled" icon={iconSVG} disabled />
341
+ </HalstackProvider>
342
+ </ExampleContainer>
339
343
  </>
340
344
  );
@@ -1,35 +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
- var _Button = _interopRequireDefault(require("./Button"));
10
-
6
+ var _Button = _interopRequireDefault(require("./Button.tsx"));
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
  });
26
+ test("Renders with correct accessibility attributes", function () {
27
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
28
+ label: "Home",
29
+ title: "Go home",
30
+ tabIndex: 1
31
+ })),
32
+ getByRole = _render3.getByRole;
33
+ var button = getByRole("button");
34
+ expect(button.getAttribute("aria-label")).toBe("Go home");
35
+ expect(button.getAttribute("title")).toBe("Go home");
36
+ expect(button.getAttribute("tabindex")).toBe("1");
37
+ });
35
38
  });
package/button/types.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export 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
- export 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
  */
@@ -24,6 +24,10 @@ declare type Props = {
24
24
  * Whether the icon should appear after or before the label.
25
25
  */
26
26
  iconPosition?: "before" | "after";
27
+ /**
28
+ * Value for the HTML properties title and aria-label.
29
+ */
30
+ title?: string;
27
31
  /**
28
32
  * 'type' html prop of the button.
29
33
  */
package/card/Card.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import CardPropsType from "./types";
3
- declare const DxcCard: ({ imageSrc, imageBgColor, imagePadding, imagePosition, linkHref, onClick, imageCover, margin, contentPadding, tabIndex, outlined, children, }: CardPropsType) => JSX.Element;
3
+ declare const DxcCard: ({ imageSrc, imageBgColor, imagePadding, imagePosition, linkHref, onClick, imageCover, margin, tabIndex, outlined, children, }: CardPropsType) => JSX.Element;
4
4
  export default DxcCard;