From 83f062584324b6ecbe8fd3ae7a13b50270bb9bfe Mon Sep 17 00:00:00 2001 From: Kenneth Date: Mon, 12 May 2025 00:05:24 +0100 Subject: [PATCH] add style to bookmark preview iframe --- packages/web/src/app/bookmarks.tsx | 32 ++- .../web/src/reader-styles/sakura-dark.css | 268 +++++++++++++++++ packages/web/src/reader-styles/sakura.css | 269 ++++++++++++++++++ 3 files changed, 563 insertions(+), 6 deletions(-) create mode 100644 packages/web/src/reader-styles/sakura-dark.css create mode 100644 packages/web/src/reader-styles/sakura.css diff --git a/packages/web/src/app/bookmarks.tsx b/packages/web/src/app/bookmarks.tsx index 98ff7ad..52aaed4 100644 --- a/packages/web/src/app/bookmarks.tsx +++ b/packages/web/src/app/bookmarks.tsx @@ -12,6 +12,8 @@ import { FormField } from "~/components/form-field" import { LoadingSpinner } from "~/components/loading-spinner" import { useMnemonics } from "~/hooks/use-mnemonics" import { useLogOut } from "~/auth" +import sakuraCssSrc from "~/reader-styles/sakura.css?url" +import sakuraDarkCssSrc from "~/reader-styles/sakura-dark.css?url" const LAYOUT_MODE = { popup: "popup", @@ -85,7 +87,9 @@ const useBookmarkPageStore = create()((set, get) => ({ reconcileSelection(bookmarks: LinkBookmark[]) { const { selectedBookmarkId, selectedBookmarkIndex } = get() - if (!selectedBookmarkId) { + if (bookmarks.length === 0) { + set({ selectedBookmarkId: "", selectedBookmarkIndex: 0 }) + } else if (!selectedBookmarkId) { set({ selectedBookmarkId: bookmarks[selectedBookmarkIndex].id }) } else { const newIndex = bookmarks.findIndex((bookmark) => bookmark.id === selectedBookmarkId) @@ -507,6 +511,23 @@ function BookmarkPreviewFrame() { }).then((res) => res.text()), ) + function injectCss(event: React.SyntheticEvent) { + const lightCssLink = document.createElement("link") + lightCssLink.rel = "stylesheet" + lightCssLink.href = sakuraCssSrc + lightCssLink.media = "screen" + + const darkCssLink = document.createElement("link") + darkCssLink.rel = "stylesheet" + darkCssLink.href = sakuraDarkCssSrc + darkCssLink.media = "screen and (prefers-color-scheme: dark)" + + if (event.currentTarget.contentDocument) { + event.currentTarget.contentDocument.head.appendChild(lightCssLink) + event.currentTarget.contentDocument.head.appendChild(darkCssLink) + } + } + switch (status) { case "pending": return ( @@ -516,11 +537,7 @@ function BookmarkPreviewFrame() { ) case "success": return ( -