refactor(desktop): centralize auxiliary panel shell (#1343)

Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
This commit is contained in:
Taylor Ho
2026-06-29 15:19:48 -07:00
committed by GitHub
parent db1b617ab1
commit e6738c5015
26 changed files with 1206 additions and 626 deletions

View File

@@ -1,38 +1,39 @@
import * as React from "react";
const THREAD_PANEL_DEFAULT_WIDTH_PX = 380;
export const THREAD_PANEL_MIN_WIDTH_PX = 300;
export const THREAD_PANEL_SINGLE_COLUMN_BREAKPOINT_PX =
THREAD_PANEL_MIN_WIDTH_PX * 2;
const THREAD_PANEL_MAX_WIDTH_PX = 720;
import {
AUXILIARY_PANEL_DEFAULT_WIDTH_PX,
AUXILIARY_PANEL_MAX_WIDTH_PX,
AUXILIARY_PANEL_MIN_WIDTH_PX,
} from "@/shared/layout/AuxiliaryPanel";
const THREAD_PANEL_WIDTH_SESSION_KEY = "buzz.desktop.thread-panel-width";
function clampThreadPanelWidth(width: number): number {
return Math.max(
THREAD_PANEL_MIN_WIDTH_PX,
Math.min(THREAD_PANEL_MAX_WIDTH_PX, width),
AUXILIARY_PANEL_MIN_WIDTH_PX,
Math.min(AUXILIARY_PANEL_MAX_WIDTH_PX, width),
);
}
function getInitialThreadPanelWidth(): number {
if (typeof window === "undefined") {
return THREAD_PANEL_DEFAULT_WIDTH_PX;
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
}
try {
const raw = window.sessionStorage.getItem(THREAD_PANEL_WIDTH_SESSION_KEY);
if (!raw) {
return THREAD_PANEL_DEFAULT_WIDTH_PX;
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
}
const parsed = Number.parseInt(raw, 10);
if (!Number.isFinite(parsed)) {
return THREAD_PANEL_DEFAULT_WIDTH_PX;
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
}
return clampThreadPanelWidth(parsed);
} catch {
return THREAD_PANEL_DEFAULT_WIDTH_PX;
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
}
}
@@ -87,11 +88,11 @@ export function useThreadPanelWidth() {
);
const onResetWidth = React.useCallback(() => {
setWidthPx(THREAD_PANEL_DEFAULT_WIDTH_PX);
setWidthPx(AUXILIARY_PANEL_DEFAULT_WIDTH_PX);
}, []);
return {
canReset: widthPx !== THREAD_PANEL_DEFAULT_WIDTH_PX,
canReset: widthPx !== AUXILIARY_PANEL_DEFAULT_WIDTH_PX,
onResetWidth,
onResizeStart,
widthPx,