kitchen-simulator 5.0.0-test.18 → 5.0.0-test.19

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 (179) hide show
  1. package/package.json +8 -26
  2. package/src/@history.js +3 -0
  3. package/src/CrossSignOn.jsx +94 -0
  4. package/src/KitchenConfigurator.jsx +1526 -0
  5. package/src/KitchenConfiguratorApp.jsx +1 -1
  6. package/src/_KitchenConfigurator.jsx +3 -3
  7. package/src/components/catalog-view/catalog-breadcrumb.jsx +53 -0
  8. package/src/components/catalog-view/catalog-item.jsx +229 -0
  9. package/src/components/catalog-view/catalog-list.jsx +173 -0
  10. package/src/components/catalog-view/catalog-page-item.jsx +110 -0
  11. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +80 -0
  12. package/src/components/configurator/custom-configurator.jsx +77 -0
  13. package/src/components/configurator/project-configurator.jsx +120 -0
  14. package/src/components/export.js +36 -0
  15. package/src/components/firstsetting/button/styles.js +223 -0
  16. package/src/components/firstsetting/export.js +9 -0
  17. package/src/components/firstsetting/firstsetting-content-button.jsx +198 -0
  18. package/src/components/firstsetting/firstsetting-toggle-button.jsx +101 -0
  19. package/src/components/firstsetting/firstsetting.jsx +814 -0
  20. package/src/components/footerbar/button/ControlButton.jsx +43 -0
  21. package/src/components/footerbar/button/DirectionButton.jsx +54 -0
  22. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +36 -0
  23. package/src/components/footerbar/button/ToggleButton.jsx +58 -0
  24. package/src/components/footerbar/button/ToggleConvertButton.jsx +48 -0
  25. package/src/components/footerbar/button/ToggleMeasureButton.jsx +33 -0
  26. package/src/components/footerbar/button/styles.js +217 -0
  27. package/src/components/footerbar/export.js +9 -0
  28. package/src/components/footerbar/footer-content-button.jsx +198 -0
  29. package/src/components/footerbar/footer-toggle-button.jsx +101 -0
  30. package/src/components/footerbar/footerbar.jsx +1103 -0
  31. package/src/components/footerbar/styles.js +263 -0
  32. package/src/components/header/button/MenuButton.jsx +46 -0
  33. package/src/components/header/button/SaveButton.jsx +54 -0
  34. package/src/components/header/button/styles.js +181 -0
  35. package/src/components/header/export.js +5 -0
  36. package/src/components/header/header.jsx +631 -0
  37. package/src/components/header/header.style.css +47 -0
  38. package/src/components/header/styles.js +320 -0
  39. package/src/components/login/Login.js +77 -0
  40. package/src/components/login/LoginForm/index.js +108 -0
  41. package/src/components/login/Register.js +82 -0
  42. package/src/components/login/RegisterForm/index.js +171 -0
  43. package/src/components/login/jwtService.js +201 -0
  44. package/src/components/login/style.css +158 -0
  45. package/src/components/login/style.scss +260 -0
  46. package/src/components/myprojects/export.js +5 -0
  47. package/src/components/myprojects/index.jsx +445 -0
  48. package/src/components/myprojects/styles.js +241 -0
  49. package/src/components/sidebar/custom-accordion.jsx +48 -0
  50. package/src/components/sidebar/export.js +15 -0
  51. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +73 -0
  52. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +101 -0
  53. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +149 -0
  54. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +316 -0
  55. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +108 -0
  56. package/src/components/sidebar/panel-element-editor/element-editor.jsx +1070 -0
  57. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  58. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +104 -0
  59. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +155 -0
  60. package/src/components/sidebar/panel-group-editor.jsx +272 -0
  61. package/src/components/sidebar/panel-groups.jsx +310 -0
  62. package/src/components/sidebar/panel-guides.jsx +192 -0
  63. package/src/components/sidebar/panel-layer-elements.jsx +298 -0
  64. package/src/components/sidebar/panel-layers.jsx +381 -0
  65. package/src/components/sidebar/panel.jsx +71 -0
  66. package/src/components/sidebar/sidebar.jsx +106 -0
  67. package/src/components/sidebar/toolbar-panel.jsx +139 -0
  68. package/src/components/sign/export.js +7 -0
  69. package/src/components/sign/main/index.jsx +523 -0
  70. package/src/components/sign/main/styles.js +163 -0
  71. package/src/components/toolbar/button/ControlButton.jsx +41 -0
  72. package/src/components/toolbar/button/DirectionButton.jsx +34 -0
  73. package/src/components/toolbar/button/RightButton.jsx +103 -0
  74. package/src/components/toolbar/button/ToggleButton.jsx +41 -0
  75. package/src/components/toolbar/button/index.jsx +55 -0
  76. package/src/components/toolbar/button/styles.js +127 -0
  77. package/src/components/toolbar/components/DoorStyleMenu.jsx +103 -0
  78. package/src/components/toolbar/components/Pricing.jsx +126 -0
  79. package/src/components/toolbar/components/ReviewForQuote.jsx +635 -0
  80. package/src/components/toolbar/export.js +21 -0
  81. package/src/components/toolbar/main/Alert.js +122 -0
  82. package/src/components/toolbar/main/TakePictureModal.jsx +104 -0
  83. package/src/components/toolbar/main/confirm-popup.jsx +99 -0
  84. package/src/components/toolbar/main/index.jsx +5627 -0
  85. package/src/components/toolbar/main/lShaped.json +311 -0
  86. package/src/components/toolbar/main/longNarrow.json +238 -0
  87. package/src/components/toolbar/main/myComponents.js +123 -0
  88. package/src/components/toolbar/main/oRectangle.json +220 -0
  89. package/src/components/toolbar/main/rectangle.json +238 -0
  90. package/src/components/toolbar/main/style.css +107 -0
  91. package/src/components/toolbar/main/styles.js +696 -0
  92. package/src/components/toolbar/plugin-item.jsx +123 -0
  93. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +73 -0
  94. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +102 -0
  95. package/src/components/toolbar/popup/appliance/index.jsx +83 -0
  96. package/src/components/toolbar/popup/autosaveprompt/index.jsx +150 -0
  97. package/src/components/toolbar/popup/autosaveprompt/styles.css +64 -0
  98. package/src/components/toolbar/popup/autosaveprompt/styles.js +40 -0
  99. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +73 -0
  100. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +119 -0
  101. package/src/components/toolbar/popup/cabinet/index.jsx +85 -0
  102. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +63 -0
  103. package/src/components/toolbar/popup/doorStyle/index.jsx +71 -0
  104. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +139 -0
  105. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +2 -0
  106. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +157 -0
  107. package/src/components/toolbar/popup/downloadsummary/index.jsx +643 -0
  108. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +51 -0
  109. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +175 -0
  110. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +283 -0
  111. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +2257 -0
  112. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +93 -0
  113. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +132 -0
  114. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +2198 -0
  115. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +152 -0
  116. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +149 -0
  117. package/src/components/toolbar/popup/downloadsummary/styles.css +177 -0
  118. package/src/components/toolbar/popup/downloadsummary/styles.js +453 -0
  119. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +34 -0
  120. package/src/components/toolbar/popup/finishingtouch/index.jsx +58 -0
  121. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +112 -0
  122. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +116 -0
  123. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +101 -0
  124. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +254 -0
  125. package/src/components/toolbar/popup/floorplan/choose-floor/lShaped.json +311 -0
  126. package/src/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +238 -0
  127. package/src/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +220 -0
  128. package/src/components/toolbar/popup/floorplan/choose-floor/rectangle.json +238 -0
  129. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +86 -0
  130. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +109 -0
  131. package/src/components/toolbar/popup/floorplan/index.jsx +60 -0
  132. package/src/components/toolbar/popup/index.jsx +241 -0
  133. package/src/components/toolbar/popup/newproject/index.jsx +59 -0
  134. package/src/components/toolbar/popup/newproject/styles.css +64 -0
  135. package/src/components/toolbar/popup/newproject/styles.js +41 -0
  136. package/src/components/toolbar/popup/product/appliance.jsx +54 -0
  137. package/src/components/toolbar/popup/product/cabinetproduct.jsx +15 -0
  138. package/src/components/toolbar/popup/product/doorstyle.jsx +58 -0
  139. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +47 -0
  140. package/src/components/toolbar/popup/product/floor.jsx +36 -0
  141. package/src/components/toolbar/popup/product/floorproduct.jsx +42 -0
  142. package/src/components/toolbar/popup/product/index.jsx +36 -0
  143. package/src/components/toolbar/popup/product/primary.jsx +77 -0
  144. package/src/components/toolbar/popup/product/productline.jsx +93 -0
  145. package/src/components/toolbar/popup/product/reviewItem.jsx +427 -0
  146. package/src/components/toolbar/popup/product/reviewMolding.jsx +310 -0
  147. package/src/components/toolbar/popup/product/style.css +54 -0
  148. package/src/components/toolbar/popup/product/styles.js +260 -0
  149. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +146 -0
  150. package/src/components/toolbar/popup/savedesign/index.jsx +495 -0
  151. package/src/components/toolbar/popup/savedesign/savedesign.style.css +16 -0
  152. package/src/components/toolbar/popup/savedesign/styles.js +151 -0
  153. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +87 -0
  154. package/src/components/toolbar/popup/styles.js +909 -0
  155. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +192 -0
  156. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +96 -0
  157. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +54 -0
  158. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +25 -0
  159. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +116 -0
  160. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +38 -0
  161. package/src/components/toolbar/popup/submitforquote/index.jsx +698 -0
  162. package/src/components/toolbar/popup/submitforquote/styles.css +105 -0
  163. package/src/components/toolbar/popup/submitforquote/styles.js +294 -0
  164. package/src/components/toolbar/popup/submitprompt/index.jsx +89 -0
  165. package/src/components/toolbar/popup/submitprompt/styles.css +64 -0
  166. package/src/components/toolbar/popup/submitprompt/styles.js +42 -0
  167. package/src/components/toolbar/toolbar-button.jsx +90 -0
  168. package/src/components/toolbar/toolbar-load-button.jsx +36 -0
  169. package/src/components/toolbar/toolbar-save-button.jsx +32 -0
  170. package/src/components/wizardstep/button/styles.js +677 -0
  171. package/src/components/wizardstep/export.js +5 -0
  172. package/src/components/wizardstep/index.jsx +1372 -0
  173. package/src/components/wizardstep/styles.js +688 -0
  174. package/src/components/wizardstep/wizardstep-content-button.jsx +198 -0
  175. package/src/components/wizardstep/wizardstep-toggle-button.jsx +101 -0
  176. package/src/{_index.js → index.js} +4 -4
  177. package/src/renderer.jsx +466 -0
  178. package/src/actions/_export.js +0 -35
  179. package/src/components/_export.js +0 -11
