import { Box, VStack, HStack, SpanBox } from '../../elements/LayoutPrimitives' import { LabelChip } from '../../elements/LabelChip' import type { LinkedItemCardProps } from './CardTypes' import { useMemo, useState } from 'react' import { DotsThree } from 'phosphor-react' import Link from 'next/link' import { CardMenu } from '../CardMenu' import { AuthorInfoStyle, LibraryItemMetadata, MenuStyle, MetaStyle, siteName, timeAgo, TitleStyle, } from './LibraryCardStyles' import { sortedLabels } from '../../../lib/labelsSort' export function LibraryListCard(props: LinkedItemCardProps): JSX.Element { const [isHovered, setIsHovered] = useState(false) const [menuOpen, setMenuOpen] = useState(false) const originText = props.item.siteName || siteName(props.item.originalArticleUrl, props.item.url) const highlightCount = useMemo(() => { return props.item.highlights?.length ?? 0 }, [props.item.highlights]) return ( { setIsHovered(true) }} onMouseLeave={() => { setIsHovered(false) }} > setMenuOpen(open)} actionHandler={props.handleAction} triggerElement={ } /> {props.item.title} {props.item.author} {props.item.author && originText && ' | '} {originText} {sortedLabels(props.item.labels).map( ({ name, color }, index) => ( ) )} ) }