import {useState} from 'react'; import {useTranslation} from 'react-i18next'; import {ImageOff, Palette, RotateCcw} from 'lucide-react'; import {Button} from '@/components/ui/button'; import {Card, CardContent, CardHeader, CardTitle} from '@/components/ui/card'; import {Label} from '@/components/ui/label'; import {Switch} from '@/components/ui/switch'; import {AccentPicker, CornersPicker} from './StylePickers.jsx'; import {equippedSkin} from '../utils/rewards.js'; import {usePreferences} from '../context/PreferencesContext.jsx'; import useSaveAppearance from '../hooks/useSaveAppearance.js'; import {coverUrl} from '../utils/games.js'; import {disableTilt, requestTilt, tiltAllowed, tiltNeedsPermission} from '../utils/parallax.js'; export default function AppearanceCard() { const {t} = useTranslation(); const {appearance, equipped} = usePreferences(); const saveAppearance = useSaveAppearance(); const [tilt, setTilt] = useState(tiltAllowed); const [tiltRefused, setTiltRefused] = useState(false); // requestTilt() starts inside the tap, as iOS demands. const changeTilt = (on) => { if (!on) { disableTilt(); setTilt(false); return; } requestTilt().then((granted) => { setTilt(granted); setTiltRefused(!granted); }); }; return ( {t('SETTINGS.APPEARANCE')} saveAppearance({accent})}/> saveAppearance({corners})}/> {equippedSkin(equipped) &&

{t('SETTINGS.SKIN_OVERRIDES')}

}

{t('SETTINGS.WIDE_LAYOUT_HINT')}

saveAppearance({wideLayout})}/>

{t('SETTINGS.REDUCE_MOTION_HINT')}

saveAppearance({reduceMotion})}/>
{tiltNeedsPermission() && (

{t(tiltRefused ? 'SETTINGS.TILT_DENIED' : 'SETTINGS.TILT_HINT')}

)}
{!appearance.backgroundAppid && (

{t('SETTINGS.BACKGROUND_HINT')}

)}
{appearance.backgroundAppid && (
{ event.currentTarget.hidden = true; }} className="h-10 w-20 rounded-md object-cover"/>
)}
{appearance.showBanner && !appearance.bannerAppid && (

{t('SETTINGS.BANNER_HINT')}

)}
saveAppearance({showBanner})}/>
{appearance.showBanner && appearance.bannerAppid && (
{ event.currentTarget.hidden = true; }} className="h-10 w-20 rounded-md object-cover"/>
)}
); }