import { Box, VStack, HStack, SpanBox } from '../../elements/LayoutPrimitives' import { LabelChip } from '../../elements/LabelChip' import type { LinkedItemCardProps } from './CardTypes' import { useCallback, useState } from 'react' import { Archive, ArchiveBox, DotsThree, Note, Notebook, Tag, Trash, Tray, } from 'phosphor-react' import Link from 'next/link' import { CardMenu } from '../CardMenu' import { AuthorInfoStyle, CardCheckbox, LibraryItemMetadata, MenuStyle, MetaStyle, siteName, TitleStyle, } from './LibraryCardStyles' import { sortedLabels } from '../../../lib/labelsSort' import { LIBRARY_LEFT_MENU_WIDTH } from '../../templates/homeFeed/LibraryFilterMenu' import { Button } from '../../elements/Button' import { theme } from '../../tokens/stitches.config' import { LibraryHoverActions } from './LibraryHoverActions' export function LibraryListCard(props: LinkedItemCardProps): JSX.Element { const [isHovered, setIsHovered] = useState(false) const [anchor, setAnchor] = useState(null) return ( { setIsHovered(true) }} onMouseLeave={() => { setIsHovered(false) }} > {props.inMultiSelect ? ( ) : ( <> )} ) } export function LibraryListCardContent( props: LinkedItemCardProps ): JSX.Element { const { isChecked, setIsChecked, item } = props const originText = siteName(props.item.originalArticleUrl, props.item.url) const handleCheckChanged = useCallback(() => { setIsChecked(item.id, !isChecked) }, [isChecked, setIsChecked, item]) return ( <> {props.inMultiSelect && ( )} {props.item.title} {props.item.author} {props.item.author && originText && ' | '} {originText} {sortedLabels(props.item.labels).map(({ name, color }, index) => ( ))} ) }