[WIP] Fix app images in Next.js
Yeah, cool, now we use the `next/image` tag, and our images are showing up again! There's still lint errors for using bare img tags in some places, but I'm not sure I really care…
|
@ -13,11 +13,10 @@ import { HamburgerIcon } from "@chakra-ui/icons";
|
|||
import { Link, useLocation } from "react-router-dom";
|
||||
import { useAuth0 } from "@auth0/auth0-react";
|
||||
import { ChevronLeftIcon } from "@chakra-ui/icons";
|
||||
import Image from "next/image";
|
||||
|
||||
import useCurrentUser from "./components/useCurrentUser";
|
||||
|
||||
import HomeLinkIcon from "./images/home-link-icon.png";
|
||||
import HomeLinkIcon2x from "./images/home-link-icon@2x.png";
|
||||
|
||||
function GlobalHeader() {
|
||||
return (
|
||||
|
@ -69,16 +68,15 @@ function HomeLink(props) {
|
|||
>
|
||||
<ChevronLeftIcon />
|
||||
</Box>
|
||||
<Box
|
||||
as="img"
|
||||
<Box height="32px" borderRadius="lg" boxShadow="md" overflow="hidden">
|
||||
<Image
|
||||
src={HomeLinkIcon}
|
||||
srcSet={`${HomeLinkIcon} 1x, ${HomeLinkIcon2x} 2x`}
|
||||
alt=""
|
||||
height="2em"
|
||||
width="2em"
|
||||
borderRadius="lg"
|
||||
boxShadow="md"
|
||||
width={32}
|
||||
height={32}
|
||||
layout="fixed"
|
||||
/>
|
||||
</Box>
|
||||
<Box
|
||||
height="2em"
|
||||
width="2em"
|
||||
|
|
|
@ -26,6 +26,7 @@ import {
|
|||
import { ArrowForwardIcon, SearchIcon } from "@chakra-ui/icons";
|
||||
import { Link, useHistory, useLocation } from "react-router-dom";
|
||||
import { useLazyQuery, useQuery } from "@apollo/client";
|
||||
import Image from "next/image";
|
||||
|
||||
import {
|
||||
Delay,
|
||||
|
@ -45,9 +46,7 @@ import SquareItemCard, {
|
|||
import WIPCallout from "./components/WIPCallout";
|
||||
|
||||
import HomepageSplashImg from "./images/homepage-splash.png";
|
||||
import HomepageSplashImg2x from "./images/homepage-splash@2x.png";
|
||||
import FeedbackXweeImg from "./images/feedback-xwee.png";
|
||||
import FeedbackXweeImg2x from "./images/feedback-xwee@2x.png";
|
||||
|
||||
function HomePage() {
|
||||
usePageTitle(null);
|
||||
|
@ -71,11 +70,12 @@ function HomePage() {
|
|||
wornItemIds={[]}
|
||||
loadingDelayMs={1500}
|
||||
placeholder={
|
||||
<Box
|
||||
as="img"
|
||||
<Image
|
||||
src={HomepageSplashImg}
|
||||
srcSet={`${HomepageSplashImg} 1x, ${HomepageSplashImg2x} 2x`}
|
||||
width={200}
|
||||
height={200}
|
||||
alt=""
|
||||
layout="fixed"
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
@ -621,33 +621,19 @@ function FeedbackFormSection() {
|
|||
flex="0 0 auto"
|
||||
marginTop="4"
|
||||
>
|
||||
<Box
|
||||
as="img"
|
||||
<Image
|
||||
src={FeedbackXweeImg}
|
||||
srcSet={`${FeedbackXweeImg} 1x, ${FeedbackXweeImg2x} 2x`}
|
||||
height="90px"
|
||||
width="90px"
|
||||
alt="Smiling green Xweetok"
|
||||
width={90}
|
||||
height={90}
|
||||
layout="fixed"
|
||||
opacity="0.9"
|
||||
alt=""
|
||||
/>
|
||||
</Box>
|
||||
<FeedbackFormPitch />
|
||||
</Flex>
|
||||
</FeedbackFormContainer>
|
||||
<FeedbackFormContainer
|
||||
borderColor={formBorderColor}
|
||||
image={
|
||||
<Box
|
||||
as="img"
|
||||
src={FeedbackXweeImg}
|
||||
srcSet={`${FeedbackXweeImg} 1x, ${FeedbackXweeImg2x} 2x`}
|
||||
height="90px"
|
||||
width="90px"
|
||||
opacity="0.9"
|
||||
alt=""
|
||||
/>
|
||||
}
|
||||
>
|
||||
<FeedbackFormContainer borderColor={formBorderColor}>
|
||||
<FeedbackForm />
|
||||
</FeedbackFormContainer>
|
||||
</VStack>
|
||||
|
|
|
@ -17,6 +17,7 @@ import {
|
|||
useToast,
|
||||
} from "@chakra-ui/react";
|
||||
import { loadable } from "../util";
|
||||
import Image from "next/image";
|
||||
|
||||
import { petAppearanceFragment } from "../components/useOutfitAppearance";
|
||||
import getVisibleLayers from "../../shared/getVisibleLayers";
|
||||
|
@ -493,7 +494,7 @@ function PoseOption({
|
|||
</Box>
|
||||
) : (
|
||||
<Flex align="center" justify="center" width="100%" height="100%">
|
||||
<EmojiImage src={twemojiQuestion} boxSize="24px" />
|
||||
<EmojiImage src={twemojiQuestion} boxSize={24} />
|
||||
</Flex>
|
||||
)}
|
||||
</Box>
|
||||
|
@ -512,8 +513,16 @@ function PoseOption({
|
|||
);
|
||||
}
|
||||
|
||||
function EmojiImage({ src, alt, boxSize = "16px" }) {
|
||||
return <img src={src} alt={alt} width={boxSize} height={boxSize} />;
|
||||
function EmojiImage({ src, alt, boxSize = 16 }) {
|
||||
return (
|
||||
<Image
|
||||
src={src}
|
||||
alt={alt}
|
||||
width={boxSize}
|
||||
height={boxSize}
|
||||
layout="fixed"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
function usePoses(speciesId, colorId, selectedPose) {
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
import React from "react";
|
||||
import { Box, Flex, Tooltip } from "@chakra-ui/react";
|
||||
import Image from "next/image";
|
||||
|
||||
import { useCommonStyles } from "../util";
|
||||
|
||||
import WIPXweeImg from "../images/wip-xwee.png";
|
||||
import WIPXweeImg2x from "../images/wip-xwee@2x.png";
|
||||
|
||||
function WIPCallout({
|
||||
children,
|
||||
|
@ -30,14 +28,18 @@ function WIPCallout({
|
|||
fontSize={size === "sm" ? "xs" : "sm"}
|
||||
>
|
||||
<Box
|
||||
as="img"
|
||||
src={WIPXweeImg}
|
||||
srcSet={`${WIPXweeImg} 1x, ${WIPXweeImg2x} 2x`}
|
||||
alt=""
|
||||
width={size === "sm" ? "24px" : "36px"}
|
||||
height={size === "sm" ? "24px" : "36px"}
|
||||
marginRight="2"
|
||||
>
|
||||
<Image
|
||||
src={WIPXweeImg}
|
||||
alt="Curious blue Xweetok, tilted head"
|
||||
width={size === "sm" ? 24 : 36}
|
||||
height={size === "sm" ? 24 : 36}
|
||||
layout="fixed"
|
||||
/>
|
||||
</Box>
|
||||
{children || (
|
||||
<>
|
||||
<Box display={{ base: "none", md: "block" }}>
|
||||
|
|
Before Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 4.8 KiB |
BIN
src/app/images/error-grundo.png
Executable file → Normal file
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 8.3 KiB |
|
@ -9,10 +9,10 @@ import {
|
|||
} from "@chakra-ui/react";
|
||||
import loadableLibrary from "@loadable/component";
|
||||
import * as Sentry from "@sentry/react";
|
||||
import { WarningIcon } from "@chakra-ui/icons";
|
||||
import NextImage from "next/image";
|
||||
|
||||
import ErrorGrundoImg from "./images/error-grundo.png";
|
||||
import ErrorGrundoImg2x from "./images/error-grundo@2x.png";
|
||||
import { WarningIcon } from "@chakra-ui/icons";
|
||||
|
||||
/**
|
||||
* Delay hides its content at first, then shows it after the given delay.
|
||||
|
@ -451,16 +451,21 @@ export function MajorErrorMessage({ error = null, variant = "unexpected" }) {
|
|||
>
|
||||
<Box gridArea="icon" marginTop="2">
|
||||
<Box
|
||||
as="img"
|
||||
src={ErrorGrundoImg}
|
||||
srcSet={`${ErrorGrundoImg} 1x, ${ErrorGrundoImg2x} 2x`}
|
||||
borderRadius="full"
|
||||
boxShadow="md"
|
||||
overflow="hidden"
|
||||
width="100px"
|
||||
height="100px"
|
||||
alt=""
|
||||
>
|
||||
<NextImage
|
||||
src={ErrorGrundoImg}
|
||||
alt="Distressed Grundo programmer"
|
||||
width={100}
|
||||
height={100}
|
||||
layout="fixed"
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box gridArea="title" fontSize="lg" marginBottom="1">
|
||||
{variant === "unexpected" && <>Ah dang, I broke it 😖</>}
|
||||
{variant === "network" && <>Oops, it didn't work, sorry 😖</>}
|
||||
|
|