import {Dispatch, SetStateAction, useState} from 'react'; import {Manager, Reference} from 'react-popper'; import styled from '@emotion/styled'; import space from 'sentry/styles/space'; import IconPopper from './popper'; import IconSample from './sample'; import {ExtendedIconData, SelectedIcon} from './searchPanel'; type Props = { icon: ExtendedIconData; selectedIcon: SelectedIcon; setSelectedIcon: Dispatch>; groupId: string; }; const IconInfoBox = ({icon, selectedIcon, setSelectedIcon, groupId}: Props) => { const isSelected = selectedIcon.group === groupId && selectedIcon.icon === icon.id; const [boxRef, setBoxRef] = useState(null); return ( {({ref: popperRef}) => ( { setBoxRef(ref); popperRef(ref); }} selected={isSelected} onClick={() => setSelectedIcon( isSelected ? {group: '', icon: ''} : {group: groupId, icon: icon.id} ) } > {icon.name} )} {isSelected && ( )} ); }; export default IconInfoBox; const BoxWrap = styled('div')<{selected: boolean}>` grid-column-end: span 1; text-align: center; justify-content: center; padding: ${space(2)}; border: solid 1px transparent; border-radius: ${p => p.theme.borderRadius}; cursor: pointer; &:hover { border-color: ${p => p.theme.innerBorder}; } ${p => p.selected && ` border-color: ${p.theme.blue200}; background: ${p.theme.blue100}; &:hover { border-color: ${p.theme.blue200}; } `} `; const Name = styled('p')` position: relative; margin-top: ${space(1)}; margin-bottom: 0; font-size: 0.875rem; text-transform: capitalize; `;