@@ -0,0 +1,192 @@
1
+ import React, { useState, useMemo } from 'react';
2
+ import {
3
+ Box,
4
+ Typography,
5
+ FormGroup,
6
+ FormControlLabel,
7
+ Checkbox,
8
+ TextField,
9
+ Divider,
10
+ Accordion,
11
+ AccordionSummary,
12
+ AccordionDetails,
13
+ Radio
14
+ } from '@material-ui/core';
15
+ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
16
+ import * as S from './styles';
17
+ import { StepDots } from './StepDots';
18
+
19
+ const REVIEW_OPTIONS = [
20
+ 'Validate my design for accuracy',
21
+ 'Confirm door style and finish',
22
+ 'Optimize layout for better space usage',
23
+ 'Identify potential cost savings',
24
+ 'Confirm availability and lead times',
25
+ 'Review for any installation concerns',
26
+ 'Suggest matching accessories (e.g. moldings, fillers, organizers)',
27
+ 'Check compatibility with appliances or plumbing',
28
+ 'Provide professional recommendations'
29
+ ];
30
+
31
+ const AddToCartOptions = ({
32
+ onSubmit,
33
+ onCancel,
34
+ currentStep,
35
+ onStepChange
36
+ }) => {
37
+ const [expanded, setExpanded] = useState('review'); // keep default open
38
+ const [selected, setSelected] = useState([]);
39
+ const [notes, setNotes] = useState('');
40
+ const [skipReview, setSkipReview] = useState(false);
41
+
42
+ const handlePanelToggle = panel => (_e, isExpanded) => {
43
+ setExpanded(isExpanded ? panel : '');
44
+ };
45
+
46
+ const handleToggle = option => () => {
47
+ setSkipReview(false);
48
+ setSelected(prev =>
49
+ prev.includes(option) ? prev.filter(v => v !== option) : [...prev, option]
50
+ );
51
+ };
52
+
53
+ const payload = useMemo(
54
+ () => ({
55
+ reviewOptions: selected,
56
+ notes: notes.trim(),
57
+ expressCheckout: skipReview
58
+ }),
59
+ [selected, notes, skipReview]
60
+ );
61
+
62
+ const handleSubmit = () => {
63
+ if (onSubmit) onSubmit(payload);
64
+ };
65
+
66
+ return (
67
+ <Box>
68
+ <Divider />
69
+ <Box
70
+ style={{
71
+ maxHeight: '100%',
72
+ overflowX: 'auto'
73
+ }}
74
+ >
75
+ <Accordion
76
+ elevation={0}
77
+ expanded={expanded.includes('review')}
78
+ onChange={handlePanelToggle('review')}
79
+ >
80
+ <AccordionSummary expandIcon={<ExpandMoreIcon />}>
81
+ <Typography
82
+ style={{
83
+ color: 'rgb(67, 77, 99)'
84
+ }}
85
+ variant="h6"
86
+ >
87
+ Submit options
88
+ </Typography>
89
+ </AccordionSummary>
90
+ <AccordionDetails
91
+ style={{
92
+ padding: 0
93
+ }}
94
+ >
95
+ <FormGroup>
96
+ {REVIEW_OPTIONS.map(option => (
97
+ <FormControlLabel
98
+ key={option}
99
+ control={
100
+ <Checkbox
101
+ color="primary"
102
+ checked={selected.includes(option)}
103
+ onChange={handleToggle(option)}
104
+ />
105
+ }
106
+ label={option}
107
+ />
108
+ ))}
109
+ </FormGroup>
110
+ </AccordionDetails>
111
+ </Accordion>
112
+ <Accordion
113
+ elevation={0}
114
+ expanded={expanded.includes('others')}
115
+ onChange={handlePanelToggle('others')}
116
+ >
117
+ <AccordionSummary expandIcon={<ExpandMoreIcon />}>
118
+ <Typography
119
+ style={{
120
+ color: 'rgb(67, 77, 99)'
121
+ }}
122
+ variant="h6"
123
+ >
124
+ Others (review notes)
125
+ </Typography>
126
+ </AccordionSummary>
127
+ <AccordionDetails
128
+ style={{
129
+ padding: 0
130
+ }}
131
+ >
132
+ <TextField
133
+ label="Add any additional notes"
134
+ placeholder="e.g., special instructions or edge cases"
135
+ value={notes}
136
+ onChange={e => {
137
+ if (e.target.value) {
138
+ setSkipReview(false);
139
+ }
140
+ setNotes(e.target.value);
141
+ }}
142
+ fullWidth
143
+ multiline
144
+ rows={3}
145
+ variant="outlined"
146
+ />
147
+ </AccordionDetails>
148
+ </Accordion>
149
+ </Box>
150
+
151
+ <Divider />
152
+
153
+ <Box mt={2} mb={1}>
154
+ <Typography variant="subtitle1">
155
+ Express Checkout: <em>(optional)</em>
156
+ </Typography>
157
+ <FormControlLabel
158
+ control={
159
+ <Radio
160
+ color="primary"
161
+ checked={skipReview}
162
+ onChange={e => {
163
+ const checked = e.target.checked;
164
+ setSkipReview(checked);
165
+ if (checked) {
166
+ setSelected([]);
167
+ setNotes('');
168
+ setExpanded('');
169
+ }
170
+ }}
171
+ />
172
+ }
173
+ label="Skip review and Go to Cart."
174
+ />
175
+ </Box>
176
+
177
+ <Box
178
+ display="flex"
179
+ justifyContent="flex-end"
180
+ mt={2}
181
+ mb={expanded.includes('review') ? 2 : 0}
182
+ >
183
+ <StepDots currentStep={currentStep} onStepChange={onStepChange} />
184
+
185
+ <S.Button onClick={onCancel}>Cancel</S.Button>
186
+ <S.Button onClick={handleSubmit}>Next</S.Button>
187
+ </Box>
188
+ </Box>
189
+ );
190
+ };
191
+
192
+ export default AddToCartOptions;
@@ -0,0 +1,96 @@
1
+ import React, { useMemo, useState } from 'react';
2
+ import {
3
+ FormGroup,
4
+ FormControlLabel,
5
+ Checkbox,
6
+ TextField,
7
+ Box
8
+ } from '@material-ui/core';
9
+ import * as S from './styles';
10
+ import { StepDots } from './StepDots';
11
+
12
+ const options = [
13
+ 'Setting up my room layout (walls, doors, windows)',
14
+ 'Selecting and placing my cabinets',
15
+ 'Choosing door style',
16
+ 'Understanding product options (e.g. cabinet construction, finishes, accessories)',
17
+ 'Matching my budget',
18
+ 'Using the DIY design app',
19
+ 'Others'
20
+ ];
21
+
22
+ const CustomerRequestsForm = ({
23
+ onSubmit,
24
+ onCancel,
25
+ currentStep,
26
+ onStepChange
27
+ }) => {
28
+ const [selected, setSelected] = useState([]);
29
+ const [notes, setNotes] = useState('');
30
+
31
+ const handleToggle = option => () => {
32
+ setSelected(prev =>
33
+ prev.includes(option) ? prev.filter(v => v !== option) : [...prev, option]
34
+ );
35
+ };
36
+
37
+ const payload = useMemo(
38
+ () => ({
39
+ reviewOptions: selected,
40
+ notes: notes.trim()
41
+ }),
42
+ [selected, notes]
43
+ );
44
+
45
+ const handleSubmit = () => {
46
+ if (onSubmit) onSubmit(payload);
47
+ };
48
+
49
+ return (
50
+ <Box>
51
+ <FormGroup>
52
+ {options.map(option => (
53
+ <FormControlLabel
54
+ key={option}
55
+ control={
56
+ <Checkbox
57
+ checked={selected.includes(option)}
58
+ onChange={handleToggle(option)}
59
+ color="primary"
60
+ />
61
+ }
62
+ label={option}
63
+ />
64
+ ))}
65
+ </FormGroup>
66
+ {selected.includes('Others') && (
67
+ <TextField
68
+ label="Add any additional notes"
69
+ placeholder="e.g., special instructions or edge cases"
70
+ value={notes}
71
+ fullWidth
72
+ multiline
73
+ rows={3}
74
+ variant="outlined"
75
+ onChange={e => setNotes(e.target.value)}
76
+ />
77
+ )}
78
+
79
+ <Box display="flex" justifyContent="flex-end" mt={2}>
80
+ <StepDots currentStep={currentStep} onStepChange={onStepChange} />
81
+
82
+ <S.Button onClick={onCancel}>Cancel</S.Button>
83
+ <S.Button
84
+ style={{
85
+ marginRight: 0
86
+ }}
87
+ onClick={handleSubmit}
88
+ >
89
+ Next
90
+ </S.Button>
91
+ </Box>
92
+ </Box>
93
+ );
94
+ };
95
+
96
+ export default CustomerRequestsForm;
@@ -0,0 +1,54 @@
1
+ import React from 'react';
2
+ import { Typography, Box } from '@material-ui/core';
3
+ import * as S from './styles';
4
+ import { StepDots } from './StepDots';
5
+
6
+ const SkipDesignerReview = ({
7
+ onBack,
8
+ onProceed,
9
+ currentStep,
10
+ onStepChange
11
+ }) => {
12
+ return (
13
+ <Box position="relative">
14
+ <Typography variant="h6" gutterBottom>
15
+ Going directly to the cart means:
16
+ </Typography>
17
+ <ul
18
+ style={{
19
+ marginTop: '1rem',
20
+ display: 'flex',
21
+ flexDirection: 'column',
22
+ gap: '1rem'
23
+ }}
24
+ >
25
+ <li>
26
+ <Typography>
27
+ You confirm your project is complete and accurate.
28
+ </Typography>
29
+ </li>
30
+ <li>
31
+ <Typography>
32
+ You accept full responsibility for measurements and order details.
33
+ </Typography>
34
+ </li>
35
+ </ul>
36
+
37
+ <Typography>
38
+ <strong>
39
+ Recommended only for experienced DIY users or small/simple projects.
40
+ </strong>{' '}
41
+ Otherwise, we suggest a designer review for peace of mind.
42
+ </Typography>
43
+
44
+ <Box display="flex" justifyContent="flex-end" mt={2}>
45
+ <StepDots currentStep={currentStep} onStepChange={onStepChange} />
46
+
47
+ <S.Button onClick={onBack}>Back</S.Button>
48
+ <S.Button onClick={onProceed}>Proceed to Cart</S.Button>
49
+ </Box>
50
+ </Box>
51
+ );
52
+ };
53
+
54
+ export default SkipDesignerReview;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { Box } from '@material-ui/core';
3
+
4
+ export const StepDots = ({ currentStep = 0, totalSteps = 2, onStepChange }) => {
5
+ const dots = Array.from({ length: totalSteps });
6
+ return (
7
+ <Box display="flex" alignItems="center" marginRight="auto">
8
+ {dots.map((_, i) => (
9
+ <Box
10
+ key={i}
11
+ onClick={onStepChange ? () => onStepChange(i) : undefined}
12
+ style={{
13
+ width: 10,
14
+ height: 10,
15
+ borderRadius: '50%',
16
+ marginRight: i === totalSteps - 1 ? 0 : 8,
17
+ background:
18
+ i === currentStep ? 'rgb(98, 0, 238)' : 'rgba(0,0,0,0.25)',
19
+ cursor: onStepChange ? 'pointer' : 'default'
20
+ }}
21
+ />
22
+ ))}
23
+ </Box>
24
+ );
25
+ };
@@ -0,0 +1,116 @@
1
+ import React, { useEffect } from 'react';
2
+ import {
3
+ FormControl,
4
+ FormControlLabel,
5
+ FormLabel,
6
+ Radio,
7
+ RadioGroup
8
+ } from '@material-ui/core';
9
+ import { useCheckCart } from '../../../../../src/hooks/useCheckCart';
10
+ import ls from 'localstorage-slim';
11
+ import {
12
+ CLIENTS_NAME,
13
+ LOCAL_STORAGE_CART_ACTION
14
+ } from '../../../../../src/constants';
15
+ import Skeleton from '@material-ui/lab/Skeleton';
16
+ import { useValidateToken } from '../../../../../src/hooks/useValidateToken';
17
+
18
+ export default function CartChoice({ accessToken }) {
19
+ const visualizerName = sessionStorage.getItem('visualizerName');
20
+ const [cartAction, setCartAction] = React.useState('add');
21
+
22
+ const handleChange = event => {
23
+ const value = event.target.value;
24
+ setCartAction(value);
25
+ ls.set(LOCAL_STORAGE_CART_ACTION, value);
26
+ };
27
+
28
+ const { data } = useValidateToken(accessToken);
29
+
30
+ const {
31
+ data: { is_empty },
32
+ isFetching: isCheckingCart
33
+ } = useCheckCart({
34
+ enabled: data?.source !== 'none'
35
+ });
36
+
37
+ useEffect(() => {
38
+ if (is_empty) {
39
+ ls.set(LOCAL_STORAGE_CART_ACTION, 'add');
40
+ }
41
+ }, [is_empty]);
42
+
43
+ if (isCheckingCart || data?.source === 'none') {
44
+ return (
45
+ <div
46
+ style={{
47
+ marginBottom: '1rem'
48
+ }}
49
+ >
50
+ <Skeleton
51
+ variant="text"
52
+ width={220}
53
+ height={32}
54
+ style={{ marginBottom: 16 }}
55
+ />
56
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
57
+ <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
58
+ <Skeleton variant="circle" width={24} height={24} />
59
+ <Skeleton variant="text" width={120} height={28} />
60
+ </div>
61
+ <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
62
+ <Skeleton variant="circle" width={24} height={24} />
63
+ <Skeleton variant="text" width={120} height={28} />
64
+ </div>
65
+ </div>
66
+ </div>
67
+ );
68
+ }
69
+
70
+ if (is_empty) {
71
+ return <></>;
72
+ }
73
+
74
+ return (
75
+ <div style={{ marginTop: '0.5rem', marginBottom: '1rem' }}>
76
+ <FormControl component="fieldset">
77
+ <FormLabel
78
+ style={{ marginBottom: '0.5rem', fontSize: '1rem', color: 'black' }}
79
+ >
80
+ What would you like to do with your cart?
81
+ </FormLabel>
82
+ <RadioGroup
83
+ aria-label="cart-choice"
84
+ name="cart-choice"
85
+ value={cartAction}
86
+ onChange={handleChange}
87
+ >
88
+ <FormControlLabel
89
+ value="add"
90
+ control={<Radio style={{ color: 'rgb(76, 18, 161)' }} />}
91
+ label="Add to Cart"
92
+ />
93
+ <FormControlLabel
94
+ value="replace"
95
+ control={<Radio style={{ color: 'rgb(76, 18, 161)' }} />}
96
+ label="Replace Cart*"
97
+ />
98
+ </RadioGroup>
99
+ {cartAction === 'replace' && (
100
+ <FormLabel
101
+ style={{
102
+ fontSize: 14,
103
+ color: 'rgba(0, 0, 0, 0.54)',
104
+ paddingLeft: '1.75rem',
105
+ lineHeight: '1rem'
106
+ }}
107
+ >
108
+ {`*If you replace the items in your cart with your current design, any
109
+ pre-existing items will be removed. Log in to your ${CLIENTS_NAME[visualizerName]}
110
+ account and save them as a quote first if you wish to keep them.`}
111
+ </FormLabel>
112
+ )}
113
+ </FormControl>
114
+ </div>
115
+ );
116
+ }
@@ -0,0 +1,38 @@
1
+ import Select from '@material-ui/core/Select';
2
+ import MenuItem from '@material-ui/core/MenuItem';
3
+ import React from 'react';
4
+
5
+ export let DoorsConcernedMenu = ({ selected, data, onChange, getValue }) => {
6
+ return data.length ? (
7
+ <Select
8
+ className="submit-for-quote-form-item-button"
9
+ value={selected}
10
+ onChange={e => onChange(e.target.value)}
11
+ MenuProps={{
12
+ PaperProps: {
13
+ style: {
14
+ background: '#464647',
15
+ color: 'white'
16
+ }
17
+ }
18
+ }}
19
+ >
20
+ {data.map((item, key) => (
21
+ <MenuItem key={key} value={getValue(item)}>
22
+ <div className="submit-for-quote-form-item-button-icon">
23
+ <img
24
+ height="20"
25
+ src={item.thumbnail}
26
+ className="submit-for-quote-form-item-button-img"
27
+ />
28
+ </div>
29
+ <font size="2">{item.name}</font>
30
+ </MenuItem>
31
+ ))}
32
+ </Select>
33
+ ) : null;
34
+ };
35
+
36
+ DoorsConcernedMenu.defaultProps = {
37
+ getValue: it => it.name
38
+ };