/ src / components / pages / SearchLandingPage.svelte
SearchLandingPage.svelte
 1  <script lang="ts">
 2      import type { SearchLandingPage } from '@jet-app/app-store/api/models';
 3      import type { WebRenderablePage } from '@jet-app/app-store/api/models/web-renderable-page';
 4      import type { WebSearchFlowAction } from '@jet-app/app-store/common/search/web-search-action';
 5      import { unwrapOptional as unwrap } from '@jet/environment/types/optional';
 6  
 7      type SearchPage = SearchLandingPage;
 8  
 9      import DefaultPage from './DefaultPage.svelte';
10      import ShelfWrapper from '~/components/Shelf/Wrapper.svelte';
11      import SearchInput from '~/components/navigation/SearchInput.svelte';
12      import { getI18n } from '~/stores/i18n';
13  
14      export let page: SearchPage;
15  
16      const i18n = getI18n();
17  
18      $: webNavigation = unwrap((page as WebRenderablePage).webNavigation);
19      $: searchAction = webNavigation.searchAction as WebSearchFlowAction;
20      $: hasShelves = !!page.shelves.filter(({ items }) => items?.length).length;
21  
22      $: pageWithoutEmptyShelves = {
23          ...page,
24          shelves: hasShelves ? page.shelves : [],
25          title: $i18n.t('ASE.Web.AppStore.Meta.SearchLanding.Title'),
26      };
27  </script>
28  
29  <DefaultPage page={pageWithoutEmptyShelves}>
30      <ShelfWrapper slot="before-shelves" centered>
31          <SearchInput {searchAction} big />
32      </ShelfWrapper>
33  </DefaultPage>