@aclymatepackages/modules 1.0.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 (45) hide show
  1. package/README.md +43 -0
  2. package/babel.config.json +18 -0
  3. package/dist/components/CompaniesAutocomplete.js +126 -0
  4. package/dist/components/CompanyOnboardingInput.js +116 -0
  5. package/dist/components/ComparisonChart.js +200 -0
  6. package/dist/components/CustomTooltipDisplayRow.js +59 -0
  7. package/dist/components/EmissionsChart.js +467 -0
  8. package/dist/components/EmissionsCustomTooltip.js +181 -0
  9. package/dist/components/EmissionsPieChart.js +130 -0
  10. package/dist/components/EmissionsReductionGraph.js +118 -0
  11. package/dist/components/FootprintEquivalencies.js +181 -0
  12. package/dist/components/FootprintVideo.js +262 -0
  13. package/dist/components/FuelTypesSelect.js +36 -0
  14. package/dist/components/IndustryAutocomplete.js +58 -0
  15. package/dist/components/PlacesAutocomplete.js +173 -0
  16. package/dist/components/StripeElements.js +95 -0
  17. package/dist/components/YesNoQuestion.js +88 -0
  18. package/dist/components/stripeInput.js +293 -0
  19. package/dist/components/useChartWarningLabels.js +143 -0
  20. package/dist/index.js +118 -0
  21. package/package.json +74 -0
  22. package/public/favicon.ico +0 -0
  23. package/public/index.html +43 -0
  24. package/public/logo192.png +0 -0
  25. package/public/logo512.png +0 -0
  26. package/public/manifest.json +25 -0
  27. package/public/robots.txt +3 -0
  28. package/src/components/CompaniesAutocomplete.js +125 -0
  29. package/src/components/CompanyOnboardingInput.js +113 -0
  30. package/src/components/ComparisonChart.js +236 -0
  31. package/src/components/CustomTooltipDisplayRow.js +41 -0
  32. package/src/components/EmissionsChart.js +579 -0
  33. package/src/components/EmissionsCustomTooltip.js +146 -0
  34. package/src/components/EmissionsPieChart.js +120 -0
  35. package/src/components/EmissionsReductionGraph.js +107 -0
  36. package/src/components/FootprintEquivalencies.js +203 -0
  37. package/src/components/FootprintVideo.js +328 -0
  38. package/src/components/FuelTypesSelect.js +29 -0
  39. package/src/components/IndustryAutocomplete.js +56 -0
  40. package/src/components/PlacesAutocomplete.js +174 -0
  41. package/src/components/StripeElements.js +95 -0
  42. package/src/components/YesNoQuestion.js +68 -0
  43. package/src/components/stripeInput.js +288 -0
  44. package/src/components/useChartWarningLabels.js +139 -0
  45. package/src/index.js +35 -0
