Files
buzz/desktop/src/shared/layout/AuxiliaryPanelBody.tsx
Taylor Ho e6738c5015 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>
2026-06-29 16:19:48 -06:00

47 lines
1.2 KiB
TypeScript

import * as React from "react";
import {
AuxiliaryPanelContext,
resolveAuxiliaryPanelBodyMode,
} from "@/shared/layout/auxiliaryPanelContext";
import type { AuxiliaryPanelMode } from "@/shared/layout/auxiliaryPanelContext";
import { getAuxiliaryPanelBodyClass } from "@/shared/layout/AuxiliaryPanelHeader";
import { cn } from "@/shared/lib/cn";
type AuxiliaryPanelBodyProps = Omit<
React.ComponentProps<"div">,
"className"
> & {
className?: string;
/** Override mode when rendered outside `AuxiliaryPanel` (e.g. Radix dialog content). */
mode?: AuxiliaryPanelMode;
/** Apply top padding in floating overlay (`panel`) mode. */
panelPadding?: boolean;
};
/** Scroll/content region for auxiliary panels with consistent chrome padding. */
export function AuxiliaryPanelBody({
className,
mode: modeOverride,
panelPadding = false,
...props
}: AuxiliaryPanelBodyProps) {
const context = React.useContext(AuxiliaryPanelContext);
const mode = resolveAuxiliaryPanelBodyMode({
context,
mode: modeOverride,
});
return (
<div
className={cn(
"min-h-0 flex-1",
getAuxiliaryPanelBodyClass({ mode }),
panelPadding && mode === "panel" && "pt-4",
className,
)}
{...props}
/>
);
}