mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-13 14:32:03 +00:00
From 1280 px the day and, on /coach, the conversations each keep a narrow strip at the right edge, open or not. A click on the strip opens its panel left of the strips and a second click closes it; the strip never moves. Strips start below the top bar's band, side by side, conversations first. Below 1600 px one panel is open at a time. The day slides like the conversations (width, 200 ms, none under reduced motion), stays open through a page change instead of folding and reopening, and does not slide in on arrival. Its content loads when a day first opens, so the scores, sections and calendar leave the shell's first load: every watched route falls back under its unchanged ceiling. The aggregate cap is re-measured for the chunk double count this causes.
21 lines
833 B
TypeScript
21 lines
833 B
TypeScript
"use client";
|
|
|
|
import { createShellSlot } from "./shell-slot";
|
|
|
|
/**
|
|
* A page-owned column on the right of the shell, beside the top bar and
|
|
* `<main>` rather than inside `<main>`. A panel portalled here runs the full
|
|
* height of the content row, from the top of the window (below any banner
|
|
* strip) to the bottom, and the top bar ends at its left edge instead of
|
|
* running underneath it. The docked day and the Coach's docked
|
|
* conversations live here; their strips sit right of this column
|
|
* (`shell-dock.tsx`). See `shell-slot.tsx`.
|
|
*/
|
|
const slot = createShellSlot("shell-side-panel");
|
|
|
|
/** Where the shell paints a page's side panel. Empty unless a page fills it. */
|
|
export const ShellSidePanelOutlet = slot.Outlet;
|
|
|
|
/** Render `children` into the shell's side-panel column. */
|
|
export const ShellSidePanel = slot.Portal;
|