mirror of
https://github.com/block/buzz.git
synced 2026-11-02 23:41:08 +00:00
Signed-off-by: Taylor Ho <taylorkmho@gmail.com> Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
47 lines
1.2 KiB
TypeScript
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}
|
|
/>
|
|
);
|
|
}
|