diff --git a/packages/shared/package.json b/packages/shared/package.json
index 5bd885d6030..8d9bb8e5d8a 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -15,6 +15,7 @@
"peerDependencies": {
"@tanstack/react-query": "^4.36.1",
"@tanstack/react-query-devtools": "^4.35.3",
+ "aria-hidden": "^1.2.6",
"classnames": "^2.3.1",
"date-fns": "^2.22.1",
"date-fns-tz": "1.2.2",
diff --git a/packages/shared/src/components/BookmarkFeedLayout.tsx b/packages/shared/src/components/BookmarkFeedLayout.tsx
index 955127cbb76..f6463d07fbd 100644
--- a/packages/shared/src/components/BookmarkFeedLayout.tsx
+++ b/packages/shared/src/components/BookmarkFeedLayout.tsx
@@ -7,7 +7,9 @@ import React, {
useState,
} from 'react';
import dynamic from 'next/dynamic';
+import { useRouter } from 'next/router';
import classNames from 'classnames';
+import { webappUrl } from '../lib/constants';
import {
BookmarkSort,
BOOKMARKS_FEED_QUERY,
@@ -25,9 +27,13 @@ import { Button, ButtonSize, ButtonVariant } from './buttons/Button';
import { ShareIcon, SortIcon } from './icons';
import { generateQueryKey, OtherFeedPage, RequestKey } from '../lib/query';
import { useFeedLayout, useViewSize, ViewSize } from '../hooks';
+import { useIsPhone } from '../hooks/useViewSize';
import { useLayoutVariant } from '../hooks/layout/useLayoutVariant';
import { PageHeader } from './layout/PageHeader';
import { BookmarkSection } from './sidebar/sections/BookmarkSection';
+import { ShellPage } from './shell/ShellPageContext';
+import { Segments, ShellRow } from './shell/ShellRow';
+import { useBookmarkFolderList } from '../hooks/bookmark';
import PlusMobileEntryBanner from './marketing/banners/PlusMobileEntryBanner';
import { DigestBookmarkBanner } from './marketing/banners/DigestBookmarkBanner';
import {
@@ -80,6 +86,9 @@ export default function BookmarkFeedLayout({
isReminderOnly,
}: BookmarkFeedLayoutProps): ReactElement | null {
const [isHydrated, setIsHydrated] = useState(false);
+ const router = useRouter();
+ const { folders: bookmarkFolders } = useBookmarkFolderList();
+ const bookmarkPath = (router.asPath ?? router.pathname ?? '').split('?')[0];
const {
shouldUseListFeedLayout,
FeedPageLayoutComponent,
@@ -94,6 +103,7 @@ export default function BookmarkFeedLayout({
DEFAULT_BOOKMARK_SORT_INDEX,
);
const isLaptop = useViewSize(ViewSize.Laptop);
+ const isPhone = useIsPhone();
const { isV2 } = useLayoutVariant();
const isV2Laptop = isV2;
const isSearchResults = !!searchQuery;
@@ -190,21 +200,29 @@ export default function BookmarkFeedLayout({
return null;
}
+ // In the block the controls are the shell's 38px squares.
+ const blockButtonClassName = isPhone
+ ? 'shell-material !size-[2.375rem] !rounded-14 !p-0'
+ : undefined;
+
const sortDropdown = !isSearchResults && (