UNPKG

notification-kit

Version:

A unified notification library for React + Capacitor apps. One API for push notifications, in-app notifications, and local notifications across Web, iOS, and Android.

144 lines 4.14 kB
import { CSSProperties } from 'react'; import { InAppConfig } from './in-app'; import { FirebaseConfig, OneSignalConfig } from './providers'; export interface NotificationConfig { provider: 'firebase' | 'onesignal'; config: FirebaseConfig | OneSignalConfig; inApp?: InAppConfig; styles?: StyleConfig; debug?: boolean; autoInit?: boolean; serviceWorker?: ServiceWorkerConfig; storage?: StorageConfig; analytics?: AnalyticsConfig; } export interface StyleConfig { container?: CSSProperties; notification?: CSSProperties; title?: CSSProperties; message?: CSSProperties; action?: CSSProperties; closeButton?: CSSProperties; zIndex?: number; fontFamily?: string; borderRadius?: string; boxShadow?: string; backdropFilter?: string; animation?: AnimationConfig; } export interface AnimationConfig { enter?: string; exit?: string; duration?: number; easing?: string; } export interface ServiceWorkerConfig { path?: string; scope?: string; updateViaCache?: 'imports' | 'all' | 'none'; auto?: boolean; immediate?: boolean; } export interface StorageConfig { prefix?: string; adapter?: 'preferences' | 'localStorage' | 'sessionStorage'; encryption?: boolean; ttl?: number; } export interface AnalyticsConfig { enabled?: boolean; provider?: 'firebase' | 'custom'; customProvider?: AnalyticsProvider; events?: AnalyticsEvents; } export interface AnalyticsProvider { track: (event: string, data?: Record<string, any>) => void; identify: (userId: string, traits?: Record<string, any>) => void; group: (groupId: string, traits?: Record<string, any>) => void; } export interface AnalyticsEvents { notificationSent?: boolean; notificationDelivered?: boolean; notificationOpened?: boolean; notificationDismissed?: boolean; permissionRequested?: boolean; permissionGranted?: boolean; permissionDenied?: boolean; tokenGenerated?: boolean; subscriptionChanged?: boolean; } export interface InitOptions { skipCapacitorCheck?: boolean; skipServiceWorkerCheck?: boolean; skipPermissionCheck?: boolean; silent?: boolean; retryAttempts?: number; retryDelay?: number; } export interface EnvironmentConfig { development?: Partial<NotificationConfig>; production?: Partial<NotificationConfig>; test?: Partial<NotificationConfig>; } export interface FeatureFlags { pushNotifications?: boolean; localNotifications?: boolean; inAppNotifications?: boolean; analytics?: boolean; channels?: boolean; actions?: boolean; richMedia?: boolean; quietHours?: boolean; grouping?: boolean; badging?: boolean; } export interface LocalizationConfig { defaultLanguage?: string; languages?: Record<string, LocalizationStrings>; fallbackLanguage?: string; autoDetect?: boolean; } export interface LocalizationStrings { permissionTitle?: string; permissionMessage?: string; permissionAllow?: string; permissionDeny?: string; errorTitle?: string; errorMessage?: string; successTitle?: string; successMessage?: string; retryButton?: string; dismissButton?: string; settingsButton?: string; } export interface SecurityConfig { validateOrigin?: boolean; allowedOrigins?: string[]; requireHttps?: boolean; validatePayload?: boolean; sanitizeContent?: boolean; maxPayloadSize?: number; rateLimiting?: RateLimitConfig; } export interface RateLimitConfig { enabled?: boolean; maxRequests?: number; windowMs?: number; skipSuccessfulRequests?: boolean; skipFailedRequests?: boolean; } export interface BackupConfig { enabled?: boolean; provider?: 'firebase' | 'custom'; customProvider?: BackupProvider; schedule?: string; retention?: number; compression?: boolean; } export interface BackupProvider { backup: (data: any) => Promise<void>; restore: () => Promise<any>; delete: (id: string) => Promise<void>; list: () => Promise<string[]>; } //# sourceMappingURL=config.d.ts.map