/** * Free Rollback Complete Modal. * Uses RollbackContext for state management. * * @param {Object} props Component properties * @param {Object} props.buttons Button configuration for the template * @return {JSX.Element} Complete template content */ import { ExternalLink, Icon, Button } from '@wordpress/components'; import { __, sprintf } from '@wordpress/i18n'; import { decodeEntities } from '@wordpress/html-entities'; import { useRollbackContext } from '@wp-rollback/shared-core/context/RollbackContext'; import { useEffect } from '@wordpress/element'; import { starFilled, backup, list, plugins } from '@wordpress/icons'; import RollbackButtons from '@wp-rollback/shared-core/components/modals/RollbackButtons'; import Lottie from 'lottie-react'; import rollbackCompleteAnimation from '@wp-rollback/shared-core/animations/rollback-complete.json'; const proFeatureChips = [ { icon: plugins, label: __( 'Premium plugins', 'wp-rollback' ) }, { icon: backup, label: __( 'Auto-archives', 'wp-rollback' ) }, { icon: list, label: __( 'Activity logs', 'wp-rollback' ) }, ]; const FreeCompleteTemplate = ( { buttons } ) => { const { rollbackInfo, rollbackVersion, setCurrentVersion } = useRollbackContext(); useEffect( () => { if ( rollbackVersion ) { setCurrentVersion( rollbackVersion ); } }, [ rollbackVersion, setCurrentVersion ] ); if ( ! rollbackInfo || ! rollbackVersion ) { return null; } const successMessage = sprintf( /* translators: 1: Asset name 2: Asset version */ __( '%1$s has been successfully rolled back to version %2$s.', 'wp-rollback' ), `${ decodeEntities( rollbackInfo.name ) }`, `${ rollbackVersion }` ); return ( <> { /* Hero — same as Pro: Lottie + title + message */ }
{ __( "Pro archives your version before every update and supports premium plugins like Elementor, Gravity Forms, and WooCommerce. Next time something breaks, you're one click from safety.", 'wp-rollback' ) }