get_option( 'a1tools_review_float_title', __( 'How was your experience?', 'a1-tools' ) ), 'prompt_subtitle' => get_option( 'a1tools_review_float_subtitle', __( 'Tap a star to rate us.', 'a1-tools' ) ), 'positive_threshold' => get_option( 'a1tools_review_float_threshold', '4' ), ); } /** * Enqueue the Review Funnel assets + the launcher's own inline CSS/JS when * the floating launcher is enabled. * * @since 2.6.0 * @return void */ function a1tools_review_float_enqueue() { if ( is_admin() || ! a1tools_review_float_enabled() ) { return; } // Don't intrude on the Elementor editor canvas. if ( function_exists( 'a1tools_is_elementor_editor' ) && a1tools_is_elementor_editor() ) { return; } if ( wp_style_is( 'a1tools-review', 'registered' ) ) { wp_enqueue_style( 'a1tools-review' ); } if ( wp_script_is( 'a1tools-review', 'registered' ) ) { wp_enqueue_script( 'a1tools-review' ); } $position = get_option( 'a1tools_review_float_position', 'br' ) === 'bl' ? 'bl' : 'br'; $side = $position === 'bl' ? 'left' : 'right'; $css = ' .a1tools-review-float__launcher{position:fixed;bottom:22px;' . $side . ':22px;z-index:99990;display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border:0;border-radius:999px;background:#f5a623;color:#fff;font-size:15px;font-weight:600;line-height:1;cursor:pointer;box-shadow:0 6px 20px rgba(0,0,0,.18);transition:transform .15s ease,box-shadow .15s ease} .a1tools-review-float__launcher:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.22)} .a1tools-review-float__launcher .a1tools-review-float__icon{font-size:18px;line-height:1} .a1tools-review-float__overlay{position:fixed;inset:0;z-index:99991;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(15,23,42,.55)} .a1tools-review-float__overlay[hidden]{display:none} .a1tools-review-float__dialog{position:relative;width:100%;max-width:460px;max-height:90vh;overflow:auto;background:#fff;border-radius:14px;padding:28px 24px;box-shadow:0 24px 60px rgba(0,0,0,.35)} .a1tools-review-float__close{position:absolute;top:10px;right:12px;width:32px;height:32px;border:0;background:transparent;font-size:26px;line-height:1;color:#64748b;cursor:pointer;border-radius:8px} .a1tools-review-float__close:hover{background:#f1f5f9;color:#0f172a} @media (prefers-reduced-motion:reduce){.a1tools-review-float__launcher{transition:none}} '; wp_add_inline_style( 'a1tools-review', $css ); $js = "(function(){ function ready(fn){if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',fn);}else{fn();}} ready(function(){ var launcher=document.querySelector('.a1tools-review-float__launcher'); var overlay=document.getElementById('a1tools-review-float-modal'); if(!launcher||!overlay)return; var dialog=overlay.querySelector('.a1tools-review-float__dialog'); var closeBtn=overlay.querySelector('.a1tools-review-float__close'); function open(){overlay.hidden=false;launcher.setAttribute('aria-expanded','true');var f=overlay.querySelector('.a1tools-review__star');if(f){f.focus();}} function close(){overlay.hidden=true;launcher.setAttribute('aria-expanded','false');launcher.focus();} launcher.addEventListener('click',open); if(closeBtn)closeBtn.addEventListener('click',close); overlay.addEventListener('click',function(e){if(e.target===overlay)close();}); document.addEventListener('keydown',function(e){if(e.key==='Escape'&&!overlay.hidden)close();}); }); })();"; wp_add_inline_script( 'a1tools-review', $js, 'after' ); } add_action( 'wp_enqueue_scripts', 'a1tools_review_float_enqueue' ); /** * Render the launcher button + modal (with the funnel inside) into the footer. * * @since 2.6.0 * @return void */ function a1tools_review_float_render() { if ( is_admin() || ! a1tools_review_float_enabled() ) { return; } if ( function_exists( 'a1tools_is_elementor_editor' ) && a1tools_is_elementor_editor() ) { return; } if ( ! function_exists( 'a1tools_render_review_funnel' ) ) { return; } $position = get_option( 'a1tools_review_float_position', 'br' ) === 'bl' ? 'bl' : 'br'; $label = get_option( 'a1tools_review_float_button_label', __( 'Rate us', 'a1-tools' ) ); $funnel = a1tools_render_review_funnel( a1tools_review_float_settings() ); ?>