diff --git a/src/routes/(app)/[username]/collection/characters/+page.svelte b/src/routes/(app)/[username]/collection/characters/+page.svelte index 2cf075fa..c105bd00 100644 --- a/src/routes/(app)/[username]/collection/characters/+page.svelte +++ b/src/routes/(app)/[username]/collection/characters/+page.svelte @@ -7,12 +7,12 @@ type CollectionFilterState } from '$lib/components/collection/CollectionFilters.svelte' import CollectionCharacterPane from '$lib/components/collection/CollectionCharacterPane.svelte' + import CollectionCharacterCard from '$lib/components/collection/CollectionCharacterCard.svelte' + import CollectionCharacterRow from '$lib/components/collection/CollectionCharacterRow.svelte' import Icon from '$lib/components/Icon.svelte' import { IsInViewport } from 'runed' - import { getCharacterImageWithPose } from '$lib/utils/images' - import UncapIndicator from '$lib/components/uncap/UncapIndicator.svelte' import { sidebar } from '$lib/stores/sidebar.svelte' - import perpetuityFilled from '$src/assets/icons/perpetuity/filled.svg' + import { viewMode, type ViewMode } from '$lib/stores/viewMode.svelte' const { data }: { data: PageData } = $props() @@ -74,6 +74,9 @@ const isEmpty = $derived(!isLoading && allCharacters.length === 0) const showSentinel = $derived(collectionQuery.hasNextPage && !collectionQuery.isFetchingNextPage) + // Current view mode from store + const currentViewMode = $derived(viewMode.collectionView) + function handleFiltersChange(filters: CollectionFilterState) { elementFilters = filters.element rarityFilters = filters.rarity @@ -82,20 +85,8 @@ genderFilters = filters.gender } - function getImageUrl(character: CollectionCharacter): string { - return getCharacterImageWithPose( - character.character?.granblueId, - 'grid', - character.uncapLevel, - character.transcendenceStep - ) - } - - function displayName(character: CollectionCharacter): string { - const name = character.character?.name - if (!name) return '—' - if (typeof name === 'string') return name - return name.en || name.ja || '—' + function handleViewModeChange(mode: ViewMode) { + viewMode.setCollectionView(mode) } function openCharacterDetails(character: CollectionCharacter) { @@ -132,6 +123,9 @@ proficiency: true, gender: true }} + showViewToggle={true} + viewMode={currentViewMode} + onViewModeChange={handleViewModeChange} /> @@ -153,44 +147,27 @@
This collection is empty or private
{/if} - {:else} + {:else if currentViewMode === 'grid'}