HEX
Server: Apache
System: Linux ecngx285.inmotionhosting.com 4.18.0-553.79.1.lve.el8.x86_64 #1 SMP Wed Oct 15 17:59:35 UTC 2025 x86_64
User: zeusxp5 (3862)
PHP: 8.3.28
Disabled: NONE
Upload Files
File: /home/zeusxp5/chuair.org/wp-content/themes/lifttruck/inc/panel/src/modal/OnboardingModal.jsx
import { Button, Flex } from '@wordpress/components';
import apiFetch from "@wordpress/api-fetch";
import { useEffect, useState } from "@wordpress/element";
import { Icon, close } from '@wordpress/icons';

const { __ } = wp.i18n;


function OnboardingModal() {
	const [skipOnboarding, setSkipOnboarding] = useState(false);
	
	const canSkipOnboarding = (skip) => {
		apiFetch({
			path: '/devia/v1/skip-onboarding',
			method: 'POST',
		}).then((response) => {
			setSkipOnboarding(true);

			if (!skip) {
				window.location.href = devia_options.dashboard_link;
				setSkipOnboarding(true);
			}
		});
	};


	useEffect(() => {
		if (devia_options.theme_options.skip_onboarding) {
			setSkipOnboarding(true);
		}

		const handleEsc = (event) => {
			if (event.key === 'Escape') {
				canSkipOnboarding(true);
			}
		};
		window.addEventListener('keydown', handleEsc);

		return () => {
			window.removeEventListener('keydown', handleEsc);
		};
	}, []);



	if (skipOnboarding) {
		return null;
	}

	return (
		<div className={"devia-modal-background"}>
			<div className={"devia-modal-content"}>
				<Button onClick={() => canSkipOnboarding(true)}
					className={"devia-modal-close"}><Icon icon={close} /></Button>

				<h2>{__(`Welcome to ${devia_options.name}!`, devia_options.text_domain)}</h2>
				<p>{__(`Visit the ${devia_options.name} Dashboard and Theme Setup Wizard (Admin Dashboard → ${devia_options.name} Theme) to get your site set up with just a few clicks. Head over there to get started!`, devia_options.text_domain)}</p>
				<Flex className={"devia-modal-inner"} justify='center' align='center' direction='column' gap="3">

					<iframe width="600" height="305" src={ devia_options.theme_params.video_tutorial } title="YouTube video player" frameborder="0" 
						allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
					</iframe>
					
					<Button variant="primary" onClick={() => canSkipOnboarding(false)}>{__(`View ${devia_options.name} Dashboard →`, devia_options.text_domain)}</Button>
				</Flex>
			</div>
		</div>
	);
}

export default OnboardingModal;