@nyris/nyris-webapp 0.3.42 → 0.3.44

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 (65) hide show
  1. package/build/asset-manifest.json +16 -12
  2. package/build/index.html +1 -1
  3. package/build/{precache-manifest.009e864ff0764cf3cf8a9b290c334099.js → precache-manifest.c92406fe2e3b0feaf429c551125e2d95.js} +26 -10
  4. package/build/service-worker.js +1 -1
  5. package/build/static/css/main.1b40c5ff.chunk.css +2 -0
  6. package/build/static/css/main.1b40c5ff.chunk.css.map +1 -0
  7. package/build/static/js/2.82ef1cd4.chunk.js +3 -0
  8. package/build/static/js/2.82ef1cd4.chunk.js.map +1 -0
  9. package/build/static/js/main.7cdac2fb.chunk.js +3 -0
  10. package/build/static/js/main.7cdac2fb.chunk.js.map +1 -0
  11. package/build/static/media/avatar.4c5346ed.svg +3 -0
  12. package/build/static/media/logout.07b9ef7f.svg +3 -0
  13. package/build/static/media/powered_by_nyris.e6766baf.svg +3 -0
  14. package/build/static/media/powered_by_nyris_colored.08d00bae.svg +9 -0
  15. package/package.json +3 -3
  16. package/public/index.html +4 -16
  17. package/src/Router.tsx +1 -0
  18. package/src/Store/Store.ts +2 -4
  19. package/src/Store/constants.ts +6 -0
  20. package/src/Store/search/Search.ts +10 -3
  21. package/src/Store/search/types.ts +1 -0
  22. package/src/common/assets/icons/avatar.svg +3 -0
  23. package/src/common/assets/icons/logout.svg +3 -0
  24. package/src/common/assets/images/powered_by_nyris.svg +3 -0
  25. package/src/common/assets/images/powered_by_nyris_colored.svg +9 -0
  26. package/src/components/AppMobile.tsx +1 -0
  27. package/src/components/AuthenticatedRoute.tsx +4 -1
  28. package/src/components/DragDropFile.tsx +3 -4
  29. package/src/components/FooterMobile.tsx +137 -24
  30. package/src/components/Header.tsx +120 -1
  31. package/src/components/HeaderMobile.tsx +230 -163
  32. package/src/components/ImagePreviewMobile.tsx +57 -8
  33. package/src/components/Layout.tsx +10 -53
  34. package/src/components/NoAccess.tsx +66 -0
  35. package/src/components/PoweredByNyris.tsx +49 -0
  36. package/src/components/ProductDetailView.tsx +16 -10
  37. package/src/components/ProductList/index.tsx +16 -93
  38. package/src/components/ProductList/useProductList.ts +114 -0
  39. package/src/components/Provider/InstantSearchProvider.tsx +66 -0
  40. package/src/components/appMobile.scss +2 -2
  41. package/src/components/common.scss +8 -1
  42. package/src/components/drawer/cameraCustom.tsx +3 -3
  43. package/src/components/input/inputSearch.tsx +86 -17
  44. package/src/components/pre-filter/index.tsx +58 -7
  45. package/src/components/results/ItemResult.tsx +6 -1
  46. package/src/index.tsx +1 -1
  47. package/src/page/landingPage/common.scss +4 -1
  48. package/src/page/result/index.tsx +154 -131
  49. package/src/services/Feedback.ts +1 -1
  50. package/src/services/image.ts +8 -5
  51. package/src/types.ts +13 -12
  52. package/build/static/css/main.86d40309.chunk.css +0 -2
  53. package/build/static/css/main.86d40309.chunk.css.map +0 -1
  54. package/build/static/js/2.1757789c.chunk.js +0 -3
  55. package/build/static/js/2.1757789c.chunk.js.map +0 -1
  56. package/build/static/js/main.1d184393.chunk.js +0 -3
  57. package/build/static/js/main.1d184393.chunk.js.map +0 -1
  58. package/src/Store/auth/Auth.ts +0 -33
  59. package/src/Store/auth/types.ts +0 -11
  60. package/src/Store/nyris/Nyris.ts +0 -67
  61. package/src/Store/nyris/types.ts +0 -11
  62. package/src/components/Feedback.tsx +0 -91
  63. /package/build/static/js/{2.1757789c.chunk.js.LICENSE.txt → 2.82ef1cd4.chunk.js.LICENSE.txt} +0 -0
  64. /package/build/static/js/{main.1d184393.chunk.js.LICENSE.txt → main.7cdac2fb.chunk.js.LICENSE.txt} +0 -0
  65. /package/src/components/{AuthProvider.tsx → Provider/AuthProvider.tsx} +0 -0
