'use client'; import { useEffect, useState, useCallback } from 'react'; import { api } from '@/lib/api'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { toast } from 'sonner'; import { Save, ExternalLink, Copy, FileText, Shield } from 'lucide-react'; const API_BASE = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3000/api/v1'; const PUBLIC_BASE = API_BASE.replace('/api/v1', ''); const POLICY_ITEMS = [ { key: 'privacy', label: 'Política de Privacidad', icon: Shield, description: 'Cómo se recopilan, usan y protegen los datos personales de los usuarios.', }, { key: 'terms', label: 'Términos y Condiciones', icon: FileText, description: 'Condiciones de uso de la plataforma ProsApp.', }, ]; export default function SettingsPage() { const [policies, setPolicies] = useState>({ privacy: '', terms: '' }); const [saving, setSaving] = useState(null); const [loading, setLoading] = useState(true); const load = useCallback(() => { setLoading(true); api.get<{ privacy: string | null; terms: string | null }>('/settings/policies') .then((data) => setPolicies({ privacy: data.privacy || '', terms: data.terms || '' })) .catch(() => toast.error('Error al cargar políticas')) .finally(() => setLoading(false)); }, []); useEffect(() => { load(); }, [load]); const savePolicy = async (key: string) => { setSaving(key); try { await api.patch(`/settings/policies/${key}`, { content: policies[key] }); toast.success('Política guardada'); } catch (e: any) { toast.error(e?.message || 'Error al guardar'); } finally { setSaving(null); } }; const copyLink = (key: string) => { const url = `${API_BASE}/settings/policy/${key}`; navigator.clipboard.writeText(url); toast.success('Enlace copiado'); }; if (loading) return
Cargando...
; return (

Configuración

Gestiona las políticas legales y ajustes globales de ProsApp.

{/* Policies */}

Documentos legales

{POLICY_ITEMS.map(({ key, label, icon: Icon, description }) => { const publicUrl = `${API_BASE}/settings/policy/${key}`; return ( {label} {description}