import { useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; import React from 'react'; import { useLocation } from 'react-router-dom'; import { PLUGINS } from '../constants'; import usePluginInstallActivate from '../hook/usePluginInstallActivate'; import { COLORMAG_DASHBOARD_STORE } from '../store'; import { colormagLocalized } from '../types'; type PluginStatus = 'active' | 'inactive' | 'not-installed'; type PluginSlug = keyof colormagLocalized['plugins']; export const Plugin: React.FC<{ plugin: { slug: PluginSlug; // This ensures slug matches the keys in pluginsStatus label: string; description: string; image: string; learn_more: string; live_demo: string; logo: React.ReactNode; shortDescription: string; }; index: number; pluginsStatus: colormagLocalized['plugins']; }> = ({ plugin, index, pluginsStatus }) => { const { installPlugin, activatePlugin, performPluginAction } = usePluginInstallActivate({ pluginsStatus, }); const routelocation = useLocation(); return ( <> {routelocation.pathname === '/products' ? (
{plugin.label}

{plugin.label}

{plugin.description}

{__('Learn more', 'colormag')} {__('View Demo', 'colormag')}
) : (
{plugin.logo}

{plugin.label}

{plugin.shortDescription}

)} ); }; interface Plugin { slug: keyof colormagLocalized['plugins']; label: string; description: string; type: string; image: string; learn_more: string; live_demo: string; website: string; shortDescription: string; logo: React.JSX.Element; } export const UsefulPlugins = () => { const pluginsStatus = useSelect((select) => { return ( select(COLORMAG_DASHBOARD_STORE) as any ).getPluginsStatus() as colormagLocalized['plugins']; }, []); return ( <> {(PLUGINS as Plugin[]).map((plugin, i) => ( ))} ); }; export default UsefulPlugins;