@nyris/nyris-webapp 0.3.45 → 0.3.47

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 (44) hide show
  1. package/build/asset-manifest.json +14 -12
  2. package/build/index.html +1 -1
  3. package/build/{precache-manifest.1f75904c53fde266565cfe8519296465.js → precache-manifest.694373c4d80fe3bb40d0d6526b473852.js} +18 -10
  4. package/build/service-worker.js +1 -1
  5. package/build/static/css/main.21021ebe.chunk.css +2 -0
  6. package/build/static/css/main.21021ebe.chunk.css.map +1 -0
  7. package/build/static/js/2.3e652625.chunk.js +3 -0
  8. package/build/static/js/2.3e652625.chunk.js.map +1 -0
  9. package/build/static/js/main.37e28702.chunk.js +3 -0
  10. package/build/static/js/main.37e28702.chunk.js.map +1 -0
  11. package/build/static/media/call.c3c23966.svg +3 -0
  12. package/build/static/media/icon_email.71b21005.svg +3 -0
  13. package/package.json +4 -4
  14. package/src/Store/constants.ts +0 -1
  15. package/src/common/assets/icons/call.svg +3 -0
  16. package/src/common/assets/icons/icon_email.svg +2 -2
  17. package/src/components/CadenasWebViewer.tsx +2 -2
  18. package/src/components/Feedback.tsx +36 -0
  19. package/src/components/Header.tsx +3 -4
  20. package/src/components/ImagePreviewMobile.tsx +51 -134
  21. package/src/components/Inquiry/InquiryBanner.tsx +103 -35
  22. package/src/components/Inquiry/InquiryModal.tsx +7 -10
  23. package/src/components/Layout.tsx +5 -0
  24. package/src/components/ProductDetailView.tsx +21 -11
  25. package/src/components/SidePanel.tsx +22 -15
  26. package/src/components/appMobile.scss +7 -0
  27. package/src/components/common.scss +134 -0
  28. package/src/components/drawer/cameraCustom.tsx +14 -64
  29. package/src/components/results/ItemResult.tsx +118 -123
  30. package/src/components/rfq/RfqModal.tsx +7 -5
  31. package/src/index.css +1 -1
  32. package/src/page/landingPage/common.scss +3 -4
  33. package/src/page/result/index.tsx +60 -3
  34. package/src/services/Feedback.ts +4 -13
  35. package/src/translations.ts +7 -0
  36. package/src/types.ts +21 -6
  37. package/build/static/css/main.1b40c5ff.chunk.css +0 -2
  38. package/build/static/css/main.1b40c5ff.chunk.css.map +0 -1
  39. package/build/static/js/2.21c7c0a2.chunk.js +0 -3
  40. package/build/static/js/2.21c7c0a2.chunk.js.map +0 -1
  41. package/build/static/js/main.ed5fecc0.chunk.js +0 -3
  42. package/build/static/js/main.ed5fecc0.chunk.js.map +0 -1
  43. /package/build/static/js/{2.21c7c0a2.chunk.js.LICENSE.txt → 2.3e652625.chunk.js.LICENSE.txt} +0 -0
  44. /package/build/static/js/{main.ed5fecc0.chunk.js.LICENSE.txt → main.37e28702.chunk.js.LICENSE.txt} +0 -0
@@ -116,7 +116,7 @@ function ItemResult(props: Props) {
116
116
  dataItem,
117
117
  settings.field?.ctaLinkField ? settings.field?.ctaLinkField : 'links.main',
118
118
  );
119
-
119
+ const manufacturerNumber = get(dataItem, settings.field.manufacturerNumber);
120
120
  return (
121
121
  <Box className="wrap-main-item-result">
122
122
  <DefaultModal
@@ -174,7 +174,7 @@ function ItemResult(props: Props) {
174
174
  <IconSearchImage width={16} height={16} color={'#AAABB5'} />
175
175
  </Box>
176
176
  )}
