@spaced-out/ui-design-system 0.1.130-beta.0 → 0.2.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 (35) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/design-tokens/color/app-color.json +22 -0
  3. package/lib/components/ButtonDropdown/ButtonDropdown.js +6 -5
  4. package/lib/components/ButtonDropdown/ButtonDropdown.js.flow +4 -4
  5. package/lib/components/ButtonTabs/ButtonTabDropdown.js +6 -5
  6. package/lib/components/ButtonTabs/ButtonTabDropdown.js.flow +4 -4
  7. package/lib/components/Dropdown/Dropdown.js +7 -6
  8. package/lib/components/Dropdown/Dropdown.js.flow +5 -5
  9. package/lib/components/InlineDropdown/InlineDropdown.js +6 -5
  10. package/lib/components/InlineDropdown/InlineDropdown.js.flow +4 -4
  11. package/lib/components/ScoreBar/ScoreBar.js +64 -0
  12. package/lib/components/ScoreBar/ScoreBar.js.flow +117 -0
  13. package/lib/components/ScoreBar/ScoreBar.module.css +36 -0
  14. package/lib/components/ScoreBar/index.js +16 -0
  15. package/lib/components/ScoreBar/index.js.flow +3 -0
  16. package/lib/components/Tabs/TabList/TabDropdown.js +6 -5
  17. package/lib/components/Tabs/TabList/TabDropdown.js.flow +4 -4
  18. package/lib/components/Typeahead/Typeahead.js +3 -4
  19. package/lib/components/Typeahead/Typeahead.js.flow +2 -3
  20. package/lib/styles/index.css +12 -0
  21. package/lib/styles/index.js +15 -3
  22. package/lib/styles/index.js.flow +12 -0
  23. package/lib/styles/variables/_color.css +12 -0
  24. package/lib/styles/variables/_color.js +14 -1
  25. package/lib/styles/variables/_color.js.flow +12 -0
  26. package/lib/utils/click-away/click-away.js +20 -18
  27. package/lib/utils/click-away/click-away.js.flow +44 -27
  28. package/lib/utils/index.js +11 -0
  29. package/lib/utils/index.js.flow +1 -0
  30. package/lib/utils/merge-refs/merge-refs.js.flow +2 -2
  31. package/lib/utils/score-bar/index.js +16 -0
  32. package/lib/utils/score-bar/index.js.flow +3 -0
  33. package/lib/utils/score-bar/score-bar.js +27 -0
  34. package/lib/utils/score-bar/score-bar.js.flow +33 -0
  35. package/package.json +3 -3
