diff --git a/frontend/libs/components/pagescene/src/index.ts b/frontend/libs/components/pagescene/src/index.ts index b2a556e1bd..ae56930e8b 100644 --- a/frontend/libs/components/pagescene/src/index.ts +++ b/frontend/libs/components/pagescene/src/index.ts @@ -187,6 +187,7 @@ export { getSceneGenerationMetaData } from "./lib/sceneMetadata"; // signalScene, addToast, loadingBarData/IsShowing signals, etc.) // are either surfaced via adapter slots or replaced with // lib-internal state. +export { AnonHintChip } from "./lib/comps/AnonHintChip"; export { AssetMenu, AssetModal } from "./lib/comps/AssetMenu"; export { Controls3D } from "./lib/comps/Controls3D"; export { ControlsTopButtons } from "./lib/comps/ControlsTopButtons"; @@ -199,6 +200,8 @@ export { EditorCanvas, CameraViewCanvas } from "./lib/comps/EngineCanvases"; export { Outliner } from "./lib/comps/Outliner"; export { ControlPanelSceneObject } from "./lib/comps/ControlPanelSceneObject"; export { SceneContainer } from "./lib/comps/SceneContainer"; +export { PreviewBox } from "./lib/comps/PreviewBox"; +export type { PreviewBoxProps } from "./lib/comps/PreviewBox"; export { PreviewEngineCamera } from "./lib/comps/PreviewEngineCamera"; export { PreviewImages } from "./lib/comps/PreviewImages"; export { OnboardingHelper } from "./lib/comps/OnboardingHelper"; diff --git a/frontend/libs/components/pagescene/src/lib/PageSceneStore.ts b/frontend/libs/components/pagescene/src/lib/PageSceneStore.ts index b67a8bb043..288b38b265 100644 --- a/frontend/libs/components/pagescene/src/lib/PageSceneStore.ts +++ b/frontend/libs/components/pagescene/src/lib/PageSceneStore.ts @@ -22,6 +22,10 @@ export interface SceneMeta { ownerToken: string | undefined; isModified: boolean | undefined; isInitializing: boolean; + // URL to the author's generation result for this scene, shown in + // view-only mode's PreviewBox. Host populates this from the + // adapter.loadScene response. Optional; absent ⇒ no preview rendered. + previewImageUrl?: string; } export type SceneObjectKind = "object" | "character" | "shape"; diff --git a/frontend/libs/components/pagescene/src/lib/Stage3DBody.tsx b/frontend/libs/components/pagescene/src/lib/Stage3DBody.tsx index c2f17a5a28..41aea44557 100644 --- a/frontend/libs/components/pagescene/src/lib/Stage3DBody.tsx +++ b/frontend/libs/components/pagescene/src/lib/Stage3DBody.tsx @@ -33,6 +33,7 @@ import type { PopoverItem } from "@storyteller/ui-popover"; import { v4 as uuidv4 } from "uuid"; import { EngineContext } from "./contexts/EngineContext/EngineContext"; +import { AnonHintChip } from "./comps/AnonHintChip"; import { ControlPanelSceneObject } from "./comps/ControlPanelSceneObject"; import { Controls3D } from "./comps/Controls3D"; import { ControlsTopButtons } from "./comps/ControlsTopButtons"; @@ -41,6 +42,7 @@ import { FocalLengthDisplay } from "./comps/FocalLengthDisplay/FocalLengthDispla import { OnboardingHelper } from "./comps/OnboardingHelper"; import { Outliner } from "./comps/Outliner"; import { PoseModeSelector } from "./comps/PoseModeSelector"; +import { PreviewBox } from "./comps/PreviewBox"; import { PreviewEngineCamera } from "./comps/PreviewEngineCamera"; import { SceneContainer } from "./comps/SceneContainer"; import { addCharacter, addObject, setCameraAspect } from "./actions"; @@ -74,6 +76,7 @@ export const Stage3DBody = () => { (s) => s.setIsPromptBoxFocused, ); const gridVisible = usePageSceneStore((s) => s.gridVisible); + const previewImageUrl = usePageSceneStore((s) => s.sceneMeta.previewImageUrl); const isViewOnly = useIsViewOnly(); const addCamera = usePageSceneStore((s) => s.addCamera); const updateCamera = usePageSceneStore((s) => s.updateCamera); @@ -344,6 +347,9 @@ export const Stage3DBody = () => {
+
+ +
)} @@ -364,8 +370,7 @@ export const Stage3DBody = () => { {!isViewOnly && } - {/* Future: slot when isViewOnly — shows the - author's generated still next to the camera. */} + {isViewOnly && } {!isViewOnly &&