ManimCat / frontend /src /studio /components /command-panel /StudioCommandViewport.tsx
Bin29's picture
Sync from main: e764154 feat(plot-skill): add math-exam-diagram SKILL.md for exam-style math figures
abcf568
import { StudioCommandMessageList } from './StudioCommandMessageList'
import type { StudioCommandPanelStore } from './store'
interface StudioCommandViewportProps {
store: StudioCommandPanelStore
endRef: React.RefObject<HTMLDivElement | null>
scrollRef: React.RefObject<HTMLDivElement | null>
messagesLength: number
isMinimal: boolean
isTLayout: boolean
variant: 'default' | 't-layout-bottom' | 'pure-minimal-bottom'
readyLabel: string
}
export function StudioCommandViewport({
store,
endRef,
scrollRef,
messagesLength,
isMinimal,
isTLayout,
variant,
readyLabel,
}: StudioCommandViewportProps) {
return (
<div
ref={scrollRef}
className={`min-h-0 flex-1 overflow-y-auto ${isTLayout ? 'px-5 py-5' : isMinimal ? 'pl-4 pr-3 pb-4 pt-1' : 'px-8 py-10'}`}
>
{messagesLength === 0 && !isMinimal && (
<div className="flex h-full flex-col items-center justify-center text-center opacity-30">
{isTLayout ? (
<div className="text-[13px] text-[#999]">{readyLabel}</div>
) : (
<>
<div className="mb-4 text-3xl">🐾</div>
<div className="font-mono text-[10px] uppercase tracking-[0.4em]">{readyLabel}</div>
</>
)}
</div>
)}
<StudioCommandMessageList store={store} endRef={endRef} variant={variant} />
</div>
)
}