s = AccessIQ_Settings::instance(); add_action( 'wp_enqueue_scripts', [ $this, 'enqueue' ] ); add_action( 'wp_footer', [ $this, 'render' ] ); } public function enqueue() { if ( ! $this->s->get( 'widget_enabled', true ) ) return; if ( ! $this->s->get( 'show_on_mobile', true ) && wp_is_mobile() ) return; wp_enqueue_style( 'accessiq-widget', ACCESSIQ_URL . 'public/css/widget.css', [], ACCESSIQ_VERSION ); wp_enqueue_script( 'accessiq-widget', ACCESSIQ_URL . 'public/js/widget.js', [], ACCESSIQ_VERSION, true ); $config = array( 'position' => $this->s->get( 'widget_position', 'bottom-right' ), 'color' => $this->s->get( 'widget_color', '#1d4ed8' ), 'features' => $this->s->get( 'widget_features', array( 'font_size', 'contrast', 'dyslexia_font', 'keyboard_nav' ) ), 'showOnMobile' => $this->s->get( 'show_on_mobile', true ) ? true : false, 'pluginUrl' => ACCESSIQ_URL, 'panel_width' => $this->s->get( 'widget_panel_width', 'normal' ), 'panel_height' => $this->s->get( 'widget_panel_height', 'auto' ), 'profiles_enabled' => (bool) $this->s->get( 'profiles_enabled', true ), 'enabled_profiles' => (array) $this->s->get( 'enabled_profiles', array( 'vision', 'adhd', 'seizure', 'dyslexia', 'keyboard' ) ), 'statement_url' => ( function () { $aiq_sid = (int) get_option( 'accessiq_statement_page_id', 0 ); return $aiq_sid ? get_permalink( $aiq_sid ) : ''; } )(), 'rtl' => is_rtl(), 'i18n' => array( 'openMenu' => __( 'Open Accessibility Menu', 'accessiq' ), 'closeMenu' => __( 'Close', 'accessiq' ), 'fontSize' => __( 'Font Size', 'accessiq' ), 'reset' => __( 'Reset All', 'accessiq' ), 'highContrast' => __( 'High Contrast', 'accessiq' ), 'dyslexiaFriendly' => __( 'Dyslexia Friendly', 'accessiq' ), 'keyboardAssist' => __( 'Keyboard Assist', 'accessiq' ), 'screenReader' => __( 'Screen Reader', 'accessiq' ), 'readingLine' => __( 'Reading Line', 'accessiq' ), 'readingMask' => __( 'Reading Mask', 'accessiq' ), 'stopAnimations' => __( 'Stop Animations', 'accessiq' ), 'bigCursor' => __( 'Big Cursor', 'accessiq' ), 'white' => __( 'White', 'accessiq' ), 'black' => __( 'Black', 'accessiq' ), 'teal' => __( 'Teal', 'accessiq' ), 'red' => __( 'Red', 'accessiq' ), 'highlightLinks' => __( 'Highlight Links', 'accessiq' ), 'highlightTitles' => __( 'Highlight Titles', 'accessiq' ), 'letterSpacing' => __( 'Letter Spacing', 'accessiq' ), 'lineHeight' => __( 'Line Height', 'accessiq' ), 'monochrome' => __( 'Monochrome', 'accessiq' ), 'saturation' => __( 'Saturation', 'accessiq' ), 'low' => __( 'Low', 'accessiq' ), 'normal' => __( 'Normal', 'accessiq' ), 'high' => __( 'High', 'accessiq' ), 'wcagChecker' => __( 'WCAG Checker', 'accessiq' ), 'visionImpaired' => __( 'Vision Impaired', 'accessiq' ), 'adhdFriendly' => __( 'ADHD Friendly', 'accessiq' ), 'seizureSafe' => __( 'Seizure Safe', 'accessiq' ), 'dyslexia' => __( 'Dyslexia', 'accessiq' ), 'keyboardOnly' => __( 'Keyboard Only', 'accessiq' ), 'textReading' => __( 'Text & Reading', 'accessiq' ), 'colorVision' => __( 'Color & Vision', 'accessiq' ), 'motionNavigation' => __( 'Motion & Navigation', 'accessiq' ), 'panelTitle' => __( 'Accessibility Suite', 'accessiq' ), 'panelTheme' => __( 'Panel theme', 'accessiq' ), 'themeDark' => __( 'Dark theme', 'accessiq' ), 'themeLight' => __( 'Light theme', 'accessiq' ), 'themeSystem' => __( 'System theme', 'accessiq' ), 'saveSettings' => __( 'SAVE SETTINGS', 'accessiq' ), 'statement' => __( 'Accessibility Statement', 'accessiq' ), 'saved' => __( 'Saved', 'accessiq' ), 'decrease' => __( 'Decrease', 'accessiq' ), 'increase' => __( 'Increase', 'accessiq' ), 'cursor' => __( 'cursor', 'accessiq' ), 'cursorColor' => __( 'Cursor color', 'accessiq' ), 'level' => __( 'level', 'accessiq' ), 'wcagReportLabel' => __( 'WCAG Accessibility Report', 'accessiq' ), 'wcagReport' => __( 'WCAG Report', 'accessiq' ), 'closeReport' => __( 'Close report', 'accessiq' ), 'issuesFound' => __( 'issue(s) found on this page.', 'accessiq' ), 'noIssues' => __( 'No issues found!', 'accessiq' ), 'issueAlt' => __( 'Missing alt attribute', 'accessiq' ), 'issueLink' => __( 'Empty link without aria-label', 'accessiq' ), 'issueLabel' => __( 'Form input missing label', 'accessiq' ), ), ); /** * Filter frontend widget config (Pro white-label uses this). * * @param array $config Localized widget settings. */ $config = apply_filters( 'accessiq_widget_config', $config ); // Pro may set brandColor; keep color in sync for the free widget JS. if ( ! empty( $config['brandColor'] ) ) { $config['color'] = $config['brandColor']; } wp_localize_script( 'accessiq-widget', 'accessiqWidget', $config ); } public function render() { if ( ! $this->s->get( 'widget_enabled', true ) ) return; echo ''; } }