/** * Header Component * * Compact header for admin pages with page title integration * * @package ThinkRank * @since 1.0.0 */ import { __ } from '@wordpress/i18n'; import { useSelect } from '@wordpress/data'; /** * ThinkRank Icon Component * Same icon used in WordPress admin menu */ const ThinkRankIcon = ({ className = '', size = 22 }) => ( ); /** * Header Component */ const Header = ({ pageTitle, pageDescription, showHelp = false }) => { const { credits, pluginVersion, hasApiKey } = useSelect((select) => { try { const coreStore = select('thinkrank/core'); const creditsStore = select('thinkrank/credits'); const settingsStore = select('thinkrank/settings'); // Safely get settings const settings = settingsStore?.getSettings?.() || {}; return { credits: creditsStore?.getBalance?.() || 0, pluginVersion: coreStore?.getPluginVersion?.() || '1.0.0', hasApiKey: Boolean(settings.openai_api_key || settings.claude_api_key), }; } catch (error) { console.warn('ThinkRank Header: Error accessing stores', error); return { credits: 0, pluginVersion: '1.0.0', hasApiKey: false, }; } }, []); return (

{__('ThinkRank', 'thinkrank')}

{pageTitle && (

{pageTitle}

{pageDescription && (

{pageDescription}

)}
)}
v{pluginVersion}
); }; export default Header;