import * as React from "react"; import { ClassNames } from "@emotion/react"; import { Box, useColorModeValue, useDisclosure } from "@chakra-ui/react"; import { EditIcon } from "@chakra-ui/icons"; import AppearanceLayerSupportModal from "./AppearanceLayerSupportModal"; import { OutfitLayers } from "../../components/OutfitPreview"; function ItemSupportAppearanceLayer({ item, itemLayer, biologyLayers, outfitState, }) { const { isOpen, onOpen, onClose } = useDisclosure(); const iconButtonBgColor = useColorModeValue("green.100", "green.300"); const iconButtonColor = useColorModeValue("green.800", "gray.900"); return ( <ClassNames> {({ css }) => ( <Box as="button" width="150px" textAlign="center" fontSize="xs" onClick={onOpen} > <Box width="150px" height="150px" marginBottom="1" boxShadow="md" borderRadius="md" position="relative" > <OutfitLayers visibleLayers={[...biologyLayers, itemLayer]} /> <Box className={css` opacity: 0; transition: opacity 0.2s; button:hover &, button:focus & { opacity: 1; } /* On touch devices, always show the icon, to clarify that this is * an interactable object! (Whereas I expect other devices to * discover things by exploratory hover or focus!) */ @media (hover: none) { opacity: 1; } `} background={iconButtonBgColor} color={iconButtonColor} borderRadius="full" boxShadow="sm" position="absolute" bottom="2" right="2" padding="2" alignItems="center" justifyContent="center" width="32px" height="32px" > <EditIcon boxSize="16px" position="relative" top="-2px" right="-1px" /> </Box> </Box> <Box> <Box as="span" fontWeight="700"> {itemLayer.zone.label} </Box>{" "} <Box as="span" fontWeight="600"> (Zone {itemLayer.zone.id}) </Box> </Box> <Box>Neopets ID: {itemLayer.remoteId}</Box> <Box>DTI ID: {itemLayer.id}</Box> <AppearanceLayerSupportModal item={item} layer={itemLayer} outfitState={outfitState} isOpen={isOpen} onClose={onClose} /> </Box> )} </ClassNames> ); } export default ItemSupportAppearanceLayer;