import React, { useState } from 'react'; import { __ } from '@wordpress/i18n'; import { useNavigate } from 'react-router-dom'; import Header from '../components/layout/Header'; import PluginPage from '../components/layout/PluginPage'; import Card from '../components/ui/card'; import ProAlert from '../components/ui/pro-alert'; import { Checkbox } from '../components/ui/checkbox'; import { Tooltip } from '../components/ui/tooltip'; import SettingsButton from '../components/ui/settings-button'; import { ConvertToAvifIcon } from '../components/icons'; interface FileFormat { label: string; value: string; checked: boolean; } const DEFAULT_FORMATS: FileFormat[] = [ { label: 'JPEG', value: 'jpeg', checked: false }, { label: 'PNG', value: 'png', checked: false }, { label: 'JPG', value: 'jpg', checked: true }, { label: 'GIF', value: 'gif', checked: false }, { label: 'BMP', value: 'bmp', checked: false }, { label: 'WebP', value: 'webp', checked: false }, ]; export default function ConvertToAvif({ tooltip }: { tooltip?: string } = {}) { const navigate = useNavigate(); const [alertOpen, setAlertOpen] = useState(false); const openAlert = () => setAlertOpen(true); const [formats, setFormats] = useState(DEFAULT_FORMATS); const [chunkSize, setChunkSize] = useState('20'); const toggleFormat = (index: number) => { setFormats((prev) => prev.map((f, i) => (i === index ? { ...f, checked: !f.checked } : f)), ); }; const detectImageUrl = (window.THUMBPRESS?.assets_url || '') + 'admin/img/no-search-result.png'; return ( <>
navigate('/settings?tab=convert-to-avif')} />} >

{__('Ready to Convert to AVIF?', 'image-sizes')}

{__('Select file formats above and click "Convert Now" to convert images to AVIF for even smaller file sizes.', 'image-sizes')}

{formats.map((format, index) => ( ))}
setChunkSize(e.target.value)} placeholder="e.g. 50" className="flex w-full !rounded-lg !border !border-thumbpress-border bg-white !px-4 !h-[56px] text-sm placeholder:text-gray-400 focus:!outline-none focus:!shadow-none" />
setAlertOpen(false)} />
); }