'use client'; import React, { useState } from 'react'; import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { Badge } from '@/components/ui/Badge'; import { Input } from '@/components/ui/Input'; import { Dialog } from '@/components/ui/Dialog'; import { useTranslation } from '@/hooks/useTranslation'; interface Integration { id: string; name: string; description: string; icon: string; status: 'active' | 'inactive' | 'coming_soon'; category: string; features: string[]; } export default function IntegrationsPage() { const { t } = useTranslation(); const [selectedIntegration, setSelectedIntegration] = useState(null); const [showSetupDialog, setShowSetupDialog] = useState(false); const [apiKey, setApiKey] = useState(''); const [webhookUrl, setWebhookUrl] = useState(''); const integrations: Integration[] = [ { id: 'zapier', name: 'Zapier', description: 'Connect QR Master with 5,000+ apps', icon: '⚡', status: 'active', category: 'Automation', features: [ 'Trigger actions when QR codes are scanned', 'Create QR codes from other apps', 'Update QR destinations automatically', 'Sync analytics to spreadsheets', ], }, { id: 'airtable', name: 'Airtable', description: 'Sync QR codes with your Airtable bases', icon: '📊', status: 'inactive', category: 'Database', features: [ 'Two-way sync with Airtable', 'Bulk import from bases', 'Auto-update QR content', 'Analytics dashboard integration', ], }, { id: 'google-sheets', name: 'Google Sheets', description: 'Manage QR codes from spreadsheets', icon: '📈', status: 'inactive', category: 'Spreadsheet', features: [ 'Import QR codes from sheets', 'Export analytics data', 'Real-time sync', 'Collaborative QR management', ], }, { id: 'slack', name: 'Slack', description: 'Get QR scan notifications in Slack', icon: '💬', status: 'coming_soon', category: 'Communication', features: [ 'Real-time scan notifications', 'Daily analytics summaries', 'Team collaboration', 'Custom alert rules', ], }, { id: 'webhook', name: 'Webhooks', description: 'Send data to any URL', icon: '🔗', status: 'active', category: 'Developer', features: [ 'Custom webhook endpoints', 'Real-time event streaming', 'Retry logic', 'Event filtering', ], }, { id: 'api', name: 'REST API', description: 'Full programmatic access', icon: '🔧', status: 'active', category: 'Developer', features: [ 'Complete CRUD operations', 'Bulk operations', 'Analytics API', 'Rate limiting: 1000 req/hour', ], }, ]; const stats = { totalQRCodes: 234, activeIntegrations: 2, syncStatus: 'Synced', availableServices: 6, }; const handleActivate = (integration: Integration) => { setSelectedIntegration(integration); setShowSetupDialog(true); }; const handleTestConnection = async () => { // Simulate API test await new Promise(resolve => setTimeout(resolve, 1000)); alert('Connection successful!'); }; const handleSaveIntegration = () => { setShowSetupDialog(false); // Update integration status }; return (
{/* Header */}

{t('integrations.title')}

{t('integrations.subtitle')}

{/* Stats */}

QR Codes Total

{stats.totalQRCodes}

Active Integrations

{stats.activeIntegrations}

Sync Status

{stats.syncStatus}

Available Services

{stats.availableServices}

{/* Integration Cards */}
{integrations.map((integration) => (
{integration.icon}
{integration.name} {integration.status === 'active' ? 'Active' : integration.status === 'coming_soon' ? 'Coming Soon' : 'Inactive'}

{integration.description}

{integration.features.slice(0, 3).map((feature, index) => (
{feature}
))}
{integration.status === 'active' ? ( ) : integration.status === 'coming_soon' ? ( ) : ( )}
))}
{/* Setup Dialog */} {showSetupDialog && selectedIntegration && (

Setup {selectedIntegration.name}

{selectedIntegration.id === 'zapier' && ( <>

Copy this URL to your Zapier trigger

Sample Payload

                      {`{
  "event": "qr_scanned",
  "qr_id": "abc123",
  "title": "Product Page",
  "timestamp": "2025-01-01T12:00:00Z",
  "location": "United States",
  "device": "mobile"
}`}
                    
)} {selectedIntegration.id === 'airtable' && ( <> setApiKey(e.target.value)} placeholder="key..." /> )} {selectedIntegration.id === 'google-sheets' && ( <>
)}
)}
); }