+ {/* Header */}
+
+
+
+
+
Notificaciones
+
+ {unreadCount > 0
+ ? `${unreadCount} sin leer`
+ : 'Todas las notificaciones leídas'}
+
+
+
+
+
+ {unreadCount > 0 && (
+
+ )}
+
+
+
+
+ {/* Preferences Panel */}
+ {showPreferences && preferences && (
+
+ )}
+
+ {/* Filters */}
+
+
+
+ Filtrar:
+
+
+ {/* Type filter */}
+
+
+ {/* Status filter */}
+
+ {statusFilters.map((filter) => (
+
+ ))}
+
+
+ {/* Results count */}
+
+ {filteredNotifications.length} notificaciones
+
+
+
+ {/* Notifications List */}
+
+ {loading ? (
+
+ ) : filteredNotifications.length === 0 ? (
+
+
+
No hay notificaciones
+
+ {typeFilter !== 'all' || statusFilter !== 'all'
+ ? 'Intenta cambiar los filtros'
+ : 'Las notificaciones aparecerán aquí'}
+
+
+ ) : (
+ filteredNotifications.map((notification) => (
+
+ ))
+ )}
+
+
+ {/* Load more button (if needed) */}
+ {filteredNotifications.length >= 50 && (
+
+
+
+ )}
+
+ );
+}
diff --git a/src/services/notification.service.ts b/src/services/notification.service.ts
new file mode 100644
index 0000000..8bf1064
--- /dev/null
+++ b/src/services/notification.service.ts
@@ -0,0 +1,179 @@
+/**
+ * Notification Service
+ * API client for notifications management
+ */
+
+import axios from 'axios';
+
+const API_BASE_URL = import.meta.env?.VITE_API_URL || '/api/v1';
+
+const api = axios.create({
+ baseURL: API_BASE_URL,
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+});
+
+// Add auth token to requests
+api.interceptors.request.use((config) => {
+ const token = localStorage.getItem('auth_token');
+ if (token) {
+ config.headers.Authorization = `Bearer ${token}`;
+ }
+ return config;
+});
+
+// ============================================================================
+// Types
+// ============================================================================
+
+export type NotificationType =
+ | 'alert_triggered'
+ | 'trade_executed'
+ | 'deposit_confirmed'
+ | 'withdrawal_completed'
+ | 'distribution_received'
+ | 'system_announcement'
+ | 'security_alert'
+ | 'account_update';
+
+export type NotificationPriority = 'low' | 'normal' | 'high' | 'urgent';
+export type NotificationIconType = 'success' | 'warning' | 'error' | 'info';
+
+export interface Notification {
+ id: string;
+ userId: string;
+ type: NotificationType;
+ title: string;
+ message: string;
+ priority: NotificationPriority;
+ data?: Record