import { Box, VStack, HStack, SpanBox } from '../../elements/LayoutPrimitives'
import { LabelChip } from '../../elements/LabelChip'
import type { LinkedItemCardProps } from './CardTypes'
import { useCallback, useState } from 'react'
import { DotsThree } 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'
export function LibraryListCard(props: LinkedItemCardProps): JSX.Element {
const [isHovered, setIsHovered] = useState(false)
return (
{
setIsHovered(true)
}}
onMouseLeave={() => {
setIsHovered(false)
}}
>
{props.inMultiSelect ? (
) : (
)}
)
}
export function LibraryListCardContent(
props: LinkedItemCardProps
): JSX.Element {
const [menuOpen, setMenuOpen] = useState(false)
const originText = siteName(props.item.originalArticleUrl, props.item.url)
const handleCheckChanged = useCallback(() => {
props.setIsChecked(props.item.id, !props.isChecked)
}, [props.isChecked])
return (
<>
{props.inMultiSelect ? (
) : (
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) => (
))}
>
)
}