Saga Mini Cast Page
Saga · Prototype · Round 1 · Oct 10, 2026

Mini cast page

One small, cohesive person preview for every person tap inside a sheet or a card, in place of the bare slide-up sheets. It reads as the person page in small: the same header, the same section names, text links with ↗, glass only on floating chrome.

Round 1. From #442 (the weak slide-up sheets, alignment pass) and the sprint review. Builds on NathanLaneSheet (WelcomeSheets.tsx:393).

Today

iPhone 17 Pro Max simulator (iOS 26.5), ios/review at 25717998, staging, the smoke account. Jamie Lee Curtis → Film lineage → Janet Leigh; then Psycho's Awards sheet; Spotlight; Swipe's card back.

Jamie Lee Curtis's person page headerThe person pageWhat the mini page has to echo: centered photo, name, department, Born and birthplace rows, the awards line, the section strip (Biography, Milestones, Family, Awards, Credits).
Janet Leigh's family sheetFilm lineage → Janet LeighFamilyMemberSheet.tsx:36. About 674 pt of the 956 pt screen, for one rail and one marriage.
Psycho's Awards sheetAwards sheet → a nomineeAwardsSection.tsx:221. Tapping Janet Leigh closes the sheet and pushes her whole page.
The Swipe card back with its castSwipe card back → castCardBack.tsx:303. A cast tap leaves Swipe for the full page. Season guest stars (season/[season].tsx:400) do the same.
Spotlight with a person resultSpotlight → a personSpotlight.tsx:95. Opens the full page over the results. You searched for them, so the page is the answer; I'd keep this.
T1Tall from chrome, not contentIts height comes from padding, one rail and a pinned footer. A person with no marriages still gets a 600 pt drawer.
T2A different header and section namesAvatar on the left, "Known for", "Marriages". The person page says Credits and Family, centers the photo, and shows Born, the birthplace and awards. No bio, milestones or awards here.
T3Two stacked full-width buttons"See their family" and "See details" pinned at the bottom of a sheet that isn't a task (ui-patterns: a sheet ends with its one action, or none).
T4A spinner while it loadsThe tap already knows the name, photo and relation, but the sheet shows only a spinner.
T5Three taps leave where you wereAwards nominees close the sheet, card-back cast leave Swipe, guest stars leave the season. There's no way to glance at someone and stay put.

The shape: how the mini page appears and grows

The same mini page in three containers. Tap Janet Leigh in each phone (or use the buttons). Timings come from @/lib/motion; springs are drawn as their nearest curve.

BGrows from the avatar
The tapped photo lifts and a floating card grows out of it. Pull up and the card keeps growing into the full page; close and it shrinks back into the face.
Opens: card 340 ms CHISEL from the avatar, content 120 ms. Into the page: FOLD 460 ms. Back to the face: 280 ms.
CPeek and pop
Like iOS link previews: touch and hold a person for a preview with a menu under it; tap the preview to pop into the page. A plain tap opens the page.
Hold 500 ms, then blur 180 ms and the preview on SPRING.snappy. Pop: 350 ms. Plain tap: the stack's push.

Inside the mini page: states

The content every option shares, at rest in A's sheet. Order follows the person page; the one change is that Credits moves up to second, because a preview's first job is "who is this, and what were they in".

1At rest (medium)
Header, two lines of biography with Wikipedia ↗, the top of Credits.
2Pulled up (large)
Milestones, Family (with See their family in the tree), Awards, then See full page.
3Loading
Drawn from what was tapped (photo, name, relation) at once; the rest shimmers. No spinner.
4No page on Saga
A Wikidata-only relative: what we know, See their family, and no See full page (never a dead link).

Where it opens

