'use client'; import React, { createContext, useContext, useState } from 'react'; import type { ReactNode } from 'react'; import { Button } from '@/components/ui'; import { type ComponentProps } from 'react'; import { cn } from '@/lib/utils'; type TVModeContextProps = { tvMode: boolean; toggleTVMode: () => void; }; type TVToggleProps = { buttonClassName?: ComponentProps['className']; buttonProps?: Omit, 'className'>; size?: number; }; const TVModeContext = createContext(undefined); const TVModeProvider = ({ children }: { children: ReactNode }) => { const [tvMode, setTVMode] = useState(false); const toggleTVMode = () => { setTVMode((prev) => !prev); }; return ( {children} ); }; const useTVMode = () => { const context = useContext(TVModeContext); if (!context) { throw new Error('useTVMode must be used within a TVModeProvider'); } return context; }; // TV Icon Component with animations const TVIcon = ({ tvMode, size = 25 }: { tvMode: boolean; size?: number }) => { return (
{/* TV Screen */} {/* TV Stand */} {/* Corner arrows - animate based on mode */} {tvMode ? ( // Exit fullscreen arrows (pointing inward) <> ) : ( // Enter fullscreen arrows (pointing outward) <> )} {/* Optional: Screen content indicator */}
); }; const TVToggle = ({ buttonClassName, buttonProps = { variant: 'outline', size: 'default', }, size = 25, }: TVToggleProps) => { const { tvMode, toggleTVMode } = useTVMode(); return ( ); }; export { TVModeProvider, useTVMode, TVToggle };