11import type { Metadata , Route } from "next" ;
22import Image from "next/image" ;
33import Link from "next/link" ;
4+ import { ViewTransition } from "react" ;
45import { MdArrowOutward } from "react-icons/md" ;
56import { Header } from "@/components/base/Header" ;
67import { CallToAction } from "@/components/interactive/CallToAction" ;
@@ -22,36 +23,38 @@ export default function ArtPage() {
2223 </ Header >
2324
2425 { /* Ref sheet card */ }
25- < CallToAction
26- picture = { refSheet . images [ 0 ] ? { src : refSheet . images [ 0 ] } : undefined }
27- href = { `/art/${ refSheetArtist . slug } /${ refSheet . slug } ` as Route }
28- picMaxWidth = "80vw"
29- >
30- < div className = "flex min-h-[400px] flex-col justify-end gap-3 p-6 md:p-10" >
31- { /* Artist name */ }
32- < div className = "flex flex-row items-center gap-2" >
33- { refSheetArtist . avatar && (
34- < Image
35- src = { refSheetArtist . avatar }
36- alt = { refSheetArtist . name }
37- width = { 24 }
38- height = { 24 }
39- className = "h-6 w-6 rounded-md"
40- />
41- ) }
42- < span className = "opacity-75" > By { refSheetArtist . name } </ span >
43- </ div >
26+ < ViewTransition name = { `${ refSheetArtist . slug } -${ refSheet . slug } -img-0` } >
27+ < CallToAction
28+ picture = { refSheet . images [ 0 ] ? { src : refSheet . images [ 0 ] } : undefined }
29+ href = { `/art/${ refSheetArtist . slug } /${ refSheet . slug } ` as Route }
30+ picMaxWidth = "80vw"
31+ >
32+ < div className = "flex min-h-[400px] flex-col justify-end gap-3 p-6 md:p-10" >
33+ { /* Artist name */ }
34+ < div className = "flex flex-row items-center gap-2" >
35+ { refSheetArtist . avatar && (
36+ < Image
37+ src = { refSheetArtist . avatar }
38+ alt = { refSheetArtist . name }
39+ width = { 24 }
40+ height = { 24 }
41+ className = "size-6 rounded-md"
42+ />
43+ ) }
44+ < span className = "opacity-75" > By { refSheetArtist . name } </ span >
45+ </ div >
4446
45- { /* Commission Name */ }
46- < div className = "flex flex-row items-center gap-4" >
47- < h1 className = "font-bold text-2xl" > Reference Sheet</ h1 >
48- < MdArrowOutward className = "size-6" />
49- </ div >
47+ { /* Commission Name */ }
48+ < div className = "flex flex-row items-center gap-4" >
49+ < h1 className = "font-bold text-2xl" > Reference Sheet</ h1 >
50+ < MdArrowOutward className = "size-6" />
51+ </ div >
5052
51- { /* Description */ }
52- < span className = "opacity-50" > { refSheet . description } </ span >
53- </ div >
54- </ CallToAction >
53+ { /* Description */ }
54+ < span className = "opacity-50" > { refSheet . description } </ span >
55+ </ div >
56+ </ CallToAction >
57+ </ ViewTransition >
5558
5659 < div className = "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3" >
5760 { allArtists . map ( ( artist ) =>
@@ -63,11 +66,13 @@ export default function ArtPage() {
6366 >
6467 { /* Image */ }
6568 { commission . images [ 0 ] && (
66- < Image
67- src = { commission . images [ 0 ] }
68- alt = { commission . title }
69- className = "absolute inset-0 z-0 size-full object-cover object-top"
70- />
69+ < ViewTransition name = { `${ artist . slug } -${ commission . slug } -img-0` } >
70+ < Image
71+ src = { commission . images [ 0 ] }
72+ alt = { commission . title }
73+ className = "absolute inset-0 z-0 size-full object-cover object-top"
74+ />
75+ </ ViewTransition >
7176 ) }
7277
7378 { /* Gradient overlay */ }
0 commit comments