From f3186e12e0bff3afd1e11bc57611b39510b62fab Mon Sep 17 00:00:00 2001 From: ukimsanov Date: Sat, 11 Jul 2026 13:55:24 -0700 Subject: [PATCH] feat(studio): timeline visual refresh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What: visual pass on the timeline chrome — ruler, playhead, clip styling (now rendering the thumbnail modules), player controls, timeline theme and studio.css. Why: purely presentational; no timing or model changes. How: modified files only; consumes the thumbnail modules PR. Test plan: tsc --noEmit; bunx vitest run (suite unchanged); fallow audit clean. --- .../src/player/components/PlayerControls.tsx | 10 +- .../src/player/components/TimelineClip.tsx | 5 +- .../player/components/TimelineEmptyState.tsx | 4 +- .../src/player/components/TimelineRuler.tsx | 102 +++++++++--------- .../src/player/components/timelineTheme.ts | 7 +- .../player/components/useTimelinePlayhead.ts | 20 +--- packages/studio/src/styles/studio.css | 27 +++++ 7 files changed, 103 insertions(+), 72 deletions(-) diff --git a/packages/studio/src/player/components/PlayerControls.tsx b/packages/studio/src/player/components/PlayerControls.tsx index 5df14ed537..dd32c1342c 100644 --- a/packages/studio/src/player/components/PlayerControls.tsx +++ b/packages/studio/src/player/components/PlayerControls.tsx @@ -9,10 +9,8 @@ import { Tooltip } from "../../components/ui"; import { ShortcutsPanel } from "./ShortcutsPanel"; import { SpeedMenu } from "./SpeedMenu"; import { useSeekBarDrag, resolveSeekPercent } from "./useSeekBarDrag"; -import { useState } from "react"; export { resolveSeekPercent }; -type TimeDisplayMode = "time" | "frame"; /* ── Icon sub-components ─────────────────────────────────────────── */ @@ -369,7 +367,8 @@ export const PlayerControls = memo(function PlayerControls({ const outPoint = usePlayerStore((s) => s.outPoint); const setInPoint = usePlayerStore.getState().setInPoint; const setOutPoint = usePlayerStore.getState().setOutPoint; - const [timeDisplayMode, setTimeDisplayMode] = useState("time"); + const timeDisplayMode = usePlayerStore((s) => s.timeDisplayMode); + const setTimeDisplayMode = usePlayerStore.getState().setTimeDisplayMode; const progressFillRef = useRef(null); const progressThumbRef = useRef(null); @@ -428,10 +427,11 @@ export const PlayerControls = memo(function PlayerControls({ return (
@@ -456,7 +456,7 @@ export const PlayerControls = memo(function PlayerControls({ >