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>