@zohodesk/components 1.6.25 → 1.6.27

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 (218) hide show
  1. package/CHANGELOG.md +2046 -0
  2. package/README.md +16 -2031
  3. package/assets/Appearance/dark/mode/Component_v1_DarkMode.module.css +5 -20
  4. package/assets/Appearance/light/mode/Component_v1_LightMode.module.css +5 -20
  5. package/assets/Appearance/pureDark/mode/Component_v1_PureDarkMode.module.css +5 -20
  6. package/es/Accordion/Accordion.js +1 -6
  7. package/es/Accordion/AccordionItem.js +1 -6
  8. package/es/Animation/Animation.js +1 -8
  9. package/es/AppContainer/AppContainer.js +1 -6
  10. package/es/AppContainer/__tests__/__snapshots__/AppContainer.spec.js.snap +16 -16
  11. package/es/Avatar/Avatar.js +1 -6
  12. package/es/AvatarTeam/AvatarTeam.js +1 -7
  13. package/es/Button/Button.js +1 -6
  14. package/es/Buttongroup/Buttongroup.js +1 -14
  15. package/es/Card/Card.js +1 -9
  16. package/es/Card/__tests__/__snapshots__/Card.spec.js.snap +17 -17
  17. package/es/Card/__tests__/__snapshots__/CardContent.spec.js.snap +12 -12
  18. package/es/Card/__tests__/__snapshots__/CardHeader.spec.js.snap +4 -4
  19. package/es/CheckBox/CheckBox.js +1 -6
  20. package/es/CheckBox/__tests__/__snapshots__/CheckBox.spec.js.snap +88 -88
  21. package/es/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +48 -48
  22. package/es/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +30 -30
  23. package/es/DateTime/DateWidget.js +1 -11
  24. package/es/DateTime/DateWidget.module.css +3 -0
  25. package/es/DateTime/__tests__/__snapshots__/CalendarView.spec.js.snap +49 -49
  26. package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +93 -93
  27. package/es/DateTime/__tests__/__snapshots__/DateTimePopupFooter.spec.js.snap +1 -1
  28. package/es/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +8 -8
  29. package/es/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +7 -7
  30. package/es/DateTime/__tests__/__snapshots__/DaysRow.spec.js.snap +1 -1
  31. package/es/DateTime/__tests__/__snapshots__/Time.spec.js.snap +28 -28
  32. package/es/DropDown/DropDownHeading.js +1 -6
  33. package/es/DropDown/__tests__/__snapshots__/DropDown.spec.js.snap +2 -2
  34. package/es/Heading/Heading.js +1 -6
  35. package/es/Label/Label.js +1 -6
  36. package/es/Label/__tests__/__snapshots__/Label.spec.js.snap +4 -4
  37. package/es/ListItem/ListContainer.js +1 -6
  38. package/es/ListItem/ListItem.js +1 -6
  39. package/es/ListItem/ListItemWithAvatar.js +1 -6
  40. package/es/ListItem/ListItemWithCheckBox.js +1 -6
  41. package/es/ListItem/ListItemWithIcon.js +1 -6
  42. package/es/ListItem/ListItemWithRadio.js +1 -6
  43. package/es/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +2 -2
  44. package/es/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +16 -16
  45. package/es/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +41 -41
  46. package/es/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +62 -62
  47. package/es/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +41 -41
  48. package/es/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +62 -62
  49. package/es/Modal/Modal.js +1 -8
  50. package/es/MultiSelect/AdvancedGroupMultiSelect.js +1 -7
  51. package/es/MultiSelect/AdvancedMultiSelect.js +1 -9
  52. package/es/MultiSelect/MobileHeader/__tests__/__snapshots__/MobileHeader.spec.js.snap +3 -3
  53. package/es/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +6 -6
  54. package/es/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +50 -50
  55. package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +35 -35
  56. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +7 -7
  57. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +8 -8
  58. package/es/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +4 -4
  59. package/es/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +47 -47
  60. package/es/Radio/__tests__/__snapshots__/Radio.spec.js.snap +94 -94
  61. package/es/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1 -1
  62. package/es/RippleEffect/RippleEffect.js +1 -6
  63. package/es/Select/GroupSelect.js +1 -8
  64. package/es/Select/Select.js +1 -10
  65. package/es/Select/SelectWithAvatar.js +1 -9
  66. package/es/Select/SelectWithIcon.js +1 -7
  67. package/es/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +7 -7
  68. package/es/Select/__tests__/__snapshots__/Select.spec.js.snap +831 -831
  69. package/es/Select/__tests__/__snapshots__/SelectWithAvatar.spec.js.snap +2 -2
  70. package/es/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +10 -10
  71. package/es/Switch/Switch.js +1 -6
  72. package/es/Switch/__tests__/__snapshots__/Switch.spec.js.snap +44 -44
  73. package/es/Tab/Tab.js +1 -6
  74. package/es/Tab/__tests__/__snapshots__/Tab.spec.js.snap +2 -2
  75. package/es/Tab/__tests__/__snapshots__/TabContent.spec.js.snap +1 -1
  76. package/es/Tab/__tests__/__snapshots__/TabContentWrapper.spec.js.snap +1 -1
  77. package/es/Tab/__tests__/__snapshots__/TabLayout.spec.js.snap +40 -40
  78. package/es/Tab/__tests__/__snapshots__/TabWrapper.spec.js.snap +1 -1
  79. package/es/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +4 -4
  80. package/es/Tag/Tag.js +1 -6
  81. package/es/Tag/__tests__/__snapshots__/Tag.spec.js.snap +94 -94
  82. package/es/TextBox/TextBox.js +1 -8
  83. package/es/TextBoxIcon/TextBoxIcon.js +1 -8
  84. package/es/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +167 -167
  85. package/es/Textarea/Textarea.js +1 -8
  86. package/es/Tooltip/Tooltip.js +1 -8
  87. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +1 -5
  88. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +1 -5
  89. package/es/semantic/Button/Button.js +1 -6
  90. package/es/shared/ArrowIcon/__tests__/__snapshots__/ArrowIcon.spec.js.snap +20 -20
  91. package/es/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +19 -19
  92. package/es/v1/Button/Button.js +197 -113
  93. package/es/v1/Button/README.md +110 -44
  94. package/es/v1/Button/__tests__/Button.spec.js +139 -48
  95. package/es/v1/Button/__tests__/__snapshots__/Button.spec.js.snap +1236 -340
  96. package/es/v1/Button/constants/index.js +29 -23
  97. package/es/v1/Button/constants/presets.js +160 -0
  98. package/es/v1/Button/css/Button_v1.module.css +33 -16
  99. package/es/v1/Button/css/cssJSLogic.js +56 -29
  100. package/es/v1/Button/props/defaultProps.js +5 -6
  101. package/es/v1/Button/props/propTypes.js +26 -8
  102. package/es/v1/Label/__tests__/__snapshots__/Label.spec.js.snap +24 -24
  103. package/es/v1/Switch/__tests__/__snapshots__/Switch.spec.js.snap +14 -14
  104. package/es/v1/helpers/colorHelpers/__tests__/colorHelper.spec.js +357 -0
  105. package/es/v1/helpers/colorHelpers/background/backgroundColor.module.css +38 -534
  106. package/es/v1/helpers/colorHelpers/border/borderColor.module.css +28 -412
  107. package/es/v1/helpers/colorHelpers/colorHelper.js +120 -139
  108. package/es/v1/helpers/colorHelpers/constants/index.js +45 -4
  109. package/es/v1/helpers/colorHelpers/index.js +0 -1
  110. package/es/v1/helpers/colorHelpers/paletteUtilities.README.md +141 -336
  111. package/es/v1/helpers/colorHelpers/text/textColor.module.css +79 -295
  112. package/lib/Accordion/Accordion.js +1 -6
  113. package/lib/Accordion/AccordionItem.js +1 -6
  114. package/lib/Animation/Animation.js +1 -8
  115. package/lib/AppContainer/AppContainer.js +1 -6
  116. package/lib/AppContainer/__tests__/__snapshots__/AppContainer.spec.js.snap +16 -16
  117. package/lib/Avatar/Avatar.js +1 -6
  118. package/lib/AvatarTeam/AvatarTeam.js +1 -7
  119. package/lib/Button/Button.js +1 -7
  120. package/lib/Buttongroup/Buttongroup.js +1 -14
  121. package/lib/Card/Card.js +1 -8
  122. package/lib/Card/__tests__/__snapshots__/Card.spec.js.snap +17 -17
  123. package/lib/Card/__tests__/__snapshots__/CardContent.spec.js.snap +12 -12
  124. package/lib/Card/__tests__/__snapshots__/CardHeader.spec.js.snap +4 -4
  125. package/lib/CheckBox/CheckBox.js +1 -6
  126. package/lib/CheckBox/__tests__/__snapshots__/CheckBox.spec.js.snap +88 -88
  127. package/lib/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +48 -48
  128. package/lib/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +30 -30
  129. package/lib/DateTime/DateWidget.js +1 -11
  130. package/lib/DateTime/DateWidget.module.css +3 -0
  131. package/lib/DateTime/__tests__/__snapshots__/CalendarView.spec.js.snap +49 -49
  132. package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +93 -93
  133. package/lib/DateTime/__tests__/__snapshots__/DateTimePopupFooter.spec.js.snap +1 -1
  134. package/lib/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +8 -8
  135. package/lib/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +7 -7
  136. package/lib/DateTime/__tests__/__snapshots__/DaysRow.spec.js.snap +1 -1
  137. package/lib/DateTime/__tests__/__snapshots__/Time.spec.js.snap +28 -28
  138. package/lib/DropDown/DropDownHeading.js +1 -6
  139. package/lib/DropDown/__tests__/__snapshots__/DropDown.spec.js.snap +2 -2
  140. package/lib/Heading/Heading.js +1 -6
  141. package/lib/Label/Label.js +1 -6
  142. package/lib/Label/__tests__/__snapshots__/Label.spec.js.snap +4 -4
  143. package/lib/ListItem/ListContainer.js +1 -7
  144. package/lib/ListItem/ListItem.js +1 -6
  145. package/lib/ListItem/ListItemWithAvatar.js +1 -6
  146. package/lib/ListItem/ListItemWithCheckBox.js +1 -6
  147. package/lib/ListItem/ListItemWithIcon.js +1 -6
  148. package/lib/ListItem/ListItemWithRadio.js +1 -6
  149. package/lib/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +2 -2
  150. package/lib/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +16 -16
  151. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +41 -41
  152. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +62 -62
  153. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +41 -41
  154. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +62 -62
  155. package/lib/Modal/Modal.js +1 -8
  156. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +1 -7
  157. package/lib/MultiSelect/AdvancedMultiSelect.js +1 -9
  158. package/lib/MultiSelect/MobileHeader/__tests__/__snapshots__/MobileHeader.spec.js.snap +3 -3
  159. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +6 -6
  160. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +50 -50
  161. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +35 -35
  162. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +7 -7
  163. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +8 -8
  164. package/lib/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +4 -4
  165. package/lib/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +47 -47
  166. package/lib/Radio/__tests__/__snapshots__/Radio.spec.js.snap +94 -94
  167. package/lib/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1 -1
  168. package/lib/RippleEffect/RippleEffect.js +1 -6
  169. package/lib/Select/GroupSelect.js +1 -9
  170. package/lib/Select/Select.js +1 -11
  171. package/lib/Select/SelectWithAvatar.js +1 -9
  172. package/lib/Select/SelectWithIcon.js +1 -7
  173. package/lib/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +7 -7
  174. package/lib/Select/__tests__/__snapshots__/Select.spec.js.snap +831 -831
  175. package/lib/Select/__tests__/__snapshots__/SelectWithAvatar.spec.js.snap +2 -2
  176. package/lib/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +10 -10
  177. package/lib/Switch/Switch.js +1 -6
  178. package/lib/Switch/__tests__/__snapshots__/Switch.spec.js.snap +44 -44
  179. package/lib/Tab/Tab.js +1 -6
  180. package/lib/Tab/__tests__/__snapshots__/Tab.spec.js.snap +2 -2
  181. package/lib/Tab/__tests__/__snapshots__/TabContent.spec.js.snap +1 -1
  182. package/lib/Tab/__tests__/__snapshots__/TabContentWrapper.spec.js.snap +1 -1
  183. package/lib/Tab/__tests__/__snapshots__/TabLayout.spec.js.snap +40 -40
  184. package/lib/Tab/__tests__/__snapshots__/TabWrapper.spec.js.snap +1 -1
  185. package/lib/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +4 -4
  186. package/lib/Tag/Tag.js +1 -6
  187. package/lib/Tag/__tests__/__snapshots__/Tag.spec.js.snap +94 -94
  188. package/lib/TextBox/TextBox.js +1 -8
  189. package/lib/TextBoxIcon/TextBoxIcon.js +1 -8
  190. package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +167 -167
  191. package/lib/Textarea/Textarea.js +1 -8
  192. package/lib/Tooltip/Tooltip.js +1 -8
  193. package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +1 -5
  194. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +1 -5
  195. package/lib/semantic/Button/Button.js +1 -6
  196. package/lib/shared/ArrowIcon/__tests__/__snapshots__/ArrowIcon.spec.js.snap +20 -20
  197. package/lib/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +19 -19
  198. package/lib/v1/Button/Button.js +207 -123
  199. package/lib/v1/Button/README.md +110 -44
  200. package/lib/v1/Button/__tests__/Button.spec.js +195 -88
  201. package/lib/v1/Button/__tests__/__snapshots__/Button.spec.js.snap +1236 -340
  202. package/lib/v1/Button/constants/index.js +34 -31
  203. package/lib/v1/Button/constants/presets.js +179 -0
  204. package/lib/v1/Button/css/Button_v1.module.css +33 -16
  205. package/lib/v1/Button/css/cssJSLogic.js +45 -25
  206. package/lib/v1/Button/props/defaultProps.js +4 -5
  207. package/lib/v1/Button/props/propTypes.js +41 -7
  208. package/lib/v1/Label/__tests__/__snapshots__/Label.spec.js.snap +24 -24
  209. package/lib/v1/Switch/__tests__/__snapshots__/Switch.spec.js.snap +14 -14
  210. package/lib/v1/helpers/colorHelpers/__tests__/colorHelper.spec.js +363 -0
  211. package/lib/v1/helpers/colorHelpers/background/backgroundColor.module.css +38 -534
  212. package/lib/v1/helpers/colorHelpers/border/borderColor.module.css +28 -412
  213. package/lib/v1/helpers/colorHelpers/colorHelper.js +130 -153
  214. package/lib/v1/helpers/colorHelpers/constants/index.js +45 -4
  215. package/lib/v1/helpers/colorHelpers/index.js +2 -24
  216. package/lib/v1/helpers/colorHelpers/paletteUtilities.README.md +141 -336
  217. package/lib/v1/helpers/colorHelpers/text/textColor.module.css +79 -295
  218. package/package.json +16 -16
