@dxc-technology/halstack-react 0.0.0-3a65d35 → 0.0.0-3a698b0

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 (182) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1332 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.js +13 -24
  6. package/accordion/Accordion.stories.tsx +102 -13
  7. package/accordion/Accordion.test.js +1 -1
  8. package/accordion/types.d.ts +3 -3
  9. package/accordion-group/AccordionGroup.js +2 -2
  10. package/accordion-group/AccordionGroup.test.js +1 -1
  11. package/accordion-group/types.d.ts +2 -2
  12. package/alert/Alert.js +3 -5
  13. package/alert/Alert.stories.tsx +28 -0
  14. package/alert/Alert.test.js +1 -1
  15. package/bleed/Bleed.stories.tsx +1 -0
  16. package/box/Box.js +3 -5
  17. package/box/Box.stories.tsx +15 -0
  18. package/box/Box.test.js +1 -1
  19. package/button/Button.js +13 -16
  20. package/button/Button.stories.tsx +150 -8
  21. package/button/Button.test.js +1 -1
  22. package/button/types.d.ts +3 -3
  23. package/card/Card.js +12 -13
  24. package/card/Card.stories.tsx +12 -13
  25. package/card/Card.test.js +1 -1
  26. package/checkbox/Checkbox.d.ts +2 -2
  27. package/checkbox/Checkbox.js +18 -17
  28. package/checkbox/Checkbox.stories.tsx +131 -59
  29. package/checkbox/Checkbox.test.js +1 -1
  30. package/checkbox/types.d.ts +6 -2
  31. package/chip/Chip.js +18 -26
  32. package/chip/Chip.stories.tsx +96 -9
  33. package/chip/Chip.test.js +3 -5
  34. package/common/utils.d.ts +1 -0
  35. package/common/utils.js +4 -4
  36. package/common/variables.d.ts +1625 -0
  37. package/common/variables.js +286 -290
  38. package/date-input/Calendar.d.ts +4 -0
  39. package/date-input/Calendar.js +258 -0
  40. package/date-input/DateInput.js +134 -237
  41. package/date-input/DateInput.stories.tsx +199 -33
  42. package/date-input/DateInput.test.js +494 -138
  43. package/date-input/DatePicker.d.ts +4 -0
  44. package/date-input/DatePicker.js +146 -0
  45. package/date-input/Icons.d.ts +6 -0
  46. package/date-input/Icons.js +75 -0
  47. package/date-input/YearPicker.d.ts +4 -0
  48. package/date-input/YearPicker.js +126 -0
  49. package/date-input/types.d.ts +51 -0
  50. package/dialog/Dialog.js +61 -74
  51. package/dialog/Dialog.stories.tsx +211 -159
  52. package/dialog/Dialog.test.js +302 -3
  53. package/dialog/types.d.ts +2 -2
  54. package/dropdown/Dropdown.js +37 -37
  55. package/dropdown/Dropdown.stories.tsx +210 -84
  56. package/dropdown/Dropdown.test.js +20 -24
  57. package/dropdown/DropdownMenu.js +8 -18
  58. package/dropdown/DropdownMenuItem.js +4 -17
  59. package/dropdown/types.d.ts +3 -3
  60. package/file-input/FileInput.d.ts +2 -2
  61. package/file-input/FileInput.js +174 -220
  62. package/file-input/FileInput.stories.tsx +122 -11
  63. package/file-input/FileInput.test.js +14 -14
  64. package/file-input/FileItem.d.ts +4 -14
  65. package/file-input/FileItem.js +39 -63
  66. package/file-input/types.d.ts +17 -0
  67. package/flex/Flex.stories.tsx +19 -24
  68. package/footer/Footer.js +6 -8
  69. package/footer/Footer.stories.tsx +91 -0
  70. package/footer/Footer.test.js +14 -26
  71. package/grid/Grid.d.ts +7 -0
  72. package/grid/Grid.js +91 -0
  73. package/grid/Grid.stories.tsx +219 -0
  74. package/grid/types.d.ts +115 -0
  75. package/header/Header.d.ts +3 -2
  76. package/header/Header.js +21 -23
  77. package/header/Header.stories.tsx +149 -6
  78. package/header/Header.test.js +2 -2
  79. package/header/types.d.ts +2 -2
  80. package/heading/Heading.js +1 -1
  81. package/heading/Heading.test.js +1 -1
  82. package/inset/Inset.stories.tsx +1 -0
  83. package/layout/ApplicationLayout.d.ts +1 -1
  84. package/layout/ApplicationLayout.js +1 -1
  85. package/link/Link.js +3 -3
  86. package/link/Link.stories.tsx +60 -0
  87. package/link/Link.test.js +2 -4
  88. package/link/types.d.ts +2 -2
  89. package/main.d.ts +3 -2
  90. package/main.js +9 -1
  91. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  92. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  93. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  94. package/{tabs-nav → nav-tabs}/Tab.js +37 -17
  95. package/nav-tabs/types.js +5 -0
  96. package/number-input/NumberInput.test.js +6 -7
  97. package/package.json +8 -13
  98. package/paginator/Icons.d.ts +5 -0
  99. package/paginator/Icons.js +16 -28
  100. package/paginator/Paginator.js +6 -14
  101. package/paginator/Paginator.stories.tsx +24 -0
  102. package/paginator/Paginator.test.js +44 -47
  103. package/paragraph/Paragraph.d.ts +3 -4
  104. package/paragraph/Paragraph.js +5 -5
  105. package/password-input/PasswordInput.test.js +1 -1
  106. package/progress-bar/ProgressBar.d.ts +2 -2
  107. package/progress-bar/ProgressBar.js +5 -5
  108. package/progress-bar/ProgressBar.stories.jsx +35 -2
  109. package/progress-bar/ProgressBar.test.js +1 -1
  110. package/progress-bar/types.d.ts +4 -3
  111. package/quick-nav/QuickNav.stories.tsx +14 -0
  112. package/radio-group/RadioGroup.stories.tsx +131 -18
  113. package/radio-group/RadioGroup.test.js +1 -1
  114. package/resultsetTable/Icons.d.ts +7 -0
  115. package/resultsetTable/Icons.js +51 -0
  116. package/resultsetTable/ResultsetTable.js +49 -106
  117. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  118. package/resultsetTable/ResultsetTable.test.js +41 -64
  119. package/resultsetTable/types.d.ts +1 -1
  120. package/select/Listbox.d.ts +1 -1
  121. package/select/Listbox.js +5 -34
  122. package/select/Option.js +11 -24
  123. package/select/Select.js +56 -35
  124. package/select/Select.stories.tsx +494 -150
  125. package/select/Select.test.js +76 -81
  126. package/select/types.d.ts +2 -2
  127. package/sidenav/Sidenav.js +9 -11
  128. package/sidenav/Sidenav.stories.tsx +148 -46
  129. package/slider/Slider.d.ts +2 -2
  130. package/slider/Slider.js +11 -11
  131. package/slider/Slider.stories.tsx +57 -0
  132. package/slider/Slider.test.js +1 -1
  133. package/slider/types.d.ts +6 -2
  134. package/spinner/Spinner.js +17 -23
  135. package/spinner/Spinner.stories.jsx +53 -27
  136. package/spinner/Spinner.test.js +1 -1
  137. package/switch/Switch.d.ts +3 -3
  138. package/switch/Switch.js +7 -6
  139. package/switch/Switch.stories.tsx +33 -0
  140. package/switch/Switch.test.js +1 -1
  141. package/switch/types.d.ts +8 -3
  142. package/table/Table.js +2 -2
  143. package/table/Table.stories.jsx +80 -1
  144. package/table/Table.test.js +2 -2
  145. package/tabs/Tab.js +12 -15
  146. package/tabs/Tabs.js +11 -17
  147. package/tabs/Tabs.stories.tsx +45 -5
  148. package/tabs/Tabs.test.js +4 -5
  149. package/tabs/types.d.ts +2 -2
  150. package/tag/Tag.js +7 -9
  151. package/tag/Tag.stories.tsx +14 -1
  152. package/tag/Tag.test.js +1 -1
  153. package/text-input/Suggestion.js +34 -7
  154. package/text-input/TextInput.js +10 -14
  155. package/text-input/TextInput.stories.tsx +92 -4
  156. package/text-input/TextInput.test.js +587 -635
  157. package/textarea/Textarea.js +3 -4
  158. package/textarea/Textarea.stories.jsx +60 -1
  159. package/textarea/Textarea.test.js +2 -4
  160. package/toggle-group/ToggleGroup.js +7 -4
  161. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  162. package/toggle-group/ToggleGroup.test.js +1 -1
  163. package/toggle-group/types.d.ts +1 -1
  164. package/typography/Typography.d.ts +2 -2
  165. package/typography/Typography.js +14 -113
  166. package/typography/Typography.stories.tsx +1 -1
  167. package/useTheme.d.ts +1234 -1
  168. package/useTheme.js +1 -1
  169. package/useTranslatedLabels.d.ts +84 -1
  170. package/utils/BaseTypography.d.ts +21 -0
  171. package/utils/BaseTypography.js +108 -0
  172. package/utils/FocusLock.d.ts +13 -0
  173. package/utils/FocusLock.js +139 -0
  174. package/wizard/Wizard.js +2 -2
  175. package/wizard/Wizard.stories.tsx +20 -0
  176. package/wizard/Wizard.test.js +1 -1
  177. package/wizard/types.d.ts +5 -6
  178. package/common/RequiredComponent.js +0 -32
  179. /package/{tabs-nav → grid}/types.js +0 -0
  180. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  181. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  182. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
