diff --git a/packages/studio/src/components/TimelineToolbar.tsx b/packages/studio/src/components/TimelineToolbar.tsx index dfa9dbe937..f7632dbfa2 100644 --- a/packages/studio/src/components/TimelineToolbar.tsx +++ b/packages/studio/src/components/TimelineToolbar.tsx @@ -5,6 +5,7 @@ import { Magnet, MagnifyingGlassMinus, MagnifyingGlassPlus, + Rows, } from "@phosphor-icons/react"; import { useEnableKeyframes, @@ -20,6 +21,7 @@ import { timelineSliderToZoomPercent, } from "../player/components/timelineZoom"; import { useTimelineZoom } from "../player/components/useTimelineZoom"; +import { TRACK_H_MAX, TRACK_H_MIN } from "../player/components/timelineLayout"; import { usePlayerStore, type TimelineElement } from "../player"; import { Tooltip } from "./ui"; import { AudioMetersIcon } from "./icons/AudioMetersIcon"; @@ -41,6 +43,10 @@ interface DomEditSessionSlice extends EnableKeyframesSession { selectedGsapAnimations: GsapAnimation[]; } +// h-6 on a range input is the 24x24 WCAG 2.2 (2.5.8) target: the visible track stays 2px and the thumb 10px. +const RANGE_INPUT_CLASS = + "cursor-pointer appearance-none bg-transparent [&::-webkit-slider-runnable-track]:h-[2px] [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-neutral-700 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-text-0 [&::-webkit-slider-thumb]:-mt-1 [&::-webkit-slider-thumb]:shadow-[0_0_0_2px_#0a0a0a,0_1px_3px_rgba(0,0,0,0.5)] [&::-webkit-slider-thumb]:cursor-grab [&::-webkit-slider-thumb:active]:cursor-grabbing"; + export interface TimelineToolbarProps { domEditSession?: DomEditSessionSlice; onSplitElement?: (element: TimelineElement, splitTime: number) => void; @@ -159,6 +165,8 @@ export const TimelineToolbar = memo(function TimelineToolbar({ const thumbnailMode = usePlayerStore((s) => s.thumbnailMode); const setThumbnailMode = usePlayerStore((s) => s.setThumbnailMode); const thumbnailsVisible = thumbnailMode === "adaptive"; + const trackHeight = usePlayerStore((s) => s.trackHeight); + const setTrackHeight = usePlayerStore((s) => s.setTrackHeight); const audioMetersVisible = useAudioMetersVisible((s) => s.visible); const setAudioMetersVisible = useAudioMetersVisible((s) => s.setVisible); const projectHasAudio = useProjectHasAudio(); @@ -485,6 +493,21 @@ export const TimelineToolbar = memo(function TimelineToolbar({ + + + +