import { Tooltip } from '@wordpress/components'; import { useMemo, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { ErrorMessage } from '@agent/components/ErrorMessage'; import { useThemeVariations } from '@agent/hooks/useThemeVariations'; import { useVariationOverride } from '@agent/hooks/useVariationOverride'; export const SelectThemeVariation = ({ onConfirm, onCancel }) => { const [css, setCss] = useState(''); const [selected, setSelected] = useState(null); const [duotoneTheme, setDuotoneTheme] = useState(null); const { undoChange } = useVariationOverride({ css, duotoneTheme }); const { variations, isLoading } = useThemeVariations(); const noVariations = !variations || variations.length === 0; const shuffled = useMemo( () => (variations ? variations.sort(() => Math.random() - 0.5) : []), [variations], ); const handleConfirm = () => { if (!selected) return; onConfirm({ data: { variation: variations.find((v) => v.title === selected) }, }); }; const handleCancel = () => { undoChange(); onCancel(); }; if (isLoading) { return (
{__('Loading variations...', 'extendify-local')}
); } if (noVariations) { return (
{__('No variations found', 'extendify-local')}
{__( 'We were unable to find any variations for your theme.', 'extendify-local', )}
); } return (
{shuffled?.slice(0, 10)?.map(({ title, css, settings }) => ( ))}
); }; const getColor = (settings, colorName) => { return settings?.color?.palette?.theme.find((item) => item.slug === colorName) ?.color; }; const getColors = (settings) => { return settings?.color?.palette?.theme ?.filter((item) => item.slug !== 'background') ?.reduce((acc, item) => { acc.push(item.color); return acc; }, []); };