import { AI_LICENSE_MODULE } from '@rocket.chat/ai-search'; import { Box, Button, Callout, CardGrid, Tag } from '@rocket.chat/fuselage'; import { Page, PageHeader, PageScrollableContentWithShadow } from '@rocket.chat/ui-client'; import { useRouter, useSetting } from '@rocket.chat/ui-contexts'; import type { ReactElement, ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; import AICenterCapabilityCard from './AICenterCapabilityCard'; import PageSkeleton from '../../../components/PageSkeleton'; import { useHasLicenseModule } from '../../../hooks/useHasLicenseModule'; const AICenterOverview = (): ReactElement => { const { t } = useTranslation(); const router = useRouter(); const { data: hasAILicense, isPending } = useHasLicenseModule(AI_LICENSE_MODULE); const intelligentSearchEnabled = useSetting('AI_Intelligent_Search_Enabled', false); const mcpEnabled = useSetting('MCP_Enabled', false); const searchSettingsHref = router.buildRoutePath({ name: 'admin-ai-center', params: { section: 'search' } }); const llmSettingsHref = router.buildRoutePath({ name: 'admin-ai-center', params: { section: 'llm-providers' } }); const mcpSettingsHref = router.buildRoutePath({ name: 'admin-ai-center', params: { section: 'mcp' } }); const subscriptionHref = router.buildRoutePath({ name: 'subscription' }); if (isPending) { return ; } let aiSearchStatus: ReactNode; let llmProviderStatus: ReactNode; let mcpStatus: ReactNode; if (hasAILicense === false) { aiSearchStatus = {t('Locked')}; llmProviderStatus = {t('Locked')}; mcpStatus = {t('Locked')}; } else if (hasAILicense) { aiSearchStatus = intelligentSearchEnabled ? {t('Enabled')} : {t('Disabled')}; llmProviderStatus = {t('Available')}; mcpStatus = mcpEnabled ? {t('Enabled')} : {t('Disabled')}; } return ( {hasAILicense === false && ( {t('AI_Center_license_required_description')} )} {t('Capabilities')} ); }; export default AICenterOverview;