@dxc-technology/halstack-react 0.0.0-b92e300 → 0.0.0-b98c25c

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 (335) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +295 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +124 -137
  7. package/accordion/Accordion.stories.tsx +306 -0
  8. package/accordion/Accordion.test.js +71 -0
  9. package/accordion/types.d.ts +12 -11
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +16 -37
  12. package/accordion-group/AccordionGroup.stories.tsx +251 -0
  13. package/accordion-group/AccordionGroup.test.js +126 -0
  14. package/accordion-group/types.d.ts +17 -10
  15. package/alert/Alert.js +7 -4
  16. package/alert/Alert.stories.tsx +170 -0
  17. package/alert/Alert.test.js +92 -0
  18. package/alert/types.d.ts +1 -1
  19. package/badge/Badge.d.ts +4 -0
  20. package/badge/Badge.js +6 -4
  21. package/badge/types.d.ts +5 -0
  22. package/{radio → badge}/types.js +0 -0
  23. package/bleed/Bleed.d.ts +3 -0
  24. package/bleed/Bleed.js +51 -0
  25. package/bleed/Bleed.stories.tsx +341 -0
  26. package/bleed/types.d.ts +37 -0
  27. package/bleed/types.js +5 -0
  28. package/box/Box.d.ts +4 -0
  29. package/box/Box.js +29 -65
  30. package/box/Box.stories.tsx +132 -0
  31. package/box/Box.test.js +18 -0
  32. package/box/types.d.ts +44 -0
  33. package/box/types.js +5 -0
  34. package/bulleted-list/BulletedList.d.ts +7 -0
  35. package/bulleted-list/BulletedList.js +123 -0
  36. package/bulleted-list/BulletedList.stories.tsx +200 -0
  37. package/bulleted-list/types.d.ts +11 -0
  38. package/bulleted-list/types.js +5 -0
  39. package/button/Button.d.ts +1 -1
  40. package/button/Button.js +61 -87
  41. package/button/Button.stories.tsx +232 -242
  42. package/button/Button.test.js +35 -0
  43. package/button/types.d.ts +14 -18
  44. package/card/Card.js +26 -30
  45. package/card/Card.stories.tsx +201 -0
  46. package/card/Card.test.js +50 -0
  47. package/card/ice-cream.jpg +0 -0
  48. package/card/types.d.ts +5 -6
  49. package/checkbox/Checkbox.d.ts +1 -1
  50. package/checkbox/Checkbox.js +104 -108
  51. package/checkbox/Checkbox.stories.tsx +188 -0
  52. package/checkbox/Checkbox.test.js +155 -0
  53. package/checkbox/types.d.ts +11 -7
  54. package/chip/Chip.d.ts +4 -0
  55. package/chip/Chip.js +16 -76
  56. package/chip/Chip.stories.tsx +119 -0
  57. package/chip/Chip.test.js +56 -0
  58. package/chip/types.d.ts +45 -0
  59. package/chip/types.js +5 -0
  60. package/common/variables.js +319 -380
  61. package/date-input/DateInput.js +66 -55
  62. package/date-input/DateInput.stories.tsx +138 -0
  63. package/date-input/DateInput.test.js +479 -0
  64. package/date-input/types.d.ts +16 -9
  65. package/dialog/Dialog.d.ts +4 -0
  66. package/dialog/Dialog.js +52 -74
  67. package/dialog/Dialog.stories.tsx +267 -0
  68. package/dialog/Dialog.test.js +70 -0
  69. package/dialog/types.d.ts +44 -0
  70. package/dialog/types.js +5 -0
  71. package/dropdown/Dropdown.d.ts +4 -0
  72. package/dropdown/Dropdown.js +240 -303
  73. package/dropdown/Dropdown.stories.tsx +312 -0
  74. package/dropdown/Dropdown.test.js +591 -0
  75. package/dropdown/DropdownMenu.d.ts +4 -0
  76. package/dropdown/DropdownMenu.js +80 -0
  77. package/dropdown/DropdownMenuItem.d.ts +4 -0
  78. package/dropdown/DropdownMenuItem.js +92 -0
  79. package/dropdown/types.d.ts +100 -0
  80. package/dropdown/types.js +5 -0
  81. package/file-input/FileInput.d.ts +4 -0
  82. package/file-input/FileInput.js +172 -111
  83. package/file-input/FileInput.stories.tsx +507 -0
  84. package/file-input/FileInput.test.js +457 -0
  85. package/file-input/FileItem.d.ts +14 -0
  86. package/file-input/FileItem.js +16 -23
  87. package/file-input/types.d.ts +112 -0
  88. package/file-input/types.js +5 -0
  89. package/flex/Flex.d.ts +4 -0
  90. package/flex/Flex.js +57 -0
  91. package/flex/Flex.stories.tsx +103 -0
  92. package/flex/types.d.ts +21 -0
  93. package/flex/types.js +5 -0
  94. package/footer/Footer.d.ts +4 -0
  95. package/footer/Footer.js +36 -148
  96. package/footer/Footer.stories.tsx +137 -0
  97. package/footer/Footer.test.js +109 -0
  98. package/footer/Icons.d.ts +2 -0
  99. package/footer/Icons.js +4 -4
  100. package/footer/types.d.ts +66 -0
  101. package/footer/types.js +5 -0
  102. package/header/Header.d.ts +7 -0
  103. package/header/Header.js +119 -140
  104. package/header/Header.stories.tsx +172 -0
  105. package/header/Header.test.js +79 -0
  106. package/header/Icons.d.ts +2 -0
  107. package/header/Icons.js +4 -29
  108. package/header/types.d.ts +48 -0
  109. package/header/types.js +5 -0
  110. package/heading/Heading.d.ts +4 -0
  111. package/heading/Heading.js +7 -24
  112. package/heading/Heading.stories.tsx +54 -0
  113. package/heading/Heading.test.js +186 -0
  114. package/heading/types.d.ts +33 -0
  115. package/heading/types.js +5 -0
  116. package/inset/Inset.d.ts +3 -0
  117. package/inset/Inset.js +51 -0
  118. package/inset/Inset.stories.tsx +229 -0
  119. package/inset/types.d.ts +37 -0
  120. package/inset/types.js +5 -0
  121. package/layout/ApplicationLayout.d.ts +20 -0
  122. package/layout/ApplicationLayout.js +71 -135
  123. package/layout/ApplicationLayout.stories.tsx +162 -0
  124. package/layout/Icons.d.ts +5 -0
  125. package/layout/Icons.js +13 -2
  126. package/layout/SidenavContext.d.ts +5 -0
  127. package/layout/SidenavContext.js +19 -0
  128. package/layout/types.d.ts +42 -0
  129. package/layout/types.js +5 -0
  130. package/link/Link.d.ts +4 -0
  131. package/link/Link.js +60 -107
  132. package/link/Link.stories.tsx +193 -0
  133. package/link/Link.test.js +83 -0
  134. package/link/types.d.ts +54 -0
  135. package/link/types.js +5 -0
  136. package/main.d.ts +12 -12
  137. package/main.js +64 -58
  138. package/number-input/NumberInput.d.ts +4 -0
  139. package/number-input/NumberInput.js +16 -68
  140. package/number-input/NumberInput.stories.tsx +115 -0
  141. package/number-input/NumberInput.test.js +506 -0
  142. package/number-input/NumberInputContext.d.ts +4 -0
  143. package/number-input/NumberInputContext.js +5 -2
  144. package/number-input/numberInputContextTypes.d.ts +19 -0
  145. package/number-input/numberInputContextTypes.js +5 -0
  146. package/number-input/types.d.ts +124 -0
  147. package/number-input/types.js +5 -0
  148. package/package.json +16 -12
  149. package/paginator/Paginator.js +19 -46
  150. package/paginator/Paginator.stories.tsx +63 -0
  151. package/paginator/Paginator.test.js +308 -0
  152. package/paragraph/Paragraph.d.ts +6 -0
  153. package/paragraph/Paragraph.js +38 -0
  154. package/paragraph/Paragraph.stories.tsx +44 -0
  155. package/password-input/PasswordInput.d.ts +4 -0
  156. package/password-input/PasswordInput.js +22 -55
  157. package/password-input/{PasswordInput.stories.jsx → PasswordInput.stories.tsx} +4 -4
  158. package/password-input/PasswordInput.test.js +180 -0
  159. package/password-input/types.d.ts +110 -0
  160. package/password-input/types.js +5 -0
  161. package/progress-bar/ProgressBar.d.ts +2 -2
  162. package/progress-bar/ProgressBar.js +60 -54
  163. package/progress-bar/ProgressBar.stories.jsx +60 -0
  164. package/progress-bar/ProgressBar.test.js +110 -0
  165. package/progress-bar/types.d.ts +3 -4
  166. package/quick-nav/QuickNav.d.ts +4 -0
  167. package/quick-nav/QuickNav.js +115 -0
  168. package/quick-nav/QuickNav.stories.tsx +300 -0
  169. package/quick-nav/types.d.ts +21 -0
  170. package/quick-nav/types.js +5 -0
  171. package/radio-group/Radio.d.ts +4 -0
  172. package/radio-group/Radio.js +156 -0
  173. package/radio-group/RadioGroup.d.ts +4 -0
  174. package/radio-group/RadioGroup.js +279 -0
  175. package/radio-group/RadioGroup.stories.tsx +101 -0
  176. package/radio-group/RadioGroup.test.js +665 -0
  177. package/radio-group/types.d.ts +114 -0
  178. package/radio-group/types.js +5 -0
  179. package/resultsetTable/ResultsetTable.d.ts +4 -0
  180. package/resultsetTable/ResultsetTable.js +9 -29
  181. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  182. package/resultsetTable/ResultsetTable.test.js +348 -0
  183. package/resultsetTable/types.d.ts +67 -0
  184. package/resultsetTable/types.js +5 -0
  185. package/select/Icons.d.ts +10 -0
  186. package/select/Icons.js +93 -0
  187. package/select/Listbox.d.ts +4 -0
  188. package/select/Listbox.js +198 -0
  189. package/select/Option.d.ts +4 -0
  190. package/select/Option.js +110 -0
  191. package/select/Select.d.ts +4 -0
  192. package/select/Select.js +158 -380
  193. package/select/Select.stories.tsx +627 -0
  194. package/select/Select.test.js +2175 -0
  195. package/select/types.d.ts +210 -0
  196. package/select/types.js +5 -0
  197. package/sidenav/Sidenav.d.ts +10 -0
  198. package/sidenav/Sidenav.js +186 -63
  199. package/sidenav/Sidenav.stories.tsx +180 -0
  200. package/sidenav/Sidenav.test.js +44 -0
  201. package/sidenav/types.d.ts +73 -0
  202. package/sidenav/types.js +5 -0
  203. package/slider/Slider.d.ts +1 -1
  204. package/slider/Slider.js +145 -109
  205. package/slider/Slider.stories.tsx +183 -0
  206. package/slider/Slider.test.js +250 -0
  207. package/slider/types.d.ts +8 -9
  208. package/spinner/Spinner.d.ts +4 -0
  209. package/spinner/Spinner.js +9 -26
  210. package/spinner/Spinner.stories.jsx +103 -0
  211. package/spinner/Spinner.test.js +64 -0
  212. package/spinner/types.d.ts +32 -0
  213. package/spinner/types.js +5 -0
  214. package/switch/Switch.d.ts +2 -2
  215. package/switch/Switch.js +149 -67
  216. package/switch/Switch.stories.tsx +138 -0
  217. package/switch/Switch.test.js +225 -0
  218. package/switch/types.d.ts +9 -6
  219. package/table/Table.d.ts +4 -0
  220. package/table/Table.js +3 -3
  221. package/table/Table.stories.jsx +277 -0
  222. package/table/Table.test.js +26 -0
  223. package/table/types.d.ts +21 -0
  224. package/table/types.js +5 -0
  225. package/tabs/Tab.d.ts +4 -0
  226. package/tabs/Tab.js +135 -0
  227. package/tabs/Tabs.d.ts +4 -0
  228. package/tabs/Tabs.js +364 -156
  229. package/tabs/Tabs.stories.tsx +186 -0
  230. package/tabs/Tabs.test.js +351 -0
  231. package/tabs/types.d.ts +92 -0
  232. package/tabs/types.js +5 -0
  233. package/tabs-nav/NavTabs.d.ts +8 -0
  234. package/tabs-nav/NavTabs.js +125 -0
  235. package/tabs-nav/NavTabs.stories.tsx +170 -0
  236. package/tabs-nav/NavTabs.test.js +82 -0
  237. package/tabs-nav/Tab.d.ts +4 -0
  238. package/tabs-nav/Tab.js +130 -0
  239. package/tabs-nav/types.d.ts +53 -0
  240. package/tabs-nav/types.js +5 -0
  241. package/tag/Tag.d.ts +4 -0
  242. package/tag/Tag.js +35 -60
  243. package/tag/Tag.stories.tsx +142 -0
  244. package/tag/Tag.test.js +60 -0
  245. package/tag/types.d.ts +69 -0
  246. package/tag/types.js +5 -0
  247. package/text-input/Icons.d.ts +8 -0
  248. package/text-input/Icons.js +60 -0
  249. package/text-input/Suggestion.d.ts +4 -0
  250. package/text-input/Suggestion.js +57 -0
  251. package/text-input/Suggestions.d.ts +4 -0
  252. package/text-input/Suggestions.js +134 -0
  253. package/text-input/TextInput.d.ts +4 -0
  254. package/text-input/TextInput.js +166 -328
  255. package/text-input/TextInput.stories.tsx +481 -0
  256. package/text-input/TextInput.test.js +1713 -0
  257. package/text-input/types.d.ts +192 -0
  258. package/text-input/types.js +5 -0
  259. package/textarea/Textarea.d.ts +4 -0
  260. package/textarea/Textarea.js +39 -79
  261. package/textarea/Textarea.stories.jsx +37 -15
  262. package/textarea/Textarea.test.js +437 -0
  263. package/textarea/types.d.ts +137 -0
  264. package/textarea/types.js +5 -0
  265. package/toggle-group/ToggleGroup.d.ts +4 -0
  266. package/toggle-group/ToggleGroup.js +18 -46
  267. package/toggle-group/ToggleGroup.stories.tsx +173 -0
  268. package/toggle-group/ToggleGroup.test.js +156 -0
  269. package/toggle-group/types.d.ts +105 -0
  270. package/toggle-group/types.js +5 -0
  271. package/typography/Typography.d.ts +4 -0
  272. package/typography/Typography.js +131 -0
  273. package/typography/Typography.stories.tsx +198 -0
  274. package/typography/types.d.ts +18 -0
  275. package/typography/types.js +5 -0
  276. package/useTheme.d.ts +2 -0
  277. package/useTheme.js +2 -2
  278. package/useTranslatedLabels.d.ts +2 -0
  279. package/useTranslatedLabels.js +20 -0
  280. package/wizard/Wizard.d.ts +4 -0
  281. package/wizard/Wizard.js +118 -104
  282. package/wizard/Wizard.stories.tsx +233 -0
  283. package/wizard/Wizard.test.js +141 -0
  284. package/wizard/types.d.ts +65 -0
  285. package/wizard/types.js +5 -0
  286. package/ThemeContext.js +0 -246
  287. package/V3Select/V3Select.js +0 -455
  288. package/V3Select/index.d.ts +0 -27
  289. package/V3Textarea/V3Textarea.js +0 -260
  290. package/V3Textarea/index.d.ts +0 -27
  291. package/box/index.d.ts +0 -25
  292. package/chip/index.d.ts +0 -22
  293. package/date/Date.js +0 -373
  294. package/date/index.d.ts +0 -27
  295. package/dialog/index.d.ts +0 -18
  296. package/dropdown/index.d.ts +0 -26
  297. package/file-input/index.d.ts +0 -81
  298. package/footer/index.d.ts +0 -25
  299. package/header/index.d.ts +0 -25
  300. package/heading/index.d.ts +0 -17
  301. package/input-text/Icons.js +0 -22
  302. package/input-text/InputText.js +0 -611
  303. package/input-text/index.d.ts +0 -36
  304. package/link/index.d.ts +0 -23
  305. package/number-input/index.d.ts +0 -113
  306. package/password-input/index.d.ts +0 -94
  307. package/radio/Radio.d.ts +0 -4
  308. package/radio/Radio.js +0 -174
  309. package/radio/types.d.ts +0 -54
  310. package/resultsetTable/index.d.ts +0 -19
  311. package/select/index.d.ts +0 -131
  312. package/sidenav/index.d.ts +0 -13
  313. package/spinner/index.d.ts +0 -17
  314. package/table/index.d.ts +0 -13
  315. package/tabs/index.d.ts +0 -19
  316. package/tag/index.d.ts +0 -24
  317. package/text-input/index.d.ts +0 -135
  318. package/textarea/index.d.ts +0 -117
  319. package/toggle/Toggle.js +0 -186
  320. package/toggle/index.d.ts +0 -21
  321. package/toggle-group/index.d.ts +0 -21
  322. package/upload/Upload.js +0 -201
  323. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  324. package/upload/buttons-upload/Icons.js +0 -40
  325. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  326. package/upload/dragAndDropArea/Icons.js +0 -39
  327. package/upload/file-upload/FileToUpload.js +0 -115
  328. package/upload/file-upload/Icons.js +0 -66
  329. package/upload/files-upload/FilesToUpload.js +0 -109
  330. package/upload/index.d.ts +0 -15
  331. package/upload/transaction/Icons.js +0 -160
  332. package/upload/transaction/Transaction.js +0 -104
  333. package/upload/transactions/Transactions.js +0 -94
  334. package/wizard/Icons.js +0 -65
  335. package/wizard/index.d.ts +0 -18
