Review stream tweaks (#20656)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions

* add blue dot instead of blue outline

* fix layout for portrait cameras

* fix light mode
This commit is contained in:
Josh Hawkins 2025-10-24 17:30:12 -05:00 committed by GitHub
parent 83fa651ada
commit 9ec65d7aa9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 71 additions and 67 deletions

View File

@ -291,19 +291,29 @@ function ReviewGroup({
return ( return (
<div <div
data-review-id={id} data-review-id={id}
className={`cursor-pointer rounded-lg bg-secondary p-3 outline outline-[3px] -outline-offset-[2.8px] ${ className="cursor-pointer rounded-lg bg-secondary py-3"
isActive
? "shadow-selected outline-selected"
: "outline-transparent duration-500"
}`}
> >
<div <div
className="flex items-center justify-between" className={cn(
"flex items-start",
open && "border-b border-secondary-highlight pb-4",
)}
onClick={() => { onClick={() => {
onActivate?.(); onActivate?.();
onSeek(start); onSeek(start);
}} }}
> >
<div className="ml-4 mr-2 mt-1.5 flex flex-row items-start">
<LuCircle
className={cn(
"size-3",
isActive
? "fill-selected text-selected"
: "fill-muted duration-500 dark:fill-secondary-highlight dark:text-secondary-highlight",
)}
/>
</div>
<div className="mr-3 flex w-full justify-between">
<div className="ml-1 flex flex-col items-start gap-1.5"> <div className="ml-1 flex flex-col items-start gap-1.5">
<div className="flex flex-row gap-3"> <div className="flex flex-row gap-3">
<div className="text-sm font-medium">{displayTime}</div> <div className="text-sm font-medium">{displayTime}</div>
@ -313,7 +323,7 @@ function ReviewGroup({
key={`${lbl}-${idx}`} key={`${lbl}-${idx}`}
className="rounded-full bg-muted-foreground p-1" className="rounded-full bg-muted-foreground p-1"
> >
{getIconForLabel(lbl, "size-3 text-primary dark:text-white")} {getIconForLabel(lbl, "size-3 text-white")}
</div> </div>
))} ))}
</div> </div>
@ -343,7 +353,6 @@ function ReviewGroup({
e.stopPropagation(); e.stopPropagation();
setOpen((v) => !v); setOpen((v) => !v);
}} }}
aria-label={open ? "Collapse" : "Expand"}
className="ml-2 inline-flex items-center justify-center rounded p-1 hover:bg-secondary/10" className="ml-2 inline-flex items-center justify-center rounded p-1 hover:bg-secondary/10"
> >
{open ? ( {open ? (
@ -353,9 +362,10 @@ function ReviewGroup({
)} )}
</div> </div>
</div> </div>
</div>
{open && ( {open && (
<div className="mt-2 space-y-0.5"> <div className="space-y-0.5">
{shouldFetchEvents && isValidating && !fetchedEvents ? ( {shouldFetchEvents && isValidating && !fetchedEvents ? (
<ActivityIndicator /> <ActivityIndicator />
) : ( ) : (
@ -385,10 +395,7 @@ function ReviewGroup({
> >
<div className="ml-1.5 flex items-center gap-2 text-sm font-medium"> <div className="ml-1.5 flex items-center gap-2 text-sm font-medium">
<div className="rounded-full bg-muted-foreground p-1"> <div className="rounded-full bg-muted-foreground p-1">
{getIconForLabel( {getIconForLabel(audioLabel, "size-3 text-white")}
audioLabel,
"size-3 text-primary dark:text-white",
)}
</div> </div>
<span>{getTranslatedLabel(audioLabel)}</span> <span>{getTranslatedLabel(audioLabel)}</span>
</div> </div>
@ -446,9 +453,9 @@ function EventList({
<> <>
<div <div
className={cn( className={cn(
"rounded-md bg-secondary p-2 outline outline-[3px] -outline-offset-[2.8px]", "rounded-md bg-secondary p-2",
event.id == selectedObjectId event.id == selectedObjectId
? "bg-secondary-highlight shadow-selected outline-selected" ? "bg-secondary-highlight"
: "outline-transparent duration-500", : "outline-transparent duration-500",
event.id != selectedObjectId && event.id != selectedObjectId &&
(effectiveTime ?? 0) >= (event.start_time ?? 0) - 0.5 && (effectiveTime ?? 0) >= (event.start_time ?? 0) - 0.5 &&
@ -476,10 +483,7 @@ function EventList({
: "bg-muted-foreground", : "bg-muted-foreground",
)} )}
> >
{getIconForLabel( {getIconForLabel(event.label, "size-3 text-white")}
event.label,
"size-3 text-primary dark:text-white",
)}
</div> </div>
<div className="flex items-end gap-2"> <div className="flex items-end gap-2">
<span>{getTranslatedLabel(event.label)}</span> <span>{getTranslatedLabel(event.label)}</span>
@ -593,7 +597,9 @@ function LifecycleItem({
<div className="flex w-full flex-row justify-between"> <div className="flex w-full flex-row justify-between">
<Tooltip> <Tooltip>
<TooltipTrigger> <TooltipTrigger>
<span>{getLifecycleItemDescription(item)}</span> <div className="flex items-start text-left">
{getLifecycleItemDescription(item)}
</div>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent> <TooltipContent>
<div className="mt-1 flex flex-wrap items-start gap-3 text-sm text-secondary-foreground"> <div className="mt-1 flex flex-wrap items-start gap-3 text-sm text-secondary-foreground">

View File

@ -695,7 +695,7 @@ export function RecordingView({
"flex flex-1 flex-wrap", "flex flex-1 flex-wrap",
isDesktop isDesktop
? timelineType === "detail" ? timelineType === "detail"
? "w-full" ? "md:w-[40%] lg:w-[70%] xl:w-full"
: "w-[80%]" : "w-[80%]"
: "", : "",
)} )}
@ -703,9 +703,7 @@ export function RecordingView({
<div <div
className={cn( className={cn(
"flex size-full items-center", "flex size-full items-center",
timelineType === "detail" && isDesktop mainCameraAspect == "tall"
? "flex-col"
: mainCameraAspect == "tall"
? "flex-row justify-evenly" ? "flex-row justify-evenly"
: "flex-col justify-center gap-2", : "flex-col justify-center gap-2",
)} )}
@ -975,7 +973,7 @@ function Timeline({
className={cn( className={cn(
"relative", "relative",
isDesktop isDesktop
? `${timelineType == "timeline" ? "w-[100px]" : timelineType == "detail" ? "w-[30%]" : "w-60"} no-scrollbar overflow-y-auto` ? `${timelineType == "timeline" ? "w-[100px]" : timelineType == "detail" ? "w-[30%] min-w-[350px]" : "w-60"} no-scrollbar overflow-y-auto`
: `overflow-hidden portrait:flex-grow ${timelineType == "timeline" ? "landscape:w-[100px]" : timelineType == "detail" && isDesktop ? "flex-1" : "landscape:w-[300px]"} `, : `overflow-hidden portrait:flex-grow ${timelineType == "timeline" ? "landscape:w-[100px]" : timelineType == "detail" && isDesktop ? "flex-1" : "landscape:w-[300px]"} `,
)} )}
> >