package/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # Getting Started with Aclymate Modules
2
+
3
+ These are modules that can be used in front-end development for the Aclymate website and platform.
4
+
5
+ ## Available Modules
6
+
7
+ In the project directory, you can find:
8
+
9
+ ### `OffsetsPurchaseDialogBox.js`
10
+
11
+ Exports the OffsetsPurchaseDialogBox component
12
+
13
+ ### `FootprintVideo.js`
14
+
15
+ Exports the following:
16
+ {
17
+ FootprintVideo,
18
+ convertFootprintToDriving,
19
+ convertFootprintToTrees,
20
+ convertFootprintToIce,
21
+ }
22
+
23
+ ### `IndustryAutocomplete.js`
24
+
25
+ Exports the IndustryAutocomplete component
26
+
27
+ ### `PlacesAutocomplete.js`
28
+
29
+ Exports the custom PlacesAutocomplete component
30
+
31
+ ### `ProjectsTypesSelect.js`
32
+
33
+ Exports the custom ProjectsTypesSelect component
34
+
35
+ ## Usage
36
+
37
+ To use an atom component in your code, first run:
38
+
39
+ ### `npm i @aclymatepackages/modules`
40
+
41
+ This will install or update this package. Then, use your atoms of choice like so:
42
+
43
+ ### `import { module } from "@aclymatepackages/modules"`
@@ -0,0 +1,18 @@
1
+ {
2
+ "presets": [
3
+ [
4
+ "@babel/env",
5
+ {
6
+ "targets": {
7
+ "edge": "17",
8
+ "firefox": "60",
9
+ "chrome": "67",
10
+ "safari": "11.1"
11
+ },
12
+ "useBuiltIns": "usage",
13
+ "corejs": "3.6.5"
14
+ }
15
+ ],
16
+ "@babel/preset-react"
17
+ ]
18
+ }
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.description.js");
4
+ require("core-js/modules/es.object.assign.js");
5
+ require("core-js/modules/es.weak-map.js");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+ require("core-js/modules/es.promise.js");
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _peopledatalabs = _interopRequireDefault(require("peopledatalabs"));
14
+ var _material = require("@mui/material");
15
+ var _formatters = require("@aclymatepackages/formatters");
16
+ var _otherHelpers = require("@aclymatepackages/other-helpers");
17
+ const _excluded = ["name"];
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ 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); }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
26
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
27
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
28
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
+ const CompaniesAutocomplete = _ref => {
30
+ let {
31
+ setCompanyName,
32
+ onSelectCompany,
33
+ label,
34
+ variant = "outlined",
35
+ size = "medium",
36
+ disabled,
37
+ helperText = "",
38
+ id,
39
+ style,
40
+ textFieldProps,
41
+ pdlApiKey
42
+ } = _ref;
43
+ const [nextStepIsLoading, setNextStepIsLoading] = (0, _react.useState)(false);
44
+ const [inputValue, setInputValue] = (0, _react.useState)("");
45
+ const [options, setOptions] = (0, _react.useState)([]);
46
+ const pdlClient = (0, _react.useMemo)(() => new _peopledatalabs.default({
47
+ apiKey: pdlApiKey
48
+ }), [pdlApiKey]);
49
+ const fetchCompanies = async value => {
50
+ setNextStepIsLoading(true);
51
+ const autocompleteParamsObj = {
52
+ field: "company",
53
+ text: value || inputValue,
54
+ size: 10,
55
+ pretty: true
56
+ };
57
+ return await pdlClient.autocomplete(autocompleteParamsObj).then(_ref2 => {
58
+ let {
59
+ data
60
+ } = _ref2;
61
+ const capitalizedCompanyNamesOptions = data.map(_ref3 => {
62
+ let {
63
+ name
64
+ } = _ref3,
65
+ otherProps = _objectWithoutProperties(_ref3, _excluded);
66
+ return _objectSpread({
67
+ name: (0, _formatters.ucFirstLetters)(name)
68
+ }, otherProps);
69
+ });
70
+ setNextStepIsLoading(false);
71
+ setOptions(capitalizedCompanyNamesOptions);
72
+ return data;
73
+ }).catch(() => setOptions([]));
74
+ };
75
+ const onInputChange = (_, newInputValue) => {
76
+ if (newInputValue === "I don't see my company") {
77
+ setNextStepIsLoading(false);
78
+ return setCompanyName(inputValue);
79
+ }
80
+ setNextStepIsLoading(false);
81
+ setInputValue(newInputValue);
82
+ if (newInputValue === "") {
83
+ return setOptions([]);
84
+ }
85
+ return fetchCompanies();
86
+ };
87
+ const isError = !!inputValue && (0, _otherHelpers.incorrectNameCheck)(inputValue, 60);
88
+ return /*#__PURE__*/_react.default.createElement(_material.Grid, {
89
+ container: true,
90
+ spacing: 1,
91
+ direction: "column"
92
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
93
+ item: true
94
+ }, /*#__PURE__*/_react.default.createElement(_material.Autocomplete, {
95
+ id: id || "companies-autocomplete",
96
+ freeSolo: true,
97
+ options: [...options, "I don't see my company"],
98
+ getOptionLabel: option => typeof option === "string" ? option : option.name || "",
99
+ filterOptions: option => option,
100
+ autoComplete: true,
101
+ includeInputInList: true,
102
+ disabled: disabled,
103
+ renderInput: params => /*#__PURE__*/_react.default.createElement(_material.TextField, _extends({
104
+ id: "companies-autocomplete-input"
105
+ }, params, {
106
+ label: label,
107
+ variant: variant,
108
+ error: isError,
109
+ size: size,
110
+ autoComplete: "off",
111
+ helperText: isError ? "This company name is not valid" : helperText || "",
112
+ style: style
113
+ }, textFieldProps)),
114
+ getOptionSelected: (option, value) => option === "" || option.name === value.name || option === value,
115
+ value: inputValue,
116
+ onChange: (_, newValue) => {
117
+ setOptions(newValue ? [newValue, ...options] : options);
118
+ return onSelectCompany(newValue);
119
+ },
120
+ onInputChange: onInputChange
121
+ })), nextStepIsLoading && /*#__PURE__*/_react.default.createElement(_material.Grid, {
122
+ item: true
123
+ }, /*#__PURE__*/_react.default.createElement(_material.LinearProgress, null)));
124
+ };
125
+ var _default = CompaniesAutocomplete;
126
+ exports.default = _default;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.description.js");
4
+ require("core-js/modules/es.weak-map.js");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ require("core-js/modules/web.dom-collections.iterator.js");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _material = require("@mui/material");
12
+ var _atoms = require("@aclymatepackages/atoms");
13
+ var _arrayImmutabilityHelpers = require("@aclymatepackages/array-immutability-helpers");
14
+ var _regExp = require("@aclymatepackages/reg-exp");
15
+ var _multiPartForm = require("@aclymatepackages/multi-part-form");
16
+ var _themes = _interopRequireDefault(require("@aclymatepackages/themes"));
17
+ var _IndustryAutocomplete = _interopRequireDefault(require("./IndustryAutocomplete"));
18
+ var _YesNoQuestion = _interopRequireDefault(require("./YesNoQuestion"));
19
+ var _PlacesAutocomplete = _interopRequireDefault(require("./PlacesAutocomplete"));
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ 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); }
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
27
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
28
+ const CompanyOnboardingInput = _ref => {
29
+ let {
30
+ companyName,
31
+ header,
32
+ onFormComplete,
33
+ PlacesAutocomplete,
34
+ theme
35
+ } = _ref;
36
+ const [inputData, setInputData] = (0, _react.useState)({
37
+ name: companyName
38
+ });
39
+ const editInputData = field => value => (0, _arrayImmutabilityHelpers.editObjectData)(setInputData, field, value);
40
+ const {
41
+ location,
42
+ industry,
43
+ employeeCount,
44
+ isRemote,
45
+ name
46
+ } = inputData;
47
+ const PlacesAutocompleteComponent = PlacesAutocomplete || _PlacesAutocomplete.default;
48
+ const nonPeopleDataLabsCompanyInputs = [{
49
+ label: "How many employees work for your company?",
50
+ value: employeeCount,
51
+ editData: editInputData("employeeCount"),
52
+ error: !(0, _regExp.numbersRegExpTest)(employeeCount) || employeeCount < 0 || employeeCount > 10000 || !Number.isInteger(Number(employeeCount))
53
+ }, {
54
+ value: industry,
55
+ input: /*#__PURE__*/_react.default.createElement(_IndustryAutocomplete.default, {
56
+ label: "Choose your company's industry",
57
+ industry: industry,
58
+ setIndustry: editInputData("industry"),
59
+ helperText: "We'll use this to estimate your emissions and benchmark to other similar companies"
60
+ })
61
+ }, {
62
+ value: location,
63
+ input: /*#__PURE__*/_react.default.createElement(PlacesAutocompleteComponent, {
64
+ place: location,
65
+ editPlace: editInputData("location"),
66
+ size: "small",
67
+ label: "What's your company's primary address?",
68
+ helperText: "We only need your physical address, not your suite number",
69
+ id: "company-address-autocomplete"
70
+ })
71
+ }, {
72
+ value: isRemote !== undefined,
73
+ input: /*#__PURE__*/_react.default.createElement(_YesNoQuestion.default, {
74
+ question: "Does your company only work remotely?",
75
+ value: isRemote,
76
+ setValue: editInputData("isRemote"),
77
+ lightBackground: true
78
+ }),
79
+ onNextStep: () => onFormComplete(inputData)
80
+ }];
81
+ const formInputArray = nonPeopleDataLabsCompanyInputs.map(input => _objectSpread(_objectSpread({}, input), {}, {
82
+ form: "onboarding"
83
+ }));
84
+ return /*#__PURE__*/_react.default.createElement(_material.Container, {
85
+ maxWidth: "sm"
86
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
87
+ container: true,
88
+ direction: "column",
89
+ spacing: 2
90
+ }, header, /*#__PURE__*/_react.default.createElement(_material.Grid, {
91
+ item: true
92
+ }, /*#__PURE__*/_react.default.createElement(_atoms.TextField, {
93
+ value: name,
94
+ setValue: editInputData("name"),
95
+ variant: "standard",
96
+ label: "What is your company's name?"
97
+ })), /*#__PURE__*/_react.default.createElement(_material.Grid, {
98
+ item: true,
99
+ xs: 12
100
+ }, /*#__PURE__*/_react.default.createElement(_multiPartForm.MultiPartFormLayout, {
101
+ forms: [{
102
+ name: "onboarding",
103
+ label: "Onboarding"
104
+ }],
105
+ rows: formInputArray,
106
+ confirmClose: false,
107
+ theme: theme || _themes.default,
108
+ styleProps: {
109
+ padding: 0
110
+ },
111
+ p: 0,
112
+ noGutter: true
113
+ }))));
114
+ };
115
+ var _default = CompanyOnboardingInput;
116
+ exports.default = _default;
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ require("core-js/modules/es.object.assign.js");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _material = require("@mui/material");
10
+ var _styles = require("@mui/material/styles");
11
+ var _reactFontawesome = require("@fortawesome/react-fontawesome");
12
+ var _converters = require("@aclymatepackages/converters");
13
+ var _formatters = require("@aclymatepackages/formatters");
14
+ var _themes = require("@aclymatepackages/themes");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+ const GraphBar = _ref => {
18
+ let {
19
+ color,
20
+ categoryMaxTons,
21
+ dataCategoryTons,
22
+ left,
23
+ isUnitsTons
24
+ } = _ref;
25
+ const {
26
+ theme,
27
+ isMobile
28
+ } = (0, _themes.useLayoutHelpers)();
29
+ const displayColor = theme.palette[color].main;
30
+ const maxPercentage = dataCategoryTons / categoryMaxTons;
31
+ const barPercentage = maxPercentage * 100;
32
+ const barSize = isMobile ? 40 : 50;
33
+ const dataCategoryDisplayValue = isUnitsTons ? dataCategoryTons : Math.round((0, _converters.tonsToLbs)(dataCategoryTons));
34
+ const SmallBarAnnotation = () => /*#__PURE__*/_react.default.createElement(_material.Box, {
35
+ style: {
36
+ height: barSize - 10,
37
+ width: barSize - 10,
38
+ backgroundColor: "white",
39
+ borderRadius: "50%",
40
+ border: "".concat(displayColor, " solid thin"),
41
+ color: displayColor
42
+ },
43
+ display: "flex",
44
+ alignItems: "center",
45
+ justifyContent: "center"
46
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
47
+ variant: isMobile ? "caption" : "subtitle1",
48
+ align: "center",
49
+ color: (0, _themes.isColorDarkTheme)(displayColor) ? "secondary" : "textPrimary"
50
+ }, (0, _formatters.formatDecimal)(dataCategoryDisplayValue)));
51
+ const barPercentageMobileBreakPoint = isMobile ? 25 : 15;
52
+ return /*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
53
+ theme: (0, _themes.isColorDarkTheme)(displayColor) ? _themes.mergeDarkTheme : _themes.mergeMainTheme
54
+ }, /*#__PURE__*/_react.default.createElement(_material.Box, {
55
+ display: "flex",
56
+ justifyContent: left ? "flex-end" : "flex-start",
57
+ alignItems: "center"
58
+ }, barPercentage < barPercentageMobileBreakPoint && left && /*#__PURE__*/_react.default.createElement(SmallBarAnnotation, null), /*#__PURE__*/_react.default.createElement(_material.Box, {
59
+ style: {
60
+ width: "".concat(barPercentage > 100 ? 100 : barPercentage, "%"),
61
+ height: "".concat(barSize, "px"),
62
+ backgroundColor: displayColor,
63
+ borderRadius: left ? "25px 0 0 25px" : "0 25px 25px 0"
64
+ },
65
+ display: "flex",
66
+ alignItems: "center",
67
+ justifyContent: "center"
68
+ }, barPercentage > barPercentageMobileBreakPoint && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.Typography, {
69
+ variant: isMobile ? "subtitle1" : "h6",
70
+ color: "textPrimary",
71
+ align: "center"
72
+ }, "".concat((0, _formatters.formatDecimal)(dataCategoryDisplayValue))))), barPercentage < barPercentageMobileBreakPoint && !left && /*#__PURE__*/_react.default.createElement(SmallBarAnnotation, null)));
73
+ };
74
+ const GraphRow = _ref2 => {
75
+ let {
76
+ category,
77
+ idx,
78
+ individualData,
79
+ comparisonData,
80
+ categories,
81
+ isUnitsTons
82
+ } = _ref2;
83
+ const {
84
+ theme,
85
+ isMobile
86
+ } = (0, _themes.useLayoutHelpers)();
87
+ const {
88
+ color,
89
+ title,
90
+ icon,
91
+ type,
92
+ categoryMaxTons
93
+ } = category;
94
+ const individualTons = individualData["".concat(type, "Tons")] || 0;
95
+ const comparisonTons = comparisonData["".concat(type, "Tons")];
96
+ const barDisplayMaxTons = categoryMaxTons > individualTons ? categoryMaxTons : individualTons;
97
+ return /*#__PURE__*/_react.default.createElement(_material.Grid, {
98
+ item: true,
99
+ container: true,
100
+ justifyContent: "center",
101
+ alignItems: "center",
102
+ wrap: "nowrap"
103
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
104
+ item: true,
105
+ xs: 5
106
+ }, /*#__PURE__*/_react.default.createElement(GraphBar, _extends({}, category, {
107
+ categoryMaxTons: barDisplayMaxTons,
108
+ dataCategoryTons: individualTons,
109
+ isUnitsTons: isUnitsTons,
110
+ left: true
111
+ }))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
112
+ item: true,
113
+ xs: "auto"
114
+ }, /*#__PURE__*/_react.default.createElement(_material.Box, {
115
+ style: {
116
+ height: isMobile ? "65px" : "85px",
117
+ width: isMobile ? "65px" : "85px",
118
+ backgroundColor: theme.palette.backgroundGray.dark,
119
+ borderRadius: !idx ? "8px 8px 0 0" : idx === categories.length - 1 ? "0 0 8px 8px" : 0
120
+ },
121
+ display: "flex",
122
+ alignItems: "center",
123
+ justifyContent: "center"
124
+ }, /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
125
+ title: title,
126
+ key: "comparison-graphic-category-icon-".concat(idx)
127
+ }, /*#__PURE__*/_react.default.createElement(_material.Box, {
128
+ style: {
129
+ backgroundColor: theme.palette[color].main,
130
+ height: isMobile ? "50px" : "70px",
131
+ width: isMobile ? "50px" : "70px",
132
+ borderRadius: "50%"
133
+ },
134
+ display: "flex",
135
+ alignItems: "center",
136
+ justifyContent: "center"
137
+ }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
138
+ icon: icon,
139
+ size: isMobile ? "1x" : "2x",
140
+ style: {
141
+ color: "white"
142
+ }
143
+ }))))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
144
+ item: true,
145
+ xs: 5
146
+ }, /*#__PURE__*/_react.default.createElement(GraphBar, _extends({}, category, {
147
+ categoryMaxTons: barDisplayMaxTons,
148
+ dataCategoryTons: comparisonTons,
149
+ isUnitsTons: isUnitsTons
150
+ }))));
151
+ };
152
+ const ComparisonChart = _ref3 => {
153
+ let {
154
+ individualData,
155
+ comparisonData,
156
+ categories,
157
+ youTitle = "You",
158
+ comparisonTitle = "US Average",
159
+ isUnitsTons
160
+ } = _ref3;
161
+ const {
162
+ isMobile
163
+ } = (0, _themes.useLayoutHelpers)();
164
+ return /*#__PURE__*/_react.default.createElement(_material.Grid, {
165
+ container: true,
166
+ direction: "column"
167
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
168
+ item: true,
169
+ container: true,
170
+ alignItems: "flex-end"
171
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
172
+ item: true,
173
+ xs: 5
174
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
175
+ variant: isMobile ? "subtitle1" : "h5",
176
+ align: "center"
177
+ }, youTitle)), /*#__PURE__*/_react.default.createElement(_material.Grid, {
178
+ item: true,
179
+ xs: 2
180
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
181
+ variant: isMobile ? "h5" : "h3",
182
+ align: "center"
183
+ }, "VS")), /*#__PURE__*/_react.default.createElement(_material.Grid, {
184
+ item: true,
185
+ xs: 5
186
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
187
+ variant: isMobile ? "subtitle1" : "h5",
188
+ align: "center"
189
+ }, comparisonTitle))), categories.map((category, idx) => /*#__PURE__*/_react.default.createElement(GraphRow, {
190
+ idx: idx,
191
+ key: "comparison-graph-row-".concat(idx),
192
+ individualData: individualData,
193
+ comparisonData: comparisonData,
194
+ categories: categories,
195
+ category: category,
196
+ isUnitsTons: isUnitsTons
197
+ })));
198
+ };
199
+ var _default = ComparisonChart;
200
+ exports.default = _default;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _material = require("@mui/material");
9
+ var _formatters = require("@aclymatepackages/formatters");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const CustomTooltipDisplayRow = _ref => {
12
+ let {
13
+ category,
14
+ Icon,
15
+ icon,
16
+ customAvatar,
17
+ color,
18
+ name,
19
+ subtitle
20
+ } = _ref;
21
+ return /*#__PURE__*/_react.default.createElement(_material.Grid, {
22
+ item: true,
23
+ container: true,
24
+ spacing: 1,
25
+ wrap: "nowrap",
26
+ alignItems: "center"
27
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
28
+ item: true
29
+ }, customAvatar || /*#__PURE__*/_react.default.createElement(_material.Avatar, {
30
+ style: {
31
+ backgroundColor: color,
32
+ color: "white"
33
+ }
34
+ }, icon, Icon && /*#__PURE__*/_react.default.createElement(Icon, {
35
+ style: {
36
+ color: "inherit"
37
+ }
38
+ }))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
39
+ item: true,
40
+ container: true,
41
+ direction: "column",
42
+ wrap: "nowrap"
43
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
44
+ item: true,
45
+ xs: 12
46
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
47
+ variant: "subtitle1",
48
+ color: "textPrimary",
49
+ noWrap: true
50
+ }, "".concat((0, _formatters.ucFirstLetters)(name || category)))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
51
+ item: true,
52
+ xs: 12
53
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
54
+ variant: "caption",
55
+ color: "textSecondary"
56
+ }, subtitle))));
57
+ };
58
+ var _default = CustomTooltipDisplayRow;
59
+ exports.default = _default;