Every person tap from inside a sheet or a card. Taps on a showcase page (a title page's cast, the cast wall) and in Spotlight keep opening the full page.

WhereTodayWith the mini pageIts context line
Film lineage treeFamilyMemberSheet (FamilyTree.tsx:250)The mini page. Family gains a "See their family" row, hidden when they're already in the middle. Replaces FamilyMemberSheet.Mother · Actor
Awards sheet, a nomineeCloses the sheet, pushes the page (AwardsSection.tsx:221)The mini page takes the Awards sheet's place (one sheet on screen at a time); closing it returns to the title page.Won · Best Supporting Actress, Golden Globes 1961
Swipe card back, castLeaves Swipe for the page (CardBack.tsx:303)The mini page over the deck; you stay on the card.Marion Crane · 33 in Psycho
Season page, guest starsPushes the page (season/[season].tsx:400)The mini page over the season.Guest star · Episode 4
Spotlight, a personPushes the page (Spotlight.tsx:95)No change: searching for someone means you want their page.n/a

A, B and C compared

A · Miniature sheetB · Grows from the avatarC · Peek and pop
ContentEverything above: header, Biography (2 lines, ↗ links), Credits rail, Milestones, Family, Awards, See full page.The same, in a floating card that scrolls inside.Header and Credits only: a preview can't scroll or take taps. The rest is the menu (See full page, See their family, Share).
SizesTwo detents: medium about 62% of the screen (520 of 844 pt here), large to just under the status bar. On a Pro Max about 590 pt at rest, against today's 674.A 346 × 520 pt card floating over the dimmed, blurred page, then the whole screen.A 326 × 392 pt preview with a 236 pt menu under it.
Into the full pageTap the header (as today) or See full page at the end: the sheet goes down as the page pushes. usePerson is already loaded, so the page opens with no spinner.Pull up, or tap the header: the card grows to fill the screen and the photo grows from 72 to 128 pt into the page's header. Back goes to where you tapped.Tap the preview: it pops into the page. Or a plain tap on the person goes straight there.
Motion280 ms CHISEL up and down, SPRING.sheet between detents, pull to dismiss as every sheet. Reduce Motion: 120 ms fades.340 ms from the avatar, FOLD 460 ms into the page, 280 ms back into the face. Reduce Motion: crossfades.500 ms hold, carve(1) haptic, SPRING.snappy, 350 ms pop. Reduce Motion: fades.
VoiceOverModal; focus lands on the name ("Janet Leigh, Mother, Actor. See full page", a link). The grabber is adjustable: swipe up or down to change size, like native sheets. Scrub to close.The same once open; the flight is decorative and skipped.Holding isn't a VoiceOver gesture: each person needs a "Preview" custom action, which then reads like A. Two paths to keep in step.
WebThe same sheet. On wide screens it opens straight at large height, centered; Esc closes, focus is trapped, the wheel scrolls it.A View Transition where the browser has it, a fade where it doesn't.No hold on phone browsers (the browser's own image menu wins). Desktop could show it on hover. Otherwise taps open the page.
AndroidThe same drawn-glass sheet; back closes it, rows ripple.Hand-built with Reanimated; untested on Android.Long-press is natural, but the native preview is iOS only: a second, drawn version or none.
CostOTA, JS only. Sheet gets a detents prop. One new PersonPreview (about 220 lines) built from Page.Header, PosterRow, Milestones and AwardsLine, opened through one host; delete FamilyMemberSheet (181 lines). No new endpoint and no new rows: the same usePerson request the page makes. Risk: handing the scroll from medium to large; fall back to the grabber if it fights.OTA if hand-built (measure the avatar, draw an overlay, animate it); Reanimated's shared transitions are still experimental. The step into the page needs a custom route transition. High native risk, about 2 to 3 times A.expo-router's Link.Preview draws the native preview on iOS (check that it's in builds 3 and 4 before promising OTA). The tree still needs a tap that keeps you there, so it keeps a sheet as well: two ways to do one job.
DropsThe two stacked buttons; "Known for" and "Marriages" as headings (Marriages and Partners stay, dated, inside Family).A sheet's familiar pull-to-dismiss (it's a card); some web and Android polish.Discoverability: nobody holds a face by default. On web and Android it's mostly not there.
FixesT1, T2, T3, T4, T5T1, T2, T3, T4, T5T2, T4; T5 only for people who hold

My recommendation

A, the miniature sheet. It reads as the person page in small (the same header, the same section names, the same ↗ links), it's the one sheet people already know how to pull and dismiss, and it works the same on iPhone, web and Android. It ships over the air as one component that replaces FamilyMemberSheet and costs no new rows. B is the prettiest moment, but its step into the page is a custom native transition with real risk, and the face-to-card move can come later on top of A. C hides behind a hold, isn't on web or Android, and still needs a sheet in the tree.

The build, if you pick A:

  1. Sheet gains detents (medium, large) with SPRING.sheet and an adjustable grabber for VoiceOver.
  2. PersonPreview mounted once and opened with the tapped person plus a context line; opened from a sheet, it takes that sheet's place.
  3. Wire Film lineage, Awards nominees, Swipe's card-back cast and season guest stars; delete FamilyMemberSheet; update design.md's tree paragraph and ui-patterns' sheet list.

Which one: A, B, C, a mix (A now, B's lift from the avatar later), or another round?