From d00fff2c732a57b5091fb9709d7cf47788436556 Mon Sep 17 00:00:00 2001 From: klopez4212 Date: Mon, 6 Jul 2026 13:31:36 +0100 Subject: [PATCH] feat(desktop): horizontal scroll sections with Show all toggle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove card containers from theme tiles (just image + name below) - Switch all sections to horizontal scroll by default - Add 'Show all' / 'Collapse' toggle to section headers (shows when section has >4 items) — expands to a wrapping grid layout - Reduce tile size to 140px for a more compact horizontal row --- .../features/settings/ui/SettingsPanels.tsx | 142 +++++++++++++----- 1 file changed, 103 insertions(+), 39 deletions(-) diff --git a/desktop/src/features/settings/ui/SettingsPanels.tsx b/desktop/src/features/settings/ui/SettingsPanels.tsx index cb6c6d13df..e9773e4a33 100644 --- a/desktop/src/features/settings/ui/SettingsPanels.tsx +++ b/desktop/src/features/settings/ui/SettingsPanels.tsx @@ -1,4 +1,4 @@ -import { useMemo } from "react"; +import { useMemo, useState } from "react"; import { BellRing, Bot, @@ -261,30 +261,31 @@ function PairedThemeTile({ return ( ); } @@ -303,24 +304,28 @@ function SingleThemeTile({ return ( ); } @@ -362,6 +367,14 @@ function ThemeSettingsCard() { setFollowSystem(false); }; + const [expandedSections, setExpandedSections] = useState< + Record + >({}); + + const toggleSection = (key: string) => { + setExpandedSections((prev) => ({ ...prev, [key]: !prev[key] })); + }; + return (
-

- Adapts to system -

+
+

+ Adapts to system +

+ {pairedLight.length > 4 && ( + + )} +

Automatically switches between light and dark with your system preferences.

-
+
{pairedLight.map((lightName) => { const darkName = getThemePair(lightName); if (!darkName) return null; @@ -402,11 +432,28 @@ function ThemeSettingsCard() { {/* Section 2: Light-only themes */} {lightOnly.length > 0 && (
-

Light

+
+

Light

+ {lightOnly.length > 4 && ( + + )} +

Always uses a light appearance.

-
+
{lightOnly.map((name) => ( 0 && (
-

Dark

+
+

Dark

+ {darkOnly.length > 4 && ( + + )} +

Always uses a dark appearance.

-
+
{darkOnly.map((name) => (