@@ -17,6 +17,7 @@ import {
17
17
  import {spaceNone, spaceXXSmall} from '../../../styles/variables/_space';
18
18
  import {classify} from '../../../utils/classify';
19
19
  import {ClickAway} from '../../../utils/click-away';
20
+ import {mergeRefs} from '../../../utils/merge-refs';
20
21
  import type {AnchorType} from '../../ButtonDropdown';
21
22
  import type {MenuOption, MenuProps} from '../../Menu';
22
23
  import {Menu} from '../../Menu';
@@ -59,7 +60,7 @@ export const TabDropdown = ({
59
60
 
60
61
  return (
61
62
  <ClickAway>
62
- {({isOpen, onOpen, cancelNext, clickAway}) => (
63
+ {({isOpen, onOpen, clickAway, boundaryRef, triggerRef}) => (
63
64
  <div
64
65
  data-testid="TabDropdown"
65
66
  className={classify(css.tabDropdownContainer, classNames?.wrapper)}
@@ -68,7 +69,7 @@ export const TabDropdown = ({
68
69
  <Tab
69
70
  {...props?.tab}
70
71
  size={size}
71
- ref={refs.setReference}
72
+ ref={mergeRefs([refs.setReference, triggerRef])}
72
73
  onClick={(e) => {
73
74
  e.stopPropagation();
74
75
  onOpen();
@@ -80,8 +81,7 @@ export const TabDropdown = ({
80
81
  />
81
82
  {isOpen && props?.menu && (
82
83
  <div
83
- onClickCapture={cancelNext}
84
- ref={refs.setFloating}
84
+ ref={mergeRefs([refs.setFloating, boundaryRef])}
85
85
  style={{
86
86
  display: 'flex',
87
87
  position: strategy,
@@ -68,13 +68,13 @@ const Typeahead = /*#__PURE__*/React.forwardRef((_ref, ref) => {
68
68
  let {
69
69
  isOpen,
70
70
  onOpen,
71
- cancelNext,
72
- clickAway
71
+ clickAway,
72
+ boundaryRef
73
73
  } = _ref2;
74
74
  return /*#__PURE__*/React.createElement("div", {
75
75
  "data-testid": "Typeahead",
76
76
  className: (0, _classify.classify)(_TypeaheadModule.default.typeaheadContainer, classNames?.wrapper),
77
- onClickCapture: cancelNext
77
+ ref: boundaryRef
78
78
  }, /*#__PURE__*/React.createElement(_SearchInput.SearchInput, _extends({}, inputProps, {
79
79
  ref: ref,
80
80
  boxRef: refs.setReference,
@@ -106,7 +106,6 @@ const Typeahead = /*#__PURE__*/React.forwardRef((_ref, ref) => {
106
106
  onClear?.();
107
107
  }
108
108
  })), isOpen && !isLoading && menu && filteredOptions && !!filteredOptions.length && /*#__PURE__*/React.createElement("div", {
109
- onClickCapture: cancelNext,
110
109
  ref: refs.setFloating,
111
110
  style: {
112
111
  position: strategy,
@@ -98,11 +98,11 @@ export const Typeahead: React$AbstractComponent<
98
98
 
99
99
  return (
100
100
  <ClickAway onChange={onMenuToggle} clickAwayRef={clickAwayRef}>
101
- {({isOpen, onOpen, cancelNext, clickAway}) => (
101
+ {({isOpen, onOpen, clickAway, boundaryRef}) => (
102
102
  <div
103
103
  data-testid="Typeahead"
104
104
  className={classify(css.typeaheadContainer, classNames?.wrapper)}
105
- onClickCapture={cancelNext}
105
+ ref={boundaryRef}
106
106
  >
107
107
  <SearchInput
108
108
  {...inputProps}
@@ -140,7 +140,6 @@ export const Typeahead: React$AbstractComponent<
140
140
  filteredOptions &&
141
141
  !!filteredOptions.length && (
142
142
  <div
143
- onClickCapture={cancelNext}
144
143
  ref={refs.setFloating}
145
144
  style={{
146
145
  position: strategy,
@@ -160,6 +160,18 @@
160
160
 
161
161
  @value colorDataViz8: #F5EBB4;
162
162
 
163
+ @value colorScoreBarLevel1: #e94970;
164
+
165
+ @value colorScoreBarLevel2: #e5983d;
166
+
167
+ @value colorScoreBarLevel3: #3987f3;
168
+
169
+ @value colorScoreBarLevel4: #56b988;
170
+
171
+ @value colorScoreBarLevel5: #026b37;
172
+
173
+ @value colorScoreBarInactive: #D3D2E0;
174
+
163
175
  @value colorGrayLightest: #EBEBEB;
164
176
 
165
177
  @value colorNeutral: #706F9B;
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.colorTextTertiary = exports.colorTextSuccess = exports.colorTextSecondary = exports.colorTextPrimary = exports.colorTextNeutral = exports.colorTextInverseSecondary = exports.colorTextInversePrimary = exports.colorTextInformation = exports.colorTextFavorite = exports.colorTextDisabled = exports.colorTextDanger = exports.colorTextClickable = exports.colorSuccessLightest = exports.colorSuccessLight = exports.colorSuccessDarkest = exports.colorSuccessDark = exports.colorSuccess = exports.colorSubMenuStar = exports.colorSubMenuBackgroundDefault = exports.colorSideMenuIconDefault = exports.colorSideMenuIconActive = exports.colorSideMenuBackgroundSelected = exports.colorSideMenuBackgroundHovered = exports.colorSideMenuBackgroundDefault = exports.colorSideMenuAccountBarFill = exports.colorNeutralLightest = exports.colorNeutralLight = exports.colorNeutralDarkest = exports.colorNeutralDark = exports.colorNeutral = exports.colorInformationLightest = exports.colorInformationLight = exports.colorInformationDarkest = exports.colorInformationDark = exports.colorInformation = exports.colorGroupMenuTextDefault = exports.colorGroupMenuBackgroundSelected = exports.colorGroupMenuBackgroundHovered = exports.colorGroupMenuBackgroundDefault = exports.colorGrayLightest = exports.colorFocusPrimary = exports.colorFocusDanger = exports.colorFillSecondary = exports.colorFillPrimary = exports.colorFillNone = exports.colorFillInversePrimary = exports.colorFillDisabled = exports.colorDataViz8 = exports.colorDataViz7 = exports.colorDataViz6 = exports.colorDataViz5 = exports.colorDataViz4 = exports.colorDataViz3 = exports.colorDataViz2 = exports.colorDataViz1 = exports.colorDangerLightest = exports.colorDangerLight = exports.colorDangerDarkest = exports.colorDangerDark = exports.colorDanger = exports.colorButtonFillTertiaryPressed = exports.colorButtonFillTertiaryHovered = exports.colorButtonFillTertiaryEnabled = exports.colorButtonFillTableActionPressed = exports.colorButtonFillTableActionHovered = exports.colorButtonFillTableActionEnabled = exports.colorButtonFillTableActionBorder = exports.colorButtonFillSecondaryPressed = exports.colorButtonFillSecondaryHovered = exports.colorButtonFillSecondaryEnabled = exports.colorButtonFillPrimaryPressed = exports.colorButtonFillPrimaryHovered = exports.colorButtonFillPrimaryEnabled = exports.colorButtonFillGhostPressed = exports.colorButtonFillGhostHovered = exports.colorButtonFillGhostEnabled = exports.colorButtonFillDangerPressed = exports.colorButtonFillDangerHovered = exports.colorButtonFillDangerEnabled = exports.colorBorderTertiary = exports.colorBorderSecondary = exports.colorBorderPrimary = exports.colorBorderDanger = exports.colorBackgroundTertiary = exports.colorBackgroundSecondary = exports.colorBackgroundPrimary = exports.colorBackgroundBrand = exports.colorBackdropFill = exports.borderWidthTertiary = exports.borderWidthSecondary = exports.borderWidthPrimary = exports.borderWidthNone = exports.borderRadiusXSmall = exports.borderRadiusXLarge = exports.borderRadiusSmall = exports.borderRadiusRadioButton = exports.borderRadiusNone = exports.borderRadiusMedium = exports.borderRadiusLarge = exports.borderRadiusCircle = void 0;
7
- exports.size2 = exports.size180 = exports.size18 = exports.size160 = exports.size140 = exports.size1280 = exports.size125 = exports.size12 = exports.size110 = exports.size100 = exports.size10 = exports.shadowBoxShadow4Y = exports.shadowBoxShadow4X = exports.shadowBoxShadow4Type = exports.shadowBoxShadow4Spread = exports.shadowBoxShadow4Color = exports.shadowBoxShadow4Blur = exports.shadowBoxShadow3Y = exports.shadowBoxShadow3X = exports.shadowBoxShadow3Type = exports.shadowBoxShadow3Spread = exports.shadowBoxShadow3Color = exports.shadowBoxShadow3Blur = exports.shadowBoxShadow2Y = exports.shadowBoxShadow2X = exports.shadowBoxShadow2Type = exports.shadowBoxShadow2Spread = exports.shadowBoxShadow2Color = exports.shadowBoxShadow2Blur = exports.shadowBoxShadow1Y = exports.shadowBoxShadow1X = exports.shadowBoxShadow1Type = exports.shadowBoxShadow1Spread = exports.shadowBoxShadow1Color = exports.shadowBoxShadow1Blur = exports.opacity95 = exports.opacity90 = exports.opacity85 = exports.opacity80 = exports.opacity70 = exports.opacity60 = exports.opacity50 = exports.opacity5 = exports.opacity40 = exports.opacity30 = exports.opacity20 = exports.opacity15 = exports.opacity100 = exports.opacity10 = exports.opacity0 = exports.motionEaseInEaseOut = exports.motionDurationSlowest = exports.motionDurationSlower = exports.motionDurationSlow = exports.motionDurationNormal = exports.motionDurationFast = exports.fontWeightMedium = exports.fontWeightBook = exports.fontTextDecorationNone = exports.fontTextCaseNone = exports.fontSize46 = exports.fontSize36 = exports.fontSize26 = exports.fontSize24 = exports.fontSize18 = exports.fontSize16 = exports.fontSize14 = exports.fontSize13 = exports.fontSize12 = exports.fontParagraphSpacing0 = exports.fontLineHeight170 = exports.fontLineHeight150 = exports.fontLineHeight140 = exports.fontLineHeight130 = exports.fontLineHeight125 = exports.fontLineHeight120 = exports.fontLineHeight100 = exports.fontLetterSpacingMinus4 = exports.fontLetterSpacingMinus3 = exports.fontLetterSpacingMinus2 = exports.fontLetterSpacingMinus1 = exports.fontLetterSpacing4 = exports.fontLetterSpacing2 = exports.fontLetterSpacing1 = exports.fontLetterSpacing0 = exports.fontFamilyCentra = exports.elevationTooltip = exports.elevationToast = exports.elevationNone = exports.elevationModal = exports.elevationMenu = exports.elevationCard = exports.elevationBackdrop = exports.colorWarningLightest = exports.colorWarningLight = exports.colorWarningDarkest = exports.colorWarningDark = exports.colorWarning = exports.colorTooltipFill = exports.colorTextWarning = void 0;
8
- exports.spaceXXSmall = exports.spaceXXLarge = exports.spaceXSmall = exports.spaceXLarge = exports.spaceSmall = exports.spaceNone = exports.spaceNegHalfFluid = exports.spaceNegFluid = exports.spaceMedium = exports.spaceLarge = exports.spaceHalfFluid = exports.spaceFluid = exports.sizeFullViewportWidth = exports.sizeFullViewportHeight = exports.sizeFluid = exports.size960 = exports.size90 = exports.size880 = exports.size800 = exports.size8 = exports.size720 = exports.size70 = exports.size660 = exports.size66 = exports.size640 = exports.size60 = exports.size580 = exports.size58 = exports.size540 = exports.size500 = exports.size50 = exports.size5 = exports.size480 = exports.size48 = exports.size44 = exports.size42 = exports.size400 = exports.size40 = exports.size4 = exports.size380 = exports.size38 = exports.size36 = exports.size34 = exports.size320 = exports.size32 = exports.size300 = exports.size30 = exports.size28 = exports.size276 = exports.size260 = exports.size26 = exports.size252 = exports.size240 = exports.size24 = exports.size228 = exports.size22 = exports.size200 = exports.size20 = void 0;
6
+ exports.colorTextInversePrimary = exports.colorTextInformation = exports.colorTextFavorite = exports.colorTextDisabled = exports.colorTextDanger = exports.colorTextClickable = exports.colorSuccessLightest = exports.colorSuccessLight = exports.colorSuccessDarkest = exports.colorSuccessDark = exports.colorSuccess = exports.colorSubMenuStar = exports.colorSubMenuBackgroundDefault = exports.colorSideMenuIconDefault = exports.colorSideMenuIconActive = exports.colorSideMenuBackgroundSelected = exports.colorSideMenuBackgroundHovered = exports.colorSideMenuBackgroundDefault = exports.colorSideMenuAccountBarFill = exports.colorScoreBarLevel5 = exports.colorScoreBarLevel4 = exports.colorScoreBarLevel3 = exports.colorScoreBarLevel2 = exports.colorScoreBarLevel1 = exports.colorScoreBarInactive = exports.colorNeutralLightest = exports.colorNeutralLight = exports.colorNeutralDarkest = exports.colorNeutralDark = exports.colorNeutral = exports.colorInformationLightest = exports.colorInformationLight = exports.colorInformationDarkest = exports.colorInformationDark = exports.colorInformation = exports.colorGroupMenuTextDefault = exports.colorGroupMenuBackgroundSelected = exports.colorGroupMenuBackgroundHovered = exports.colorGroupMenuBackgroundDefault = exports.colorGrayLightest = exports.colorFocusPrimary = exports.colorFocusDanger = exports.colorFillSecondary = exports.colorFillPrimary = exports.colorFillNone = exports.colorFillInversePrimary = exports.colorFillDisabled = exports.colorDataViz8 = exports.colorDataViz7 = exports.colorDataViz6 = exports.colorDataViz5 = exports.colorDataViz4 = exports.colorDataViz3 = exports.colorDataViz2 = exports.colorDataViz1 = exports.colorDangerLightest = exports.colorDangerLight = exports.colorDangerDarkest = exports.colorDangerDark = exports.colorDanger = exports.colorButtonFillTertiaryPressed = exports.colorButtonFillTertiaryHovered = exports.colorButtonFillTertiaryEnabled = exports.colorButtonFillTableActionPressed = exports.colorButtonFillTableActionHovered = exports.colorButtonFillTableActionEnabled = exports.colorButtonFillTableActionBorder = exports.colorButtonFillSecondaryPressed = exports.colorButtonFillSecondaryHovered = exports.colorButtonFillSecondaryEnabled = exports.colorButtonFillPrimaryPressed = exports.colorButtonFillPrimaryHovered = exports.colorButtonFillPrimaryEnabled = exports.colorButtonFillGhostPressed = exports.colorButtonFillGhostHovered = exports.colorButtonFillGhostEnabled = exports.colorButtonFillDangerPressed = exports.colorButtonFillDangerHovered = exports.colorButtonFillDangerEnabled = exports.colorBorderTertiary = exports.colorBorderSecondary = exports.colorBorderPrimary = exports.colorBorderDanger = exports.colorBackgroundTertiary = exports.colorBackgroundSecondary = exports.colorBackgroundPrimary = exports.colorBackgroundBrand = exports.colorBackdropFill = exports.borderWidthTertiary = exports.borderWidthSecondary = exports.borderWidthPrimary = exports.borderWidthNone = exports.borderRadiusXSmall = exports.borderRadiusXLarge = exports.borderRadiusSmall = exports.borderRadiusRadioButton = exports.borderRadiusNone = exports.borderRadiusMedium = exports.borderRadiusLarge = exports.borderRadiusCircle = void 0;
7
+ exports.size125 = exports.size12 = exports.size110 = exports.size100 = exports.size10 = exports.shadowBoxShadow4Y = exports.shadowBoxShadow4X = exports.shadowBoxShadow4Type = exports.shadowBoxShadow4Spread = exports.shadowBoxShadow4Color = exports.shadowBoxShadow4Blur = exports.shadowBoxShadow3Y = exports.shadowBoxShadow3X = exports.shadowBoxShadow3Type = exports.shadowBoxShadow3Spread = exports.shadowBoxShadow3Color = exports.shadowBoxShadow3Blur = exports.shadowBoxShadow2Y = exports.shadowBoxShadow2X = exports.shadowBoxShadow2Type = exports.shadowBoxShadow2Spread = exports.shadowBoxShadow2Color = exports.shadowBoxShadow2Blur = exports.shadowBoxShadow1Y = exports.shadowBoxShadow1X = exports.shadowBoxShadow1Type = exports.shadowBoxShadow1Spread = exports.shadowBoxShadow1Color = exports.shadowBoxShadow1Blur = exports.opacity95 = exports.opacity90 = exports.opacity85 = exports.opacity80 = exports.opacity70 = exports.opacity60 = exports.opacity50 = exports.opacity5 = exports.opacity40 = exports.opacity30 = exports.opacity20 = exports.opacity15 = exports.opacity100 = exports.opacity10 = exports.opacity0 = exports.motionEaseInEaseOut = exports.motionDurationSlowest = exports.motionDurationSlower = exports.motionDurationSlow = exports.motionDurationNormal = exports.motionDurationFast = exports.fontWeightMedium = exports.fontWeightBook = exports.fontTextDecorationNone = exports.fontTextCaseNone = exports.fontSize46 = exports.fontSize36 = exports.fontSize26 = exports.fontSize24 = exports.fontSize18 = exports.fontSize16 = exports.fontSize14 = exports.fontSize13 = exports.fontSize12 = exports.fontParagraphSpacing0 = exports.fontLineHeight170 = exports.fontLineHeight150 = exports.fontLineHeight140 = exports.fontLineHeight130 = exports.fontLineHeight125 = exports.fontLineHeight120 = exports.fontLineHeight100 = exports.fontLetterSpacingMinus4 = exports.fontLetterSpacingMinus3 = exports.fontLetterSpacingMinus2 = exports.fontLetterSpacingMinus1 = exports.fontLetterSpacing4 = exports.fontLetterSpacing2 = exports.fontLetterSpacing1 = exports.fontLetterSpacing0 = exports.fontFamilyCentra = exports.elevationTooltip = exports.elevationToast = exports.elevationNone = exports.elevationModal = exports.elevationMenu = exports.elevationCard = exports.elevationBackdrop = exports.colorWarningLightest = exports.colorWarningLight = exports.colorWarningDarkest = exports.colorWarningDark = exports.colorWarning = exports.colorTooltipFill = exports.colorTextWarning = exports.colorTextTertiary = exports.colorTextSuccess = exports.colorTextSecondary = exports.colorTextPrimary = exports.colorTextNeutral = exports.colorTextInverseSecondary = void 0;
8
+ exports.spaceXXSmall = exports.spaceXXLarge = exports.spaceXSmall = exports.spaceXLarge = exports.spaceSmall = exports.spaceNone = exports.spaceNegHalfFluid = exports.spaceNegFluid = exports.spaceMedium = exports.spaceLarge = exports.spaceHalfFluid = exports.spaceFluid = exports.sizeFullViewportWidth = exports.sizeFullViewportHeight = exports.sizeFluid = exports.size960 = exports.size90 = exports.size880 = exports.size800 = exports.size8 = exports.size720 = exports.size70 = exports.size660 = exports.size66 = exports.size640 = exports.size60 = exports.size580 = exports.size58 = exports.size540 = exports.size500 = exports.size50 = exports.size5 = exports.size480 = exports.size48 = exports.size44 = exports.size42 = exports.size400 = exports.size40 = exports.size4 = exports.size380 = exports.size38 = exports.size36 = exports.size34 = exports.size320 = exports.size32 = exports.size300 = exports.size30 = exports.size28 = exports.size276 = exports.size260 = exports.size26 = exports.size252 = exports.size240 = exports.size24 = exports.size228 = exports.size22 = exports.size200 = exports.size20 = exports.size2 = exports.size180 = exports.size18 = exports.size160 = exports.size140 = exports.size1280 = void 0;
9
9
 
10
10
  const borderWidthNone = '0px';
11
11
  exports.borderWidthNone = borderWidthNone;
@@ -169,6 +169,18 @@ const colorDataViz7 = '#F5B8E1';
169
169
  exports.colorDataViz7 = colorDataViz7;
170
170
  const colorDataViz8 = '#F5EBB4';
171
171
  exports.colorDataViz8 = colorDataViz8;
172
+ const colorScoreBarLevel1 = '#e94970';
173
+ exports.colorScoreBarLevel1 = colorScoreBarLevel1;
174
+ const colorScoreBarLevel2 = '#e5983d';
175
+ exports.colorScoreBarLevel2 = colorScoreBarLevel2;
176
+ const colorScoreBarLevel3 = '#3987f3';
177
+ exports.colorScoreBarLevel3 = colorScoreBarLevel3;
178
+ const colorScoreBarLevel4 = '#56b988';
179
+ exports.colorScoreBarLevel4 = colorScoreBarLevel4;
180
+ const colorScoreBarLevel5 = '#026b37';
181
+ exports.colorScoreBarLevel5 = colorScoreBarLevel5;
182
+ const colorScoreBarInactive = '#D3D2E0';
183
+ exports.colorScoreBarInactive = colorScoreBarInactive;
172
184
  const colorGrayLightest = '#EBEBEB';
173
185
  exports.colorGrayLightest = colorGrayLightest;
174
186
  const colorNeutral = '#706F9B';
@@ -162,6 +162,18 @@ export const colorDataViz7 = '#F5B8E1';
162
162
 
163
163
  export const colorDataViz8 = '#F5EBB4';
164
164
 
165
+ export const colorScoreBarLevel1 = '#e94970';
166
+
167
+ export const colorScoreBarLevel2 = '#e5983d';
168
+
169
+ export const colorScoreBarLevel3 = '#3987f3';
170
+
171
+ export const colorScoreBarLevel4 = '#56b988';
172
+
173
+ export const colorScoreBarLevel5 = '#026b37';
174
+
175
+ export const colorScoreBarInactive = '#D3D2E0';
176
+
165
177
  export const colorGrayLightest = '#EBEBEB';
166
178
 
167
179
  export const colorNeutral = '#706F9B';
@@ -136,6 +136,18 @@
136
136
 
137
137
  @value colorDataViz8: #F5EBB4;
138
138
 
139
+ @value colorScoreBarLevel1: #e94970;
140
+
141
+ @value colorScoreBarLevel2: #e5983d;
142
+
143
+ @value colorScoreBarLevel3: #3987f3;
144
+
145
+ @value colorScoreBarLevel4: #56b988;
146
+
147
+ @value colorScoreBarLevel5: #026b37;
148
+
149
+ @value colorScoreBarInactive: #D3D2E0;
150
+
139
151
  @value colorGrayLightest: #EBEBEB;
140
152
 
141
153
  @value colorNeutral: #706F9B;
@@ -3,7 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.colorWarningLightest = exports.colorWarningLight = exports.colorWarningDarkest = exports.colorWarningDark = exports.colorWarning = exports.colorTooltipFill = exports.colorTextWarning = exports.colorTextTertiary = exports.colorTextSuccess = exports.colorTextSecondary = exports.colorTextPrimary = exports.colorTextNeutral = exports.colorTextInverseSecondary = exports.colorTextInversePrimary = exports.colorTextInformation = exports.colorTextFavorite = exports.colorTextDisabled = exports.colorTextDanger = exports.colorTextClickable = exports.colorSuccessLightest = exports.colorSuccessLight = exports.colorSuccessDarkest = exports.colorSuccessDark = exports.colorSuccess = exports.colorSubMenuStar = exports.colorSubMenuBackgroundDefault = exports.colorSideMenuIconDefault = exports.colorSideMenuIconActive = exports.colorSideMenuBackgroundSelected = exports.colorSideMenuBackgroundHovered = exports.colorSideMenuBackgroundDefault = exports.colorSideMenuAccountBarFill = exports.colorNeutralLightest = exports.colorNeutralLight = exports.colorNeutralDarkest = exports.colorNeutralDark = exports.colorNeutral = exports.colorInformationLightest = exports.colorInformationLight = exports.colorInformationDarkest = exports.colorInformationDark = exports.colorInformation = exports.colorGroupMenuTextDefault = exports.colorGroupMenuBackgroundSelected = exports.colorGroupMenuBackgroundHovered = exports.colorGroupMenuBackgroundDefault = exports.colorGrayLightest = exports.colorFocusPrimary = exports.colorFocusDanger = exports.colorFillSecondary = exports.colorFillPrimary = exports.colorFillNone = exports.colorFillInversePrimary = exports.colorFillDisabled = exports.colorDataViz8 = exports.colorDataViz7 = exports.colorDataViz6 = exports.colorDataViz5 = exports.colorDataViz4 = exports.colorDataViz3 = exports.colorDataViz2 = exports.colorDataViz1 = exports.colorDangerLightest = exports.colorDangerLight = exports.colorDangerDarkest = exports.colorDangerDark = exports.colorDanger = exports.colorButtonFillTertiaryPressed = exports.colorButtonFillTertiaryHovered = exports.colorButtonFillTertiaryEnabled = exports.colorButtonFillTableActionPressed = exports.colorButtonFillTableActionHovered = exports.colorButtonFillTableActionEnabled = exports.colorButtonFillTableActionBorder = exports.colorButtonFillSecondaryPressed = exports.colorButtonFillSecondaryHovered = exports.colorButtonFillSecondaryEnabled = exports.colorButtonFillPrimaryPressed = exports.colorButtonFillPrimaryHovered = exports.colorButtonFillPrimaryEnabled = exports.colorButtonFillGhostPressed = exports.colorButtonFillGhostHovered = exports.colorButtonFillGhostEnabled = exports.colorButtonFillDangerPressed = exports.colorButtonFillDangerHovered = exports.colorButtonFillDangerEnabled = exports.colorBorderTertiary = exports.colorBorderSecondary = exports.colorBorderPrimary = exports.colorBorderDanger = exports.colorBackgroundTertiary = exports.colorBackgroundSecondary = exports.colorBackgroundPrimary = exports.colorBackgroundBrand = exports.colorBackdropFill = void 0;
6
+ exports.colorWarningLight = exports.colorWarningDarkest = exports.colorWarningDark = exports.colorWarning = exports.colorTooltipFill = exports.colorTextWarning = exports.colorTextTertiary = exports.colorTextSuccess = exports.colorTextSecondary = exports.colorTextPrimary = exports.colorTextNeutral = exports.colorTextInverseSecondary = exports.colorTextInversePrimary = exports.colorTextInformation = exports.colorTextFavorite = exports.colorTextDisabled = exports.colorTextDanger = exports.colorTextClickable = exports.colorSuccessLightest = exports.colorSuccessLight = exports.colorSuccessDarkest = exports.colorSuccessDark = exports.colorSuccess = exports.colorSubMenuStar = exports.colorSubMenuBackgroundDefault = exports.colorSideMenuIconDefault = exports.colorSideMenuIconActive = exports.colorSideMenuBackgroundSelected = exports.colorSideMenuBackgroundHovered = exports.colorSideMenuBackgroundDefault = exports.colorSideMenuAccountBarFill = exports.colorScoreBarLevel5 = exports.colorScoreBarLevel4 = exports.colorScoreBarLevel3 = exports.colorScoreBarLevel2 = exports.colorScoreBarLevel1 = exports.colorScoreBarInactive = exports.colorNeutralLightest = exports.colorNeutralLight = exports.colorNeutralDarkest = exports.colorNeutralDark = exports.colorNeutral = exports.colorInformationLightest = exports.colorInformationLight = exports.colorInformationDarkest = exports.colorInformationDark = exports.colorInformation = exports.colorGroupMenuTextDefault = exports.colorGroupMenuBackgroundSelected = exports.colorGroupMenuBackgroundHovered = exports.colorGroupMenuBackgroundDefault = exports.colorGrayLightest = exports.colorFocusPrimary = exports.colorFocusDanger = exports.colorFillSecondary = exports.colorFillPrimary = exports.colorFillNone = exports.colorFillInversePrimary = exports.colorFillDisabled = exports.colorDataViz8 = exports.colorDataViz7 = exports.colorDataViz6 = exports.colorDataViz5 = exports.colorDataViz4 = exports.colorDataViz3 = exports.colorDataViz2 = exports.colorDataViz1 = exports.colorDangerLightest = exports.colorDangerLight = exports.colorDangerDarkest = exports.colorDangerDark = exports.colorDanger = exports.colorButtonFillTertiaryPressed = exports.colorButtonFillTertiaryHovered = exports.colorButtonFillTertiaryEnabled = exports.colorButtonFillTableActionPressed = exports.colorButtonFillTableActionHovered = exports.colorButtonFillTableActionEnabled = exports.colorButtonFillTableActionBorder = exports.colorButtonFillSecondaryPressed = exports.colorButtonFillSecondaryHovered = exports.colorButtonFillSecondaryEnabled = exports.colorButtonFillPrimaryPressed = exports.colorButtonFillPrimaryHovered = exports.colorButtonFillPrimaryEnabled = exports.colorButtonFillGhostPressed = exports.colorButtonFillGhostHovered = exports.colorButtonFillGhostEnabled = exports.colorButtonFillDangerPressed = exports.colorButtonFillDangerHovered = exports.colorButtonFillDangerEnabled = exports.colorBorderTertiary = exports.colorBorderSecondary = exports.colorBorderPrimary = exports.colorBorderDanger = exports.colorBackgroundTertiary = exports.colorBackgroundSecondary = exports.colorBackgroundPrimary = exports.colorBackgroundBrand = exports.colorBackdropFill = void 0;
7
+ exports.colorWarningLightest = void 0;
7
8
 
8
9
  const colorTextPrimary = '#17172A';
9
10
  exports.colorTextPrimary = colorTextPrimary;
@@ -143,6 +144,18 @@ const colorDataViz7 = '#F5B8E1';
143
144
  exports.colorDataViz7 = colorDataViz7;
144
145
  const colorDataViz8 = '#F5EBB4';
145
146
  exports.colorDataViz8 = colorDataViz8;
147
+ const colorScoreBarLevel1 = '#e94970';
148
+ exports.colorScoreBarLevel1 = colorScoreBarLevel1;
149
+ const colorScoreBarLevel2 = '#e5983d';
150
+ exports.colorScoreBarLevel2 = colorScoreBarLevel2;
151
+ const colorScoreBarLevel3 = '#3987f3';
152
+ exports.colorScoreBarLevel3 = colorScoreBarLevel3;
153
+ const colorScoreBarLevel4 = '#56b988';
154
+ exports.colorScoreBarLevel4 = colorScoreBarLevel4;
155
+ const colorScoreBarLevel5 = '#026b37';
156
+ exports.colorScoreBarLevel5 = colorScoreBarLevel5;
157
+ const colorScoreBarInactive = '#D3D2E0';
158
+ exports.colorScoreBarInactive = colorScoreBarInactive;
146
159
  const colorGrayLightest = '#EBEBEB';
147
160
  exports.colorGrayLightest = colorGrayLightest;
148
161
  const colorNeutral = '#706F9B';
@@ -138,6 +138,18 @@ export const colorDataViz7 = '#F5B8E1';
138
138
 
139
139
  export const colorDataViz8 = '#F5EBB4';
140
140
 
141
+ export const colorScoreBarLevel1 = '#e94970';
142
+
143
+ export const colorScoreBarLevel2 = '#e5983d';
144
+
145
+ export const colorScoreBarLevel3 = '#3987f3';
146
+
147
+ export const colorScoreBarLevel4 = '#56b988';
148
+
149
+ export const colorScoreBarLevel5 = '#026b37';
150
+
151
+ export const colorScoreBarInactive = '#D3D2E0';
152
+
141
153
  export const colorGrayLightest = '#EBEBEB';
142
154
 
143
155
  export const colorNeutral = '#706F9B';
@@ -22,7 +22,8 @@ class ClickAway extends React.Component {
22
22
  pageBottom: null
23
23
  });
24
24
  _defineProperty(this, "el", null);
25
- _defineProperty(this, "cancelNext", false);
25
+ _defineProperty(this, "boundaryRef", /*#__PURE__*/React.createRef());
26
+ _defineProperty(this, "triggerRef", /*#__PURE__*/React.createRef());
26
27
  _defineProperty(this, "handleOpenClick", () => {
27
28
  // NOTE (kyle): we recalculate the position on click because sibling and niece components
28
29
  // could have changed.
@@ -33,21 +34,20 @@ class ClickAway extends React.Component {
33
34
  pageBottom = this.pageBottom();
34
35
  }
35
36
  this.setState({
36
- isOpen: true,
37
+ isOpen: !this.state.isOpen,
37
38
  pageBottom
38
39
  }, this.handleOnChange);
39
40
  });
40
41
  _defineProperty(this, "handleCloseClick", evt => {
41
- if (this.props.shouldCancel(evt)) {
42
+ if (evt.target instanceof Node && this.boundaryRef && (this.boundaryRef === evt.target || this.boundaryRef.current?.contains(evt.target))) {
42
43
  return;
43
44
  }
44
- if (this.cancelNext === true) {
45
- this.cancelNext = false;
46
- } else {
47
- this.setState({
48
- isOpen: false
49
- }, this.handleOnChange);
45
+ if (evt.target instanceof Node && this.triggerRef && (this.triggerRef === evt.target || this.triggerRef.current?.contains(evt.target))) {
46
+ return;
50
47
  }
48
+ this.setState({
49
+ isOpen: false
50
+ }, this.handleOnChange);
51
51
  });
52
52
  _defineProperty(this, "handleCloseOnEscapeKeypress", evt => {
53
53
  if (evt?.key === 'Escape') {
@@ -59,9 +59,6 @@ class ClickAway extends React.Component {
59
59
  isOpen: false
60
60
  }, this.handleOnChange);
61
61
  });
62
- _defineProperty(this, "cancelNextClickAway", () => {
63
- this.cancelNext = true;
64
- });
65
62
  _defineProperty(this, "handleOnChange", () => this.props.onChange && this.props.onChange(this.state.isOpen));
66
63
  }
67
64
  componentDidMount() {
@@ -78,18 +75,24 @@ class ClickAway extends React.Component {
78
75
  } = this.state;
79
76
  if (prevState.isOpen !== isOpen) {
80
77
  if (this.state.isOpen) {
81
- window.document.addEventListener('click', this.handleCloseClick);
78
+ window.document.addEventListener('click', this.handleCloseClick, {
79
+ capture: true
80
+ });
82
81
  if (this.props.closeOnEscapeKeypress) {
83
82
  window.document.addEventListener('keyup', this.handleCloseOnEscapeKeypress);
84
83
  }
85
84
  } else {
86
- window.document.removeEventListener('click', this.handleCloseClick);
85
+ window.document.removeEventListener('click', this.handleCloseClick, {
86
+ capture: true
87
+ });
87
88
  window.document.removeEventListener('keyup', this.handleCloseOnEscapeKeypress);
88
89
  }
89
90
  }
90
91
  }
91
92
  componentWillUnmount() {
92
- window.document.removeEventListener('click', this.handleCloseClick);
93
+ window.document.removeEventListener('click', this.handleCloseClick, {
94
+ capture: true
95
+ });
93
96
  window.document.removeEventListener('keyup', this.handleCloseOnEscapeKeypress);
94
97
  }
95
98
  render() {
@@ -112,9 +115,9 @@ class ClickAway extends React.Component {
112
115
  isOpen,
113
116
  height,
114
117
  pageBottom,
115
- cancelNext: this.cancelNextClickAway,
116
118
  clickAway: this.forceClose,
117
- anchorRef: el => this.el = el
119
+ boundaryRef: this.boundaryRef,
120
+ triggerRef: this.triggerRef
118
121
  });
119
122
  }
120
123
  pageBottom() {
@@ -125,6 +128,5 @@ class ClickAway extends React.Component {
125
128
  }
126
129
  exports.ClickAway = ClickAway;
127
130
  _defineProperty(ClickAway, "defaultProps", {
128
- shouldCancel: () => false,
129
131
  closeOnEscapeKeypress: true
130
132
  });
@@ -6,14 +6,22 @@ import invariant from 'invariant';
6
6
  import {pageHeight} from '../dom';
7
7
 
8
8
 
9
+ type BoundaryRefType<T> = {
10
+ current: ?T,
11
+ };
12
+
13
+ type TriggerRefType<T> = {
14
+ current: ?T,
15
+ };
16
+
9
17
  export type ChildProps = {
10
18
  onOpen: () => void,
11
19
  isOpen: boolean,
12
20
  height: ?number,
13
21
  pageBottom: ?number,
14
- cancelNext: () => void,
15
22
  clickAway: () => void,
16
- anchorRef: (?HTMLElement) => mixed,
23
+ boundaryRef: BoundaryRefType<?HTMLElement>,
24
+ triggerRef: TriggerRefType<?HTMLElement>,
17
25
  };
18
26
 
19
27
  export type ClickAwayRefType = ?{
@@ -26,7 +34,6 @@ export type ClickAwayRefType = ?{
26
34
  export type ClickAwayProps = {
27
35
  closeOnEscapeKeypress?: boolean,
28
36
  children: (props: ChildProps) => React.Node,
29
- shouldCancel: (event: MouseEvent) => boolean,
30
37
  onChange?: (isOpen: boolean) => mixed,
31
38
  clickAwayRef?: ClickAwayRefType,
32
39
  };
@@ -41,10 +48,8 @@ type ClickAwayState = {
41
48
 
42
49
  export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
43
50
  static defaultProps: {
44
- shouldCancel: () => boolean,
45
51
  closeOnEscapeKeypress?: boolean,
46
52
  } = {
47
- shouldCancel: () => false,
48
53
  closeOnEscapeKeypress: true,
49
54
  };
50
55
 
@@ -55,7 +60,8 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
55
60
  };
56
61
 
57
62
  el: ?HTMLElement = null;
58
- cancelNext: boolean = false;
63
+ boundaryRef: BoundaryRefType<?HTMLElement> = React.createRef();
64
+ triggerRef: TriggerRefType<?HTMLElement> = React.createRef();
59
65
 
60
66
  componentDidMount() {
61
67
  if (this.el) {
@@ -70,7 +76,9 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
70
76
  const {isOpen} = this.state;
71
77
  if (prevState.isOpen !== isOpen) {
72
78
  if (this.state.isOpen) {
73
- window.document.addEventListener('click', this.handleCloseClick);
79
+ window.document.addEventListener('click', this.handleCloseClick, {
80
+ capture: true,
81
+ });
74
82
  if (this.props.closeOnEscapeKeypress) {
75
83
  window.document.addEventListener(
76
84
  'keyup',
@@ -78,7 +86,9 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
78
86
  );
79
87
  }
80
88
  } else {
81
- window.document.removeEventListener('click', this.handleCloseClick);
89
+ window.document.removeEventListener('click', this.handleCloseClick, {
90
+ capture: true,
91
+ });
82
92
  window.document.removeEventListener(
83
93
  'keyup',
84
94
  this.handleCloseOnEscapeKeypress,
@@ -88,7 +98,9 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
88
98
  }
89
99
 
90
100
  componentWillUnmount() {
91
- window.document.removeEventListener('click', this.handleCloseClick);
101
+ window.document.removeEventListener('click', this.handleCloseClick, {
102
+ capture: true,
103
+ });
92
104
  window.document.removeEventListener(
93
105
  'keyup',
94
106
  this.handleCloseOnEscapeKeypress,
@@ -98,7 +110,6 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
98
110
  render(): React.Node {
99
111
  const {height, isOpen, pageBottom} = this.state;
100
112
  const {clickAwayRef} = this.props;
101
-
102
113
  if (clickAwayRef) {
103
114
  clickAwayRef.current = {
104
115
  forceClose: this.forceClose,
@@ -110,9 +121,9 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
110
121
  isOpen,
111
122
  height,
112
123
  pageBottom,
113
- cancelNext: this.cancelNextClickAway,
114
124
  clickAway: this.forceClose,
115
- anchorRef: (el) => (this.el = el),
125
+ boundaryRef: this.boundaryRef,
126
+ triggerRef: this.triggerRef,
116
127
  });
117
128
  }
118
129
 
@@ -126,7 +137,7 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
126
137
 
127
138
  this.setState(
128
139
  {
129
- isOpen: true,
140
+ isOpen: !this.state.isOpen,
130
141
  pageBottom,
131
142
  },
132
143
  this.handleOnChange,
@@ -134,20 +145,30 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
134
145
  };
135
146
 
136
147
  handleCloseClick: (evt: MouseEvent) => void = (evt: MouseEvent) => {
137
- if (this.props.shouldCancel(evt)) {
148
+ if (
149
+ evt.target instanceof Node &&
150
+ this.boundaryRef &&
151
+ (this.boundaryRef === evt.target ||
152
+ this.boundaryRef.current?.contains(evt.target))
153
+ ) {
138
154
  return;
139
155
  }
140
156
 
141
- if (this.cancelNext === true) {
142
- this.cancelNext = false;
143
- } else {
144
- this.setState(
145
- {
146
- isOpen: false,
147
- },
148
- this.handleOnChange,
149
- );
157
+ if (
158
+ evt.target instanceof Node &&
159
+ this.triggerRef &&
160
+ (this.triggerRef === evt.target ||
161
+ this.triggerRef.current?.contains(evt.target))
162
+ ) {
163
+ return;
150
164
  }
165
+
166
+ this.setState(
167
+ {
168
+ isOpen: false,
169
+ },
170
+ this.handleOnChange,
171
+ );
151
172
  };
152
173
 
153
174
  handleCloseOnEscapeKeypress: (
@@ -162,10 +183,6 @@ export class ClickAway extends React.Component<ClickAwayProps, ClickAwayState> {
162
183
  this.setState({isOpen: false}, this.handleOnChange);
163
184
  };
164
185
 
165
- cancelNextClickAway: () => void = () => {
166
- this.cancelNext = true;
167
- };
168
-
169
186
  handleOnChange: () => mixed = () =>
170
187
  this.props.onChange && this.props.onChange(this.state.isOpen);
171
188
 
@@ -124,6 +124,17 @@ Object.keys(_rating).forEach(function (key) {
124
124
  }
125
125
  });
126
126
  });
127
+ var _scoreBar = require("./score-bar");
128
+ Object.keys(_scoreBar).forEach(function (key) {
129
+ if (key === "default" || key === "__esModule") return;
130
+ if (key in exports && exports[key] === _scoreBar[key]) return;
131
+ Object.defineProperty(exports, key, {
132
+ enumerable: true,
133
+ get: function () {
134
+ return _scoreBar[key];
135
+ }
136
+ });
137
+ });
127
138
  var _string = require("./string");
128
139
  Object.keys(_string).forEach(function (key) {
129
140
  if (key === "default" || key === "__esModule") return;
@@ -11,5 +11,6 @@ export * from './makeClassNameComponent';
11
11
  export * from './menu';
12
12
  export * from './merge-refs';
13
13
  export * from './rating';
14
+ export * from './score-bar';
14
15
  export * from './string';
15
16
  export * from './tokens';
@@ -1,7 +1,7 @@
1
1
  // @flow strict
2
2
  export function mergeRefs(
3
- refs: Array<{current: ?HTMLElement, ...}>,
4
- ): (value: empty) => void {
3
+ refs: Array<{current: ?HTMLElement}>,
4
+ ): (value: ?HTMLElement) => void {
5
5
  return (value) => {
6
6
  refs.forEach((ref) => {
7
7
  if (typeof ref === 'function') {
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _scoreBar = require("./score-bar");
7
+ Object.keys(_scoreBar).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _scoreBar[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _scoreBar[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,3 @@
1
+ // @flow strict
2
+
3
+ export * from './score-bar';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getColorByScorePercentage = exports.SCORE_BAR_ERRORS = void 0;
7
+
8
+ const getColorByPercentage = (totalBars, score, colorMap) => {
9
+ if (score <= 0) {
10
+ return colorMap.inactive;
11
+ }
12
+ const scorePercentage = 100 * score / totalBars;
13
+ const range = Math.min(Math.ceil(scorePercentage / 20) * 20, 100);
14
+ return colorMap[range.toString()] || colorMap.inactive;
15
+ };
16
+ const getColorByScorePercentage = (totalBars, score, currentBarNumber, colorMap) => {
17
+ const validColor = getColorByPercentage(totalBars, score, colorMap);
18
+ return currentBarNumber < score ? validColor : colorMap.inactive;
19
+ };
20
+ exports.getColorByScorePercentage = getColorByScorePercentage;
21
+ const SCORE_BAR_ERRORS = Object.freeze({
22
+ INVALID_BAR_COUNT: {
23
+ type: 'INVALID_BAR_COUNT',
24
+ description: 'totalBars can not be less than 1'
25
+ }
26
+ });
27
+ exports.SCORE_BAR_ERRORS = SCORE_BAR_ERRORS;
@@ -0,0 +1,33 @@
1
+ // @flow strict
2
+ import type {ScoreBarColorMap} from '../../components/ScoreBar';
3
+
4
+
5
+ const getColorByPercentage = (
6
+ totalBars: number,
7
+ score: number,
8
+ colorMap: ScoreBarColorMap,
9
+ ): string => {
10
+ if (score <= 0) {
11
+ return colorMap.inactive;
12
+ }
13
+ const scorePercentage = (100 * score) / totalBars;
14
+ const range = Math.min(Math.ceil(scorePercentage / 20) * 20, 100);
15
+ return colorMap[range.toString()] || colorMap.inactive;
16
+ };
17
+
18
+ export const getColorByScorePercentage = (
19
+ totalBars: number,
20
+ score: number,
21
+ currentBarNumber: number,
22
+ colorMap: ScoreBarColorMap,
23
+ ): string => {
24
+ const validColor = getColorByPercentage(totalBars, score, colorMap);
25
+ return currentBarNumber < score ? validColor : colorMap.inactive;
26
+ };
27
+
28
+ export const SCORE_BAR_ERRORS = Object.freeze({
29
+ INVALID_BAR_COUNT: {
30
+ type: 'INVALID_BAR_COUNT',
31
+ description: 'totalBars can not be less than 1',
32
+ },
33
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spaced-out/ui-design-system",
3
- "version": "0.1.130-beta.0",
3
+ "version": "0.2.0",
4
4
  "main": "index.js",
5
5
  "description": "Sense UI components library",
6
6
  "author": {
@@ -104,8 +104,8 @@
104
104
  "node-sass": "^7.0.0",
105
105
  "paths.macro": "^3.0.1",
106
106
  "prettier": "^2.5.1",
107
- "react": "^16.14.0",
108
- "react-dom": "^16.14.0",
107
+ "react": "17.0.2",
108
+ "react-dom": "17.0.2",
109
109
  "rimraf": "^3.0.2",
110
110
  "simple-git": "^3.12.0",
111
111
  "standard-version": "^9.5.0",