Function
ErrorPanel
({
error,
onRetry,
className,
}: {
error: string;
onRetry?: () => void;
className?: string;
})
Source from the content-addressed store, hash-verified
| 22 | |
| 23 | /** Destructive-tinted alert with an optional Retry button. */ |
| 24 | export function ErrorPanel({ |
| 25 | error, |
| 26 | onRetry, |
| 27 | className, |
| 28 | }: { |
| 29 | error: string; |
| 30 | onRetry?: () => void; |
| 31 | className?: string; |
| 32 | }) { |
| 33 | return ( |
| 34 | <div className={cn("tdp-error", className)} role="alert"> |
| 35 | <span className="tdp-error-text">{error}</span> |
| 36 | {onRetry && ( |
| 37 | <Button |
| 38 | size="sm" |
| 39 | variant="destructive" |
| 40 | onClick={onRetry} |
| 41 | className="tdp-error-retry" |
| 42 | > |
| 43 | Retry |
| 44 | </Button> |
| 45 | )} |
| 46 | </div> |
| 47 | ); |
| 48 | } |
| 49 | |
| 50 | /** Muted, animated placeholder bars for loading states. */ |
| 51 | export function SkeletonLines({ |
Callers
nothing calls this directly
Tested by
no test coverage detected