import { TONE_SURFACE } from "~/ui/tones"; import { useDemoTimeline } from "~/hooks/use-demo-timeline"; import { Avatar } from "~/ui/Avatar"; import { Badge } from "~/ui/Badge"; import { StatusDot } from "~/ui/StatusDot"; import { cn } from "~/utils/cn"; import { DemoWindow } from "../DemoWindow"; const STEPS = 6; const INTERVAL_MS = 1100; const APPROVED_AT = 4; const QUEUED_AT = 5; const CHECKS = [ { name: "ci / lint", done: 1, time: "9s" }, { name: "ci / test (node 22)", done: 2, time: "38s" }, { name: "ci / test (node 24)", done: 3, time: "41s" }, ] as const; function queuePhase(step: number): { state: string; text: string } { if (step >= STEPS) return { state: "success", text: "Merged by the queue into main" }; if (step >= QUEUED_AT) return { state: "in_progress", text: "Testing against latest main…" }; return { state: "queued", text: "Auto-merge when ready" }; } function checkState(step: number, done: number): string { if (step >= done) return "success"; return step >= done - 1 ? "in_progress" : "queued"; } export function PullRequestDemo({ className }: { className?: string }) { const step = useDemoTimeline(STEPS, INTERVAL_MS); const approved = step >= APPROVED_AT; const merged = step >= STEPS; const queue = queuePhase(step); return (

Add fuzzy matching to the command palette #128

{merged ? "Merged" : "Open"} mara {merged ? "merged" : "wants to merge"} into main
{queue.text}
); }