Files
9router/src/shared/components/ProviderIcon.js
Andrew Peltekci 9fe4726f34 fix(ui): restore provider assets and model availability endpoint (#367)
* fix(usage): track lifetime request total beyond history cap

* fix(ui): restore provider assets and model availability endpoint
2026-03-23 09:16:10 +07:00

52 lines
1019 B
JavaScript

"use client";
import { useState } from "react";
import PropTypes from "prop-types";
export default function ProviderIcon({
src,
alt,
size = 32,
className = "",
fallbackText = "?",
fallbackColor,
}) {
const [errored, setErrored] = useState(false);
if (!src || errored) {
return (
<span
className={`inline-flex items-center justify-center font-bold rounded-lg ${className}`.trim()}
style={{
width: size,
height: size,
color: fallbackColor,
fontSize: Math.max(10, Math.floor(size * 0.38)),
}}
>
{fallbackText}
</span>
);
}
return (
<img
src={src}
alt={alt}
width={size}
height={size}
className={className}
onError={() => setErrored(true)}
/>
);
}
ProviderIcon.propTypes = {
src: PropTypes.string,
alt: PropTypes.string,
size: PropTypes.number,
className: PropTypes.string,
fallbackText: PropTypes.string,
fallbackColor: PropTypes.string,
};