import React, { useState, useEffect } from 'react'; import LockIcon from '@mui/icons-material/Lock'; import NoticeModal from './../NoticeModal/NoticeModal'; import { getNonce, isPro } from '../../Helpers'; interface QuizSettingsData { passing_score: number; show_results: boolean; show_correct_answers: boolean; reward_type: 'none' | 'coupon' | 'redirect'; reward_value: string; redirect_url: string; randomize_questions: boolean; randomize_answers: boolean; time_limit: number; collect_name: boolean; collect_email: boolean; display_mode: 'all_at_once' | 'step_by_step'; questions_per_step: number; step_navigation: 'numbers' | 'custom' | 'progress_bar'; custom_step_labels: string[]; require_login: boolean; allow_retake: boolean; quiz_tracking: 'ip_address' | 'browser_storage' | 'hybrid'; } interface QuizSettingsProps { settings: QuizSettingsData; onUpdate: (settings: QuizSettingsData) => void; } const QuizSettings: React.FC = ({ settings, onUpdate }) => { const [isProUser, setIsProUser] = useState(false); const [modalConfig, setModalConfig] = useState({ isOpen: false, type: 'toast' as 'success' | 'error' | 'confirmation' | 'premium' | 'toast', title: '', message: '', position: 'top-right' as 'top-right' | 'center', mode: 'success' as 'success' | 'error', onConfirm: () => { }, onClose: () => { }, confirmText: 'OK', declineText: 'Cancel' }); useEffect(() => { const isProuser = isPro(); setIsProUser(isProuser); }, []); const closeModal = () => { setModalConfig(prev => ({ ...prev, isOpen: false })); }; const showProModal = () => { // alert('�Enjoy an awesome limited-time discount before it expires!'); setModalConfig({ isOpen: true, type: 'premium', title: '🚀 Upgrade to Pro', message: '�Enjoy an awesome limited-time discount before it expires!', position: 'center', mode: 'success', onConfirm: () => { window.open('https://wpazleen.com/simple-form-pricing/', '_blank'); closeModal(); }, onClose: closeModal, confirmText: 'Upgrade Now', declineText: 'Maybe Later' }); }; const updateSetting = (field: keyof QuizSettingsData, value: any) => { onUpdate({ ...settings, [field]: value, }); }; return (
{!isProUser && (
PRO
)}

Scoring & Results

updateSetting('passing_score', parseInt(e.target.value) || 0)} /> Minimum score required to pass the quiz (0-100)
{!isProUser && (
PRO
)}

Rewards

Reward users who pass the quiz
{settings.reward_type === 'coupon' && (
updateSetting('reward_value', e.target.value)} placeholder="Enter coupon code" disabled={!isProUser} /> This code will be displayed to users who pass
)} {settings.reward_type === 'redirect' && (
updateSetting('redirect_url', e.target.value)} placeholder="https://example.com/success" disabled={!isProUser} /> Users will be redirected here after passing
)}
{!isProUser && (
PRO
)}

User Information

Show name field before quiz starts
Show email field before quiz starts
{!isProUser && (
PRO
)}

Quiz Behavior

updateSetting('time_limit', parseInt(e.target.value) || 0)} disabled={!isProUser} /> Set to 0 for no time limit
{!isProUser && (
PRO
)}

Access Control

Only logged-in users can take this quiz
Users can take the quiz multiple times
How to track if users have already taken the quiz
{!isProUser && (
PRO
)}

Display Mode

Choose how questions are presented to users
{settings.display_mode === 'step_by_step' && ( <>
updateSetting('questions_per_step', parseInt(e.target.value) || 1)} disabled={!isProUser} /> Number of questions to show per step (1-10)
How to display step progress
{settings.step_navigation === 'custom' && (