@@ -1,168 +1,149 @@
1
1
  import paletteBgStyle from "./background/backgroundColor.module.css";
2
2
  import paletteBorderStyle from "./border/borderColor.module.css";
3
3
  import paletteTextStyle from "./text/textColor.module.css";
4
- import { DUMMY_OBJECT } from '@zohodesk/dotkit/es/utils/constants';
5
4
  import { PALETTE_CONFIG, TONE_INTENSITY } from "./constants";
6
5
 
7
6
  const withState = (state, key) => state ? `${state}:${key}` : key;
8
7
 
9
- const toBgIntensity = (tone, hasState, isLighter) => {
10
- const intensity = TONE_INTENSITY[tone];
11
-
12
- if (!intensity) {
13
- return tone;
14
- }
15
-
16
- if (hasState) {
17
- return `${tone}-${isLighter ? intensity.lightHover : intensity.hover}`;
18
- }
19
-
20
- return `${tone}-${isLighter ? intensity.light : intensity.base}`;
8
+ const resolveConfig = (value, paletteConfig) => {
9
+ if (!value) return null;
10
+ if (value === true) return paletteConfig ? { ...paletteConfig,
11
+ isInherit: true
12
+ } : null;
13
+ return PALETTE_CONFIG[value] || {
14
+ tone: value,
15
+ textTone: value,
16
+ filledTextTone: value
17
+ };
21
18
  };
22
19
 
23
- const toTextIntensity = (tone, hasState) => {
24
- const intensity = TONE_INTENSITY[tone];
25
-
26
- if (!intensity) {
27
- return tone;
28
- }
20
+ const isContinuingTone = (config, restConfig) => !!(config && restConfig && config.tone === restConfig.tone && !!config.isLighter === !!restConfig.isLighter);
29
21
 
30
- if (hasState) {
31
- return `${tone}-${intensity.textHover ?? intensity.hover}`;
32
- }
33
-
34
- return `${tone}-${intensity.base}`;
22
+ const getBgClass = (state, config, darker) => {
23
+ const {
24
+ tone,
25
+ isLighter
26
+ } = config;
27
+ const intensity = TONE_INTENSITY[tone];
28
+ if (!intensity) return paletteBgStyle[withState(state, `bg-${tone}`)];
29
+ const shade = darker ? isLighter ? intensity.lightHover : intensity.hover : isLighter ? intensity.light : intensity.base;
30
+ return paletteBgStyle[withState(state, `bg-${tone}-${shade}`)];
35
31
  };
36
32
 
37
- const toBorderIntensity = (tone, hasState, isLighter) => {
33
+ const getBorderClass = (state, config, darker) => {
34
+ const {
35
+ tone,
36
+ isLighter
37
+ } = config;
38
38
  const intensity = TONE_INTENSITY[tone];
39
+ if (!intensity) return paletteBorderStyle[withState(state, `border-${tone}`)];
40
+ const shade = darker ? intensity.hover : isLighter ? intensity.borderLight : intensity.base;
41
+ return paletteBorderStyle[withState(state, `border-${tone}-${shade}`)];
42
+ };
39
43
 
40
- if (!intensity) {
41
- return tone;
42
- }
43
-
44
- if (hasState) {
45
- return `${tone}-${intensity.hover}`;
46
- }
44
+ const getTextClass = (state, textTone, darker) => {
45
+ const intensity = TONE_INTENSITY[textTone];
46
+ if (!intensity) return paletteTextStyle[withState(state, `text-${textTone}`)];
47
+ const shade = darker ? intensity.textHover ?? intensity.hover : intensity.base;
48
+ return paletteTextStyle[withState(state, `text-${textTone}-${shade}`)];
49
+ };
47
50
 
48
- return `${tone}-${isLighter ? intensity.borderLight : intensity.base}`;
51
+ const resolveTextTone = (textConfig, bgConfig) => {
52
+ if (!textConfig) return null;
53
+ if (textConfig.isInherit && bgConfig) return bgConfig.isLighter ? textConfig.textTone : textConfig.filledTextTone;
54
+ return textConfig.textTone || null;
49
55
  };
50
56
 
51
- export const getBgClass = ({
52
- state,
53
- tone,
54
- isLighter
55
- }) => paletteBgStyle[withState(state, `bg-${toBgIntensity(tone, !!state, isLighter)}`)];
56
- export const getTextClass = ({
57
- state,
58
- textTone
59
- }) => paletteTextStyle[withState(state, `text-${toTextIntensity(textTone, !!state)}`)];
60
- export const getBorderClass = ({
61
- state,
62
- tone,
63
- isLighter
64
- }) => paletteBorderStyle[withState(state, `border-${toBorderIntensity(tone, !!state, isLighter)}`)];
57
+ const BG_BORDER_INVALID = new Set(['black', 'white']);
58
+ const TEXT_INVALID = new Set(['transparent']);
65
59
 
66
- const buildPaletteClasses = (config, {
67
- bgAppearance,
68
- borderAppearance,
69
- paletteShade,
70
- isSelected
60
+ const buildStateClasses = ({
61
+ appearance,
62
+ state,
63
+ paletteConfig,
64
+ restAppearance,
65
+ restPaletteConfig,
66
+ textFallbackBgConfig
71
67
  }) => {
72
- const {
73
- tone,
74
- textTone,
75
- filledTextTone
76
- } = config;
77
- const isLighter = paletteShade === 'lighter';
78
- const hasBgState = bgAppearance !== 'none';
79
- const isFilledBg = bgAppearance === 'default';
80
- const hasBorderState = borderAppearance !== 'none';
81
- const hasTransparentBorder = borderAppearance === 'onHover' || borderAppearance === 'none';
82
- const baseTextTone = isFilledBg && !isLighter ? filledTextTone : textTone;
83
- const stateTextTone = hasBgState && !isLighter ? filledTextTone : textTone;
68
+ if (!appearance) return {
69
+ bg: '',
70
+ text: '',
71
+ border: ''
72
+ };
73
+ const rawBgConfig = resolveConfig(appearance.bg, paletteConfig);
74
+ const rawBorderConfig = resolveConfig(appearance.border, paletteConfig);
75
+ const rawTextConfig = resolveConfig(appearance.text, paletteConfig);
76
+ const bgConfig = rawBgConfig && !BG_BORDER_INVALID.has(rawBgConfig.tone) ? rawBgConfig : null;
77
+ const borderConfig = rawBorderConfig && !BG_BORDER_INVALID.has(rawBorderConfig.tone) ? rawBorderConfig : null;
78
+ const textConfig = rawTextConfig && !TEXT_INVALID.has(rawTextConfig.tone) ? rawTextConfig : null;
79
+ const rawRestBgConfig = restAppearance ? resolveConfig(restAppearance.bg, restPaletteConfig) : null;
80
+ const restBgConfig = rawRestBgConfig && !BG_BORDER_INVALID.has(rawRestBgConfig.tone) ? rawRestBgConfig : null;
81
+ const rawRestBorderConfig = restAppearance ? resolveConfig(restAppearance.border, restPaletteConfig) : null;
82
+ const restBorderConfig = rawRestBorderConfig && !BG_BORDER_INVALID.has(rawRestBorderConfig.tone) ? rawRestBorderConfig : null;
83
+ const rawRestTextConfig = restAppearance ? resolveConfig(restAppearance.text, restPaletteConfig) : null;
84
+ const restTextConfig = rawRestTextConfig && !TEXT_INVALID.has(rawRestTextConfig.tone) ? rawRestTextConfig : null;
85
+ const bg = bgConfig ? getBgClass(state, bgConfig, isContinuingTone(bgConfig, restBgConfig)) || '' : '';
86
+ const border = borderConfig ? getBorderClass(state, borderConfig, isContinuingTone(borderConfig, restBorderConfig)) || '' : state ? '' : paletteBorderStyle['border-transparent'] || '';
87
+ const effectiveBgForText = bgConfig || textFallbackBgConfig || restBgConfig || null;
88
+ const textTone = resolveTextTone(textConfig, effectiveBgForText);
89
+ const restTextTone = resolveTextTone(restTextConfig, restBgConfig);
90
+ const text = textTone ? getTextClass(state, textTone, textTone === restTextTone) || '' : '';
84
91
  return {
85
- bg: isSelected ? hasBgState ? getBgClass({
86
- state: 'selected',
87
- tone,
88
- isLighter
89
- }) : '' : isFilledBg ? getBgClass({
90
- tone,
91
- isLighter
92
- }) : '',
93
- hoverBg: hasBgState ? getBgClass({
94
- state: 'hover',
95
- tone,
96
- isLighter
97
- }) : '',
98
- focusBg: hasBgState ? getBgClass({
99
- state: 'focus',
100
- tone,
101
- isLighter
102
- }) : '',
103
- activeBg: hasBgState ? getBgClass({
104
- state: 'active',
105
- tone,
106
- isLighter
107
- }) : '',
108
- text: isSelected ? getTextClass({
109
- state: 'selected',
110
- textTone: hasBgState ? stateTextTone : baseTextTone
111
- }) : getTextClass({
112
- textTone: baseTextTone
113
- }),
114
- hoverText: getTextClass({
115
- state: 'hover',
116
- textTone: stateTextTone
117
- }),
118
- focusText: getTextClass({
119
- state: 'focus',
120
- textTone: stateTextTone
121
- }),
122
- activeText: getTextClass({
123
- state: 'active',
124
- textTone: stateTextTone
125
- }),
126
- border: isSelected ? !hasBorderState ? getBorderClass({
127
- tone: 'transparent'
128
- }) : getBorderClass({
129
- state: 'selected',
130
- tone
131
- }) : hasTransparentBorder ? getBorderClass({
132
- tone: 'transparent'
133
- }) : getBorderClass({
134
- tone,
135
- isLighter
136
- }),
137
- hoverBorder: hasBorderState ? getBorderClass({
138
- state: 'hover',
139
- tone
140
- }) : '',
141
- focusBorder: hasBorderState ? getBorderClass({
142
- state: 'focus',
143
- tone
144
- }) : '',
145
- activeBorder: hasBorderState ? getBorderClass({
146
- state: 'active',
147
- tone
148
- }) : ''
92
+ bg,
93
+ text,
94
+ border
149
95
  };
150
96
  };
151
97
 
152
98
  const getPaletteClasses = ({
153
99
  palette,
154
- bgAppearance,
155
- borderAppearance,
156
- paletteShade,
157
- isSelected
100
+ appearance,
101
+ hoverAppearance,
102
+ selectedAppearance
158
103
  }) => {
159
- const config = PALETTE_CONFIG[palette];
160
- return config ? buildPaletteClasses(config, {
161
- bgAppearance,
162
- borderAppearance,
163
- paletteShade,
164
- isSelected
165
- }) : DUMMY_OBJECT;
104
+ const paletteConfig = PALETTE_CONFIG[palette];
105
+ const base = buildStateClasses({
106
+ appearance,
107
+ state: undefined,
108
+ paletteConfig
109
+ });
110
+ const rawBaseBgConfig = resolveConfig(appearance?.bg, paletteConfig);
111
+ const restBgForText = rawBaseBgConfig && !BG_BORDER_INVALID.has(rawBaseBgConfig.tone) ? rawBaseBgConfig : null;
112
+ const selected = buildStateClasses({
113
+ appearance: selectedAppearance,
114
+ state: 'selected',
115
+ paletteConfig,
116
+ textFallbackBgConfig: restBgForText
117
+ });
118
+
119
+ const buildInteractive = state => buildStateClasses({
120
+ appearance: hoverAppearance,
121
+ state,
122
+ paletteConfig,
123
+ restAppearance: appearance,
124
+ restPaletteConfig: paletteConfig
125
+ });
126
+
127
+ const hover = buildInteractive('hover');
128
+ const focus = buildInteractive('focus');
129
+ const active = buildInteractive('active');
130
+ return {
131
+ bg: base.bg,
132
+ selectedBg: selected.bg,
133
+ hoverBg: hover.bg,
134
+ focusBg: focus.bg,
135
+ activeBg: active.bg,
136
+ text: base.text,
137
+ selectedText: selected.text,
138
+ hoverText: hover.text,
139
+ focusText: focus.text,
140
+ activeText: active.text,
141
+ border: base.border,
142
+ selectedBorder: selected.border,
143
+ hoverBorder: hover.border,
144
+ focusBorder: focus.border,
145
+ activeBorder: active.border
146
+ };
166
147
  };
167
148
 
168
149
  export default getPaletteClasses;
@@ -10,8 +10,8 @@ export const TONE_INTENSITY = {
10
10
  base: 65,
11
11
  hover: 55,
12
12
  light: 10,
13
- lightHover: 15,
14
- borderLight: 15,
13
+ lightHover: 20,
14
+ borderLight: 20,
15
15
  textHover: 100
16
16
  },
17
17
  blue: {
@@ -51,29 +51,70 @@ export const TONE_INTENSITY = {
51
51
  }
52
52
  };
53
53
  export const PALETTE_CONFIG = {
54
- default: {
54
+ brand: {
55
55
  tone: 'brand',
56
56
  textTone: 'brand',
57
57
  filledTextTone: 'brand-filled'
58
58
  },
59
- primary: {
59
+ brandLighter: {
60
+ tone: 'brand',
61
+ textTone: 'brand',
62
+ filledTextTone: 'brand',
63
+ isLighter: true
64
+ },
65
+ info: {
60
66
  tone: 'blue',
61
67
  textTone: 'blue',
62
68
  filledTextTone: 'white'
63
69
  },
70
+ infoLighter: {
71
+ tone: 'blue',
72
+ textTone: 'blue',
73
+ filledTextTone: 'blue',
74
+ isLighter: true
75
+ },
64
76
  secondary: {
65
77
  tone: 'grey',
66
78
  textTone: 'grey',
67
79
  filledTextTone: 'white'
68
80
  },
81
+ secondaryLighter: {
82
+ tone: 'grey',
83
+ textTone: 'grey',
84
+ filledTextTone: 'grey',
85
+ isLighter: true
86
+ },
69
87
  danger: {
70
88
  tone: 'red',
71
89
  textTone: 'red',
72
90
  filledTextTone: 'white'
73
91
  },
92
+ dangerLighter: {
93
+ tone: 'red',
94
+ textTone: 'red',
95
+ filledTextTone: 'red',
96
+ isLighter: true
97
+ },
74
98
  success: {
75
99
  tone: 'green',
76
100
  textTone: 'green',
77
101
  filledTextTone: 'white'
102
+ },
103
+ successLighter: {
104
+ tone: 'green',
105
+ textTone: 'green',
106
+ filledTextTone: 'green',
107
+ isLighter: true
108
+ },
109
+ warning: {
110
+ tone: 'orange',
111
+ textTone: 'orange',
112
+ filledTextTone: 'white'
113
+ },
114
+ warningLighter: {
115
+ tone: 'orange',
116
+ textTone: 'orange',
117
+ filledTextTone: 'orange',
118
+ isLighter: true
78
119
  }
79
120
  };
@@ -1,4 +1,3 @@
1
1
  export { default } from "./colorHelper";
2
2
  export { default as getPaletteClasses } from "./colorHelper";
3
- export { getBgClass, getTextClass, getBorderClass } from "./colorHelper";
4
3
  export { PALETTE_CONFIG, TONE_INTENSITY } from "./constants";