From 623667b8227c7ae8a103b02f54fda92546cfe8b3 Mon Sep 17 00:00:00 2001 From: admin-valentin Date: Sun, 2 Aug 2026 17:16:26 +0000 Subject: [PATCH] feat(CC-082): add Calendar Integration page (setup guide + sync policy) --- .../dashboard/integrations/calendar/page.tsx | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/app/dashboard/integrations/calendar/page.tsx diff --git a/src/app/dashboard/integrations/calendar/page.tsx b/src/app/dashboard/integrations/calendar/page.tsx new file mode 100644 index 0000000..9b1d574 --- /dev/null +++ b/src/app/dashboard/integrations/calendar/page.tsx @@ -0,0 +1,85 @@ +'use client'; + +import { useQuery } from '@tanstack/react-query'; +import Link from 'next/link'; +import { apiFetch } from '../../../../lib/api'; +import { useSession } from '../../../../components/session-provider'; + +interface DataSource { id: string; name: string; type: string; status: string; lastSyncAt: string | null; } + +export default function CalendarIntegrationPage() { + const { activeTenant } = useSession(); + const tenantId = activeTenant?.tenantId ?? ''; + + const { data: sources = [] } = useQuery({ + queryKey: ['cal-sources', tenantId], + queryFn: () => apiFetch('/v1/data-sources', { tenantId }), + enabled: Boolean(tenantId), staleTime: 60_000, + }); + + const calSources = sources.filter((s) => s.type === 'calendar' || s.name.toLowerCase().includes('calendar') || s.name.toLowerCase().includes('google')); + + return ( +
+
+

Integrare Calendar

+

Sincronizare evenimente și participanți cu CEO OS Calendar.

+
+ +
0 ? 'bg-signal-ok/5 border-signal-ok/30' : 'bg-warn/5 border-warn/30'}`}> +

0 ? 'text-signal-ok' : 'text-warn'} mb-1`}> + {calSources.length > 0 ? `✅ ${calSources.length} calendar conectat` : 'Status: Neconectat'} +

+

+ {calSources.length > 0 + ? `Ultima sincronizare: ${calSources[0].lastSyncAt ? new Date(calSources[0].lastSyncAt).toLocaleString('ro-RO') : 'niciodată'}` + : 'Niciun calendar conectat. Urmează pașii de mai jos.'} +

+
+ +
+

Configurare

+ {[ + { step: '1', title: 'Selectează provider calendar', desc: 'Google Calendar, Outlook Calendar, sau CalDAV generic.' }, + { step: '2', title: 'Autentificare OAuth2', desc: 'Read-only access implicit. Write access opțional pentru creare evenimente din CEO OS.' }, + { step: '3', title: 'Selectează calendare de sincronizat', desc: 'Alege specific care calendare să fie vizibile în CEO OS Calendar.' }, + { step: '4', title: 'Mapare participanți', desc: 'CEO OS mapează automat participanții la contactele existente în CRM.' }, + ].map((s) => ( +
+
{s.step}
+
+

{s.title}

+

{s.desc}

+
+
+ ))} +
+ +
+

Ce se sincronizează

+
+

✅ Titlu și descriere eveniment

+

✅ Participanți (mapați la contacte)

+

✅ Termen + durată

+

✅ Locație

+

⚠ Atașamente (doar metadata)

+

❌ Conținut privat marcat "private"

+
+
+ +
+ + +
+ +
+ CEO OS Calendar → + Toate integrările +
+
+ ); +}