@@ -24,8 +24,7 @@ import {
24
24
  } from 'react-instantsearch-dom';
25
25
  import { useMediaQuery } from 'react-responsive';
26
26
  import { feedbackRegionEpic, feedbackSuccessEpic } from 'services/Feedback';
27
- import { createImage, findByImage, findRegions } from 'services/image';
28
- import { showFeedback, showResults } from 'Store/nyris/Nyris';
27
+ import { createImage, find, findRegions } from 'services/image';
29
28
  import {
30
29
  loadingActionResults,
31
30
  onToggleModalItemDetail,
@@ -48,6 +47,8 @@ import useFilteredRegions from 'hooks/useFilteredRegions';
48
47
  import ImagePreviewMobile from 'components/ImagePreviewMobile';
49
48
  import RfqBanner from 'components/rfq/RfqBanner';
50
49
  import InquiryBanner from 'components/Inquiry/InquiryBanner';
50
+ import { useQuery } from 'hooks/useQuery';
51
+ import { ReactComponent as PoweredByNyrisImage } from 'common/assets/images/powered_by_nyris.svg';
51
52
 
52
53
  interface Props {
53
54
  allSearchResults: any;
@@ -88,6 +89,11 @@ function ResultComponent(props: Props) {
88
89
  'not-scrolled' | 'scrolled' | 'user-scrolled'
89
90
  >('not-scrolled');
90
91
 
92
+ const query = useQuery();
93
+ const searchQuery = query.get('query') || search.valueTextSearch.query;
94
+ const isAlgoliaEnabled = settings.algolia?.enabled;
95
+ const isPostFilterEnabled = settings.postFilterOption;
96
+
91
97
  useEffect(() => {
92
98
  if (
93
99
  !loadingSearchAlgolia &&
@@ -132,13 +138,14 @@ function ResultComponent(props: Props) {
132
138
  },
133
139
  ];
134
140
  dispatch(loadingActionResults());
135
- return findByImage({
141
+
142
+ return find({
136
143
  image: canvas,
137
144
  settings,
138
145
  region: r,
139
146
  filters: !isEmpty(preFilter) ? preFilterValues : undefined,
140
147
  })
141
- .then(res => {
148
+ .then((res: any) => {
142
149
  dispatch(updateStatusLoading(false));
143
150
  return {
144
151
  ...res,
@@ -172,7 +179,7 @@ function ResultComponent(props: Props) {
172
179
  setShowAdjustInfoBasedOnConfidence(false);
173
180
  }, 2000);
174
181
  });
175
- return dispatch(showFeedback());
182
+ return;
176
183
  }, 250),
177
184
  [requestImage, findImageByApiNyris],
178
185
  );
@@ -190,7 +197,6 @@ function ResultComponent(props: Props) {
190
197
  // setOpenModalImage(false);
191
198
  dispatch(onToggleModalItemDetail(false));
192
199
  }
193
- dispatch(showResults());
194
200
  dispatch(loadingActionResults());
195
201
  dispatch(setImageSearchInput(url));
196
202
  let image = await createImage(url);
@@ -210,14 +216,13 @@ function ResultComponent(props: Props) {
210
216
  values: Object.keys(preFilter) as string[],
211
217
  },
212
218
  ];
213
- findByImage({
219
+ find({
214
220
  image,
215
221
  settings,
216
222
  region: searchRegion,
217
223
  filters: !isEmpty(preFilter) ? preFilterValues : undefined,
218
- }).then(res => {
224
+ }).then((res: any) => {
219
225
  dispatch(setSearchResults(res));
220
- dispatch(showFeedback());
221
226
  dispatch(updateStatusLoading(false));
222
227
  return;
223
228
  });
@@ -236,7 +241,7 @@ function ResultComponent(props: Props) {
236
241
  useEffect(() => {
237
242
  document.title = 'Search results';
238
243
 
239
- if (requestImage || isEmpty(search.valueTextSearch.query)) return;
244
+ if (requestImage || isEmpty(searchQuery)) return;
240
245
  const preFilterValues = Object.keys(preFilter) as string[];
241
246
  const filter =
242
247
  preFilterValues.length > 0
@@ -246,15 +251,10 @@ function ResultComponent(props: Props) {
246
251
  : '';
247
252
 
248
253
  setFilterString(filter);
249
- }, [
250
- preFilter,
251
- requestImage,
252
- search.valueTextSearch.query,
253
- settings.alogoliaFilterField,
254
- ]);
254
+ }, [preFilter, requestImage, searchQuery, settings.alogoliaFilterField]);
255
255
 
256
256
  useEffect(() => {
257
- if (!requestImage) {
257
+ if (!requestImage || !isAlgoliaEnabled) {
258
258
  return;
259
259
  }
260
260
  dispatch(updateStatusLoading(true));
@@ -263,7 +263,6 @@ function ResultComponent(props: Props) {
263
263
  // setPreFilter(keyFilter);
264
264
  dispatch(updateResultChangePosition(res));
265
265
  });
266
- dispatch(showFeedback());
267
266
 
268
267
  return () => {};
269
268
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -302,13 +301,17 @@ function ResultComponent(props: Props) {
302
301
  const filteredRegions = useFilteredRegions(regions, imageSelection);
303
302
 
304
303
  const showPostFilter = useMemo(() => {
305
- return settings.postFilterOption && props.allSearchResults?.hits.length > 0;
304
+ return (
305
+ isPostFilterEnabled &&
306
+ props.allSearchResults?.hits.length > 0 &&
307
+ isAlgoliaEnabled
308
+ );
306
309
  // eslint-disable-next-line react-hooks/exhaustive-deps
307
- }, [settings.postFilterOption, props.allSearchResults?.hits]);
310
+ }, [isPostFilterEnabled, props.allSearchResults?.hits, isAlgoliaEnabled]);
308
311
 
309
312
  const showSidePanel = useMemo(() => {
310
- return requestImage || (settings.postFilterOption && showPostFilter);
311
- }, [showPostFilter, settings.postFilterOption, requestImage]);
313
+ return requestImage || (isPostFilterEnabled && showPostFilter);
314
+ }, [showPostFilter, isPostFilterEnabled, requestImage]);
312
315
 
313
316
  useEffect(() => {
314
317
  const handleScroll = () => {
@@ -345,11 +348,8 @@ function ResultComponent(props: Props) {
345
348
  />
346
349
  )}
347
350
 
348
- {filterString && (
349
- <Configure
350
- query={search.valueTextSearch.query}
351
- filters={filterString}
352
- ></Configure>
351
+ {filterString && isAlgoliaEnabled && (
352
+ <Configure query={searchQuery} filters={filterString}></Configure>
353
353
  )}
354
354
  <Box className="box-wrap-result-component">
355
355
  {!isMobile && (
@@ -357,133 +357,139 @@ function ResultComponent(props: Props) {
357
357
  <CustomSearchBox />
358
358
  </div>
359
359
  )}
360
- <Box className="box-result">
361
- <>
362
- {!isMobile && showSidePanel && (
363
- <SidePanel
360
+ <Box
361
+ className="box-result"
362
+ style={{
363
+ height: settings.showPoweredByNyris
364
+ ? 'calc(100vh - 177px)'
365
+ : 'calc(100vh - 148px)',
366
+ }}
367
+ >
368
+ {!isMobile && showSidePanel && (
369
+ <SidePanel
370
+ setImageSelection={setImageSelection}
371
+ allSearchResults={props.allSearchResults}
372
+ debouncedOnImageSelectionChange={
373
+ debouncedOnImageSelectionChange
374
+ }
375
+ filteredRegions={filteredRegions}
376
+ imageSelection={imageSelection}
377
+ showAdjustInfo={showAdjustInfo}
378
+ showAdjustInfoBasedOnConfidence={
379
+ showAdjustInfoBasedOnConfidence
380
+ }
381
+ showPostFilter={showPostFilter}
382
+ disjunctiveFacets={props.allSearchResults.disjunctiveFacets}
383
+ />
384
+ )}
385
+
386
+ <Box
387
+ className={`col-right ${
388
+ settings.preview && 'ml-auto mr-auto'
389
+ } ${isMobile && 'col-right-result-mobile'}`}
390
+ style={{
391
+ paddingTop: isMobile ? '8px' : '40px',
392
+ overflow: !isMobile ? 'auto' : '',
393
+ display: 'flex',
394
+ flexDirection: 'column',
395
+ }}
396
+ >
397
+ {!isMobile && (
398
+ <Box className="wrap-box-refinements">
399
+ <CurrentRefinements statusSwitchButton={true} />
400
+ </Box>
401
+ )}
402
+
403
+ {isMobile && settings.preview && requestImage && (
404
+ <ImagePreviewMobile
405
+ requestImage={requestImage}
406
+ imageSelection={imageSelection}
364
407
  setImageSelection={setImageSelection}
365
- allSearchResults={props.allSearchResults}
366
408
  debouncedOnImageSelectionChange={
367
409
  debouncedOnImageSelectionChange
368
410
  }
369
411
  filteredRegions={filteredRegions}
370
- imageSelection={imageSelection}
371
- showAdjustInfo={showAdjustInfo}
372
412
  showAdjustInfoBasedOnConfidence={
373
413
  showAdjustInfoBasedOnConfidence
374
414
  }
375
- showPostFilter={showPostFilter}
376
- disjunctiveFacets={props.allSearchResults.disjunctiveFacets}
415
+ showAdjustInfo={showAdjustInfo}
377
416
  />
378
417
  )}
379
418
 
380
419
  <Box
381
- className={`col-right ${
382
- settings.preview && 'ml-auto mr-auto'
383
- } ${isMobile && 'col-right-result-mobile'}`}
384
420
  style={{
385
- paddingTop: isMobile ? '8px' : '40px',
386
- overflow: !isMobile ? 'auto' : '',
387
421
  display: 'flex',
388
422
  flexDirection: 'column',
423
+ flexGrow: 1,
424
+ backgroundColor: '#FAFAFA',
389
425
  }}
390
426
  >
391
- {!isMobile && (
392
- <Box className="wrap-box-refinements">
393
- <CurrentRefinements statusSwitchButton={true} />
394
- </Box>
395
- )}
396
-
397
- {isMobile && settings.preview && requestImage && (
398
- <ImagePreviewMobile
399
- requestImage={requestImage}
400
- imageSelection={imageSelection}
401
- setImageSelection={setImageSelection}
402
- debouncedOnImageSelectionChange={
403
- debouncedOnImageSelectionChange
404
- }
405
- filteredRegions={filteredRegions}
406
- showAdjustInfoBasedOnConfidence={
407
- showAdjustInfoBasedOnConfidence
408
- }
409
- showAdjustInfo={showAdjustInfo}
410
- />
411
- )}
412
-
413
427
  <Box
414
- style={{
415
- display: 'flex',
416
- flexDirection: 'column',
417
- flexGrow: 1,
418
- backgroundColor: '#FAFAFA',
419
- }}
428
+ className={'box-item-result ml-auto mr-auto'}
429
+ style={{ height: '100%', paddingLeft: isMobile ? 0 : 16 }}
420
430
  >
431
+ <ProductList
432
+ getUrlToCanvasFile={getUrlToCanvasFile}
433
+ setLoading={false}
434
+ sendFeedBackAction={sendFeedBackAction}
435
+ moreInfoText={moreInfoText}
436
+ requestImage={requestImage}
437
+ searchQuery={searchQuery}
438
+ />
421
439
  <Box
422
- className={'box-item-result ml-auto mr-auto'}
423
- style={{ height: '100%', paddingLeft: isMobile ? 0 : 16 }}
440
+ className="pagination-result"
441
+ style={{
442
+ width: '100%',
443
+ margin: !isMobile ? '20px auto' : '',
444
+ marginBottom:
445
+ isMobile && !requestImage ? '64px' : '20px',
446
+ padding: '0 20%',
447
+ alignSelf: 'end',
448
+ }}
424
449
  >
425
- <ProductList
426
- getUrlToCanvasFile={getUrlToCanvasFile}
427
- setLoading={false}
428
- sendFeedBackAction={sendFeedBackAction}
429
- moreInfoText={moreInfoText}
430
- requestImage={requestImage}
431
- searchQuery={search.valueTextSearch.query}
432
- />
433
- <Box
434
- className="pagination-result"
435
- style={{
436
- width: '100%',
437
- margin: !isMobile ? '20px auto' : '',
438
- marginBottom:
439
- isMobile && !requestImage ? '64px' : '20px',
440
- padding: '0 20%',
441
- alignSelf: 'end',
442
- }}
443
- >
444
- {props.allSearchResults?.hits.length > 0 &&
445
- (requestImage || search.valueTextSearch.query) && (
446
- <Pagination
447
- showFirst={false}
448
- translations={{
449
- previous: (
450
- <ArrowLeftIcon style={{ color: '#161616' }} />
451
- ),
452
- next: (
453
- <ArrowRightIcon
454
- style={{ color: '#161616' }}
455
- />
456
- ),
457
- }}
458
- />
459
- )}
460
- </Box>
461
-
462
- {requestImage &&
463
- !loadingSearchAlgolia &&
464
- !props.isSearchStalled &&
465
- settings.rfq && (
466
- <RfqBanner
467
- rfqRef={rfqRef}
468
- rfqStatus={rfqStatus}
469
- setIsRfqModalOpen={setIsRfqModalOpen}
470
- requestImage={requestImage}
471
- selectedRegion={selectedRegion}
472
- />
473
- )}
474
- {!loadingSearchAlgolia &&
475
- !props.isSearchStalled &&
476
- settings.inquiry &&
477
- (search.valueTextSearch.query || requestImage) && (
478
- <InquiryBanner
479
- requestImage={requestImage}
480
- selectedRegion={selectedRegion}
481
- query={search.valueTextSearch.query}
450
+ {props.allSearchResults?.hits.length > 0 &&
451
+ (requestImage || searchQuery) && (
452
+ <Pagination
453
+ showFirst={false}
454
+ translations={{
455
+ previous: (
456
+ <ArrowLeftIcon style={{ color: '#161616' }} />
457
+ ),
458
+ next: (
459
+ <ArrowRightIcon style={{ color: '#161616' }} />
460
+ ),
461
+ }}
482
462
  />
483
463
  )}
484
464
  </Box>
465
+
466
+ {requestImage &&
467
+ !loadingSearchAlgolia &&
468
+ !props.isSearchStalled &&
469
+ settings.rfq && (
470
+ <RfqBanner
471
+ rfqRef={rfqRef}
472
+ rfqStatus={rfqStatus}
473
+ setIsRfqModalOpen={setIsRfqModalOpen}
474
+ requestImage={requestImage}
475
+ selectedRegion={selectedRegion}
476
+ />
477
+ )}
478
+ {!loadingSearchAlgolia &&
479
+ !props.isSearchStalled &&
480
+ settings.inquiry &&
481
+ (searchQuery || requestImage) && (
482
+ <InquiryBanner
483
+ requestImage={requestImage}
484
+ selectedRegion={selectedRegion}
485
+ query={searchQuery}
486
+ />
487
+ )}
485
488
  </Box>
486
- {!isMobile && props.allSearchResults?.hits?.length > 0 && (
489
+ </Box>
490
+ {!isMobile &&
491
+ props.allSearchResults?.hits?.length > 0 &&
492
+ isAlgoliaEnabled && (
487
493
  <Box>
488
494
  <Box className="box-notify">
489
495
  <FooterResult search={search}>
@@ -504,8 +510,25 @@ function ResultComponent(props: Props) {
504
510
  </Box>
505
511
  </Box>
506
512
  )}
507
- </Box>
508
- </>
513
+ {isMobile && settings.showPoweredByNyris && (
514
+ <div
515
+ style={{
516
+ backgroundColor: '#FAFAFA',
517
+ display: 'flex',
518
+ justifyContent: 'center',
519
+ paddingBottom: '46px',
520
+ }}
521
+ >
522
+ <PoweredByNyrisImage
523
+ style={{ cursor: 'pointer' }}
524
+ onClick={() => {
525
+ window.open('https://www.nyris.io', '_blank');
526
+ }}
527
+ color="#AAABB5"
528
+ />
529
+ </div>
530
+ )}
531
+ </Box>
509
532
  </Box>
510
533
  </Box>
511
534
  </>
@@ -77,7 +77,7 @@ export const sendFeedbackByApi = async (
77
77
  try {
78
78
  await api.sendFeedback(sessionId, requestId, payload).then(res => {});
79
79
  } catch (error) {
80
- console.log('error sendFeedbackByApi321', error);
80
+ console.log('error sendFeedbackByApi', error);
81
81
  }
82
82
  }
83
83
  };
@@ -1,4 +1,5 @@
1
1
  import NyrisAPI, {
2
+ ImageSearchOptions,
2
3
  NyrisAPISettings,
3
4
  RectCoords,
4
5
  Region,
@@ -48,24 +49,26 @@ export const findRegions = async (
48
49
  };
49
50
  };
50
51
 
51
- export const findByImage = ({
52
+ export const find = ({
52
53
  image,
53
54
  settings,
54
55
  region,
55
56
  filters,
57
+ text,
56
58
  }: {
57
- image: HTMLCanvasElement;
59
+ image?: HTMLCanvasElement;
58
60
  settings: NyrisAPISettings;
59
61
  region?: RectCoords;
60
62
  filters?: Filter[];
63
+ text?: string;
61
64
  }) => {
62
65
  const nyrisApi = new NyrisAPI(settings);
63
- let options = {};
66
+ let options: ImageSearchOptions = text ? { text } : {};
64
67
 
65
68
  if (region) {
66
- options = { cropRect: region };
69
+ options = { ...options, cropRect: region };
67
70
  }
68
- return nyrisApi.findByImage(image, options, filters);
71
+ return nyrisApi.find(options, image, filters);
69
72
  };
70
73
 
71
74
  export const findByCadFile = (file: File, settings: NyrisAPISettings) => {
package/src/types.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { NyrisAPISettings } from '@nyris/nyris-api';
2
- import { NyrisAppState } from 'Store/nyris/types';
3
2
  import { SearchState } from 'Store/search/types';
4
3
 
5
4
  export interface AlgoliaSettings {
6
5
  apiKey: string;
7
6
  appId: string;
7
+ enabled?: boolean;
8
8
  indexName: string;
9
9
  }
10
10
 
@@ -12,6 +12,7 @@ export interface Auth0Settings {
12
12
  clientId?: string;
13
13
  domain?: string;
14
14
  enabled?: boolean;
15
+ supportEmail?: string;
15
16
  }
16
17
 
17
18
  export interface Field {
@@ -29,37 +30,38 @@ export interface Field {
29
30
  }
30
31
 
31
32
  export interface AppSettings extends NyrisAPISettings {
32
- exampleImages?: string[]; // deprecated
33
- preview: boolean;
34
- cadSearch?: boolean;
35
- noImageUrl?: string;
36
- regions: boolean;
37
- instantRedirectPatterns: string[];
38
- theme: SearchSuiteSettings;
39
- algolia?: AlgoliaSettings;
33
+ algolia: AlgoliaSettings;
40
34
  alogoliaFilterField?: string;
41
35
  appTitle?: string;
42
36
  auth0: Auth0Settings;
43
37
  brandName?: string;
44
38
  cadenas3dWebView?: boolean;
45
- catalog?: string;
46
39
  cadenasAPIKey?: string;
40
+ cadSearch?: boolean;
41
+ catalog?: string;
42
+ exampleImages?: string[]; // deprecated
47
43
  field: Field;
48
44
  headerText?: string;
49
45
  inquiry?: boolean;
46
+ instantRedirectPatterns: string[];
50
47
  itemIdLabel?: string;
51
48
  language?: string;
49
+ noImageUrl?: string;
52
50
  postFilterOption?: boolean;
53
51
  preFilterOption?: boolean;
54
52
  preFilterTitle?: string;
53
+ preview: boolean;
55
54
  productCtaText?: string;
56
55
  refinements?: any;
56
+ regions: boolean;
57
57
  rfq?: boolean;
58
58
  shareOption?: boolean;
59
59
  showFeedbackAndShare?: boolean;
60
60
  showGroup?: boolean;
61
61
  showMoreInfo?: boolean; // deprecated
62
+ showPoweredByNyris?: boolean;
62
63
  templateId?: string;
64
+ theme: SearchSuiteSettings;
63
65
  visualSearchFilterKey?: string;
64
66
  warehouseVariant?: boolean;
65
67
  }
@@ -67,8 +69,8 @@ export interface AppSettings extends NyrisAPISettings {
67
69
  export interface SearchSuiteSettings {
68
70
  appBarLogoUrl?: string;
69
71
  headerColor?: string;
70
- logoWidth?: string;
71
72
  logoHeight?: string;
73
+ logoWidth?: string;
72
74
  mobileFooterImageColor?: string;
73
75
  primaryColor?: string;
74
76
  secondaryColor?: string;
@@ -77,7 +79,6 @@ export interface SearchSuiteSettings {
77
79
  export type AppState = {
78
80
  search: SearchState;
79
81
  settings: AppSettings;
80
- nyrisDesign: NyrisAppState;
81
82
  };
82
83
 
83
84
  export interface CanvasWithId {