From 3955f91a6f5fa0566a6cc0efc94bad538d34cdd9 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Thu, 18 Dec 2025 05:08:15 +0000 Subject: fix: collapse reader settings by default --- apps/web/components/settings/ReaderSettings.tsx | 395 +++++++++++++----------- 1 file changed, 209 insertions(+), 186 deletions(-) (limited to 'apps/web/components') diff --git a/apps/web/components/settings/ReaderSettings.tsx b/apps/web/components/settings/ReaderSettings.tsx index ce4017c7..28cc847e 100644 --- a/apps/web/components/settings/ReaderSettings.tsx +++ b/apps/web/components/settings/ReaderSettings.tsx @@ -4,7 +4,13 @@ import { useState } from "react"; import { useClientConfig } from "@/lib/clientConfig"; import { useTranslation } from "@/lib/i18n/client"; import { useReaderSettings } from "@/lib/readerSettings"; -import { AlertTriangle, BookOpen, Laptop, RotateCcw } from "lucide-react"; +import { + AlertTriangle, + BookOpen, + ChevronDown, + Laptop, + RotateCcw, +} from "lucide-react"; import { formatFontSize, @@ -23,6 +29,11 @@ import { CardHeader, CardTitle, } from "../ui/card"; +import { + Collapsible, + CollapsibleContent, + CollapsibleTrigger, +} from "../ui/collapsible"; import { Label } from "../ui/label"; import { Select, @@ -47,6 +58,9 @@ export default function ReaderSettings() { updateServerSetting, } = useReaderSettings(); + // Local state for collapsible + const [isOpen, setIsOpen] = useState(false); + // Local state for slider dragging (null = not dragging, use server value) const [draggingFontSize, setDraggingFontSize] = useState(null); const [draggingLineHeight, setDraggingLineHeight] = useState( @@ -92,197 +106,206 @@ export default function ReaderSettings() { }; return ( - - - - - {t("settings.info.reader_settings.title")} - - - {t("settings.info.reader_settings.description")} - - - - {/* Local Overrides Warning */} - {hasLocalOverrides && ( - - - -
-

- {t("settings.info.reader_settings.local_overrides_title")} -

-

- {t( - "settings.info.reader_settings.local_overrides_description", - )} + + + + +

+ + + {t("settings.info.reader_settings.title")} + + + {t("settings.info.reader_settings.description")} + +
+ + + + + + {/* Local Overrides Warning */} + {hasLocalOverrides && ( + + + +
+

+ {t("settings.info.reader_settings.local_overrides_title")} +

+

+ {t( + "settings.info.reader_settings.local_overrides_description", + )} +

+
    + {localOverrides.fontFamily !== undefined && ( +
  • + {t("settings.info.reader_settings.font_family")}:{" "} + {formatLocalOverride("fontFamily")} +
  • + )} + {localOverrides.fontSize !== undefined && ( +
  • + {t("settings.info.reader_settings.font_size")}:{" "} + {formatLocalOverride("fontSize")} +
  • + )} + {localOverrides.lineHeight !== undefined && ( +
  • + {t("settings.info.reader_settings.line_height")}:{" "} + {formatLocalOverride("lineHeight")} +
  • + )} +
+
+ +
+
+ )} + + {/* Font Family */} +
+ + + {serverSettings.fontFamily === null && ( +

+ {t("settings.info.reader_settings.using_default")}:{" "} + {READER_DEFAULTS.fontFamily}

-
    - {localOverrides.fontFamily !== undefined && ( -
  • - {t("settings.info.reader_settings.font_family")}:{" "} - {formatLocalOverride("fontFamily")} -
  • - )} - {localOverrides.fontSize !== undefined && ( -
  • - {t("settings.info.reader_settings.font_size")}:{" "} - {formatLocalOverride("fontSize")} -
  • - )} - {localOverrides.lineHeight !== undefined && ( -
  • - {t("settings.info.reader_settings.line_height")}:{" "} - {formatLocalOverride("lineHeight")} -
  • - )} -
+ )} +
+ + {/* Font Size */} +
+
+ + + {formatFontSize(draggingFontSize ?? settings.fontSize)} + {serverSettings.fontSize === null && + draggingFontSize === null && + ` (${t("common.default").toLowerCase()})`} + +
+ setDraggingFontSize(value)} + onValueCommit={([value]) => { + updateServerSetting({ fontSize: value }); + setDraggingFontSize(null); + }} + max={READER_SETTING_CONSTRAINTS.fontSize.max} + min={READER_SETTING_CONSTRAINTS.fontSize.min} + step={READER_SETTING_CONSTRAINTS.fontSize.step} + /> +
+ + {/* Line Height */} +
+
+ + + {formatLineHeight(draggingLineHeight ?? settings.lineHeight)} + {serverSettings.lineHeight === null && + draggingLineHeight === null && + ` (${t("common.default").toLowerCase()})`} +
+ setDraggingLineHeight(value)} + onValueCommit={([value]) => { + updateServerSetting({ lineHeight: value }); + setDraggingLineHeight(null); + }} + max={READER_SETTING_CONSTRAINTS.lineHeight.max} + min={READER_SETTING_CONSTRAINTS.lineHeight.min} + step={READER_SETTING_CONSTRAINTS.lineHeight.step} + /> +
+ + {/* Clear Defaults Button */} + {hasServerSettings && ( - - - )} - - {/* Font Family */} -
- - - {serverSettings.fontFamily === null && ( -

- {t("settings.info.reader_settings.using_default")}:{" "} - {READER_DEFAULTS.fontFamily} -

- )} -
+ )} - {/* Font Size */} -
-
- - - {formatFontSize(draggingFontSize ?? settings.fontSize)} - {serverSettings.fontSize === null && - draggingFontSize === null && - ` (${t("common.default").toLowerCase()})`} - -
- setDraggingFontSize(value)} - onValueCommit={([value]) => { - updateServerSetting({ fontSize: value }); - setDraggingFontSize(null); - }} - max={READER_SETTING_CONSTRAINTS.fontSize.max} - min={READER_SETTING_CONSTRAINTS.fontSize.min} - step={READER_SETTING_CONSTRAINTS.fontSize.step} - /> -
- - {/* Line Height */} -
-
- - - {formatLineHeight(draggingLineHeight ?? settings.lineHeight)} - {serverSettings.lineHeight === null && - draggingLineHeight === null && - ` (${t("common.default").toLowerCase()})`} - -
- setDraggingLineHeight(value)} - onValueCommit={([value]) => { - updateServerSetting({ lineHeight: value }); - setDraggingLineHeight(null); - }} - max={READER_SETTING_CONSTRAINTS.lineHeight.max} - min={READER_SETTING_CONSTRAINTS.lineHeight.min} - step={READER_SETTING_CONSTRAINTS.lineHeight.step} - /> -
- - {/* Clear Defaults Button */} - {hasServerSettings && ( - - )} - - {/* Preview */} -
-

- {t("settings.info.reader_settings.preview")} -

-

- {t("settings.info.reader_settings.preview_text")} -
- {t("settings.info.reader_settings.preview_text")} -
- {t("settings.info.reader_settings.preview_text")} -

-
-
- + {/* Preview */} +
+

+ {t("settings.info.reader_settings.preview")} +

+

+ {t("settings.info.reader_settings.preview_text")} +
+ {t("settings.info.reader_settings.preview_text")} +
+ {t("settings.info.reader_settings.preview_text")} +

+
+ +
+ + ); } -- cgit v1.2.3-70-g09d2