| import { CSSProperties } from "react"; |
| import cn from "../utils/classnames.ts"; |
|
|
| export default function ModelLoader({ |
| progress, |
| className = "", |
| style, |
| }: { |
| progress: number; |
| className?: string; |
| style?: CSSProperties; |
| }) { |
| return ( |
| <div className={cn("space-y-4", className)} style={style}> |
| <div className="space-y-2 mt-8"> |
| <div className="flex justify-between items-center"> |
| <span className="text-sm font-medium text-muted-foreground"> |
| Loading model... |
| </span> |
| <span className="text-sm text-primary animate-pulse-soft font-mono font-bold"> |
| {progress.toFixed(2)}% |
| </span> |
| </div> |
| <div className="w-full bg-muted rounded-full h-2 overflow-hidden"> |
| <div |
| className="bg-primary h-full transition-all duration-300 ease-out relative overflow-hidden" |
| style={{ width: `${progress}%` }} |
| > |
| <div className="absolute inset-0 bg-linear-to-r from-transparent via-white/20 to-transparent animate-[shimmer_2s_infinite]" /> |
| </div> |
| </div> |
| <p className="text-xs text-muted-foreground text-center"> |
| This may take a few moments. Please don't close the page. |
| </p> |
| </div> |
| </div> |
| ); |
| } |
|
|