@@ -0,0 +1,300 @@
1
+ import React from "react";
2
+ import styled from "styled-components";
3
+ import DxcQuickNav from "./QuickNav";
4
+ import DxcHeading from "../heading/Heading";
5
+ import DxcParagraph from "../paragraph/Paragraph";
6
+ import Title from "../../.storybook/components/Title";
7
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
8
+
9
+ export default {
10
+ title: "QuickNav",
11
+ component: DxcQuickNav,
12
+ };
13
+
14
+ const defaultLinks = [
15
+ {
16
+ label: "Overview",
17
+ id: "overview",
18
+ },
19
+ {
20
+ label: "Principles",
21
+ id: "principles",
22
+ links: [
23
+ { label: "Color", id: "color" },
24
+ { label: "Spacing", id: "spacing" },
25
+ { label: "Typography", id: "typography" },
26
+ ],
27
+ },
28
+ {
29
+ label: "Components",
30
+ id: "components",
31
+ links: [
32
+ {
33
+ label: "Accordion",
34
+ id: "accordion",
35
+ },
36
+ {
37
+ label: "Button",
38
+ id: "button",
39
+ },
40
+ ],
41
+ },
42
+ ];
43
+
44
+ const links = [
45
+ {
46
+ label: "Overview",
47
+ id: "overview",
48
+ links: [
49
+ {
50
+ label: "Introduction",
51
+ id: "introduction",
52
+ },
53
+ ],
54
+ },
55
+ {
56
+ label: "Principles very very very very very very very very long",
57
+ id: "principles",
58
+ links: [
59
+ { label: "Color very very very very very very very very long", id: "color" },
60
+ { label: "Spacingveryveryveryveryveryveryveryverylong", id: "spacing" },
61
+ { label: "Typography", id: "typography" },
62
+ ],
63
+ },
64
+ {
65
+ label: "Componentsveryveryveryveryveryveryveryverylong",
66
+ id: "components",
67
+ links: [
68
+ {
69
+ label: "Accordion",
70
+ id: "accordion",
71
+ },
72
+ ],
73
+ },
74
+ ];
75
+
76
+ export const Chromatic = () => (
77
+ <>
78
+ <ExampleContainer>
79
+ <Title title="Default" level={4} />
80
+ <QuickNavContainer>
81
+ <DxcQuickNav links={defaultLinks} />
82
+ </QuickNavContainer>
83
+ </ExampleContainer>
84
+ <ExampleContainer>
85
+ <Title title="Text overflow" level={4} />
86
+ <QuickNavContainer>
87
+ <DxcQuickNav links={links} />
88
+ </QuickNavContainer>
89
+ </ExampleContainer>
90
+ <ExampleContainer pseudoState="pseudo-hover">
91
+ <Title title="Link hovered" level={4} />
92
+ <QuickNavContainer>
93
+ <DxcQuickNav links={links} />
94
+ </QuickNavContainer>
95
+ </ExampleContainer>
96
+ <ExampleContainer pseudoState="pseudo-focus">
97
+ <Title title="Link focus" level={4} />
98
+ <QuickNavContainer>
99
+ <DxcQuickNav links={links} />
100
+ </QuickNavContainer>
101
+ </ExampleContainer>
102
+ <ExampleContainer>
103
+ <Title title="QuickNav with content" level={4} />
104
+ <Container>
105
+ <ContentContainer>
106
+ <Content id="overview">
107
+ <DxcHeading level={1} text="Overview" margin={{ bottom: "small" }} />
108
+ <DxcParagraph>
109
+ Halstack is the DXC Technology's open source design system for insurance products and digital experiences.
110
+ Our system provides all the tools and resources needed to create superior, beautiful but above all,
111
+ functional user experiences. Halstack is the DXC Technology's open source design system for insurance
112
+ products and digital experiences. Our system provides all the tools and resources needed to create
113
+ superior, beautiful but above all, functional user experiences.Halstack is the DXC Technology's open
114
+ source design system for insurance products and digital experiences. Our system provides all the tools and
115
+ resources needed to create superior, beautiful but above all, functional user experiences.Halstack is the
116
+ DXC Technology's open source design system for insurance products and digital experiences. Our system
117
+ provides all the tools and resources needed to create superior, beautiful but above all, functional user
118
+ experiences.Halstack is the DXC Technology's open source design system for insurance products and digital
119
+ experiences. Our system provides all the tools and resources needed to create superior, beautiful but
120
+ above all, functional user experiences.Halstack is the DXC Technology's open source design system for
121
+ insurance products and digital experiences. Our system provides all the tools and resources needed to
122
+ create superior, beautiful but above all, functional user experiences.Halstack is the DXC Technology's
123
+ open source design system for insurance products and digital experiences. Our system provides all the
124
+ tools and resources needed to create superior, beautiful but above all, functional user experiences.
125
+ </DxcParagraph>
126
+ <Content id="introduction">
127
+ <DxcHeading level={2} text="Introduction" margin={{ top: "xsmall", bottom: "xsmall" }} />
128
+ <DxcParagraph>
129
+ Design principles Halstack design principles are the fundamental part of DXC Technology's approach to
130
+ provide guidance for development teams in order to deliver delightful and consistent user experiences to
131
+ our customers: Balance Consistency Visual hierarchy All our components, design tokens, accessibility
132
+ guidelines, responsive design techniques, and layout proposals have been carefully curated by DXC design
133
+ and engineering teams with the objective of creating a unique visual language and ecosystem for our
134
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
135
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
136
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
137
+ design new features, or help us improve the project documentation. If you're interested, definitely
138
+ check out our contribution guidelines.Design principles Halstack design principles are the fundamental
139
+ part of DXC Technology's approach to provide guidance for development teams in order to deliver
140
+ delightful and consistent user experiences to our customers: Balance Consistency Visual hierarchy All
141
+ our components, design tokens, accessibility guidelines, responsive design techniques, and layout
142
+ proposals have been carefully curated by DXC design and engineering teams with the objective of creating
143
+ a unique visual language and ecosystem for our applications. This is the DXC way of creating User
144
+ Experiences. Open Source Halstack is an open source design system, this means that we work towards DXC
145
+ Technology bussines needs, but it is open for anyone to use and contribute back to. We are charmed to
146
+ receive external contributions to help us find bugs, design new features, or help us improve the project
147
+ documentation. If you're interested, definitely check out our contribution guidelines.Design principles
148
+ Halstack design principles are the fundamental part of DXC Technology's approach to provide guidance for
149
+ development teams in order to deliver delightful and consistent user experiences to our customers:
150
+ Balance Consistency Visual hierarchy All our components, design tokens, accessibility guidelines,
151
+ responsive design techniques, and layout proposals have been carefully curated by DXC design and
152
+ engineering teams with the objective of creating a unique visual language and ecosystem for our
153
+ applications. This is the DXC way of creating User Experiences. Open Source Halstack is an open source
154
+ design system, this means that we work towards DXC Technology bussines needs, but it is open for anyone
155
+ to use and contribute back to. We are charmed to receive external contributions to help us find bugs,
156
+ design new features, or help us improve the project documentation. If you're interested, definitely
157
+ check out our contribution guidelines.
158
+ </DxcParagraph>
159
+ </Content>
160
+ </Content>
161
+ <Content id="principles">
162
+ <DxcHeading level={1} text="Principles" margin={{ top: "small", bottom: "xsmall" }} />
163
+ <Content id="color">
164
+ <DxcHeading level={2} text="Color" margin={{ top: "xsmall", bottom: "xsmall" }} />
165
+ <DxcParagraph>
166
+ The color palette is an essential asset as a communication resource of our design system. Halstack color
167
+ palette brings a unified consistency and helps in guiding the user's perception order. Our color palette
168
+ is based in the HSL model . All our color families are calculated using the lightness value of the
169
+ standard DXC palette colors. Color Tokens Halstack uses tokens to manage color. Appart from a
170
+ multi-purpose greyscale family, purple and blue are the core color families used in our set of
171
+ components. Additional families as red, green and yellow help as feedback role-based color palettes and
172
+ must not be used outside this context.The color palette is an essential asset as a communication
173
+ resource of our design system. Halstack color palette brings a unified consistency and helps in guiding
174
+ the user's perception order. Our color palette is based in the HSL model . All our color families are
175
+ calculated using the lightness value of the standard DXC palette colors. Color Tokens Halstack uses
176
+ tokens to manage color. Appart from a multi-purpose greyscale family, purple and blue are the core color
177
+ families used in our set of components. Additional families as red, green and yellow help as feedback
178
+ role-based color palettes and must not be used outside this context.The color palette is an essential
179
+ asset as a communication resource of our design system. Halstack color palette brings a unified
180
+ consistency and helps in guiding the user's perception order. Our color palette is based in the HSL
181
+ model . All our color families are calculated using the lightness value of the standard DXC palette
182
+ colors. Color Tokens Halstack uses tokens to manage color. Appart from a multi-purpose greyscale family,
183
+ purple and blue are the core color families used in our set of components. Additional families as red,
184
+ green and yellow help as feedback role-based color palettes and must not be used outside this
185
+ context.The color palette is an essential asset as a communication resource of our design system.
186
+ Halstack color palette brings a unified consistency and helps in guiding the user's perception order.
187
+ Our color palette is based in the HSL model . All our color families are calculated using the lightness
188
+ value of the standard DXC palette colors. Color Tokens Halstack uses tokens to manage color. Appart from
189
+ a multi-purpose greyscale family, purple and blue are the core color families used in our set of
190
+ components. Additional families as red, green and yellow help as feedback role-based color palettes and
191
+ must not be used outside this context.The color palette is an essential asset as a communication
192
+ resource of our design system. Halstack color palette brings a unified consistency and helps in guiding
193
+ the user's perception order. Our color palette is based in the HSL model . All our color families are
194
+ calculated using the lightness value of the standard DXC palette colors. Color Tokens Halstack uses
195
+ tokens to manage color. Appart from a multi-purpose greyscale family, purple and blue are the core color
196
+ families used in our set of components. Additional families as red, green and yellow help as feedback
197
+ role-based color palettes and must not be used outside this context.
198
+ </DxcParagraph>
199
+ </Content>
200
+ <Content id="spacing">
201
+ <DxcHeading level={2} text="Spacing" margin={{ top: "xsmall", bottom: "xsmall" }} />
202
+ <DxcParagraph>
203
+ In the search of consistent alignment between the elements we provide a spacing scale based on a root
204
+ values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and consistent,
205
+ yet distinct enough, steps between them.In the search of consistent alignment between the elements we
206
+ provide a spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are easily
207
+ multiplied, they provide flexible and consistent, yet distinct enough, steps between them.In the search
208
+ of consistent alignment between the elements we provide a spacing scale based on a root values of 8px
209
+ and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and consistent, yet distinct
210
+ enough, steps between them.In the search of consistent alignment between the elements we provide a
211
+ spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they
212
+ provide flexible and consistent, yet distinct enough, steps between them.In the search of consistent
213
+ alignment between the elements we provide a spacing scale based on a root values of 8px and 4px. The
214
+ numbers 4 and 8 are easily multiplied, they provide flexible and consistent, yet distinct enough, steps
215
+ between them.In the search of consistent alignment between the elements we provide a spacing scale based
216
+ on a root values of 8px and 4px. The numbers 4 and 8 are easily multiplied, they provide flexible and
217
+ consistent, yet distinct enough, steps between them.In the search of consistent alignment between the
218
+ elements we provide a spacing scale based on a root values of 8px and 4px. The numbers 4 and 8 are
219
+ easily multiplied, they provide flexible and consistent, yet distinct enough, steps between them.
220
+ </DxcParagraph>
221
+ </Content>
222
+ <Content id="typography">
223
+ <DxcHeading level={2} text="Typography" margin={{ top: "xsmall", bottom: "xsmall" }} />
224
+ <DxcParagraph>
225
+ Our selected typography helps in structuring our user's experience based on the visual impact that it
226
+ has on the user interface content. It defines what is the first noticeable piece of information or data
227
+ based on the font shape, size, color, or type and it highlights some pieces of text over the rest. Some
228
+ typographic elements used in Halstack Design System include headers, body, taglines, captions, and
229
+ labels. Make sure you include all the different typographic variants in order to enhance the
230
+ application's content structure, including the Heading component which defines different levels of page
231
+ and section titles.Our selected typography helps in structuring our user's experience based on the
232
+ visual impact that it has on the user interface content. It defines what is the first noticeable piece
233
+ of information or data based on the font shape, size, color, or type and it highlights some pieces of
234
+ text over the rest. Some typographic elements used in Halstack Design System include headers, body,
235
+ taglines, captions, and labels. Make sure you include all the different typographic variants in order to
236
+ enhance the application's content structure, including the Heading component which defines different
237
+ levels of page and section titles.Our selected typography helps in structuring our user's experience
238
+ based on the visual impact that it has on the user interface content. It defines what is the first
239
+ noticeable piece of information or data based on the font shape, size, color, or type and it highlights
240
+ some pieces of text over the rest. Some typographic elements used in Halstack Design System include
241
+ headers, body, taglines, captions, and labels. Make sure you include all the different typographic
242
+ variants in order to enhance the application's content structure, including the Heading component which
243
+ defines different levels of page and section titles.Our selected typography helps in structuring our
244
+ user's experience based on the visual impact that it has on the user interface content. It defines what
245
+ is the first noticeable piece of information or data based on the font shape, size, color, or type and
246
+ it highlights some pieces of text over the rest. Some typographic elements used in Halstack Design
247
+ System include headers, body, taglines, captions, and labels. Make sure you include all the different
248
+ typographic variants in order to enhance the application's content structure, including the Heading
249
+ component which defines different levels of page and section titles.Our selected typography helps in
250
+ structuring our user's experience based on the visual impact that it has on the user interface content.
251
+ It defines what is the first noticeable piece of information or data based on the font shape, size,
252
+ color, or type and it highlights some pieces of text over the rest. Some typographic elements used in
253
+ Halstack Design System include headers, body, taglines, captions, and labels. Make sure you include all
254
+ the different typographic variants in order to enhance the application's content structure, including
255
+ the Heading component which defines different levels of page and section titles.
256
+ </DxcParagraph>
257
+ </Content>
258
+ </Content>
259
+ <Content id="components">
260
+ <DxcHeading level={1} text="Components" margin={{ top: "small", bottom: "xsmall" }} />
261
+ <Content id="accordion">
262
+ <DxcHeading level={2} text="Accordion" margin={{ top: "xsmall", bottom: "xsmall" }} />
263
+ <DxcParagraph>
264
+ Accordions are used to group similar content and hide or show it depending on user needs or preferences.
265
+ Accordions give users more granular control over the interface and help digest content in stages, rather
266
+ than all at once.
267
+ </DxcParagraph>
268
+ </Content>
269
+ </Content>
270
+ </ContentContainer>
271
+ <QuickNavContainer>
272
+ <DxcQuickNav title="Sections" links={links} />
273
+ </QuickNavContainer>
274
+ </Container>
275
+ </ExampleContainer>
276
+ </>
277
+ );
278
+
279
+ const Container = styled.div`
280
+ display: flex;
281
+ flex-direction: row;
282
+ width: 100%;
283
+ `;
284
+
285
+ const ContentContainer = styled.div`
286
+ display: flex;
287
+ flex-direction: column;
288
+ padding: 60px;
289
+ margin: 0 auto;
290
+ width: 800px;
291
+ `;
292
+
293
+ const Content = styled.div``;
294
+
295
+ const QuickNavContainer = styled.div`
296
+ max-height: calc(100vh - 100px);
297
+ position: sticky;
298
+ top: 100px;
299
+ width: 300px;
300
+ `;
@@ -0,0 +1,21 @@
1
+ declare type Props = {
2
+ /**
3
+ * Title of the quick nav component.
4
+ */
5
+ title?: string;
6
+ /**
7
+ * Links to be shown inside the quick nav component.
8
+ */
9
+ links: LinkType[];
10
+ };
11
+ declare type LinkType = {
12
+ /**
13
+ * Label to be shown in the link.
14
+ */
15
+ label: string;
16
+ /**
17
+ * Sublinks of the link.
18
+ */
19
+ links?: LinkType[];
20
+ };
21
+ export default Props;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { RadioProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ label, checked, onClick, error, disabled, focused, readonly, tabIndex, }: RadioProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
+
20
+ var _uuid = require("uuid");
21
+
22
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
23
+
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
25
+
26
+ 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); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
29
+
30
+ var DxcRadio = function DxcRadio(_ref) {
31
+ var label = _ref.label,
32
+ checked = _ref.checked,
33
+ onClick = _ref.onClick,
34
+ error = _ref.error,
35
+ disabled = _ref.disabled,
36
+ focused = _ref.focused,
37
+ readonly = _ref.readonly,
38
+ tabIndex = _ref.tabIndex;
39
+
40
+ var _useState = (0, _react.useState)("radio-".concat((0, _uuid.v4)())),
41
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
42
+ radioLabelId = _useState2[0];
43
+
44
+ var ref = (0, _react.useRef)(null);
45
+ var colorsTheme = (0, _useTheme["default"])();
46
+
47
+ var handleOnClick = function handleOnClick() {
48
+ var _ref$current;
49
+
50
+ onClick();
51
+ document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
52
+ };
53
+
54
+ var _useState3 = (0, _react.useState)(true),
55
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
56
+ firstUpdate = _useState4[0],
57
+ setFirstUpdate = _useState4[1];
58
+
59
+ (0, _react.useLayoutEffect)(function () {
60
+ var _ref$current2;
61
+
62
+ // Don't apply in the first render
63
+ if (firstUpdate) {
64
+ setFirstUpdate(false);
65
+ return;
66
+ }
67
+
68
+ focused && (ref === null || ref === void 0 ? void 0 : (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus());
69
+ }, [focused]);
70
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
71
+ theme: colorsTheme.radioGroup
72
+ }, /*#__PURE__*/_react["default"].createElement(RadioMainContainer, null, /*#__PURE__*/_react["default"].createElement(RadioContainer, {
73
+ error: error,
74
+ disabled: disabled,
75
+ readonly: readonly,
76
+ onClick: disabled ? undefined : handleOnClick
77
+ }, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
78
+ error: error,
79
+ disabled: disabled,
80
+ readonly: readonly,
81
+ role: "radio",
82
+ "aria-checked": checked,
83
+ "aria-disabled": disabled,
84
+ "aria-labelledby": radioLabelId,
85
+ tabIndex: disabled ? -1 : focused ? tabIndex : -1,
86
+ ref: ref
87
+ }, checked && /*#__PURE__*/_react["default"].createElement(Dot, {
88
+ disabled: disabled,
89
+ readonly: readonly,
90
+ error: error
91
+ }))), /*#__PURE__*/_react["default"].createElement(Label, {
92
+ id: radioLabelId,
93
+ disabled: disabled
94
+ }, label))));
95
+ };
96
+
97
+ var getRadioInputStateColor = function getRadioInputStateColor(props, state) {
98
+ switch (state) {
99
+ case "enabled":
100
+ return props.disabled ? props.theme.disabledRadioInputColor : props.error ? props.theme.errorRadioInputColor : props.readonly ? props.theme.readonlyRadioInputColor : props.theme.radioInputColor;
101
+
102
+ case "hover":
103
+ return props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor;
104
+
105
+ case "active":
106
+ return props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor;
107
+ }
108
+ };
109
+
110
+ var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
111
+
112
+ var RadioInputContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
113
+
114
+ var RadioInput = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border: 2px solid ", ";\n border-radius: 50%;\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n ", "\n"])), function (props) {
115
+ return getRadioInputStateColor(props, "enabled");
116
+ }, function (props) {
117
+ return props.theme.focusBorderColor;
118
+ }, function (props) {
119
+ return props.disabled && "pointer-events: none;";
120
+ });
121
+
122
+ var Dot = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
123
+ return getRadioInputStateColor(props, "enabled");
124
+ });
125
+
126
+ var Label = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
127
+ return props.theme.radioInputLabelMargin;
128
+ }, function (props) {
129
+ return props.theme.fontFamily;
130
+ }, function (props) {
131
+ return props.theme.radioInputLabelFontSize;
132
+ }, function (props) {
133
+ return props.theme.radioInputLabelFontStyle;
134
+ }, function (props) {
135
+ return props.theme.radioInputLabelFontWeight;
136
+ }, function (props) {
137
+ return props.theme.radioInputLabelLineHeight;
138
+ }, function (props) {
139
+ return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, ";") : "color: ".concat(props.theme.radioInputLabelFontColor);
140
+ });
141
+
142
+ var RadioContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n &:hover {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n &:active {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n"])), function (props) {
143
+ return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
144
+ }, RadioInput, function (props) {
145
+ return !props.disabled && getRadioInputStateColor(props, "hover");
146
+ }, Dot, function (props) {
147
+ return !props.disabled && getRadioInputStateColor(props, "hover");
148
+ }, RadioInput, function (props) {
149
+ return !props.disabled && getRadioInputStateColor(props, "active");
150
+ }, Dot, function (props) {
151
+ return !props.disabled && getRadioInputStateColor(props, "active");
152
+ });
153
+
154
+ var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);
155
+
156
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import RadioGroupPropsType from "./types";
3
+ declare const DxcRadioGroup: React.ForwardRefExoticComponent<RadioGroupPropsType & React.RefAttributes<HTMLDivElement>>;
4
+ export default DxcRadioGroup;