From a3a6a2aedbaebad60e8b2ccc67f1748731ef3fb7 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 20 Aug 2025 22:51:44 +0800 Subject: [PATCH] feat(desktop): add semi-transparent overlay for exiting entry detail view MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When viewing entry details in wide mode, a semi-transparent overlay is now displayed over the subscription list area. This overlay includes: - Visual indication with semi-transparent background and blur effect - Exit hint with arrow icon and text prompting users to click to return - Click anywhere on the overlay to navigate back to the entry list - Multi-language support (EN, ZH-CN, JA) This improves UX by providing a clear and intuitive way to exit the detail view. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../SubscriptionColumn.tsx | 24 ++++++++++++++++++- locales/app/en.json | 2 ++ locales/app/ja.json | 2 ++ locales/app/zh-CN.json | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/apps/desktop/layer/renderer/src/modules/app-layout/subscription-column/SubscriptionColumn.tsx b/apps/desktop/layer/renderer/src/modules/app-layout/subscription-column/SubscriptionColumn.tsx index 24a505812..a13ab9621 100644 --- a/apps/desktop/layer/renderer/src/modules/app-layout/subscription-column/SubscriptionColumn.tsx +++ b/apps/desktop/layer/renderer/src/modules/app-layout/subscription-column/SubscriptionColumn.tsx @@ -22,6 +22,8 @@ import { useTimelineColumnTempShow, } from "~/atoms/sidebar" import { FloatingLayerScope } from "~/constants" +import { useNavigateEntry } from "~/hooks/biz/useNavigateEntry" +import { useRouteParams } from "~/hooks/biz/useRouteParams" import { useBatchUpdateSubscription } from "~/hooks/biz/useSubscriptionActions" import { useI18n } from "~/hooks/common" import { NetworkStatusIndicator } from "~/modules/app/NetworkStatusIndicator" @@ -103,6 +105,9 @@ const FeedResponsiveResizerContainer = ({ const feedColumnShow = useTimelineColumnShow() const feedColumnTempShow = useTimelineColumnTempShow() + const { entryId, isPendingEntry } = useRouteParams() + const navigate = useNavigateEntry() + const t = useI18n() useEffect(() => { if (feedColumnShow) { @@ -165,7 +170,6 @@ const FeedResponsiveResizerContainer = ({ timer = clearTimeout(timer) } }, [feedColumnShow]) - const t = useI18n() return ( <> @@ -185,6 +189,24 @@ const FeedResponsiveResizerContainer = ({ }} > {children} + + {/* Semi-transparent overlay with exit hint when in wide mode with entry selected */} + {entryId && !isPendingEntry && ( +
navigate({ entryId: null })} + > +
+
+
+ + {t("entry.exit_detail")} +
+ {t("entry.click_to_return")} +
+
+
+ )}