@dxc-technology/halstack-react 5.0.0 → 6.1.0

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 (161) hide show
  1. package/HalstackContext.d.ts +4 -2
  2. package/HalstackContext.js +110 -58
  3. package/accordion/Accordion.stories.tsx +1 -1
  4. package/accordion/types.d.ts +1 -1
  5. package/accordion-group/AccordionGroup.js +1 -0
  6. package/accordion-group/types.d.ts +1 -1
  7. package/alert/Alert.js +4 -1
  8. package/badge/Badge.d.ts +1 -1
  9. package/badge/Badge.js +5 -3
  10. package/badge/types.d.ts +1 -0
  11. package/bleed/Bleed.js +1 -34
  12. package/bleed/Bleed.stories.tsx +94 -95
  13. package/bleed/types.d.ts +1 -1
  14. package/box/Box.js +22 -32
  15. package/bulleted-list/BulletedList.d.ts +7 -0
  16. package/bulleted-list/BulletedList.js +123 -0
  17. package/bulleted-list/BulletedList.stories.tsx +200 -0
  18. package/bulleted-list/types.d.ts +11 -0
  19. package/{list → bulleted-list}/types.js +0 -0
  20. package/button/Button.js +46 -62
  21. package/button/Button.stories.tsx +9 -0
  22. package/button/types.d.ts +7 -7
  23. package/card/Card.js +34 -36
  24. package/checkbox/Checkbox.js +4 -1
  25. package/chip/types.d.ts +1 -1
  26. package/common/variables.js +224 -92
  27. package/date-input/DateInput.js +8 -5
  28. package/dialog/Dialog.js +52 -28
  29. package/dialog/Dialog.stories.tsx +1 -2
  30. package/dialog/Dialog.test.js +34 -4
  31. package/dialog/types.d.ts +2 -2
  32. package/dropdown/Dropdown.d.ts +1 -1
  33. package/dropdown/Dropdown.js +242 -246
  34. package/dropdown/Dropdown.stories.tsx +126 -63
  35. package/dropdown/Dropdown.test.js +510 -108
  36. package/dropdown/DropdownMenu.d.ts +4 -0
  37. package/dropdown/DropdownMenu.js +80 -0
  38. package/dropdown/DropdownMenuItem.d.ts +4 -0
  39. package/dropdown/DropdownMenuItem.js +92 -0
  40. package/dropdown/types.d.ts +25 -5
  41. package/file-input/FileInput.js +9 -6
  42. package/file-input/FileItem.js +7 -5
  43. package/flex/Flex.d.ts +4 -0
  44. package/flex/Flex.js +57 -0
  45. package/flex/Flex.stories.tsx +103 -0
  46. package/flex/types.d.ts +21 -0
  47. package/{radio → flex}/types.js +0 -0
  48. package/footer/Footer.js +7 -5
  49. package/footer/Icons.js +1 -1
  50. package/footer/types.d.ts +1 -1
  51. package/header/Header.js +80 -75
  52. package/header/Icons.js +2 -2
  53. package/header/types.d.ts +2 -2
  54. package/inset/Inset.js +1 -34
  55. package/inset/Inset.stories.tsx +36 -36
  56. package/inset/types.d.ts +1 -1
  57. package/layout/ApplicationLayout.d.ts +16 -6
  58. package/layout/ApplicationLayout.js +70 -117
  59. package/layout/ApplicationLayout.stories.tsx +83 -93
  60. package/layout/Icons.d.ts +5 -0
  61. package/layout/Icons.js +13 -2
  62. package/layout/SidenavContext.d.ts +5 -0
  63. package/layout/SidenavContext.js +19 -0
  64. package/layout/types.d.ts +18 -33
  65. package/link/Link.d.ts +3 -2
  66. package/link/Link.js +57 -70
  67. package/link/Link.stories.tsx +95 -53
  68. package/link/Link.test.js +7 -15
  69. package/link/types.d.ts +7 -23
  70. package/main.d.ts +7 -10
  71. package/main.js +38 -56
  72. package/number-input/types.d.ts +1 -1
  73. package/package.json +8 -6
  74. package/paginator/Paginator.js +17 -38
  75. package/paginator/Paginator.test.js +42 -0
  76. package/paragraph/Paragraph.d.ts +6 -0
  77. package/paragraph/Paragraph.js +38 -0
  78. package/paragraph/Paragraph.stories.tsx +44 -0
  79. package/password-input/PasswordInput.js +7 -4
  80. package/password-input/PasswordInput.test.js +1 -2
  81. package/password-input/types.d.ts +1 -1
  82. package/progress-bar/ProgressBar.d.ts +2 -2
  83. package/progress-bar/ProgressBar.js +57 -51
  84. package/progress-bar/ProgressBar.stories.jsx +13 -11
  85. package/progress-bar/ProgressBar.test.js +67 -22
  86. package/progress-bar/types.d.ts +3 -4
  87. package/quick-nav/QuickNav.js +74 -20
  88. package/quick-nav/QuickNav.stories.tsx +43 -16
  89. package/quick-nav/types.d.ts +4 -4
  90. package/radio-group/Radio.js +1 -1
  91. package/radio-group/RadioGroup.js +21 -20
  92. package/resultsetTable/ResultsetTable.test.js +42 -0
  93. package/select/Listbox.d.ts +1 -1
  94. package/select/Listbox.js +59 -8
  95. package/select/Select.js +78 -90
  96. package/select/Select.stories.tsx +145 -100
  97. package/select/Select.test.js +362 -244
  98. package/select/types.d.ts +2 -5
  99. package/sidenav/Sidenav.d.ts +6 -5
  100. package/sidenav/Sidenav.js +184 -52
  101. package/sidenav/Sidenav.stories.tsx +154 -156
  102. package/sidenav/Sidenav.test.js +25 -37
  103. package/sidenav/types.d.ts +50 -27
  104. package/slider/Slider.js +3 -3
  105. package/slider/Slider.test.js +37 -0
  106. package/spinner/Spinner.js +1 -1
  107. package/switch/Switch.d.ts +1 -1
  108. package/switch/Switch.js +113 -54
  109. package/switch/Switch.stories.tsx +8 -30
  110. package/switch/Switch.test.js +122 -8
  111. package/switch/types.d.ts +3 -4
  112. package/tabs/Tabs.stories.tsx +0 -6
  113. package/tabs/types.d.ts +1 -1
  114. package/tabs-nav/NavTabs.d.ts +8 -0
  115. package/tabs-nav/NavTabs.js +125 -0
  116. package/tabs-nav/NavTabs.stories.tsx +170 -0
  117. package/tabs-nav/NavTabs.test.js +82 -0
  118. package/tabs-nav/Tab.d.ts +4 -0
  119. package/tabs-nav/Tab.js +130 -0
  120. package/tabs-nav/types.d.ts +53 -0
  121. package/{row → tabs-nav}/types.js +0 -0
  122. package/tag/types.d.ts +1 -1
  123. package/text-input/Suggestion.d.ts +4 -0
  124. package/text-input/Suggestion.js +55 -0
  125. package/text-input/TextInput.js +58 -93
  126. package/text-input/TextInput.stories.tsx +1 -2
  127. package/text-input/TextInput.test.js +1 -1
  128. package/text-input/types.d.ts +14 -2
  129. package/textarea/Textarea.js +10 -19
  130. package/textarea/types.d.ts +1 -1
  131. package/toggle-group/types.d.ts +1 -1
  132. package/typography/Typography.d.ts +4 -0
  133. package/typography/Typography.js +131 -0
  134. package/typography/Typography.stories.tsx +198 -0
  135. package/typography/types.d.ts +18 -0
  136. package/{stack → typography}/types.js +0 -0
  137. package/useTranslatedLabels.d.ts +2 -0
  138. package/useTranslatedLabels.js +20 -0
  139. package/wizard/Wizard.js +36 -41
  140. package/wizard/Wizard.stories.tsx +20 -1
  141. package/wizard/types.d.ts +5 -4
  142. package/list/List.d.ts +0 -4
  143. package/list/List.js +0 -47
  144. package/list/List.stories.tsx +0 -95
  145. package/list/types.d.ts +0 -7
  146. package/radio/Radio.d.ts +0 -4
  147. package/radio/Radio.js +0 -173
  148. package/radio/Radio.stories.tsx +0 -192
  149. package/radio/Radio.test.js +0 -71
  150. package/radio/types.d.ts +0 -54
  151. package/row/Row.d.ts +0 -3
  152. package/row/Row.js +0 -127
  153. package/row/Row.stories.tsx +0 -237
  154. package/row/types.d.ts +0 -28
  155. package/stack/Stack.d.ts +0 -3
  156. package/stack/Stack.js +0 -97
  157. package/stack/Stack.stories.tsx +0 -164
  158. package/stack/types.d.ts +0 -24
  159. package/text/Text.d.ts +0 -7
  160. package/text/Text.js +0 -30
  161. package/text/Text.stories.tsx +0 -19
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.typeface = exports.spaces = exports.responsiveSizes = exports.globalTokens = exports.componentTokens = void 0;
6
+ exports.typeface = exports.spaces = exports.responsiveSizes = exports.globalTokens = exports.defaultTranslatedComponentLabels = exports.componentTokens = void 0;
7
7
  var globalTokens = {
8
- // Color
8
+ // Color
9
9
  inherit: "inherit",
10
10
  transparent: "transparent",
11
11
  hal_white: "#ffffff",
@@ -19,12 +19,15 @@ var globalTokens = {
19
19
  color_grey_800: "#4d4d4d",
20
20
  color_grey_600: "#808080",
21
21
  color_grey_50: "#fafafa",
22
+ color_grey_a_100: "#0000000d",
23
+ color_grey_a_300: "#00000033",
22
24
  hal_purple_l_95: "#f2eafa",
23
25
  hal_purple_l_90: "#e5d5f6",
24
26
  hal_purple_l_65: "#a46ede",
25
27
  hal_purple_s_38: "#5f249f",
26
28
  hal_purple_d_30: "#4b1c7d",
27
29
  hal_purple_d_20: "#321353",
30
+ hal_purple_d_70: "#9A6BB2",
28
31
  color_purple_600: "#7D2FD0",
29
32
  color_purple_300: "#cbacec",
30
33
  hal_blue_l_95: "#e6f4ff",
@@ -107,7 +110,7 @@ var globalTokens = {
107
110
  type_normal: "normal",
108
111
  type_spacing_tight_02: "-0.05em",
109
112
  type_spacing_tight_01: "-0.025em",
110
- type_spacing_normal: "0",
113
+ type_spacing_normal: "0em",
111
114
  type_spacing_wide_01: "0.025em",
112
115
  type_spacing_wide_02: "0.05em",
113
116
  type_spacing_wide_03: "0.1em",
@@ -236,7 +239,7 @@ var componentTokens = {
236
239
  successBackgroundColor: globalTokens.hal_green_l_95,
237
240
  warningBackgroundColor: globalTokens.hal_yellow_l_95,
238
241
  errorBackgroundColor: globalTokens.hal_red_l_95,
239
- hoverActionBackgroundColor: "#0000000D",
242
+ hoverActionBackgroundColor: globalTokens.color_grey_a_100,
240
243
  activeActionBackgroundColor: "#0000001A",
241
244
  focusActionBorderColor: globalTokens.hal_blue_l_50,
242
245
  overlayColor: "#000000B3"
@@ -257,12 +260,21 @@ var componentTokens = {
257
260
  oneShadowDepthShadowOffsetY: "3px",
258
261
  oneShadowDepthShadowBlur: "6px",
259
262
  oneShadowDepthShadowSpread: "0px",
260
- oneShadowDepthShadowColor: "#00000033",
263
+ oneShadowDepthShadowColor: globalTokens.color_grey_a_300,
261
264
  twoShadowDepthShadowOffsetX: "0px",
262
265
  twoShadowDepthShadowOffsetY: "3px",
263
266
  twoShadowDepthShadowBlur: "10px",
264
267
  twoShadowDepthShadowSpread: "0px",
265
- twoShadowDepthShadowColor: "#00000033"
268
+ twoShadowDepthShadowColor: globalTokens.color_grey_a_300
269
+ },
270
+ bulletedList: {
271
+ fontColor: globalTokens.hal_black,
272
+ fontColorOnDark: globalTokens.hal_white,
273
+ bulletIconHeight: "1.5rem",
274
+ bulletIconWidth: "1.5rem",
275
+ bulletHeight: "5px",
276
+ bulletWidth: "5px",
277
+ bulletMarginRight: "0.5rem"
266
278
  },
267
279
  button: {
268
280
  labelFontLineHeight: globalTokens.type_leading_normal,
@@ -423,7 +435,10 @@ var componentTokens = {
423
435
  boxShadowOffsetY: "1px",
424
436
  boxShadowBlur: "3px",
425
437
  boxShadowColor: "rgba(0, 0, 0, 0.2)",
426
- overlayOpacity: "0.7"
438
+ overlayOpacity: "0.7",
439
+ fontFamily: globalTokens.type_sans,
440
+ fontSize: globalTokens.type_scale_03,
441
+ fontWeight: globalTokens.type_regular
427
442
  },
428
443
  dropdown: {
429
444
  buttonBackgroundColor: globalTokens.hal_white,
@@ -483,14 +498,13 @@ var componentTokens = {
483
498
  focusDropBorderColor: globalTokens.hal_blue_l_50,
484
499
  disabledDropBorderColor: globalTokens.hal_grey_l_60,
485
500
  dragoverDropBackgroundColor: globalTokens.color_blue_50,
486
- hoverFileItemIconBackgroundColor: globalTokens.hal_grey_l_95,
487
501
  activeFileItemIconBackgrounColor: globalTokens.hal_grey_l_80,
488
502
  errorFileItemBorderColor: globalTokens.hal_red_s_41,
489
503
  errorFileItemBackgroundColor: globalTokens.color_red_50,
490
- errorFileItemIconBackgroundColor: globalTokens.color_red_700,
504
+ errorFilePreviewBackgroundColor: globalTokens.color_red_700,
491
505
  errorFileItemIconColor: globalTokens.hal_red_s_41,
492
506
  fileItemIconBackgroundColor: globalTokens.hal_grey_l_95,
493
- fileItemIconColor: globalTokens.color_grey_600,
507
+ deleteFileItemColor: globalTokens.hal_black,
494
508
  errorMessageFontColor: globalTokens.hal_red_s_41,
495
509
  labelFontFamily: globalTokens.type_sans,
496
510
  labelFontSize: globalTokens.type_scale_02,
@@ -517,9 +531,12 @@ var componentTokens = {
517
531
  fileItemBorderThickness: globalTokens.border_width_1,
518
532
  fileItemBorderStyle: globalTokens.border_solid,
519
533
  fileItemBorderRadius: globalTokens.border_radius_medium,
520
- hoverDeleteFileItemBackgroundColor: "#0000000d",
521
- activeDeleteFileItemBackgroundColor: "#00000033",
522
- focusActionBorderColor: globalTokens.hal_blue_l_50
534
+ hoverDeleteFileItemBackgroundColor: globalTokens.color_grey_a_100,
535
+ activeDeleteFileItemBackgroundColor: globalTokens.color_grey_a_300,
536
+ focusDeleteFileItemBorderColor: globalTokens.hal_blue_l_50,
537
+ filePreviewBackgroundColor: globalTokens.hal_grey_l_95,
538
+ filePreviewIconColor: globalTokens.color_grey_600,
539
+ errorFilePreviewIconColor: globalTokens.hal_red_s_41
523
540
  },
524
541
  footer: {
525
542
  height: "124px",
@@ -712,7 +729,7 @@ var componentTokens = {
712
729
  link: {
713
730
  fontColor: globalTokens.hal_blue_s_35,
714
731
  fontFamily: globalTokens.inherit,
715
- fontSize: globalTokens.type_scale_root,
732
+ fontSize: globalTokens.inherit,
716
733
  fontStyle: globalTokens.type_normal,
717
734
  fontWeight: globalTokens.type_regular,
718
735
  iconSize: "16px",
@@ -729,6 +746,13 @@ var componentTokens = {
729
746
  activeUnderlineColor: globalTokens.black,
730
747
  focusColor: globalTokens.hal_blue_l_50
731
748
  },
749
+ paragraph: {
750
+ fontColor: globalTokens.hal_black,
751
+ fontColorOnDark: globalTokens.hal_white,
752
+ display: "block",
753
+ fontSize: globalTokens.type_scale_03,
754
+ fontWeight: globalTokens.type_regular
755
+ },
732
756
  paginator: {
733
757
  backgroundColor: globalTokens.darkWhite,
734
758
  fontColor: globalTokens.hal_black,
@@ -737,15 +761,15 @@ var componentTokens = {
737
761
  fontStyle: globalTokens.type_normal,
738
762
  fontWeight: globalTokens.type_regular,
739
763
  fontTextTransform: "none",
740
- height: "64px",
741
- width: "100%",
742
- marginRight: "40px",
743
- marginLeft: "20px",
764
+ verticalPadding: "0.75rem",
765
+ horizontalPadding: "2rem",
766
+ marginRight: "2rem",
767
+ marginLeft: "2rem",
744
768
  itemsPerPageSelectorMarginLeft: "0px",
745
- itemsPerPageSelectorMarginRight: "30px",
769
+ itemsPerPageSelectorMarginRight: "1rem",
746
770
  pageSelectorMarginRight: "30px",
747
771
  pageSelectorMarginLeft: "0px",
748
- totalItemsContainerMarginRight: "30px",
772
+ totalItemsContainerMarginRight: "3rem",
749
773
  totalItemsContainerMarginLeft: "0px"
750
774
  },
751
775
  progressBar: {
@@ -777,21 +801,21 @@ var componentTokens = {
777
801
  overlayColor: globalTokens.black,
778
802
  overlayOpacity: "0.8"
779
803
  },
780
- radio: {
781
- circleLabelSpacing: "10px",
782
- circleSize: "24px",
783
- color: globalTokens.black,
784
- colorOnDark: globalTokens.white,
785
- disabledColor: globalTokens.lighterBlack,
786
- disabledColorOnDark: "#575757",
787
- disabledFontColor: globalTokens.lighterBlack,
788
- disabledFontColorOnDark: "#575757",
789
- focusColor: globalTokens.hal_blue_l_50,
790
- focusColorOnDark: "#1682FF",
791
- fontColor: globalTokens.inherit,
792
- fontColorOnDark: globalTokens.white,
804
+ quickNav: {
805
+ fontColor: globalTokens.hal_grey_s_40,
806
+ hoverFontColor: globalTokens.hal_purple_d_70,
807
+ selectedFontColor: globalTokens.hal_purple_s_38,
808
+ dividerBorderColor: globalTokens.hal_grey_l_75,
809
+ focusBorderColor: globalTokens.hal_blue_l_50,
810
+ focusBorderStyle: globalTokens.border_solid,
811
+ focusBorderThickness: globalTokens.border_width_2,
812
+ focusBorderRadius: globalTokens.border_width_2,
813
+ paddingTop: globalTokens.spacing_03,
814
+ paddingBottom: globalTokens.spacing_03,
815
+ paddingLeft: globalTokens.spacing_05,
816
+ paddingRight: globalTokens.spacing_05,
793
817
  fontFamily: globalTokens.type_sans,
794
- fontSize: globalTokens.type_scale_root,
818
+ fontSize: globalTokens.type_scale_02,
795
819
  fontStyle: globalTokens.type_normal,
796
820
  fontWeight: globalTokens.type_regular
797
821
  },
@@ -905,24 +929,35 @@ var componentTokens = {
905
929
  arrowContainerColor: globalTokens.hal_grey_l_90,
906
930
  arrowColor: globalTokens.hal_black,
907
931
  titleFontFamily: globalTokens.type_sans,
908
- titleFontSize: globalTokens.type_scale_05,
932
+ titleFontSize: globalTokens.type_scale_04,
909
933
  titleFontStyle: globalTokens.type_normal,
910
- titleFontWeight: globalTokens.type_regular,
911
- titleFontColor: globalTokens.hal_black,
934
+ titleFontWeight: globalTokens.type_semibold,
935
+ titleFontColor: globalTokens.color_grey_800,
912
936
  titleFontTextTransform: "none",
913
937
  titleFontLetterSpacing: globalTokens.type_spacing_normal,
914
- subtitleFontFamily: globalTokens.type_sans,
915
- subtitleFontSize: globalTokens.type_scale_03,
916
- subtitleFontStyle: globalTokens.type_normal,
917
- subtitleFontWeight: globalTokens.type_regular,
918
- subtitleFontColor: globalTokens.color_grey_800,
919
- subtitleFontTextTransform: globalTokens.type_uppercase,
920
- subtitleFontLetterSpacing: globalTokens.type_spacing_wide_02,
938
+ groupTitleFontFamily: globalTokens.type_sans,
939
+ groupTitleFontSize: globalTokens.type_scale_02,
940
+ groupTitleFontStyle: globalTokens.type_normal,
941
+ groupTitleFontWeight: globalTokens.type_semibold,
942
+ groupTitleFontColor: globalTokens.black,
943
+ groupTitleHoverBackgroundColor: globalTokens.hal_grey_l_90,
944
+ groupTitleActiveBackgroundColor: globalTokens.hal_grey_l_80,
945
+ groupTitleSelectedFontColor: globalTokens.white,
946
+ groupTitleSelectedBackgroundColor: globalTokens.color_grey_800,
947
+ groupTitleSelectedHoverFontColor: globalTokens.white,
948
+ groupTitleSelectedHoverBackgroundColor: globalTokens.color_grey_600,
949
+ groupTitleFontTextTransform: globalTokens.type_uppercase,
950
+ groupTitleFontLetterSpacing: globalTokens.type_spacing_wide_02,
921
951
  linkFontFamily: globalTokens.type_sans,
922
952
  linkFontSize: globalTokens.type_scale_02,
923
953
  linkFontStyle: globalTokens.type_normal,
924
954
  linkFontWeight: globalTokens.type_regular,
925
955
  linkFontColor: globalTokens.color_grey_800,
956
+ linkHoverBackgroundColor: globalTokens.hal_grey_l_90,
957
+ linkSelectedFontColor: globalTokens.white,
958
+ linkSelectedBackgroundColor: globalTokens.color_grey_800,
959
+ linkSelectedHoverFontColor: globalTokens.white,
960
+ linkSelectedHoverBackgroundColor: globalTokens.color_grey_600,
926
961
  linkFontTextTransform: "none",
927
962
  linkFontLetterSpacing: globalTokens.type_spacing_wide_01,
928
963
  linkTextDecoration: globalTokens.type_no_line,
@@ -1010,7 +1045,7 @@ var componentTokens = {
1010
1045
  },
1011
1046
  spinner: {
1012
1047
  trackCircleColor: "#5f249f",
1013
- trackCircleColorOnDark: "#a46ede",
1048
+ trackCircleColorOverlay: "#a46ede",
1014
1049
  totalCircleColor: globalTokens.white,
1015
1050
  labelFontFamily: globalTokens.type_sans,
1016
1051
  labelFontSize: globalTokens.type_scale_02,
@@ -1071,10 +1106,10 @@ var componentTokens = {
1071
1106
  thumbFocusColorOnDark: "#1682FF",
1072
1107
  thumbHeight: "24px",
1073
1108
  thumbWidth: "24px",
1074
- thumbShift: "40%",
1109
+ thumbShift: "1.25rem",
1075
1110
  trackHeight: "12px",
1076
- trackWidth: "60px",
1077
- spaceBetweenLabelSwitch: "0px"
1111
+ trackWidth: "36px",
1112
+ spaceBetweenLabelSwitch: "8px"
1078
1113
  },
1079
1114
  tag: {
1080
1115
  fontFamily: globalTokens.type_sans,
@@ -1145,6 +1180,7 @@ var componentTokens = {
1145
1180
  disabledFontColor: "#999999",
1146
1181
  disabledIconColor: "#999999",
1147
1182
  disabledFontStyle: globalTokens.type_normal,
1183
+ disabledBadgeBackgroundColor: "#0000004D",
1148
1184
  hoverBackgroundColor: "#f2eafa",
1149
1185
  pressedBackgroundColor: "#e5d5f6",
1150
1186
  pressedFontWeight: globalTokens.type_semibold,
@@ -1264,57 +1300,64 @@ var componentTokens = {
1264
1300
  optionFocusBorderThickness: globalTokens.border_width_2
1265
1301
  },
1266
1302
  wizard: {
1267
- disabledBackgroundColor: globalTokens.lightGrey,
1268
- disabledFontColor: globalTokens.darkGrey,
1269
- stepContainerFontSize: globalTokens.type_scale_03,
1270
- stepContainerFontFamily: globalTokens.type_sans,
1271
- stepContainerFontStyle: globalTokens.type_normal,
1272
- stepContainerFontWeight: globalTokens.type_regular,
1273
- stepContainerLetterSpacing: globalTokens.type_spacing_wide_02,
1274
- stepContainerFontColor: globalTokens.black,
1275
- stepContainerSelectedFontColor: globalTokens.white,
1276
- stepContainerSelectedBackgroundColor: globalTokens.hal_purple_s_38,
1277
- stepContainerBackgroundColor: globalTokens.white,
1278
- stepContainerIconSize: "19px",
1303
+ visitedStepFontColor: globalTokens.hal_black,
1304
+ visitedStepBackgroundColor: globalTokens.hal_white,
1305
+ visitedStepBorderColor: globalTokens.hal_black,
1306
+ unvisitedStepFontColor: globalTokens.hal_grey_s_40,
1307
+ unvisitedLabelFontColor: globalTokens.hal_grey_s_40,
1308
+ unvisitedHelperTextFontColor: globalTokens.hal_grey_s_40,
1309
+ unvisitedStepBackgroundColor: globalTokens.transparent,
1310
+ unvisitedStepBorderColor: globalTokens.hal_grey_s_40,
1311
+ selectedStepFontColor: globalTokens.white,
1312
+ selectedStepBackgroundColor: globalTokens.hal_purple_s_38,
1313
+ selectedStepBorderColor: globalTokens.hal_purple_s_38,
1314
+ selectedLabelFontColor: globalTokens.hal_black,
1315
+ selectedHelperTextFontColor: globalTokens.hal_black,
1316
+ selectedStepWidth: "32px",
1317
+ selectedStepHeight: "32px",
1318
+ selectedStepBorderThickness: "2px",
1319
+ selectedStepBorderStyle: "solid",
1320
+ selectedStepBorderRadius: "45px",
1321
+ stepFontSize: globalTokens.type_scale_03,
1322
+ stepFontFamily: globalTokens.type_sans,
1323
+ stepFontStyle: globalTokens.type_normal,
1324
+ stepFontWeight: globalTokens.type_regular,
1325
+ stepFontTracking: globalTokens.type_spacing_wide_02,
1326
+ stepIconSize: "20px",
1327
+ stepWidth: "32px",
1328
+ stepHeight: "32px",
1329
+ stepBorderThickness: "2px",
1330
+ stepBorderStyle: "solid",
1331
+ stepBorderRadius: "45px",
1332
+ visitedLabelFontColor: globalTokens.hal_black,
1279
1333
  labelFontSize: globalTokens.type_scale_03,
1280
1334
  labelFontFamily: globalTokens.type_sans,
1281
1335
  labelFontStyle: globalTokens.type_normal,
1282
1336
  labelFontWeight: globalTokens.type_regular,
1283
- labelLetterSpacing: globalTokens.type_spacing_normal,
1337
+ labelFontTracking: globalTokens.type_spacing_normal,
1284
1338
  labelFontTextTransform: "none",
1285
1339
  labelTextAlign: "left",
1286
- labelFontColor: globalTokens.darkGrey,
1287
- visitedLabelFontColor: globalTokens.black,
1288
- visitedDescriptionFontColor: globalTokens.black,
1289
- descriptionFontSize: globalTokens.type_scale_01,
1290
- descriptionFontFamily: globalTokens.type_sans,
1291
- descriptionFontStyle: globalTokens.type_normal,
1292
- descriptionFontWeight: globalTokens.type_regular,
1293
- descriptionLetterSpacing: globalTokens.type_spacing_wide_01,
1294
- descriptionFontTextTransform: "none",
1295
- descriptionFontColor: globalTokens.darkGrey,
1296
- descriptionTextAlign: "left",
1297
- circleWidth: "32px",
1298
- circleHeight: "32px",
1299
- circleBorderThickness: "2px",
1300
- circleBorderStyle: "solid",
1301
- circleBorderRadius: "45px",
1302
- circleBorderColor: globalTokens.black,
1303
- selectedCircleWidth: "32px",
1304
- selectedCircleHeight: "32px",
1305
- selectedCircleBorderThickness: "2px",
1306
- selectedCircleBorderStyle: "solid",
1307
- selectedCircleBorderRadius: "45px",
1308
- selectedCircleBorderColor: globalTokens.purple,
1309
- disabledCircleWidth: "32px",
1310
- disabledCircleHeight: "32px",
1311
- disabledCircleBorderThickness: "2px",
1312
- disabledCircleBorderStyle: "solid",
1313
- disabledCircleBorderRadius: "45px",
1314
- disabledCircleBorderColor: globalTokens.lightGrey,
1340
+ helperTextFontSize: globalTokens.type_scale_02,
1341
+ helperTextFontFamily: globalTokens.type_sans,
1342
+ helperTextFontStyle: globalTokens.type_normal,
1343
+ helperTextFontWeight: globalTokens.type_regular,
1344
+ helperTextFontTracking: globalTokens.type_spacing_normal,
1345
+ helperTextFontTextTransform: "none",
1346
+ visitedHelperTextFontColor: globalTokens.hal_black,
1347
+ helperTextTextAlign: "left",
1348
+ disabledStepBackgroundColor: globalTokens.hal_grey_l_95,
1349
+ disabledStepFontColor: globalTokens.hal_grey_l_60,
1350
+ disabledLabelFontColor: globalTokens.hal_grey_l_60,
1351
+ disabledHelperTextFontColor: globalTokens.hal_grey_l_60,
1352
+ disabledStepBorderColor: globalTokens.hal_grey_l_95,
1353
+ disabledStepWidth: "32px",
1354
+ disabledStepHeight: "32px",
1355
+ disabledStepBorderThickness: "2px",
1356
+ disabledStepBorderStyle: "solid",
1357
+ disabledStepBorderRadius: "45px",
1315
1358
  separatorBorderThickness: "1px",
1316
1359
  separatorBorderStyle: "solid",
1317
- separatorColor: globalTokens.lightGrey,
1360
+ separatorColor: globalTokens.hal_grey_s_40,
1318
1361
  focusColor: globalTokens.hal_blue_l_50
1319
1362
  }
1320
1363
  };
@@ -1369,4 +1412,93 @@ var typeface = {
1369
1412
  textTransform: "uppercase"
1370
1413
  }
1371
1414
  };
1372
- exports.typeface = typeface;
1415
+ exports.typeface = typeface;
1416
+ var defaultTranslatedComponentLabels = {
1417
+ formFields: {
1418
+ optionalLabel: "(Optional)",
1419
+ requiredSelectionErrorMessage: "This field is required. Please, choose an option.",
1420
+ requiredValueErrorMessage: "This field is required. Please, enter a value.",
1421
+ formatRequestedErrorMessage: "Please match the format requested.",
1422
+ lengthErrorMessage: function lengthErrorMessage(minLength, maxLength) {
1423
+ return "Min length ".concat(minLength, ", max length ").concat(maxLength, ".");
1424
+ },
1425
+ logoAlternativeText: "Logo"
1426
+ },
1427
+ alert: {
1428
+ infoTitleText: "information",
1429
+ successTitleText: "success",
1430
+ warningTitleText: "warning",
1431
+ errorTitleText: "error"
1432
+ },
1433
+ dateInput: {
1434
+ invalidDateErrorMessage: "Invalid date."
1435
+ },
1436
+ fileInput: {
1437
+ fileSizeGreaterThanErrorMessage: "File size must be greater than min size.",
1438
+ fileSizeLessThanErrorMessage: "File size must be less than max size.",
1439
+ multipleButtonLabelDefault: "Select files",
1440
+ singleButtonLabelDefault: "Select file",
1441
+ dropAreaButtonLabelDefault: "Select",
1442
+ multipleDropAreaLabelDefault: "or drop files",
1443
+ singleDropAreaLabelDefault: "or drop a file"
1444
+ },
1445
+ footer: {
1446
+ copyrightText: function copyrightText(year) {
1447
+ return "\xA9 DXC Technology ".concat(year, ". All rights reserved.");
1448
+ }
1449
+ },
1450
+ header: {
1451
+ closeIcon: "Close menu",
1452
+ hamburguerTitle: "Menu"
1453
+ },
1454
+ numberInput: {
1455
+ valueGreaterThanOrEqualToErrorMessage: function valueGreaterThanOrEqualToErrorMessage(value) {
1456
+ return "Value must be greater than or equal to ".concat(value, ".");
1457
+ },
1458
+ valueLessThanOrEqualToErrorMessage: function valueLessThanOrEqualToErrorMessage(value) {
1459
+ return "Value must be less than or equal to ".concat(value, ".");
1460
+ },
1461
+ decrementValueTitle: "Decrement value",
1462
+ incrementValueTitle: "Increment value"
1463
+ },
1464
+ paginator: {
1465
+ itemsPerPageText: "Items per page ",
1466
+ minToMaxOfText: function minToMaxOfText(minNumberOfItems, maxNumberOfItems, totalItems) {
1467
+ return "".concat(minNumberOfItems, " to ").concat(maxNumberOfItems, " of ").concat(totalItems);
1468
+ },
1469
+ goToPageText: "Go to page:",
1470
+ pageOfText: function pageOfText(pageNumber, totalPagesNumber) {
1471
+ return "Page: ".concat(pageNumber, " of ").concat(totalPagesNumber);
1472
+ }
1473
+ },
1474
+ passwordInput: {
1475
+ inputShowPasswordTitle: "Show password",
1476
+ inputHidePasswordTitle: "Hide password"
1477
+ },
1478
+ quickNav: {
1479
+ contentTitle: "Contents"
1480
+ },
1481
+ radioGroup: {
1482
+ optionalItemLabelDefault: "N/A"
1483
+ },
1484
+ select: {
1485
+ noMatchesErrorMessage: "No matches found",
1486
+ actionClearSelectionTitle: "Clear selection",
1487
+ actionClearSearchTitle: "Clear search"
1488
+ },
1489
+ textInput: {
1490
+ clearFieldActionTitle: "Clear field",
1491
+ searchingMessage: "Searching...",
1492
+ fetchingDataErrorMessage: "Error fetching data"
1493
+ },
1494
+ calendar: {
1495
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
1496
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
1497
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
1498
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
1499
+ },
1500
+ applicationLayout: {
1501
+ visibilityToggleTitle: "Toggle visibility sidenav"
1502
+ }
1503
+ };
1504
+ exports.defaultTranslatedComponentLabels = defaultTranslatedComponentLabels;
@@ -33,6 +33,8 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
33
33
 
34
34
  var _useTheme = _interopRequireDefault(require("../useTheme"));
35
35
 
36
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
37
+
36
38
  var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
37
39
 
38
40
  var _templateObject;
@@ -87,12 +89,13 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
87
89
  setAnchorEl = _useState6[1];
88
90
 
89
91
  var colorsTheme = (0, _useTheme["default"])();
92
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
90
93
  var refDate = ref || (0, _react.useRef)(null);
91
94
 
92
95
  var handleCalendarOnKeyDown = function handleCalendarOnKeyDown(event) {
93
- switch (event.keyCode) {
94
- case 27:
95
- // Esc
96
+ switch (event.key) {
97
+ case "Esc":
98
+ case "Escape":
96
99
  event.preventDefault();
97
100
  setIsOpen(false);
98
101
  break;
@@ -115,7 +118,7 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
115
118
  inputError = _ref2.error;
116
119
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
117
120
  var dayjsDate = (0, _dayjs["default"])(newValue, format.toUpperCase(), true);
118
- var invalidDateMessage = newValue !== "" && !dayjsDate.isValid() && "Invalid date.";
121
+ var invalidDateMessage = newValue !== "" && !dayjsDate.isValid() && translatedLabels.dateInput.invalidDateErrorMessage;
119
122
  var callbackParams = inputError || invalidDateMessage ? {
120
123
  value: newValue,
121
124
  error: inputError || invalidDateMessage
@@ -131,7 +134,7 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
131
134
  var value = _ref3.value,
132
135
  inputError = _ref3.error;
133
136
  var dayjsDate = (0, _dayjs["default"])(value, format.toUpperCase(), true);
134
- var invalidDateMessage = value !== "" && !dayjsDate.isValid() && "Invalid date.";
137
+ var invalidDateMessage = value !== "" && !dayjsDate.isValid() && translatedLabels.dateInput.invalidDateErrorMessage;
135
138
  var callbackParams = inputError || invalidDateMessage ? {
136
139
  value: value,
137
140
  error: inputError || invalidDateMessage
package/dialog/Dialog.js CHANGED
@@ -13,19 +13,17 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
14
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
15
 
16
- var _react = _interopRequireDefault(require("react"));
16
+ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
- var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
21
-
22
20
  var _variables = require("../common/variables.js");
23
21
 
24
22
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
23
 
26
24
  var _BackgroundColorContext = require("../BackgroundColorContext");
27
25
 
28
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
26
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
29
27
 
30
28
  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
29
 
@@ -53,15 +51,37 @@ var DxcDialog = function DxcDialog(_ref) {
53
51
  onBackgroundClick === null || onBackgroundClick === void 0 ? void 0 : onBackgroundClick();
54
52
  };
55
53
 
54
+ var handleOnKeyDown = function handleOnKeyDown(event) {
55
+ if (event.key === "Escape") {
56
+ event.preventDefault();
57
+ handleClose();
58
+ }
59
+ };
60
+
61
+ (0, _react.useEffect)(function () {
62
+ if (isCloseVisible) {
63
+ window.addEventListener("keydown", handleOnKeyDown);
64
+ }
65
+
66
+ return function () {
67
+ window.removeEventListener("keydown", handleOnKeyDown);
68
+ };
69
+ }, [isCloseVisible]);
56
70
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
57
71
  theme: colorsTheme.dialog
58
- }, /*#__PURE__*/_react["default"].createElement(DialogContainer, {
59
- open: true,
60
- isCloseVisible: isCloseVisible,
61
- onClose: handleOverlayClick,
62
- overlay: overlay,
72
+ }, /*#__PURE__*/_react["default"].createElement(BodyStyle, null), /*#__PURE__*/_react["default"].createElement(DialogContainer, {
73
+ role: "presentation"
74
+ }, overlay && /*#__PURE__*/_react["default"].createElement(Overlay, {
75
+ onClick: handleOverlayClick
76
+ }), /*#__PURE__*/_react["default"].createElement(Dialog, {
77
+ role: "dialog",
78
+ "aria-modal": overlay,
79
+ isCloseVisible: isCloseVisible
80
+ }, /*#__PURE__*/_react["default"].createElement(Children, {
63
81
  padding: padding
64
- }, isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
82
+ }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
83
+ color: colorsTheme.dialog.backgroundColor
84
+ }, children)), isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
65
85
  onClick: handleClose,
66
86
  tabIndex: tabIndex
67
87
  }, /*#__PURE__*/_react["default"].createElement(CloseIcon, {
@@ -75,24 +95,34 @@ var DxcDialog = function DxcDialog(_ref) {
75
95
  fill: "none"
76
96
  }), /*#__PURE__*/_react["default"].createElement("path", {
77
97
  d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
78
- }))), /*#__PURE__*/_react["default"].createElement(Children, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
79
- color: colorsTheme.dialog.backgroundColor
80
- }, children))));
98
+ }))))));
81
99
  };
82
100
 
83
- var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n overflow: unset;\n font-family: ", ";\n\n .MuiBackdrop-root {\n background-color: ", ";\n opacity: ", " !important;\n }\n .MuiDialog-paperWidthSm {\n background-color: ", ";\n @media (min-width: ", "rem) {\n max-width: 80%;\n min-width: 800px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 92%;\n min-width: 92%;\n }\n\n box-sizing: border-box;\n min-height: ", ";\n box-shadow: ", ";\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n }\n"])), function (props) {
101
+ var BodyStyle = (0, _styledComponents.createGlobalStyle)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n body {\n overflow: hidden;\n }\n"])));
102
+
103
+ var DialogContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n inset: 0px;\n height: 100%;\n z-index: 1300;\n"])));
104
+
105
+ var Overlay = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n inset: 0px;\n height: 100%;\n background-color: ", ";\n opacity: ", ";\n"])), function (props) {
106
+ return props.theme.overlayColor;
107
+ }, function (props) {
108
+ return props.theme.overlayOpacity;
109
+ });
110
+
111
+ var Dialog = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n z-index: 1300;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n ", "\n box-sizing: border-box;\n box-shadow: ", ";\n border-radius: 4px;\n\n @media (min-width: ", "rem) {\n max-width: 80%;\n min-width: 800px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 92%;\n min-width: 92%;\n }\n"])), function (props) {
112
+ return props.theme.backgroundColor;
113
+ }, function (props) {
84
114
  return props.theme.fontFamily;
85
115
  }, function (props) {
86
- return props.overlay === true ? props.theme.overlayColor : "transparent";
116
+ return props.theme.fontSize;
87
117
  }, function (props) {
88
- return props.overlay === true && props.theme.overlayOpacity;
118
+ return props.theme.fontWeight;
89
119
  }, function (props) {
90
- return props.theme.backgroundColor;
91
- }, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium, function (props) {
92
- return props.isCloseVisible ? "72px" : "";
120
+ return props.isCloseVisible && "min-height: 72px;";
93
121
  }, function (props) {
94
122
  return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
95
- }, function (props) {
123
+ }, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium);
124
+
125
+ var Children = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
96
126
  return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : _variables.spaces["small"];
97
127
  }, function (props) {
98
128
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
@@ -104,13 +134,7 @@ var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_tem
104
134
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
105
135
  });
106
136
 
107
- var Children = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])([""])));
108
-
109
- var CloseIconContainer = _styledComponents["default"].button(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: flex-end;\n position: absolute;\n top: ", ";\n right: ", ";\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n color: ", ";\n width: ", ";\n height: ", ";\n border: none;\n"])), function (props) {
110
- return props.theme.closeIconTopPosition;
111
- }, function (props) {
112
- return props.theme.closeIconRightPosition;
113
- }, function (props) {
137
+ var CloseIconContainer = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n position: relative;\n top: 20px;\n right: 20px;\n color: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
114
138
  return props.theme.closeIconColor;
115
139
  }, function (props) {
116
140
  return props.theme.closeIconWidth;
@@ -118,7 +142,7 @@ var CloseIconContainer = _styledComponents["default"].button(_templateObject3 ||
118
142
  return props.theme.closeIconHeight;
119
143
  });
120
144
 
121
- var CloseIcon = _styledComponents["default"].svg(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: ", ";\n height: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n"])), function (props) {
145
+ var CloseIcon = _styledComponents["default"].svg(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: ", ";\n height: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n"])), function (props) {
122
146
  return props.theme.closeIconBackgroundColor;
123
147
  }, function (props) {
124
148
  return props.theme.closeIconWidth;