@@ -10,6 +10,15 @@ import { normalizeSearchParam } from '#shared/utils/url'
1010const route = useRoute ()
1111const router = useRouter ()
1212
13+ const { selectedPackages } = usePackageSelection ()
14+ const selectionView = useRouteQuery <string >(' selection-view' , ' ' , { mode: ' push' })
15+
16+ function toggleSelection() {
17+ selectionView .value = selectionView .value === ' true' ? ' ' : ' true'
18+ }
19+
20+ const isSelectioView = computed <boolean >(() => selectionView .value === ' true' )
21+
1322// Preferences (persisted to localStorage)
1423const {
1524 viewMode,
@@ -533,7 +542,8 @@ defineOgImageComponent('Default', {
533542 </script >
534543
535544<template >
536- <PackageActionBar />
545+ <PackageActionBar :hide =" isSelectioView" />
546+
537547 <main class =" flex-1 py-8" :class =" { 'overflow-x-hidden': viewMode !== 'table' }" >
538548 <div class =" container-sm" >
539549 <div class =" flex items-center justify-between gap-4 mb-4" >
@@ -543,7 +553,12 @@ defineOgImageComponent('Default', {
543553 <SearchProviderToggle />
544554 </div >
545555
546- <section v-if =" query" >
556+ <PackageSelectionView
557+ :view-mode =" viewMode"
558+ v-if =" isSelectioView && selectedPackages.length"
559+ />
560+
561+ <section v-else-if =" query" >
547562 <!-- Initial loading (only after user interaction, not during view transition) -->
548563 <LoadingSpinner v-if =" showSearching" :text =" $t('search.searching')" />
549564
@@ -606,6 +621,7 @@ defineOgImageComponent('Default', {
606621 :disabled-sort-keys =" disabledSortKeys"
607622 search-context
608623 @toggle-column =" toggleColumn"
624+ @toggle-selection =" toggleSelection"
609625 @reset-columns =" resetColumns"
610626 @clear-filter =" handleClearFilter"
611627 @clear-all-filters =" clearAllFilters"
0 commit comments