AnalyticsDashboard.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import * as React from 'react';
  2. import PageAnalytics from './PageAnalytics';
  3. import InteractionAnalytics from './InteractionAnalytics';
  4. // FIX: Changed to a named import as CRM is not a default export.
  5. import { CRM } from './CRM';
  6. import { Tabs } from './ui/Tabs';
  7. import { AnalyticsData, Conversation } from '../types';
  8. import { useTranslation } from '../hooks/useI18n';
  9. interface AnalyticsDashboardProps {
  10. analyticsData: AnalyticsData;
  11. onUpdateConversations: (conversations: Conversation[]) => void;
  12. }
  13. const AnalyticsDashboard: React.FC<AnalyticsDashboardProps> = ({ analyticsData, onUpdateConversations }) => {
  14. const { t } = useTranslation();
  15. const [activeTab, setActiveTab] = React.useState<'page' | 'interactions' | 'crm'>('page');
  16. const renderContent = () => {
  17. switch (activeTab) {
  18. case 'page':
  19. return <PageAnalytics analyticsData={analyticsData} />
  20. case 'interactions':
  21. return <InteractionAnalytics
  22. analyticsData={analyticsData}
  23. onUpdateConversations={onUpdateConversations}
  24. />
  25. case 'crm':
  26. return <CRM analyticsData={analyticsData} />
  27. default:
  28. return null
  29. }
  30. };
  31. const tabLabels = {
  32. page: t('nav.analytics.page'),
  33. interactions: t('nav.analytics.interactions'),
  34. crm: t('nav.analytics.crm'),
  35. };
  36. return (
  37. <div>
  38. <div className='p-6 border-b border-gray-200 dark:border-gray-700'>
  39. <Tabs
  40. tabs={Object.keys(tabLabels)}
  41. activeTab={activeTab}
  42. // FIX: Ensure the tab type is correctly handled by casting it to the specific string literal union type expected by setActiveTab.
  43. onTabClick={(tab) => setActiveTab(tab as 'page' | 'interactions' | 'crm')}
  44. />
  45. </div>
  46. <div className='p-6'>
  47. {renderContent()}
  48. </div>
  49. </div>
  50. );
  51. };
  52. export default AnalyticsDashboard;