+ import { BackgroundColorProvider } from "../BackgroundColorContext";
2
3
  import DxcButton from "./Button";
3
4
  import DxcFlex from "./../flex/Flex";
4
- import { BackgroundColorProvider } from "../BackgroundColorContext";
5
5
  import Title from "../../.storybook/components/Title";
6
6
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
7
7
  import DarkContainer from "../../.storybook/components/DarkSection";
8
+ import { HalstackProvider } from "../HalstackContext";
8
9
 
9
10
  export default {
10
11
  title: "Button",
@@ -12,11 +13,50 @@ export default {
12
13
  };
13
14
 
14
15
  const iconSVG = (
15
- <svg viewBox="0 0 24 24" fill="currentColor">
16
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="currentColor">
16
17
  <path d="M0 0h24v24H0z" fill="none" />
17
18
  <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
18
19
  </svg>
19
20
  );
21
+
22
+ const facebookIcon = (
23
+ <svg
24
+ version="1.1"
25
+ id="Capa_1"
26
+ x="0px"
27
+ y="0px"
28
+ width="438.536px"
29
+ height="438.536px"
30
+ viewBox="0 0 438.536 438.536"
31
+ fill="currentColor"
32
+ >
33
+ <g>
34
+ <path
35
+ d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
36
+ C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
37
+ h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
38
+ C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
39
+ c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
40
+ c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
41
+ />
42
+ </g>
43
+ </svg>
44
+ );
45
+
46
+ const smallIcon = (
47
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" height="20" width="20" fill="currentColor">
48
+ <path d="m7.646 18.333-.313-2.625q-.208-.125-.458-.27-.25-.146-.458-.271l-2.438 1.021-2.354-4.063 2.083-1.583V9.458L1.625 7.875l2.354-4.063 2.438 1.021q.208-.125.458-.27.25-.146.458-.271l.313-2.625h4.708l.313 2.625q.208.125.458.271.25.145.458.27l2.438-1.021 2.354 4.063-2.063 1.583v1.084l2.063 1.583-2.354 4.063-2.438-1.021q-.208.125-.458.271-.25.145-.458.27l-.313 2.625ZM10 12.979q1.229 0 2.104-.875T12.979 10q0-1.229-.875-2.104T10 7.021q-1.229 0-2.104.875T7.021 10q0 1.229.875 2.104t2.104.875Zm0-1.75q-.5 0-.865-.364-.364-.365-.364-.865t.364-.865q.365-.364.865-.364t.865.364q.364.365.364.865t-.364.865q-.365.364-.865.364ZM10.021 10Zm-.854 6.583h1.666l.25-2.166q.605-.167 1.167-.5.562-.334 1.021-.792l2.021.854.833-1.375-1.771-1.354q.104-.292.146-.604.042-.313.042-.646 0-.292-.042-.594t-.125-.635l1.771-1.375-.834-1.375-2.02.875q-.48-.479-1.032-.802-.552-.323-1.156-.49l-.271-2.187H9.167l-.271 2.187q-.604.167-1.156.49-.552.323-1.011.781l-2.021-.854-.833 1.375 1.75 1.354q-.083.333-.125.646-.042.312-.042.604t.042.594q.042.302.125.635l-1.75 1.375.833 1.375 2.021-.854q.459.458 1.011.781.552.323 1.156.49Z" />
49
+ </svg>
50
+ );
51
+
52
+ const opinionatedTheme = {
53
+ button: {
54
+ baseColor: "#5f249f",
55
+ primaryFontColor: "#ffffff",
56
+ secondaryHoverFontColor: "#ffffff",
57
+ },
58
+ };
59
+
20
60
  export const Chromatic = () => (
21
61
  <>
22
62
  <Title title="Primary" theme="light" level={2} />
@@ -38,7 +78,7 @@ export const Chromatic = () => (
38
78
  </ExampleContainer>
39
79
  <ExampleContainer>
40
80
  <Title title="Disabled" theme="light" level={4} />
41
- <DxcButton label="Primary disabled" disabled />
81
+ <DxcButton label="Primary disabled" disabled icon={iconSVG} />
42
82
  </ExampleContainer>
43
83
  <ExampleContainer>
44
84
  <Title title="With left icon" theme="light" level={4} />
@@ -52,6 +92,18 @@ export const Chromatic = () => (
52
92
  <Title title="Only icon" theme="light" level={4} />
53
93
  <DxcButton icon={iconSVG} />
54
94
  </ExampleContainer>
95
+ <ExampleContainer>
96
+ <Title title="Big icon (SVG)" theme="light" level={4} />
97
+ <DxcButton icon={facebookIcon} />
98
+ </ExampleContainer>
99
+ <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} />
105
+ <DxcButton icon={smallIcon} />
106
+ </ExampleContainer>
55
107
  <Title title="Secondary" theme="light" level={2} />
56
108
  <ExampleContainer>
57
109
  <Title title="Enabled" theme="light" level={4} />
@@ -71,12 +123,19 @@ export const Chromatic = () => (
71
123
  </ExampleContainer>
72
124
  <ExampleContainer>
73
125
  <Title title="Disabled" theme="light" level={4} />
74
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
126
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
75
127
  </ExampleContainer>
76
128
  <ExampleContainer>
77
129
  <Title title="With icon" theme="light" level={4} />
78
130
  <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
79
131
  </ExampleContainer>
132
+ <ExampleContainer>
133
+ <Title title="Only icon (image)" theme="light" level={4} />
134
+ <DxcButton
135
+ mode="secondary"
136
+ icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
137
+ />
138
+ </ExampleContainer>
80
139
  <Title title="Text" theme="light" level={2} />
81
140
  <ExampleContainer>
82
141
  <Title title="Enabled" theme="light" level={4} />
@@ -96,12 +155,19 @@ export const Chromatic = () => (
96
155
  </ExampleContainer>
97
156
  <ExampleContainer>
98
157
  <Title title="Disabled" theme="light" level={4} />
99
- <DxcButton mode="text" label="Text disabled" disabled />
158
+ <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
100
159
  </ExampleContainer>
101
160
  <ExampleContainer>
102
161
  <Title title="With icon" theme="light" level={4} />
103
162
  <DxcButton label="Text" mode="text" icon={iconSVG} />
104
163
  </ExampleContainer>
164
+ <ExampleContainer>
165
+ <Title title="Only icon (image)" theme="light" level={4} />
166
+ <DxcButton
167
+ mode="text"
168
+ icon="https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png"
169
+ />
170
+ </ExampleContainer>
105
171
  <BackgroundColorProvider color="#333333">
106
172
  <DarkContainer>
107
173
  <Title title="Primary" theme="dark" level={2} />
@@ -123,7 +189,7 @@ export const Chromatic = () => (
123
189
  </ExampleContainer>
124
190
  <ExampleContainer>
125
191
  <Title title="Disabled" theme="dark" level={4} />
126
- <DxcButton label="Primary disabled" disabled />
192
+ <DxcButton label="Primary disabled" disabled icon={iconSVG} />
127
193
  </ExampleContainer>
128
194
  <ExampleContainer>
129
195
  <Title title="With icon" theme="dark" level={4} />
@@ -148,7 +214,7 @@ export const Chromatic = () => (
148
214
  </ExampleContainer>
149
215
  <ExampleContainer>
150
216
  <Title title="Disabled" theme="dark" level={4} />
151
- <DxcButton mode="secondary" disabled label="Secondary disabled" />
217
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
152
218
  </ExampleContainer>
153
219
  <ExampleContainer>
154
220
  <Title title="With icon" theme="dark" level={4} />
@@ -173,7 +239,7 @@ export const Chromatic = () => (
173
239
  </ExampleContainer>
174
240
  <ExampleContainer>
175
241
  <Title title="Disabled" theme="dark" level={4} />
176
- <DxcButton mode="text" label="Text disabled" disabled />
242
+ <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
177
243
  </ExampleContainer>
178
244
  <ExampleContainer>
179
245
  <Title title="With icon" theme="dark" level={4} />
@@ -279,5 +345,81 @@ export const Chromatic = () => (
279
345
  <DxcButton label="Button" />
280
346
  </DxcFlex>
281
347
  </ExampleContainer>
348
+ <Title title="Opinionated theme" theme="light" level={2} />
349
+ <Title title="Primary" theme="light" level={3} />
350
+ <ExampleContainer>
351
+ <Title title="Enabled" theme="light" level={4} />
352
+ <HalstackProvider theme={opinionatedTheme}>
353
+ <DxcButton label="Primary" icon={iconSVG} />
354
+ </HalstackProvider>
355
+ </ExampleContainer>
356
+ <ExampleContainer pseudoState="pseudo-hover">
357
+ <Title title="Hovered" theme="light" level={4} />
358
+ <DxcButton label="Primary hovered" icon={iconSVG} />
359
+ </ExampleContainer>
360
+ <ExampleContainer pseudoState="pseudo-focus">
361
+ <Title title="Focused" theme="light" level={4} />
362
+ <DxcButton label="Primary focused" icon={iconSVG} />
363
+ </ExampleContainer>
364
+ <ExampleContainer pseudoState="pseudo-active">
365
+ <Title title="Actived" theme="light" level={4} />
366
+ <DxcButton label="Primary actived" icon={iconSVG} />
367
+ </ExampleContainer>
368
+ <ExampleContainer>
369
+ <Title title="Disabled" theme="light" level={4} />
370
+ <HalstackProvider theme={opinionatedTheme}>
371
+ <DxcButton label="Primary" icon={iconSVG} disabled />
372
+ </HalstackProvider>
373
+ </ExampleContainer>
374
+ <Title title="Secondary" theme="light" level={3} />
375
+ <ExampleContainer>
376
+ <Title title="Enabled" theme="light" level={4} />
377
+ <HalstackProvider theme={opinionatedTheme}>
378
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
379
+ </HalstackProvider>
380
+ </ExampleContainer>
381
+ <ExampleContainer pseudoState="pseudo-hover">
382
+ <Title title="Hovered" theme="light" level={4} />
383
+ <DxcButton mode="secondary" label="Secondary hovered" icon={iconSVG} />
384
+ </ExampleContainer>
385
+ <ExampleContainer pseudoState="pseudo-focus">
386
+ <Title title="Focused" theme="light" level={4} />
387
+ <DxcButton mode="secondary" label="Secondary focused" icon={iconSVG} />
388
+ </ExampleContainer>
389
+ <ExampleContainer pseudoState="pseudo-active">
390
+ <Title title="Actived" theme="light" level={4} />
391
+ <DxcButton mode="secondary" label="Secondary actived" icon={iconSVG} />
392
+ </ExampleContainer>
393
+ <ExampleContainer>
394
+ <Title title="Disabled" theme="light" level={4} />
395
+ <HalstackProvider theme={opinionatedTheme}>
396
+ <DxcButton mode="secondary" label="Secondary" icon={iconSVG} disabled />
397
+ </HalstackProvider>
398
+ </ExampleContainer>
399
+ <Title title="Text" theme="light" level={3} />
400
+ <ExampleContainer>
401
+ <Title title="Enabled" theme="light" level={4} />
402
+ <HalstackProvider theme={opinionatedTheme}>
403
+ <DxcButton mode="text" label="Text" icon={iconSVG} />
404
+ </HalstackProvider>
405
+ </ExampleContainer>
406
+ <ExampleContainer pseudoState="pseudo-hover">
407
+ <Title title="Hovered" theme="light" level={4} />
408
+ <DxcButton mode="text" label="Text hovered" icon={iconSVG} />
409
+ </ExampleContainer>
410
+ <ExampleContainer pseudoState="pseudo-focus">
411
+ <Title title="Focused" theme="light" level={4} />
412
+ <DxcButton mode="text" label="Text focused" icon={iconSVG} />
413
+ </ExampleContainer>
414
+ <ExampleContainer pseudoState="pseudo-active">
415
+ <Title title="Actived" theme="light" level={4} />
416
+ <DxcButton mode="text" label="Text actived" icon={iconSVG} />
417
+ </ExampleContainer>
418
+ <ExampleContainer>
419
+ <Title title="Disabled" theme="light" level={4} />
420
+ <HalstackProvider theme={opinionatedTheme}>
421
+ <DxcButton mode="text" label="Text disabled" icon={iconSVG} disabled />
422
+ </HalstackProvider>
423
+ </ExampleContainer>
282
424
  </>
283
425
  );
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Button = _interopRequireDefault(require("./Button"));
9
+ var _Button = _interopRequireDefault(require("./Button.tsx"));
10
10
 
11
11
  describe("Button component tests", function () {
12
12
  test("Button renders with correct text", function () {
package/button/types.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export declare type Margin = {
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- export declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type Props = {
11
11
  /**
12
12
  * Text to be placed in the button.
package/card/Card.js CHANGED
@@ -19,7 +19,7 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
- var _variables = require("../common/variables.js");
22
+ var _variables = require("../common/variables");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
@@ -60,7 +60,7 @@ var DxcCard = function DxcCard(_ref) {
60
60
  imageBgColor: imageBgColor
61
61
  }, /*#__PURE__*/_react["default"].createElement(TagImage, {
62
62
  imagePadding: imagePadding,
63
- cover: imageCover,
63
+ imageCover: imageCover,
64
64
  src: imageSrc
65
65
  }));
66
66
 
@@ -82,14 +82,13 @@ var DxcCard = function DxcCard(_ref) {
82
82
  }, /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
83
83
  theme: colorsTheme.card
84
84
  }, /*#__PURE__*/_react["default"].createElement(CardContainer, {
85
- hasAction: onClick || linkHref,
86
- imagePosition: imagePosition
85
+ hasAction: onClick || linkHref
87
86
  }, imageSrc && imagePosition === "before" && imageComponent, /*#__PURE__*/_react["default"].createElement(CardContent, {
88
87
  contentPadding: contentPadding
89
88
  }, children), imageSrc && imagePosition === "after" && imageComponent))));
90
89
  };
91
90
 
92
- var StyledDxcCard = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n cursor: ", ";\n outline: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n text-decoration: none;\n\n ", "\n"])), function (_ref2) {
91
+ var StyledDxcCard = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n cursor: ", ";\n outline: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n text-decoration: none;\n ", "\n"])), function (_ref2) {
93
92
  var hasAction = _ref2.hasAction;
94
93
  return hasAction && "pointer" || "unset";
95
94
  }, function (_ref3) {
@@ -100,16 +99,16 @@ var StyledDxcCard = _styledComponents["default"].div(_templateObject || (_templa
100
99
  return margin && (0, _typeof2["default"])(margin) !== "object" ? _variables.spaces[margin] : "0px";
101
100
  }, function (_ref5) {
102
101
  var margin = _ref5.margin;
103
- return margin && margin.top ? _variables.spaces[margin.top] : "";
102
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.top ? _variables.spaces[margin.top] : "";
104
103
  }, function (_ref6) {
105
104
  var margin = _ref6.margin;
106
- return margin && margin.right ? _variables.spaces[margin.right] : "";
105
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.right ? _variables.spaces[margin.right] : "";
107
106
  }, function (_ref7) {
108
107
  var margin = _ref7.margin;
109
- return margin && margin.bottom ? _variables.spaces[margin.bottom] : "";
108
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.bottom ? _variables.spaces[margin.bottom] : "";
110
109
  }, function (_ref8) {
111
110
  var margin = _ref8.margin;
112
- return margin && margin.left ? _variables.spaces[margin.left] : "";
111
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.left ? _variables.spaces[margin.left] : "";
113
112
  }, function (_ref9) {
114
113
  var hasAction = _ref9.hasAction;
115
114
  return hasAction && ":focus {\n outline: #0095ff auto 1px;\n }";
@@ -126,13 +125,13 @@ var CardContainer = _styledComponents["default"].div(_templateObject2 || (_templ
126
125
 
127
126
  var TagImage = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n height: ", ";\n width: ", ";\n object-fit: ", ";\n"])), function (_ref11) {
128
127
  var imagePadding = _ref11.imagePadding;
129
- return !imagePadding ? "100%" : "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
128
+ return !imagePadding ? "100%" : (0, _typeof2["default"])(imagePadding) !== "object" && "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
130
129
  }, function (_ref12) {
131
130
  var imagePadding = _ref12.imagePadding;
132
- return !imagePadding ? "100%" : "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
131
+ return !imagePadding ? "100%" : (0, _typeof2["default"])(imagePadding) !== "object" && "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
133
132
  }, function (_ref13) {
134
- var cover = _ref13.cover;
135
- return cover ? "cover" : "contain";
133
+ var imageCover = _ref13.imageCover;
134
+ return imageCover ? "cover" : "contain";
136
135
  });
137
136
 
138
137
  var ImageContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 35%;\n height: 100%;\n flex-shrink: 0;\n background: ", ";\n justify-content: center;\n align-items: center;\n display: inline-flex;\n"])), function (_ref14) {
@@ -2,7 +2,6 @@ import React from "react";
2
2
  import Title from "../../.storybook/components/Title";
3
3
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
4
4
  import DxcCard from "./Card";
5
- import imagePath from "./ice-cream.jpg";
6
5
  import { userEvent, within } from "@storybook/testing-library";
7
6
 
8
7
  export default {
@@ -38,72 +37,72 @@ const Card = () => (
38
37
  </ExampleContainer>
39
38
  <Title title="Default with image" theme="light" level={4} />
40
39
  <ExampleContainer>
41
- <DxcCard imageSrc={imagePath}>Default</DxcCard>
40
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300">Default</DxcCard>
42
41
  </ExampleContainer>
43
42
  <Title title="Default image with background color" theme="light" level={4} />
44
43
  <ExampleContainer>
45
- <DxcCard imageSrc={imagePath} imageBgColor="yellow">
44
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imageBgColor="yellow">
46
45
  Background color
47
46
  </DxcCard>
48
47
  </ExampleContainer>
49
48
  <Title title="Default image with position after" theme="light" level={4} />
50
49
  <ExampleContainer>
51
- <DxcCard imageSrc={imagePath} imagePosition="after">
50
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePosition="after">
52
51
  Position after
53
52
  </DxcCard>
54
53
  </ExampleContainer>
55
54
  <Title title="Image cover" theme="light" level={4} />
56
55
  <ExampleContainer>
57
- <DxcCard imageSrc={imagePath} imageCover>
56
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imageCover>
58
57
  Image cover
59
58
  </DxcCard>
60
59
  </ExampleContainer>
61
60
  <Title title="Image cover with position after" theme="light" level={4} />
62
61
  <ExampleContainer>
63
- <DxcCard imageSrc={imagePath} imageCover imagePosition="after">
62
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imageCover imagePosition="after">
64
63
  Image cover with position after
65
64
  </DxcCard>
66
65
  </ExampleContainer>
67
66
  <Title title="Image padding" theme="light" level={2} />
68
67
  <ExampleContainer>
69
68
  <Title title="Xxsmall" theme="light" level={4} />
70
- <DxcCard imageSrc={imagePath} imagePadding="xxsmall" imageCover>
69
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xxsmall" imageCover>
71
70
  Xxsmall
72
71
  </DxcCard>
73
72
  </ExampleContainer>
74
73
  <ExampleContainer>
75
74
  <Title title="Xsmall" theme="light" level={4} />
76
- <DxcCard imageSrc={imagePath} imagePadding="xsmall" imageCover>
75
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xsmall" imageCover>
77
76
  Xsmall
78
77
  </DxcCard>
79
78
  </ExampleContainer>
80
79
  <ExampleContainer>
81
80
  <Title title="Small" theme="light" level={4} />
82
- <DxcCard imageSrc={imagePath} imagePadding="small" imageCover>
81
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="small" imageCover>
83
82
  Small
84
83
  </DxcCard>
85
84
  </ExampleContainer>
86
85
  <ExampleContainer>
87
86
  <Title title="Medium" theme="light" level={4} />
88
- <DxcCard imageSrc={imagePath} imagePadding="medium" imageCover>
87
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="medium" imageCover>
89
88
  Medium
90
89
  </DxcCard>
91
90
  </ExampleContainer>
92
91
  <ExampleContainer>
93
92
  <Title title="Large" theme="light" level={4} />
94
- <DxcCard imageSrc={imagePath} imagePadding="large" imageCover>
93
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="large" imageCover>
95
94
  Large
96
95
  </DxcCard>
97
96
  </ExampleContainer>
98
97
  <ExampleContainer>
99
98
  <Title title="Xlarge" theme="light" level={4} />
100
- <DxcCard imageSrc={imagePath} imagePadding="xlarge" imageCover>
99
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xlarge" imageCover>
101
100
  Xlarge
102
101
  </DxcCard>
103
102
  </ExampleContainer>
104
103
  <ExampleContainer>
105
104
  <Title title="Xxlarge" theme="light" level={4} />
106
- <DxcCard imageSrc={imagePath} imagePadding="xxlarge" imageCover>
105
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xxlarge" imageCover>
107
106
  Xxlarge
108
107
  </DxcCard>
109
108
  </ExampleContainer>
package/card/Card.test.js CHANGED
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Card = _interopRequireDefault(require("./Card"));
9
+ var _Card = _interopRequireDefault(require("./Card.tsx"));
10
10
 
11
11
  describe("Card component tests", function () {
12
12
  test("Card renders with correct content", function () {
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import CheckboxPropsType from "./types";
3
- declare const DxcCheckbox: ({ checked, defaultChecked, value, label, labelPosition, name, disabled, optional, onChange, margin, size, tabIndex, }: CheckboxPropsType) => JSX.Element;
3
+ declare const DxcCheckbox: React.ForwardRefExoticComponent<CheckboxPropsType & React.RefAttributes<HTMLDivElement>>;
4
4
  export default DxcCheckbox;
@@ -19,9 +19,9 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
- var _variables = require("../common/variables.js");
22
+ var _variables = require("../common/variables");
23
23
 
24
- var _utils = require("../common/utils.js");
24
+ var _utils = require("../common/utils");
25
25
 
26
26
  var _uuid = require("uuid");
27
27
 
@@ -46,7 +46,7 @@ var checkedIcon = /*#__PURE__*/_react["default"].createElement("svg", {
46
46
  d: "M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
47
47
  }));
48
48
 
49
- var DxcCheckbox = function DxcCheckbox(_ref) {
49
+ var DxcCheckbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
50
50
  var checked = _ref.checked,
51
51
  _ref$defaultChecked = _ref.defaultChecked,
52
52
  defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,
@@ -109,7 +109,8 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
109
109
  margin: margin,
110
110
  size: size,
111
111
  checked: checked !== null && checked !== void 0 ? checked : innerChecked,
112
- backgroundType: backgroundType
112
+ backgroundType: backgroundType,
113
+ ref: ref
113
114
  }, label && labelPosition === "before" && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
114
115
  id: labelId,
115
116
  disabled: disabled,
@@ -139,7 +140,7 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
139
140
  disabled: disabled,
140
141
  backgroundType: backgroundType
141
142
  }, optional && "".concat(translatedLabels.formFields.optionalLabel, " "), label)));
142
- };
143
+ });
143
144
 
144
145
  var sizes = {
145
146
  small: "120px",
@@ -173,7 +174,7 @@ var getDisabledColor = function getDisabledColor(props, element) {
173
174
  }
174
175
  };
175
176
 
176
- var getNotDisabledColor = function getNotDisabledColor(props, element) {
177
+ var getEnabledColor = function getEnabledColor(props, element) {
177
178
  switch (element) {
178
179
  case "check":
179
180
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
@@ -196,7 +197,7 @@ var getNotDisabledColor = function getNotDisabledColor(props, element) {
196
197
  };
197
198
 
198
199
  var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
199
- return props.disabled ? getDisabledColor(props, "label") : getNotDisabledColor(props, "label");
200
+ return props.disabled ? getDisabledColor(props, "label") : getEnabledColor(props, "label");
200
201
  }, function (props) {
201
202
  return props.theme.fontFamily;
202
203
  }, function (props) {
@@ -209,19 +210,21 @@ var ValueInput = _styledComponents["default"].input(_templateObject2 || (_templa
209
210
 
210
211
  var CheckboxContainer = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
211
212
 
212
- var Checkbox = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 18px;\n width: 18px;\n border: solid 2px\n ", ";\n border-radius: 2px;\n background-color: ", ";\n color: ", ";\n\n &:focus {\n outline: 2px solid\n ", ";\n outline-offset: 2px;\n }\n svg {\n position: absolute;\n width: 22px;\n height: 22px;\n }\n ", "\n"])), function (props) {
213
- return props.disabled ? getDisabledColor(props, "border") : getNotDisabledColor(props, "border");
213
+ var Checkbox = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 18px;\n width: 18px;\n border: 2px solid\n ", ";\n border-radius: 2px;\n background-color: ", ";\n color: ", ";\n\n &:focus {\n outline: 2px solid\n ", ";\n outline-offset: 2px;\n }\n svg {\n position: absolute;\n width: 22px;\n height: 22px;\n }\n ", "\n"])), function (props) {
214
+ return props.disabled ? getDisabledColor(props, "border") : getEnabledColor(props, "border");
214
215
  }, function (props) {
215
- return props.checked ? props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check") : "transparent";
216
+ return props.checked ? props.disabled ? getDisabledColor(props, "check") : getEnabledColor(props, "check") : "transparent";
216
217
  }, function (props) {
217
- return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "background");
218
+ return props.disabled ? getDisabledColor(props, "background") : getEnabledColor(props, "background");
218
219
  }, function (props) {
219
220
  return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
220
221
  }, function (props) {
221
222
  return props.disabled && "pointer-events: none;";
222
223
  });
223
224
 
224
- var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n gap: ", ";\n\n &:hover ", " {\n border: 2px solid\n ", ";\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
225
+ var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n\n &:hover ", " {\n border: 2px solid\n ", ";\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
226
+ return props.theme.checkLabelSpacing;
227
+ }, function (props) {
225
228
  return calculateWidth(props.margin, props.size);
226
229
  }, function (props) {
227
230
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
@@ -235,14 +238,12 @@ var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templ
235
238
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
236
239
  }, function (props) {
237
240
  return props.disabled ? "not-allowed" : "pointer";
238
- }, function (props) {
239
- return props.theme.checkLabelSpacing;
240
241
  }, Checkbox, function (props) {
241
- return props.disabled ? getDisabledColor(props, "border") : getNotDisabledColor(props, "hoverBorder");
242
+ return props.disabled ? getDisabledColor(props, "border") : getEnabledColor(props, "hoverBorder");
242
243
  }, function (props) {
243
- return props.checked ? props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check") : "transparent";
244
+ return props.checked ? props.disabled ? getDisabledColor(props, "check") : getEnabledColor(props, "check") : "transparent";
244
245
  }, function (props) {
245
- return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "hoverBackground");
246
+ return props.disabled ? getDisabledColor(props, "background") : getEnabledColor(props, "hoverBackground");
246
247
  });
247
248
 
248
249
  var _default = DxcCheckbox;