add layout animation for artist album cards

This commit is contained in:
jeffvli
2025-12-27 02:25:13 -08:00
parent 928b0b6f4d
commit a1114235d6
@@ -1,4 +1,5 @@
import { useQuery, useQueryClient, useSuspenseQuery } from '@tanstack/react-query'; import { useQuery, useQueryClient, useSuspenseQuery } from '@tanstack/react-query';
import { LayoutGroup, motion } from 'motion/react';
import { useCallback, useMemo, useRef, useState } from 'react'; import { useCallback, useMemo, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { createSearchParams, generatePath, Link, useParams } from 'react-router'; import { createSearchParams, generatePath, Link, useParams } from 'react-router';
@@ -796,6 +797,15 @@ const AlbumSection = ({ albums, controls, cq, rows, title }: AlbumSectionProps)
<Grid columns={24} gutter="md" type="container"> <Grid columns={24} gutter="md" type="container">
{displayedAlbums.map((album) => ( {displayedAlbums.map((album) => (
<Grid.Col key={album.id} span={span}> <Grid.Col key={album.id} span={span}>
<motion.div
layout
layoutId={album.id}
transition={{
duration: 0.5,
ease: 'easeInOut',
layout: { duration: 0.5, ease: 'easeInOut' },
}}
>
<MemoizedItemCard <MemoizedItemCard
controls={controls} controls={controls}
data={album} data={album}
@@ -805,6 +815,7 @@ const AlbumSection = ({ albums, controls, cq, rows, title }: AlbumSectionProps)
type="poster" type="poster"
withControls withControls
/> />
</motion.div>
</Grid.Col> </Grid.Col>
))} ))}
</Grid> </Grid>
@@ -1017,8 +1028,9 @@ const ArtistAlbums = () => {
/> />
</Group> </Group>
<div className={styles.albumSectionContainer} ref={cq.ref}> <div className={styles.albumSectionContainer} ref={cq.ref}>
{cq.isCalculated && {cq.isCalculated && (
releaseTypeEntries.map(({ albums, displayName, releaseType }) => ( <LayoutGroup>
{releaseTypeEntries.map(({ albums, displayName, releaseType }) => (
<AlbumSection <AlbumSection
albums={albums} albums={albums}
controls={controls} controls={controls}
@@ -1028,6 +1040,8 @@ const ArtistAlbums = () => {
title={displayName} title={displayName}
/> />
))} ))}
</LayoutGroup>
)}
</div> </div>
</Stack> </Stack>
); );