import { WifiOff, AlertTriangle, Loader2, Lock } from "lucide-react";
type NoSignalVariant = "no-signal" | "error" | "loading" | "locked";
interface NoSignalProps {
variant?: NoSignalVariant;
message?: string;
children?: React.ReactNode;
}
const VARIANTS: Record<
NoSignalVariant,
{ icon: React.ReactNode; heading: string; defaultMessage: string }
> = {
"no-signal": {
icon: ,
heading: "No Signal",
defaultMessage: "Nothing is scheduled to play right now.",
},
error: {
icon: ,
heading: "Playback Error",
defaultMessage: "Something went wrong. Try switching channels.",
},
loading: {
icon: ,
heading: "Loading",
defaultMessage: "Tuning in…",
},
locked: {
icon: ,
heading: "Access Restricted",
defaultMessage: "You don't have permission to watch this channel.",
},
};
export function NoSignal({ variant = "no-signal", message, children }: NoSignalProps) {
const { icon, heading, defaultMessage } = VARIANTS[variant];
return (
{/* Static noise texture */}
{icon}
{heading}
{message ?? defaultMessage}
{children}
);
}
export type { NoSignalProps, NoSignalVariant };