Restart repository history from target event
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import { ScrollArea } from "@/components/ui/scroll-area";
|
||||
import { Terminal } from "lucide-react";
|
||||
import { useEffect, useRef } from "react";
|
||||
import { motion, AnimatePresence } from "motion/react";
|
||||
|
||||
interface StatusLogProps {
|
||||
logs: string[];
|
||||
}
|
||||
|
||||
export function StatusLog({ logs }: StatusLogProps) {
|
||||
const scrollRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
// Auto-scroll to bottom when logs change
|
||||
useEffect(() => {
|
||||
if (scrollRef.current) {
|
||||
scrollRef.current.scrollIntoView({ behavior: "smooth" });
|
||||
}
|
||||
}, [logs]);
|
||||
|
||||
return (
|
||||
<div className="rounded-lg border bg-neutral-900/40 backdrop-blur text-gray-500 font-mono text-xs p-4 h-48 flex flex-col shadow-inner border-gray-900/30">
|
||||
<div className="flex items-center gap-2 mb-2 border-b border-gray-900/50 pb-1">
|
||||
<Terminal className="w-3 h-3" />
|
||||
<span className="uppercase tracking-wider text-[10px] text-gray-400">System Log</span>
|
||||
</div>
|
||||
<ScrollArea className="flex-1">
|
||||
<div className="flex flex-col gap-1 max-h-10">
|
||||
<AnimatePresence initial={false}>
|
||||
{logs.map((log, i) => (
|
||||
<motion.div
|
||||
key={`${i}-${log.substring(0, 10)}`} // Use index + content snippet for key to ensure uniqueness but allow animation
|
||||
initial={{ opacity: 0, x: -10 }}
|
||||
animate={{ opacity: 1, x: 0 }}
|
||||
className="break-all"
|
||||
>
|
||||
<span className="opacity-50 mr-2 select-none">{">"}</span>
|
||||
{log}
|
||||
</motion.div>
|
||||
))}
|
||||
</AnimatePresence>
|
||||
<div ref={scrollRef} />
|
||||
</div>
|
||||
</ScrollArea>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user