diff --git a/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx b/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx
index d04bcc083..259d6592c 100644
--- a/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx
+++ b/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx
@@ -6,6 +6,22 @@ import { Box, SpanBox } from '../../elements/LayoutPrimitives'
dayjs.extend(relativeTime)
+export const MenuStyle = {
+ display: 'flex',
+ marginLeft: 'auto',
+ height: '30px',
+ width: '30px',
+ mt: '-5px',
+ mr: '-5px',
+ pt: '2px',
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: '1000px',
+ '&:hover': {
+ bg: '$thBackground4',
+ },
+}
+
export const MetaStyle = {
width: '100%',
color: '$thTextSubtle3',
diff --git a/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx b/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx
index faafe6cf7..263461044 100644
--- a/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx
+++ b/packages/web/components/patterns/LibraryCards/LibraryGridCard.tsx
@@ -14,6 +14,7 @@ import {
MetaStyle,
siteName,
TitleStyle,
+ MenuStyle,
} from './LibraryCardStyles'
import { sortedLabels } from '../../../lib/labelsSort'
import { LibraryHoverActions } from './LibraryHoverActions'
@@ -25,6 +26,8 @@ import {
offset,
autoUpdate,
} from '@floating-ui/react'
+import { CardMenu } from '../CardMenu'
+import { DotsThree } from 'phosphor-react'
dayjs.extend(relativeTime)
@@ -145,6 +148,7 @@ export function LibraryGridCard(props: LinkedItemCardProps): JSX.Element {
const LibraryGridCardContent = (props: LinkedItemCardProps): JSX.Element => {
const { isChecked, setIsChecked, item } = props
+ const [menuOpen, setMenuOpen] = useState(false)
const originText = siteName(props.item.originalArticleUrl, props.item.url)
const handleCheckChanged = useCallback(() => {
@@ -161,13 +165,33 @@ const LibraryGridCardContent = (props: LinkedItemCardProps): JSX.Element => {
distribution="start"
>
- {props.inMultiSelect && (
+ {props.inMultiSelect ? (
+ ) : (
+
+ setMenuOpen(open)}
+ actionHandler={props.handleAction}
+ triggerElement={
+
+ }
+ />
+
)}
diff --git a/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx b/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx
index 3fa3968e4..99470edea 100644
--- a/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx
+++ b/packages/web/components/patterns/LibraryCards/LibraryListCard.tsx
@@ -10,6 +10,7 @@ import {
MetaStyle,
siteName,
TitleStyle,
+ MenuStyle,
} from './LibraryCardStyles'
import { sortedLabels } from '../../../lib/labelsSort'
import { LIBRARY_LEFT_MENU_WIDTH } from '../../templates/homeFeed/LibraryFilterMenu'
@@ -22,6 +23,8 @@ import {
offset,
autoUpdate,
} from '@floating-ui/react'
+import { CardMenu } from '../CardMenu'
+import { DotsThree } from 'phosphor-react'
export function LibraryListCard(props: LinkedItemCardProps): JSX.Element {
const [isHovered, setIsHovered] = useState(false)
@@ -34,7 +37,6 @@ export function LibraryListCard(props: LinkedItemCardProps): JSX.Element {
middleware: [
offset({
mainAxis: -25,
- // crossAxis: -10,
}),
size(),
],
@@ -126,6 +128,7 @@ export function LibraryListCard(props: LinkedItemCardProps): JSX.Element {
export function LibraryListCardContent(
props: LinkedItemCardProps
): JSX.Element {
+ const [menuOpen, setMenuOpen] = useState(false)
const { isChecked, setIsChecked, item } = props
const originText = siteName(props.item.originalArticleUrl, props.item.url)
@@ -137,13 +140,33 @@ export function LibraryListCardContent(
<>
- {props.inMultiSelect && (
+ {props.inMultiSelect ? (
+ ) : (
+
+ setMenuOpen(open)}
+ actionHandler={props.handleAction}
+ triggerElement={
+
+ }
+ />
+
)}