diff --git a/frontend/src/pages/PluginManager.tsx b/frontend/src/pages/PluginManager.tsx index a08f1fed6..c55ecc2da 100644 --- a/frontend/src/pages/PluginManager.tsx +++ b/frontend/src/pages/PluginManager.tsx @@ -39,6 +39,15 @@ interface Plugin { id: number; } +interface Stat { + label: string; + value: number; + color: string; + iconBg: string; + iconColor: string; + Icon: React.ComponentType<{ className?: string; style?: React.CSSProperties }>; +} + export const PluginManager: React.FC = () => { const { t } = useTranslation(); const { theme } = useTheme(); @@ -271,41 +280,93 @@ export const PluginManager: React.FC = () => { {/* Stats */} -
- {[ - { - label: t('plugins.list.total'), - value: availablePlugins.length, - color: themeStyles.colors.text.primary, - }, - { - label: t('plugins.list.active'), - value: availablePlugins.filter(p => p.enabled).length, - color: themeStyles.colors.status.success, - }, - { - label: t('plugins.list.inactive'), - value: availablePlugins.filter(p => !p.enabled).length, - color: themeStyles.colors.text.secondary, - }, - ].map((stat, index) => ( +
+ {( + [ + { + label: t('plugins.list.total'), + value: availablePlugins.length, + color: themeStyles.colors.text.primary, + iconBg: themeStyles.colors.text.secondary + '15', + iconColor: themeStyles.colors.text.primary, + Icon: HiOutlinePuzzlePiece, + }, + { + label: t('plugins.list.active'), + value: availablePlugins.filter(p => p.enabled).length, + color: themeStyles.colors.status.success, + iconBg: themeStyles.colors.status.success + '20', + iconColor: themeStyles.colors.status.success, + Icon: HiOutlineCheckCircle, + }, + { + label: t('plugins.list.inactive'), + value: availablePlugins.filter(p => !p.enabled).length, + color: themeStyles.colors.text.secondary, + iconBg: themeStyles.colors.text.secondary + '20', + iconColor: themeStyles.colors.text.secondary, + Icon: HiOutlinePause, + }, + ] as Stat[] + ).map((stat, index) => ( - - {stat.value} - - - {stat.label} - + {/* Gradient overlay on hover */} +
+ +
+ +
+ +
+ + {stat.value} + + + {stat.label} + +
+ + {/* Bottom accent line */} +
))}