diff --git a/web/src/app.css b/web/src/app.css index f9df08bb..01c649c5 100644 --- a/web/src/app.css +++ b/web/src/app.css @@ -1714,6 +1714,19 @@ box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.04); } + /* Panel chrome only once there is a sidebar to enclose. Below this the + settings detail view is already a stack of surface-panel groups, and a + panel around them would nest a card in a card. */ + @media (min-width: 1024px) { + .surface-panel-lg { + background: color-mix(in srgb, var(--surface) 90%, transparent); + border-radius: calc(var(--radius-2xl) + 0.35rem); + box-shadow: + inset 0 1px 0 rgb(255 255 255 / 0.04), + 0 24px 50px -34px rgb(0 0 0 / 0.65); + } + } + .caption-empty-state span { display: block; height: 0.35rem; diff --git a/web/src/components/settings/SettingsOverviewNav.tsx b/web/src/components/settings/SettingsOverviewNav.tsx index 85a86365..c22ea3ed 100644 --- a/web/src/components/settings/SettingsOverviewNav.tsx +++ b/web/src/components/settings/SettingsOverviewNav.tsx @@ -1,4 +1,3 @@ -import { useState } from "react"; import { ChevronRight } from "lucide-react"; import type { LucideIcon } from "lucide-react"; import { Link } from "react-router"; @@ -35,14 +34,7 @@ export function SettingsOverviewNav({ idPrefix, variant = "grouped-list", }: SettingsOverviewNavProps) { - const firstGroupId = groups[0] ? groupSectionId(idPrefix, groups[0].label) : ""; - const [activeGroupId, setActiveGroupId] = useState(firstGroupId); const isDirectory = variant === "directory"; - const resolvedActiveGroupId = groups.some( - (group) => groupSectionId(idPrefix, group.label) === activeGroupId, - ) - ? activeGroupId - : firstGroupId; if (groups.length === 0) { return ( @@ -55,136 +47,96 @@ export function SettingsOverviewNav({ ); } + // No category jump bar: it listed the same group names, with the same + // counts, directly above the headings that repeat them — and on an index + // this short it saved about one scroll flick. return ( -
- {isDirectory ? ( -
+ +