web/repo: a diff's file heads and a workflow's step heads are a line tall plus a little room, not two
109 unmodified linesExpand all110111112113114114115116117118119617 unmodified linesExpand all109 unmodified linesExpand all stock, showStat = true }: Props = $props();
// FileCardHeader: a 1.25rem line, its padding and its two borders const HEADER_HEIGHT = remToPx(2.25) + 2; const HEADER_HEIGHT = remToPx(1.75) + 2; const DIFF_BOTTOM_BORDER = 1; const LOOKAHEAD_ITEMS = 8;
let root: HTMLElement | undefined = $state();617 unmodified linesExpand all23 unmodified lines2425262728282930313234 unmodified lines23 unmodified lines }: Props = $props();
const isInteractive = $derived(collapsible && onToggle != null); const titleClass = "flex min-w-0 flex-1 items-center gap-xs overflow-hidden px-2.5 py-xs text-left text-foreground-default select-none"; "flex min-w-0 flex-1 items-center gap-xs overflow-hidden px-2.5 py-2xs text-left text-foreground-default select-none";</script>
<div class={[34 unmodified lines36 unmodified lines37383940414142434445495 unmodified linesExpand all54154254354454554554654754754854955055182 unmodified lines36 unmodified lines type HeaderSlots = ReturnType<typeof workflowLogs>;
// initial row heights, measurement corrects wrapped lines after mount const ROW_HEIGHT: Record<LogRow["kind"], number> = { step: remToPx(2.75), step: remToPx(2), command: remToPx(1.375), line: remToPx(1.375), gap: remToPx(0.5) };495 unmodified linesExpand all last: isLastRow(rows, stickyInfo.index), stepStatus: statusById.get(stickyInfo.step.id) })} <!-- the negative margin is one whole step row, so this copy lands exactly over the real one. it only stays right while ROW_HEIGHT.step is 2.75rem --> the real one. it only stays right while ROW_HEIGHT.step is 2rem --> <div class="pointer-events-auto sticky top-0 z-20 -mb-11 w-full" class="pointer-events-auto sticky top-0 z-20 -mb-8 w-full" style="transform: translateY({stickyInfo.offset}px)" > <button type="button"82 unmodified lines