diff --git a/packages/web/src/app/bookmarks/-action-bar.tsx b/packages/web/src/app/bookmarks/-action-bar.tsx
index dfdb724..5633921 100644
--- a/packages/web/src/app/bookmarks/-action-bar.tsx
+++ b/packages/web/src/app/bookmarks/-action-bar.tsx
@@ -26,6 +26,7 @@ function ActionBar({
function BookmarkListActionBar({ className }: { className?: string }) {
const setActiveDialog = useBookmarkPageStore((state) => state.setActiveDialog)
+ const statusMessage = useBookmarkPageStore((state) => state.statusMessage)
useMnemonics(
{
@@ -40,13 +41,19 @@ function BookmarkListActionBar({ className }: { className?: string }) {
return (
-
-
-
+ {statusMessage ? (
+ {statusMessage}
+ ) : (
+ <>
+
+
+
+ >
+ )}
)
}
diff --git a/packages/web/src/app/bookmarks/-bookmark-list.tsx b/packages/web/src/app/bookmarks/-bookmark-list.tsx
index 0d56736..99578fc 100644
--- a/packages/web/src/app/bookmarks/-bookmark-list.tsx
+++ b/packages/web/src/app/bookmarks/-bookmark-list.tsx
@@ -15,6 +15,7 @@ enum BookmarkListItemAction {
Open = "Open",
Edit = "Edit",
Delete = "Delete",
+ CopyLink = "CopyLink",
}
type SelectionChangeCallback = (bookmark: Bookmark) => void
@@ -178,12 +179,24 @@ const _BookmarkList = memo(({ className }: { className?: string }) => {
d: deleteItem,
Enter: openItem,
+
+ c: (event) => {
+ if (event.ctrlKey || event.metaKey) {
+ event.preventDefault()
+ copyBookmarkLink()
+ }
+ },
},
{
ignore: useCallback(() => useBookmarkPageStore.getState().activeDialog !== ActiveDialog.None, []),
},
)
+ async function copyBookmarkLink() {
+ const { bookmarks, selectedIndex, onItemAction } = store.getState()
+ onItemAction(bookmarks[selectedIndex], BookmarkListItemAction.CopyLink)
+ }
+
function openItem() {
const { bookmarks, selectedIndex, onItemAction } = store.getState()
expandItem()
@@ -261,6 +274,10 @@ const BookmarkListItem = memo(
onItemAction(bookmark, BookmarkListItemAction.Delete)
}
+ function copyItemLink() {
+ onItemAction(bookmark, BookmarkListItemAction.CopyLink)
+ }
+
return (
-