+
+
+ Your bookmark list is empty.
+
+
+ Go back to your feed and bookmark posts you’d like to keep or read
+ later. Each post you bookmark will be stored here.
+
+
+
+
+
+ );
+}
diff --git a/packages/shared/src/components/BookmarkFeedLayout.tsx b/packages/shared/src/components/BookmarkFeedLayout.tsx
new file mode 100644
index 0000000000..129f68069a
--- /dev/null
+++ b/packages/shared/src/components/BookmarkFeedLayout.tsx
@@ -0,0 +1,79 @@
+import React, {
+ ReactElement,
+ ReactNode,
+ useContext,
+ useMemo,
+ useState,
+} from 'react';
+import Link from 'next/link';
+import MagnifyingIcon from '../../icons/magnifying.svg';
+import { BOOKMARKS_FEED_QUERY, SEARCH_BOOKMARKS_QUERY } from '../graphql/feed';
+import AuthContext from '../contexts/AuthContext';
+import { CustomFeedHeader, FeedPage } from './utilities';
+import SearchEmptyScreen from './SearchEmptyScreen';
+import Feed, { FeedProps } from './Feed';
+import BookmarkEmptyScreen from './BookmarkEmptyScreen';
+import { Button } from './buttons/Button';
+
+export type BookmarkFeedLayoutProps = {
+ isSearchOn: boolean;
+ searchQuery?: string;
+ children?: ReactNode;
+ searchChildren: ReactNode;
+ onSearchButtonClick?: () => unknown;
+};
+
+export default function BookmarkFeedLayout({
+ searchQuery,
+ isSearchOn,
+ searchChildren,
+ children,
+}: BookmarkFeedLayoutProps): ReactElement {
+ const { user, tokenRefreshed } = useContext(AuthContext);
+ const [showEmptyScreen, setShowEmptyScreen] = useState(false);
+
+ const feedProps = useMemo