11import type { Metadata } from 'next' ;
22import Image from 'next/image' ;
3+ import iphone1 from '@/images/screenshots/ios/iphone1-library.jpg' ;
4+ import iphone2 from '@/images/screenshots/ios/iphone2-search.jpg' ;
5+ import iphone3 from '@/images/screenshots/ios/iphone3-emu.png' ;
6+ import ipad1 from '@/images/screenshots/ipad/ipad1-library.jpg' ;
7+ import ipad2 from '@/images/screenshots/ipad/ipad2-search.jpg' ;
38
49export const metadata : Metadata = {
510 title : { absolute : 'iCube – GameCube & Wii Emulator for iOS & tvOS' } ,
611 description : 'Download iCube and play classic Nintendo GameCube and Wii games on your iPhone, iPad, and Apple TV. Fast, accurate emulation based on Dolphin.' ,
712 alternates : { canonical : 'https://icube-app.com/' } ,
813} ;
9- import iphone1 from '@/images/screenshots/ios/iphone1-library.jpg' ;
10- import iphone2 from '@/images/screenshots/ios/iphone2-search.jpg' ;
11- import iphone3 from '@/images/screenshots/ios/iphone3-emu.png' ;
12- import ipad1 from '@/images/screenshots/ipad/ipad1-library.jpg' ;
13- import ipad2 from '@/images/screenshots/ipad/ipad2-search.jpg' ;
1414import DownloadSection from '@/components/DownloadSection' ;
1515import SocialButton , { DiscordIcon , XIcon , BmcIcon , PatreonIcon } from '@/components/SocialButton' ;
1616import Features from '@/components/Features' ;
@@ -99,12 +99,16 @@ export default function Home() {
9999 iPhone
100100 </ h3 >
101101 < div className = "flex flex-wrap justify-center gap-6" >
102- { [ iphone1 , iphone2 , iphone3 ] . map ( ( img , idx ) => (
102+ { ( [
103+ [ iphone1 , 'iCube game library on iPhone' ] ,
104+ [ iphone2 , 'iCube game search on iPhone' ] ,
105+ [ iphone3 , 'iCube running a GameCube game on iPhone' ] ,
106+ ] as const ) . map ( ( [ img , alt ] , idx ) => (
103107 < div key = { `iphone-${ idx } ` } className = "bg-gray-200 dark:bg-gray-700 rounded-lg p-4 shadow-lg" >
104108 < div className = "rounded-lg overflow-hidden w-64 h-96" >
105109 < Image
106110 src = { img }
107- alt = { `iPhone screenshot ${ idx + 1 } ` }
111+ alt = { alt }
108112 className = "h-full w-full object-cover"
109113 sizes = "(max-width: 768px) 256px, 256px"
110114 priority = { idx === 0 }
@@ -121,12 +125,15 @@ export default function Home() {
121125 iPad
122126 </ h3 >
123127 < div className = "flex flex-wrap justify-center gap-6" >
124- { [ ipad1 , ipad2 ] . map ( ( img , idx ) => (
128+ { ( [
129+ [ ipad1 , 'iCube game library on iPad' ] ,
130+ [ ipad2 , 'iCube game search on iPad' ] ,
131+ ] as const ) . map ( ( [ img , alt ] , idx ) => (
125132 < div key = { `ipad-${ idx } ` } className = "bg-gray-200 dark:bg-gray-700 rounded-lg p-4 shadow-lg" >
126133 < div className = "rounded-lg overflow-hidden w-80 h-60" >
127134 < Image
128135 src = { img }
129- alt = { `iPad screenshot ${ idx + 1 } ` }
136+ alt = { alt }
130137 className = "h-full w-full object-cover"
131138 sizes = "(max-width: 768px) 320px, 320px"
132139 />
@@ -142,12 +149,16 @@ export default function Home() {
142149 Apple TV
143150 </ h3 >
144151 < div className = "flex flex-wrap justify-center gap-6" >
145- { [ tvos1 , tvos2 , tvos3 ] . map ( ( img , idx ) => (
152+ { ( [
153+ [ tvos1 , 'iCube pause menu on Apple TV' ] ,
154+ [ tvos2 , 'iCube settings on Apple TV' ] ,
155+ [ tvos3 , 'iCube game sources on Apple TV' ] ,
156+ ] as const ) . map ( ( [ img , alt ] , idx ) => (
146157 < div key = { `appletv-${ idx } ` } className = "bg-gray-200 dark:bg-gray-700 rounded-lg p-4 shadow-lg" >
147158 < div className = "rounded-lg overflow-hidden w-[384px] aspect-video" >
148159 < Image
149160 src = { img }
150- alt = { `Apple TV screenshot ${ idx + 1 } ` }
161+ alt = { alt }
151162 className = "h-full w-full object-cover"
152163 sizes = "(max-width: 768px) 384px, 384px"
153164 />
0 commit comments