feat(studio): storyboard frame contact-sheet grid (#1530)

Third PR in the Studio storyboarding stack. Renders the frames as a live
contact sheet inside the storyboard view.

- StoryboardGrid: ordered, responsive grid of frame tiles.
- StoryboardFrameTile: number badge, scaled non-interactive live preview
  iframe (via /api/projects/:id/preview/comp/<src>), title, duration,
  transition, and a status chip (outline / built / animated).
- Frames that are outline-only or whose src is missing render an explicit
  placeholder instead of an iframe.
- StoryboardView swaps its placeholder for the real grid.

With PR1-PR3 the storyboard view is end-to-end viewable against the
storyboard-sample fixture for UI/UX feedback.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
James Russo
2026-06-17 14:23:47 -07:00
committed by GitHub
co-authored by Claude Opus 4.8
parent 195d7aa7bd
commit 015529e663
8 changed files with 260 additions and 6 deletions
@@ -12,6 +12,13 @@ export interface StoryboardFrameView extends StoryboardFrame {
srcExists: boolean;
}
/** The companion narration script (SCRIPT.md), when present alongside the storyboard. */
export interface StoryboardScript {
exists: boolean;
path: string;
content: string;
}
/** Shape of `GET /api/projects/:id/storyboard`. */
export interface StoryboardResponse {
exists: boolean;
@@ -19,6 +26,7 @@ export interface StoryboardResponse {
globals: StoryboardGlobals;
frames: StoryboardFrameView[];
warnings: StoryboardWarning[];
script?: StoryboardScript;
}
export interface UseStoryboardResult {