> */ public static function get_rows(): array { return array( array( 'label' => __( 'Éditeur visuel drag & drop', 'advanced-pdf-invoice-builder' ), 'free' => '✓', 'pro' => '✓', 'visible' => true, ), array( 'label' => __( 'Génération PDF', 'advanced-pdf-invoice-builder' ), 'free' => 'PDF', 'pro' => 'PDF', 'visible' => true, ), array( 'label' => __( 'Éléments standards', 'advanced-pdf-invoice-builder' ), 'free' => __( 'Texte, image, ligne, rectangle', 'advanced-pdf-invoice-builder' ), 'pro' => __( 'Texte, image, ligne, rectangle', 'advanced-pdf-invoice-builder' ), 'visible' => true, ), array( 'label' => __( 'Types de document', 'advanced-pdf-invoice-builder' ), 'free' => __( 'Facture, devis', 'advanced-pdf-invoice-builder' ), 'pro' => __( 'Facture, devis, bon de commande, avoir, relevé, contrat', 'advanced-pdf-invoice-builder' ), 'visible' => true, ), array( 'label' => __( 'Modèles de texte dynamique', 'advanced-pdf-invoice-builder' ), 'free' => __( '3 modèles', 'advanced-pdf-invoice-builder' ), 'pro' => __( '36 modèles', 'advanced-pdf-invoice-builder' ), 'visible' => true, ), array( 'label' => __( 'Modèles de mentions', 'advanced-pdf-invoice-builder' ), 'free' => __( '3 modèles', 'advanced-pdf-invoice-builder' ), 'pro' => __( '21 modèles', 'advanced-pdf-invoice-builder' ), 'visible' => true, ), array( 'label' => __( 'Intégration WooCommerce', 'advanced-pdf-invoice-builder' ), 'free' => '✓', 'pro' => '✓', 'visible' => true, ), array( 'label' => __( 'Export multi-format', 'advanced-pdf-invoice-builder' ), 'free' => 'PDF', 'pro' => 'PDF, PNG, JPG', 'visible' => false, ), array( 'label' => __( 'Fond transparent à l\'export', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Résolution d\'export', 'advanced-pdf-invoice-builder' ), 'free' => __( '72, 96, 150 DPI', 'advanced-pdf-invoice-builder' ), 'pro' => __( '72, 96, 150, 300, 600 DPI', 'advanced-pdf-invoice-builder' ), 'visible' => false, ), array( 'label' => __( 'Formats de page', 'advanced-pdf-invoice-builder' ), 'free' => __( 'A4 portrait', 'advanced-pdf-invoice-builder' ), 'pro' => __( 'A3, Letter, Legal + paysage', 'advanced-pdf-invoice-builder' ), 'visible' => false, ), array( 'label' => __( 'Galerie de modèles avancés', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Dupliquer un template', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Définir un template par défaut', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Bouton "Nouveau" dans l\'éditeur', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Navigation grille, snap & guides', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Sélection multiple & mode groupe', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Raccourcis clavier', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Couleurs canvas avancées', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), array( 'label' => __( 'Thèmes prédéfinis de l\'éditeur', 'advanced-pdf-invoice-builder' ), 'free' => '—', 'pro' => '✓', 'visible' => false, ), ); } /** * Returns the CSS class used by the comparison values. * * @param string $value Feature value. * @param bool $is_pro Whether the value is for the PRO column. * @return string */ private static function get_value_class( string $value, bool $is_pro ): string { if ( '✓' === $value ) { return $is_pro ? 'pdfib-cmp-val pdfib-cmp-val--yes-pro' : 'pdfib-cmp-val pdfib-cmp-val--yes-free'; } if ( '—' === $value ) { return 'pdfib-cmp-val pdfib-cmp-val--no'; } return $is_pro ? 'pdfib-cmp-val pdfib-cmp-val--text-pro' : 'pdfib-cmp-val pdfib-cmp-val--text-free'; } /** * Render the shared comparison card. * * @return void */ public static function render_card(): void { $rows = self::get_rows(); static $style_printed = false; static $script_printed = false; if ( ! $style_printed ) { $style_printed = true; ?>