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