diff --git a/STUDIO2-MOBILE-PROMPT.md b/STUDIO2-MOBILE-PROMPT.md index a70b46b..2a0677a 100644 --- a/STUDIO2-MOBILE-PROMPT.md +++ b/STUDIO2-MOBILE-PROMPT.md @@ -30,11 +30,13 @@ Mobile is a **viewer-first phone app** with sheets for the inspector and the que ├───────────────────────────────────────────────────────────┤ │ │ │ STAGE (contain, full remaining height) │ -│ │ -├ filmstrip scroll-x, tiles 72px ───────────────────────────┤ +│ Library (stage chrome) · eye ≥48px top-right │ ├ [Slots] [Prompt] [Look] [Gen] Generate (amber, 48px) ─┤ └───────────────────────────────────────────────────────────┘ -``` + +Library is a **stage button** that opens the Library modal/sheet (same tiles, +filters, Use as photo / Copy / Load / Delete). The under-stage filmstrip row +is revoked — recents live in the modal (newest first).``` Bottom **dock** is 4 tabs that open sheets, plus Generate always visible: diff --git a/assets/css/display.css b/assets/css/display.css index 2f88620..7ae9a5d 100644 --- a/assets/css/display.css +++ b/assets/css/display.css @@ -332,7 +332,7 @@ flex-direction: column; } -/* Stage: fills center column above filmstrip + transport */ +/* Stage: fills center column above transport */ .viewer-frame { position: relative; display: flex; @@ -356,31 +356,65 @@ object-position: center; } -.eye-viewer { +.stage-chrome { position: absolute; top: 10px; right: 10px; + left: 10px; z-index: 5; + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + pointer-events: none; +} + +.stage-chrome > * { + pointer-events: auto; +} + +.stage-library { + display: inline-flex; + min-height: 44px; + align-items: center; + gap: 6px; + border: 1px solid var(--line); + border-radius: 8px; + background: #000a; + padding: 0 14px; + color: var(--text); + font: inherit; + font-weight: 600; + cursor: pointer; +} + +.stage-library:hover { + border-color: var(--amber); +} + +.stage-library-count { + color: var(--muted); + font-weight: 500; +} + +.eye-viewer { display: grid; - width: 28px; - height: 28px; + width: 44px; + height: 44px; + flex-shrink: 0; place-items: center; border: 1px solid var(--line); - border-radius: 6px; + border-radius: 8px; background: #000a; cursor: pointer; } +.eye-viewer:hover { + border-color: var(--amber); +} + .filmstrip { - display: flex; - flex-shrink: 0; - gap: 8px; - height: 80px; - align-items: center; - overflow-x: auto; - border-top: 1px solid var(--line); - padding: 8px 10px; - background: var(--panel); + display: none; } .tile { @@ -396,7 +430,6 @@ @media (min-width: 1440px) { .tile { width: 120px; height: 80px; } - .filmstrip { height: 96px; } } .tile[data-active='true'] { @@ -438,28 +471,7 @@ .tile .tile-trash { right: 22px; } .strip-actions { - display: flex; - flex-wrap: wrap; - gap: 8px; - flex-shrink: 0; - border-top: 1px solid var(--line); - padding: 8px 10px; - background: var(--panel); -} - -.strip-actions button { - border: 1px solid var(--line); - border-radius: 6px; - background: transparent; - color: var(--text); - padding: 4px 10px; - font-size: var(--type-sm); - cursor: pointer; -} - -.strip-actions button:hover { - border-color: var(--amber); - color: var(--amber); + display: none; } .neg-add-row { diff --git a/components/studio2/Bench.vue b/components/studio2/Bench.vue index ce18fa2..91b279d 100644 --- a/components/studio2/Bench.vue +++ b/components/studio2/Bench.vue @@ -199,16 +199,24 @@
{{ selected.kind==='track' ? 'Track loaded · preview hidden' : selected.role==='input' ? 'Still loaded · preview hidden' : 'Output hidden' }}
@@ -232,51 +240,11 @@Select a still or clip in the strip
+Open Library to pick a still or clip
No items in this folder yet.
+{{ ctx.selected.kind==='track' ? 'Track loaded · preview hidden' : 'Preview hidden' }}
@@ -73,46 +81,22 @@ playsinline />Select a still or clip
+Open Library to pick a still or clip