);
@@ -269,7 +279,7 @@ export function AdminShell({ active, children }: AdminShellProps) {
{/* v1.18.6.1 — heading above the chip strip on mobile; on desktop it
renders inside the grid (row 1 / content column). */}
-
{headingBlock}
+
{headingBlock(true)}
{/* Mobile section strip — horizontal scroll, hidden on md+.
`no-scrollbar` (defined in `globals.css`) suppresses the
@@ -359,10 +369,13 @@ export function AdminShell({ active, children }: AdminShellProps) {
>
{/* Heading — desktop only (mobile renders it above the strip). */}
- {headingBlock}
+ {headingBlock()}
- {/* Desktop sticky sidebar — starts at the cards row (row 2).
+ {/* Desktop sticky sidebar — starts on the heading row and spans the
+ two desktop rows. Its top therefore shares the heading's grid
+ line while the content column keeps the natural heading-to-card
+ gap in row 2.
The sticky lives on the `
- ) : null;
+ ) : null;
// v1.4.25 W8 — AuthShell wraps the page in `px-4 py-6 md:px-6`
// already, so this inner shell only carries the wider max-width.
@@ -510,8 +522,8 @@ export function SettingsShell({
{/* v1.18.6.1 — on mobile the heading sits above the chip strip; on
desktop it is rendered inside the grid (row 1 / content column) so
it does not paint twice. */}
- {headingBlock ? (
-
{headingBlock}
+ {resolvedHeading ? (
+
{headingBlock(true)}
) : null}
{/* Mobile section strip — horizontal scroll, hidden on md+.
@@ -588,13 +600,16 @@ export function SettingsShell({
)}
>
{/* Heading — desktop only here (mobile renders it above the strip). */}
- {headingBlock ? (
+ {resolvedHeading ? (
- {headingBlock}
+ {headingBlock()}
) : null}
- {/* Desktop sticky sidebar — starts at the cards row (row 2).
+ {/* Desktop sticky sidebar — starts on the heading row and spans the
+ two desktop rows. Its top therefore shares the heading's grid
+ line while the content column keeps the natural heading-to-card
+ gap in row 2.
The sticky lives on the `