177
- {settings.cadenas3dWebView && (
177
+ {settings.cadenas?.cadenas3dWebView && (
178
178
  <Box
179
179
  className="box-icon-modal-3d"
180
180
  onClick={() => {
@@ -237,19 +237,17 @@ function ItemResult(props: Props) {
237
237
  style={{ color: '#2B2C46' }}
238
238
  gridGap={8}
239
239
  >
240
- {
241
- settings.CTAButtonText && (
242
- <Typography
243
- className="text-f12 max-line-1 fw-700"
244
- style={{
245
- color: '#2B2C46',
246
- marginTop: 8
247
- }}
248
- >
249
- {truncateString(dataItem[settings.field.productName], 45)}
250
- </Typography>
251
- )
252
- }
240
+ {settings.CTAButtonText && (
241
+ <Typography
242
+ className="text-f12 max-line-1 fw-700"
243
+ style={{
244
+ color: '#2B2C46',
245
+ marginTop: 8,
246
+ }}
247
+ >
248
+ {truncateString(dataItem[settings.field.productName], 45)}
249
+ </Typography>
250
+ )}
253
251
  <Box
254
252
  display="flex"
255
253
  justifyContent={'space-between'}
@@ -312,10 +310,10 @@ function ItemResult(props: Props) {
312
310
  />
313
311
  )}
314
312
 
315
- {dataItem[settings.field.manufacturerNumber] && (
313
+ {manufacturerNumber && (
316
314
  <ProductAttribute
317
315
  title={t('Mfr. No.')}
318
- value={dataItem[settings.field.manufacturerNumber]}
316
+ value={manufacturerNumber}
319
317
  padding="4px 8px"
320
318
  width={{ xs: '49%' }}
321
319
  />
@@ -352,124 +350,121 @@ function ItemResult(props: Props) {
352
350
  </Box>
353
351
  )}
354
352
  <div>
355
- {
356
- !settings.CTAButtonText
357
- ? (
358
- <Tooltip
359
- title={dataItem[settings.field.productName]}
360
- placement="top"
361
- arrow={true}
362
- disableHoverListener={
363
- dataItem[settings.field.productName]?.length < 45
364
- }
353
+ {!settings.CTAButtonText ? (
354
+ <Tooltip
355
+ title={dataItem[settings.field.productName]}
356
+ placement="top"
357
+ arrow={true}
358
+ disableHoverListener={
359
+ dataItem[settings.field.productName]?.length < 45
360
+ }
361
+ >
362
+ <Box
363
+ style={{
364
+ boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',
365
+ // marginBottom: 22,
366
+ height: 40,
367
+ background: settings.theme?.primaryColor,
368
+ borderRadius: 4,
369
+ padding: '0px 8px',
370
+ marginTop: '8px',
371
+ }}
372
+ display={'flex'}
373
+ justifyItems={'center'}
374
+ alignItems={'center'}
375
+ justifyContent={'space-between'}
365
376
  >
366
377
  <Box
367
378
  style={{
368
- boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',
369
- // marginBottom: 22,
370
- height: 40,
371
- background: settings.theme?.primaryColor,
372
- borderRadius: 4,
373
- padding: '0px 8px',
374
- marginTop: '8px',
379
+ display: 'flex',
380
+ justifyContent: 'space-between',
381
+ width: '100%',
382
+ padding: 0,
383
+ cursor: ctaLink ? 'pointer' : 'normal',
384
+ }}
385
+ onClick={() => {
386
+ if (ctaLink) {
387
+ feedbackConversionEpic(state, indexItem, dataItem.sku);
388
+ window.open(`${ctaLink}`, '_blank');
389
+ }
375
390
  }}
376
- display={'flex'}
377
- justifyItems={'center'}
378
- alignItems={'center'}
379
- justifyContent={'space-between'}
380
391
  >
381
- <Box
392
+ <Typography
393
+ className="text-white max-line-2"
382
394
  style={{
383
- display: 'flex',
384
- justifyContent: 'space-between',
385
- width: '100%',
386
- padding: 0,
387
- cursor: ctaLink ? 'pointer' : 'normal',
388
- }}
389
- onClick={() => {
390
- if (ctaLink) {
391
- feedbackConversionEpic(state, indexItem, dataItem.sku);
392
- window.open(`${ctaLink}`, '_blank');
393
- }
395
+ overflow: 'hidden',
396
+ textOverflow: 'ellipsis',
397
+ fontWeight: 500,
398
+ fontSize: '12px',
399
+ letterSpacing: '0.27px',
400
+ wordBreak: 'break-all',
401
+ maxWidth: !isMobile && ctaLink ? '136px' : '164x',
402
+ paddingRight: '8px',
394
403
  }}
404
+ align="left"
395
405
  >
396
- <Typography
397
- className="text-white max-line-2"
398
- style={{
399
- overflow: 'hidden',
400
- textOverflow: 'ellipsis',
401
- fontWeight: 500,
402
- fontSize: '12px',
403
- letterSpacing: '0.27px',
404
- wordBreak: 'break-all',
405
- maxWidth: !isMobile && ctaLink ? '136px' : '164x',
406
- paddingRight: '8px',
407
- }}
408
- align="left"
409
- >
410
- {truncateString(dataItem[settings.field.productName], 45)}
411
- </Typography>
412
- {!isMobile && ctaLink && (
413
- <img src={IconOpenLink} alt="more-info" width={16} />
414
- )}
415
- </Box>
406
+ {truncateString(dataItem[settings.field.productName], 45)}
407
+ </Typography>
408
+ {!isMobile && ctaLink && (
409
+ <img src={IconOpenLink} alt="more-info" width={16} />
410
+ )}
416
411
  </Box>
417
- </Tooltip>
418
- ) : (
419
- <Box
412
+ </Box>
413
+ </Tooltip>
414
+ ) : (
415
+ <Box
416
+ style={{
417
+ boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',
418
+ // marginBottom: 22,
419
+ height: 40,
420
+ background: settings.theme?.primaryColor,
421
+ borderRadius: 4,
422
+ padding: '0px 8px',
423
+ marginTop: '8px',
424
+ }}
425
+ display={'flex'}
426
+ justifyItems={'center'}
427
+ alignItems={'center'}
428
+ justifyContent={'space-between'}
429
+ >
430
+ <Box
431
+ style={{
432
+ display: 'flex',
433
+ justifyContent: 'space-between',
434
+ width: '100%',
435
+ padding: 0,
436
+ cursor: ctaLink ? 'pointer' : 'normal',
437
+ }}
438
+ onClick={() => {
439
+ if (ctaLink) {
440
+ feedbackConversionEpic(state, indexItem, dataItem.sku);
441
+ window.open(`${ctaLink}`, '_blank');
442
+ }
443
+ }}
444
+ >
445
+ <Typography
446
+ className="text-white max-line-2"
420
447
  style={{
421
- boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',
422
- // marginBottom: 22,
423
- height: 40,
424
- background: settings.theme?.primaryColor,
425
- borderRadius: 4,
426
- padding: '0px 8px',
427
- marginTop: '8px',
448
+ overflow: 'hidden',
449
+ textOverflow: 'ellipsis',
450
+ fontWeight: 500,
451
+ fontSize: '12px',
452
+ letterSpacing: '0.27px',
453
+ wordBreak: 'break-all',
454
+ maxWidth: !isMobile && ctaLink ? '136px' : '164x',
455
+ paddingRight: '8px',
428
456
  }}
429
- display={'flex'}
430
- justifyItems={'center'}
431
- alignItems={'center'}
432
- justifyContent={'space-between'}
457
+ align="left"
433
458
  >
434
- <Box
435
- style={{
436
- display: 'flex',
437
- justifyContent: 'space-between',
438
- width: '100%',
439
- padding: 0,
440
- cursor: ctaLink ? 'pointer' : 'normal',
441
- }}
442
- onClick={() => {
443
- if (ctaLink) {
444
- feedbackConversionEpic(state, indexItem, dataItem.sku);
445
- window.open(`${ctaLink}`, '_blank');
446
- }
447
- }}
448
- >
449
- <Typography
450
- className="text-white max-line-2"
451
- style={{
452
- overflow: 'hidden',
453
- textOverflow: 'ellipsis',
454
- fontWeight: 500,
455
- fontSize: '12px',
456
- letterSpacing: '0.27px',
457
- wordBreak: 'break-all',
458
- maxWidth: !isMobile && ctaLink ? '136px' : '164x',
459
- paddingRight: '8px',
460
- }}
461
- align="left"
462
- >
463
- {settings.CTAButtonText}
464
- </Typography>
465
- {!isMobile && ctaLink && (
466
- <img src={IconOpenLink} alt="more-info" width={16} />
467
- )}
468
- </Box>
469
- </Box>
470
- )
471
- }
472
-
459
+ {settings.CTAButtonText}
460
+ </Typography>
461
+ {!isMobile && ctaLink && (
462
+ <img src={IconOpenLink} alt="more-info" width={16} />
463
+ )}
464
+ </Box>
465
+ </Box>
466
+ )}
467
+
473
468
  {settings.showFeedbackAndShare && (
474
469
  <Box
475
470
  className="box-bottom"
@@ -65,10 +65,12 @@ export default function RfqModal({
65
65
  const croppedImage = getCroppedCanvas(canvas, selectedRegion);
66
66
  const serviceId = 'service_zfsxshi';
67
67
  setIsRfqModalOpen(false);
68
- if (settings.templateId) {
68
+ const templateId = settings.rfq?.emailTemplateId;
69
+
70
+ if (templateId) {
69
71
  try {
70
72
  setRfqStatus('loading');
71
- await emailjs.send(serviceId, settings.templateId, {
73
+ await emailjs.send(serviceId, templateId, {
72
74
  email_id: email.trim(),
73
75
  information_text: information,
74
76
  request_image: croppedImage?.toDataURL(),
@@ -89,7 +91,7 @@ export default function RfqModal({
89
91
  width: '294px',
90
92
  }}
91
93
  >
92
- <span style={{fontWeight: 'bold'}}>Email not sent</span>
94
+ <span style={{ fontWeight: 'bold' }}>Email not sent</span>
93
95
  <span>{getErrorMessage(error)}</span>
94
96
  <a
95
97
  href={`mailto:support@nyris.io?subject=Request for quotation&body=${information}`}
@@ -116,8 +118,8 @@ export default function RfqModal({
116
118
  maxWidth: '400px',
117
119
  },
118
120
  icon: (
119
- <div style={{minWidth: '20px', minHeight: '20px'}}>
120
- <ErrorIcon/>
121
+ <div style={{ minWidth: '20px', minHeight: '20px' }}>
122
+ <ErrorIcon />
121
123
  </div>
122
124
  ),
123
125
  },
package/src/index.css CHANGED
@@ -427,7 +427,7 @@ strong {
427
427
  }
428
428
 
429
429
  body {
430
- background: #e7eaee;
430
+ background: #fafafa;
431
431
  }
432
432
 
433
433
  h1,
@@ -21,9 +21,7 @@
21
21
  }
22
22
  a {
23
23
  text-decoration: none !important;
24
- &:hover {
25
- color: #3e36dc !important;
26
- }
24
+
27
25
  }
28
26
  .text-gray2 {
29
27
  color: #55566b !important;
@@ -599,7 +597,7 @@ button {
599
597
  background-color: #e9e9ec;
600
598
  padding-left: 8px;
601
599
  padding-right: 8px;
602
- padding-bottom: 8px;
600
+ padding-bottom: 12px;
603
601
  min-height: 82px;
604
602
  justify-content: space-between;
605
603
  .box-top {
@@ -1082,6 +1080,7 @@ button {
1082
1080
  border-left: 1px solid #e9e9ec;
1083
1081
  }
1084
1082
  .box-change-hit-items {
1083
+ z-index: 500;
1085
1084
  font-family: 'Source Sans 3';
1086
1085
  font-style: normal;
1087
1086
  font-weight: 500;
@@ -49,6 +49,7 @@ import RfqBanner from 'components/rfq/RfqBanner';
49
49
  import InquiryBanner from 'components/Inquiry/InquiryBanner';
50
50
  import { useQuery } from 'hooks/useQuery';
51
51
  import { ReactComponent as PoweredByNyrisImage } from 'common/assets/images/powered_by_nyris.svg';
52
+ import Feedback from 'components/Feedback';
52
53
 
53
54
  interface Props {
54
55
  allSearchResults: any;
@@ -89,6 +90,11 @@ function ResultComponent(props: Props) {
89
90
  'not-scrolled' | 'scrolled' | 'user-scrolled'
90
91
  >('not-scrolled');
91
92
 
93
+ const [showFeedback, setShowFeedback] = useState<
94
+ 'not-scrolled' | 'scrolled' | 'user-scrolled'
95
+ >('not-scrolled');
96
+
97
+ const [showFeedbackSuccess, setShowFeedbackSuccess] = useState(false);
92
98
  const query = useQuery();
93
99
  const searchQuery = query.get('query') || search.valueTextSearch.query;
94
100
  const isAlgoliaEnabled = settings.algolia?.enabled;
@@ -118,12 +124,14 @@ function ResultComponent(props: Props) {
118
124
  setImageSelection(selectedRegion);
119
125
  setRfqStatus('inactive');
120
126
  setIsScrolled('not-scrolled');
127
+ setShowFeedback('not-scrolled');
121
128
  }
122
129
  }, [selectedRegion]);
123
130
 
124
131
  useEffect(() => {
125
132
  if (requestImage) {
126
133
  setIsScrolled('not-scrolled');
134
+ setShowFeedback('not-scrolled');
127
135
  executeScroll();
128
136
  setImageSelection(DEFAULT_REGION);
129
137
  }
@@ -330,6 +338,35 @@ function ResultComponent(props: Props) {
330
338
  };
331
339
  }, [requestImage]);
332
340
 
341
+ useEffect(() => {
342
+ if (!requestImage || !settings.showFeedback) return;
343
+
344
+ setTimeout(() => {
345
+ setShowFeedback(s => (s === 'not-scrolled' ? 'scrolled' : s));
346
+ }, 5000);
347
+
348
+ const handleScroll = () => {
349
+ setTimeout(() => {
350
+ setShowFeedback(s => (s === 'not-scrolled' ? 'scrolled' : s));
351
+ }, 100);
352
+ };
353
+
354
+ window.addEventListener('scroll', handleScroll, { capture: true });
355
+
356
+ return () => {
357
+ window.removeEventListener('scroll', handleScroll);
358
+ };
359
+ }, [requestImage, selectedRegion, settings.showFeedback]);
360
+
361
+ const submitFeedback = async (data: boolean) => {
362
+ setShowFeedbackSuccess(true);
363
+ setTimeout(() => {
364
+ setShowFeedbackSuccess(false);
365
+ }, 3000);
366
+ setShowFeedback('user-scrolled');
367
+ feedbackSuccessEpic(stateGlobal, data);
368
+ };
369
+
333
370
  return (
334
371
  <>
335
372
  <div
@@ -428,6 +465,23 @@ function ResultComponent(props: Props) {
428
465
  className={'box-item-result ml-auto mr-auto'}
429
466
  style={{ height: '100%', paddingLeft: isMobile ? 0 : 16 }}
430
467
  >
468
+ {showFeedbackSuccess && (
469
+ <div className={'box-item-result feedback-floating'}>
470
+ <div className="feedback-success">
471
+ Thanks for your feedback!
472
+ </div>
473
+ </div>
474
+ )}
475
+ {showFeedback === 'scrolled' && !showFeedbackSuccess && (
476
+ <div className={'box-item-result feedback-floating'}>
477
+ <Feedback
478
+ submitFeedback={submitFeedback}
479
+ onFeedbackClose={() => {
480
+ setShowFeedback('user-scrolled');
481
+ }}
482
+ />
483
+ </div>
484
+ )}
431
485
  <ProductList
432
486
  getUrlToCanvasFile={getUrlToCanvasFile}
433
487
  setLoading={false}
@@ -466,7 +520,8 @@ function ResultComponent(props: Props) {
466
520
  {requestImage &&
467
521
  !loadingSearchAlgolia &&
468
522
  !props.isSearchStalled &&
469
- settings.rfq && (
523
+ settings.rfq &&
524
+ settings.rfq.enabled && (
470
525
  <RfqBanner
471
526
  rfqRef={rfqRef}
472
527
  rfqStatus={rfqStatus}
@@ -477,7 +532,8 @@ function ResultComponent(props: Props) {
477
532
  )}
478
533
  {!loadingSearchAlgolia &&
479
534
  !props.isSearchStalled &&
480
- settings.inquiry &&
535
+ settings.support &&
536
+ settings.support.enabled &&
481
537
  (searchQuery || requestImage) && (
482
538
  <InquiryBanner
483
539
  requestImage={requestImage}
@@ -537,7 +593,8 @@ function ResultComponent(props: Props) {
537
593
  requestImage &&
538
594
  isMobile &&
539
595
  props.allSearchResults.hits.length > 0 &&
540
- settings.rfq && (
596
+ settings.rfq &&
597
+ settings.rfq.enabled && (
541
598
  <div
542
599
  style={{
543
600
  fontSize: '14px',
@@ -4,8 +4,6 @@ import NyrisAPI, {
4
4
  RectCoords,
5
5
  } from '@nyris/nyris-api';
6
6
  import { RootState } from '../Store/Store';
7
- import { ToastHelper } from '../helpers/ToastHelper';
8
- import { toast } from 'react-hot-toast';
9
7
 
10
8
  export const feedbackSuccessEpic = async (
11
9
  state: RootState,
@@ -15,17 +13,10 @@ export const feedbackSuccessEpic = async (
15
13
  const sessionId = search.sessionId;
16
14
  const requestId = search.requestId || search.sessionId;
17
15
 
18
- try {
19
- const res = await sendFeedbackByApi(settings, sessionId, requestId, {
20
- event: 'feedback',
21
- data: { success },
22
- });
23
- toast.dismiss();
24
- ToastHelper.success('Thank you for your feedback.');
25
- return res;
26
- } catch (err: any) {
27
- console.log(err);
28
- }
16
+ return await sendFeedbackByApi(settings, sessionId, requestId, {
17
+ event: 'feedback',
18
+ data: { success },
19
+ });
29
20
  };
30
21
 
31
22
  export const feedbackClickEpic = async (
@@ -25,6 +25,8 @@ export const translations = {
25
25
  'No products were found matching your search criteria.',
26
26
  'Please upload an image or enter a keyword to search.':
27
27
  'Please upload an image or enter a keyword to search.',
28
+ 'No matches found': 'No matches found',
29
+ 'No matches found for your request': 'No matches found for your request',
28
30
  },
29
31
  },
30
32
  de: {
@@ -53,6 +55,9 @@ export const translations = {
53
55
  'Keine Produkte entsprechen Ihren Suchkriterien.',
54
56
  'Please upload an image or enter a keyword to search.':
55
57
  'Für die Suche bitte Bild hochladen oder Stichwort eingeben.',
58
+ 'No matches found': 'Keine Treffer für Ihre Anfrage gefunden',
59
+ 'No matches found for your request':
60
+ 'Keine Treffer für Ihre Anfrage gefunden',
56
61
  },
57
62
  },
58
63
  pt: {
@@ -82,6 +87,8 @@ export const translations = {
82
87
  'Nenhum produto foi encontrado com estes critérios ',
83
88
  'Please upload an image or enter a keyword to search.':
84
89
  'Faça o upload de uma imagem ou busque via texto',
90
+ 'No matches found': 'No matches found',
91
+ 'No matches found for your request': 'No matches found for your request',
85
92
  },
86
93
  },
87
94
  };
package/src/types.ts CHANGED
@@ -15,6 +15,23 @@ export interface Auth0Settings {
15
15
  supportEmail?: string;
16
16
  }
17
17
 
18
+ export interface Support {
19
+ enabled?: boolean;
20
+ description?: string;
21
+ emailInquiry?: boolean;
22
+ supportNumber?: string;
23
+ emailTemplateId?: string;
24
+ }
25
+
26
+ export interface Rfq {
27
+ enabled?: boolean;
28
+ emailTemplateId?: string;
29
+ }
30
+ export interface Cadenas {
31
+ cadenas3dWebView?: boolean;
32
+ cadenasAPIKey?: string;
33
+ catalog?: string;
34
+ }
18
35
  export interface Field {
19
36
  ctaLinkField: string;
20
37
  productName: string;
@@ -35,14 +52,11 @@ export interface AppSettings extends NyrisAPISettings {
35
52
  appTitle?: string;
36
53
  auth0: Auth0Settings;
37
54
  brandName?: string;
38
- cadenas3dWebView?: boolean;
39
- cadenasAPIKey?: string;
55
+ cadenas?: Cadenas;
40
56
  cadSearch?: boolean;
41
- catalog?: string;
42
57
  exampleImages?: string[]; // deprecated
43
58
  field: Field;
44
59
  headerText?: string;
45
- inquiry?: boolean;
46
60
  instantRedirectPatterns: string[];
47
61
  itemIdLabel?: string;
48
62
  language?: string;
@@ -54,13 +68,14 @@ export interface AppSettings extends NyrisAPISettings {
54
68
  productCtaText?: string;
55
69
  refinements?: any;
56
70
  regions: boolean;
57
- rfq?: boolean;
71
+ rfq?: Rfq;
58
72
  shareOption?: boolean;
73
+ showFeedback?: boolean;
59
74
  showFeedbackAndShare?: boolean;
60
75
  showGroup?: boolean;
61
76
  showMoreInfo?: boolean; // deprecated
62
77
  showPoweredByNyris?: boolean;
63
- templateId?: string;
78
+ support?: Support;
64
79
  theme: SearchSuiteSettings;
65
80
  visualSearchFilterKey?: string;
66
81
  warehouseVariant?: boolean;