shared-features 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/{AdBanner-CZz8trdz.cjs → AnnouncementModal-Bqy0pn3V.cjs} +428 -3
  2. package/dist/AnnouncementModal-Bqy0pn3V.cjs.map +1 -0
  3. package/dist/{AdBanner-DF1QuMxR.js → AnnouncementModal-sxH4K5gy.js} +430 -5
  4. package/dist/AnnouncementModal-sxH4K5gy.js.map +1 -0
  5. package/dist/admin-notifications-D9n9h-eY.cjs +362 -0
  6. package/dist/admin-notifications-D9n9h-eY.cjs.map +1 -0
  7. package/dist/admin-notifications-p1dy3zIP.js +363 -0
  8. package/dist/admin-notifications-p1dy3zIP.js.map +1 -0
  9. package/dist/{analytics-CdpCtTpu.js → analytics-40-S_fHC.js} +3 -2
  10. package/dist/{analytics-CdpCtTpu.js.map → analytics-40-S_fHC.js.map} +1 -1
  11. package/dist/{analytics--ZSO9ova.cjs → analytics-lEzOx2vl.cjs} +2 -1
  12. package/dist/{analytics--ZSO9ova.cjs.map → analytics-lEzOx2vl.cjs.map} +1 -1
  13. package/dist/broadcasts-3_WfQMNL.cjs +278 -0
  14. package/dist/broadcasts-3_WfQMNL.cjs.map +1 -0
  15. package/dist/broadcasts-DgZUzqMf.js +257 -0
  16. package/dist/broadcasts-DgZUzqMf.js.map +1 -0
  17. package/dist/components/index.cjs +23 -20
  18. package/dist/components/index.cjs.map +1 -1
  19. package/dist/components/index.d.ts +1 -0
  20. package/dist/components/index.d.ts.map +1 -1
  21. package/dist/components/index.js +4 -1
  22. package/dist/components/notifications/AnnouncementModal.d.ts +21 -0
  23. package/dist/components/notifications/AnnouncementModal.d.ts.map +1 -0
  24. package/dist/components/notifications/BroadcastBanner.d.ts +55 -0
  25. package/dist/components/notifications/BroadcastBanner.d.ts.map +1 -0
  26. package/dist/components/notifications/index.d.ts +11 -0
  27. package/dist/components/notifications/index.d.ts.map +1 -0
  28. package/dist/hooks/index.cjs +9 -1
  29. package/dist/hooks/index.cjs.map +1 -1
  30. package/dist/hooks/index.d.ts +2 -0
  31. package/dist/hooks/index.d.ts.map +1 -1
  32. package/dist/hooks/index.js +9 -1
  33. package/dist/hooks/index.js.map +1 -1
  34. package/dist/hooks/useBroadcasts.d.ts +122 -0
  35. package/dist/hooks/useBroadcasts.d.ts.map +1 -0
  36. package/dist/index.cjs +99 -22
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +94 -17
  41. package/dist/index.js.map +1 -1
  42. package/dist/notifications/events/index.d.ts +14 -0
  43. package/dist/notifications/events/index.d.ts.map +1 -0
  44. package/dist/notifications/events/registry.d.ts +75 -0
  45. package/dist/notifications/events/registry.d.ts.map +1 -0
  46. package/dist/notifications/events/templates/engine.d.ts +57 -0
  47. package/dist/notifications/events/templates/engine.d.ts.map +1 -0
  48. package/dist/notifications/events/templates/standard.d.ts +20 -0
  49. package/dist/notifications/events/templates/standard.d.ts.map +1 -0
  50. package/dist/notifications/events/useNotificationEvents.d.ts +36 -0
  51. package/dist/notifications/events/useNotificationEvents.d.ts.map +1 -0
  52. package/dist/notifications/index.cjs +25 -0
  53. package/dist/notifications/index.cjs.map +1 -0
  54. package/dist/notifications/index.d.ts +9 -0
  55. package/dist/notifications/index.d.ts.map +1 -0
  56. package/dist/notifications/index.js +25 -0
  57. package/dist/notifications/index.js.map +1 -0
  58. package/dist/services/admin-notifications.d.ts +95 -0
  59. package/dist/services/admin-notifications.d.ts.map +1 -0
  60. package/dist/services/broadcasts.d.ts +55 -0
  61. package/dist/services/broadcasts.d.ts.map +1 -0
  62. package/dist/services/index.cjs +34 -1
  63. package/dist/services/index.cjs.map +1 -1
  64. package/dist/services/index.d.ts +2 -0
  65. package/dist/services/index.d.ts.map +1 -1
  66. package/dist/services/index.js +35 -2
  67. package/dist/services/index.js.map +1 -1
  68. package/dist/types/index.cjs +108 -0
  69. package/dist/types/index.cjs.map +1 -1
  70. package/dist/types/index.d.ts +1 -0
  71. package/dist/types/index.d.ts.map +1 -1
  72. package/dist/types/index.js +109 -1
  73. package/dist/types/index.js.map +1 -1
  74. package/dist/types/notifications.d.ts +634 -0
  75. package/dist/types/notifications.d.ts.map +1 -0
  76. package/dist/useBroadcasts-DzpCcbC8.js +161 -0
  77. package/dist/useBroadcasts-DzpCcbC8.js.map +1 -0
  78. package/dist/useBroadcasts-FP6ZrcY_.cjs +160 -0
  79. package/dist/useBroadcasts-FP6ZrcY_.cjs.map +1 -0
  80. package/dist/{useCampaigns-Dltisb9N.cjs → useCampaigns-BOZ9dDsG.cjs} +2 -2
  81. package/dist/{useCampaigns-Dltisb9N.cjs.map → useCampaigns-BOZ9dDsG.cjs.map} +1 -1
  82. package/dist/{useCampaigns-nwfsALsN.js → useCampaigns-D46b9zuf.js} +2 -2
  83. package/dist/{useCampaigns-nwfsALsN.js.map → useCampaigns-D46b9zuf.js.map} +1 -1
  84. package/dist/useNotificationEvents-BXeMqdak.cjs +954 -0
  85. package/dist/useNotificationEvents-BXeMqdak.cjs.map +1 -0
  86. package/dist/useNotificationEvents-D8DVxah1.js +955 -0
  87. package/dist/useNotificationEvents-D8DVxah1.js.map +1 -0
  88. package/package.json +11 -3
  89. package/dist/AdBanner-CZz8trdz.cjs.map +0 -1
  90. package/dist/AdBanner-DF1QuMxR.js.map +0 -1
@@ -0,0 +1,634 @@
1
+ import { Timestamp } from 'firebase/firestore';
2
+ /**
3
+ * Standard notification categories for grouping and filtering
4
+ */
5
+ export type NotificationCategory = 'system' | 'account' | 'activity' | 'report' | 'promotional' | 'social';
6
+ /**
7
+ * Visual notification type for styling
8
+ */
9
+ export type NotificationType = 'info' | 'success' | 'warning' | 'error' | 'reminder' | 'milestone' | 'announcement';
10
+ /**
11
+ * Priority levels for notifications
12
+ */
13
+ export type NotificationPriority = 'urgent' | 'high' | 'normal' | 'low';
14
+ /**
15
+ * Source of the notification
16
+ */
17
+ export type NotificationSource = 'system' | 'event' | 'broadcast' | 'admin';
18
+ /**
19
+ * Broadcast display variants
20
+ */
21
+ export type BroadcastVariant = 'banner' | 'modal' | 'toast' | 'bell';
22
+ /**
23
+ * Broadcast status
24
+ */
25
+ export type BroadcastStatus = 'draft' | 'scheduled' | 'active' | 'ended';
26
+ /**
27
+ * Target platforms for notifications
28
+ */
29
+ export type NotificationPlatform = 'web' | 'android' | 'ios';
30
+ /**
31
+ * Target audience for broadcasts
32
+ */
33
+ export type NotificationAudience = 'all' | 'authenticated' | 'anonymous';
34
+ /**
35
+ * Standard event types that trigger notifications
36
+ */
37
+ export type StandardEventType = 'ACCOUNT_CREATED' | 'ACCOUNT_WELCOME' | 'NEW_DEVICE_SIGNIN' | 'PASSWORD_CHANGED' | 'PROFILE_UPDATED' | 'ACCOUNT_DELETED' | 'DAILY_SUMMARY' | 'WEEKLY_SUMMARY' | 'MONTHLY_SUMMARY' | 'QUARTERLY_SUMMARY' | 'YEARLY_SUMMARY' | 'APP_TIP' | 'HIDDEN_FEATURE' | 'NEW_FEATURE_ANNOUNCEMENT' | 'HOLIDAY_GREETING' | 'SYSTEM_MAINTENANCE' | 'APP_UPDATE_AVAILABLE' | 'DATA_EXPORT_READY' | 'ITEM_CREATED' | 'ITEM_UPDATED' | 'ITEM_DELETED' | 'BULK_OPERATION_COMPLETE';
38
+ /**
39
+ * Base notification fields shared across all notification types
40
+ */
41
+ export interface BaseNotification {
42
+ /** Unique notification ID */
43
+ id: string;
44
+ /** Notification title */
45
+ title: string;
46
+ /** Notification message/body */
47
+ message: string;
48
+ /** Visual type for styling */
49
+ type: NotificationType;
50
+ /** Category for grouping/filtering */
51
+ category: NotificationCategory;
52
+ /** Whether the notification has been read */
53
+ isRead: boolean;
54
+ /** Whether this notification is important/pinned */
55
+ isImportant?: boolean;
56
+ /** Optional action URL to navigate to */
57
+ actionUrl?: string;
58
+ /** Optional action button text */
59
+ actionText?: string;
60
+ /** When the notification was created */
61
+ createdAt: Date | Timestamp;
62
+ /** When the notification was read */
63
+ readAt?: Date | Timestamp;
64
+ /** Additional metadata for custom use */
65
+ metadata?: Record<string, unknown>;
66
+ }
67
+ /**
68
+ * User-specific notification stored in consumer project's Firebase
69
+ * Collection: {prefix}_notifications/{notificationId}
70
+ */
71
+ export interface UserNotification extends BaseNotification {
72
+ /** User ID this notification belongs to */
73
+ userId: string;
74
+ /** How the notification was generated */
75
+ source: NotificationSource;
76
+ /** Reference to source entity (broadcast ID, event ID, etc.) */
77
+ sourceId?: string;
78
+ /** Event type if triggered by event */
79
+ eventType?: StandardEventType | string;
80
+ /** When the notification expires (auto-delete) */
81
+ expiresAt?: Date | Timestamp;
82
+ }
83
+ /**
84
+ * Input for creating a user notification
85
+ */
86
+ export interface CreateUserNotificationInput {
87
+ userId: string;
88
+ title: string;
89
+ message: string;
90
+ type: NotificationType;
91
+ category: NotificationCategory;
92
+ source: NotificationSource;
93
+ sourceId?: string;
94
+ eventType?: StandardEventType | string;
95
+ isImportant?: boolean;
96
+ actionUrl?: string;
97
+ actionText?: string;
98
+ expiresAt?: Date;
99
+ metadata?: Record<string, unknown>;
100
+ }
101
+ /**
102
+ * Cross-project broadcast notification stored in shared-features Firebase
103
+ * Collection: zaions_broadcasts/{broadcastId}
104
+ */
105
+ export interface BroadcastNotification extends BaseNotification {
106
+ /** Target project IDs (empty = all projects) */
107
+ targetProjects: string[];
108
+ /** Target platforms */
109
+ targetPlatforms: NotificationPlatform[];
110
+ /** Target audience */
111
+ targetAudience: NotificationAudience;
112
+ /** Broadcast status */
113
+ status: BroadcastStatus;
114
+ /** When the broadcast becomes active */
115
+ startDate: Date | Timestamp;
116
+ /** When the broadcast ends (null = no end) */
117
+ endDate?: Date | Timestamp | null;
118
+ /** Display priority (1-100, higher = more important) */
119
+ priority: number;
120
+ /** Whether user can dismiss this broadcast */
121
+ dismissible: boolean;
122
+ /** How to display this broadcast */
123
+ variant: BroadcastVariant;
124
+ /** Total impressions count */
125
+ impressions: number;
126
+ /** Total clicks count */
127
+ clicks: number;
128
+ /** Admin user ID who created */
129
+ createdBy: string;
130
+ /** Admin user ID who last updated */
131
+ updatedBy?: string;
132
+ }
133
+ /**
134
+ * Input for creating a broadcast
135
+ */
136
+ export interface CreateBroadcastInput {
137
+ title: string;
138
+ message: string;
139
+ type: NotificationType;
140
+ category: NotificationCategory;
141
+ targetProjects: string[];
142
+ targetPlatforms: NotificationPlatform[];
143
+ targetAudience: NotificationAudience;
144
+ startDate: Date;
145
+ endDate?: Date | null;
146
+ priority: number;
147
+ dismissible: boolean;
148
+ variant: BroadcastVariant;
149
+ isImportant?: boolean;
150
+ actionUrl?: string;
151
+ actionText?: string;
152
+ metadata?: Record<string, unknown>;
153
+ }
154
+ /**
155
+ * Input for updating a broadcast
156
+ */
157
+ export interface UpdateBroadcastInput extends Partial<CreateBroadcastInput> {
158
+ id: string;
159
+ status?: BroadcastStatus;
160
+ }
161
+ /**
162
+ * Notification template for standard events
163
+ * Collection: zaions_notification_templates/{templateId}
164
+ */
165
+ export interface NotificationTemplate {
166
+ /** Template ID */
167
+ id: string;
168
+ /** Template name for admin reference */
169
+ name: string;
170
+ /** Event type this template is for */
171
+ eventType: StandardEventType | string;
172
+ /** Notification category */
173
+ category: NotificationCategory;
174
+ /** Title with placeholders: "Welcome to {{appName}}, {{userName}}!" */
175
+ title: string;
176
+ /** Message with placeholders */
177
+ message: string;
178
+ /** List of variable names used in title/message */
179
+ variables: string[];
180
+ /** Visual notification type */
181
+ type: NotificationType;
182
+ /** Whether notifications from this template are important */
183
+ isImportant: boolean;
184
+ /** Default action URL (can use placeholders) */
185
+ actionUrl?: string;
186
+ /** Default action button text */
187
+ actionText?: string;
188
+ /** Whether this template is enabled */
189
+ enabled: boolean;
190
+ /** When template was created */
191
+ createdAt: Date | Timestamp;
192
+ /** When template was last updated */
193
+ updatedAt: Date | Timestamp;
194
+ }
195
+ /**
196
+ * Input for creating a template
197
+ */
198
+ export interface CreateTemplateInput {
199
+ name: string;
200
+ eventType: StandardEventType | string;
201
+ category: NotificationCategory;
202
+ title: string;
203
+ message: string;
204
+ variables: string[];
205
+ type: NotificationType;
206
+ isImportant: boolean;
207
+ actionUrl?: string;
208
+ actionText?: string;
209
+ enabled: boolean;
210
+ }
211
+ /**
212
+ * Category preference settings
213
+ */
214
+ export interface CategoryPreference {
215
+ /** Show in-app notifications for this category */
216
+ inApp: boolean;
217
+ /** Send push notifications for this category */
218
+ push: boolean;
219
+ /** Send email notifications for this category */
220
+ email: boolean;
221
+ }
222
+ /**
223
+ * Quiet hours configuration
224
+ */
225
+ export interface QuietHoursConfig {
226
+ /** Whether quiet hours are enabled */
227
+ enabled: boolean;
228
+ /** Start time in 24h format: "22:00" */
229
+ start: string;
230
+ /** End time in 24h format: "08:00" */
231
+ end: string;
232
+ /** User's timezone (IANA format) */
233
+ timezone: string;
234
+ }
235
+ /**
236
+ * Email digest configuration
237
+ */
238
+ export interface EmailDigestConfig {
239
+ /** Whether email digest is enabled */
240
+ enabled: boolean;
241
+ /** Digest frequency */
242
+ frequency: 'daily' | 'weekly' | 'none';
243
+ }
244
+ /**
245
+ * Push notification configuration
246
+ */
247
+ export interface PushConfig {
248
+ /** Whether push is enabled */
249
+ enabled: boolean;
250
+ /** OneSignal player ID */
251
+ playerId?: string;
252
+ /** Web push subscription */
253
+ webPushSubscription?: PushSubscription;
254
+ }
255
+ /**
256
+ * User notification preferences
257
+ * Collection: {prefix}_notification_preferences/{userId}
258
+ */
259
+ export interface NotificationPreferences {
260
+ /** User ID */
261
+ userId: string;
262
+ /** Category-specific preferences */
263
+ categories: Record<NotificationCategory, CategoryPreference>;
264
+ /** Quiet hours settings */
265
+ quietHours: QuietHoursConfig;
266
+ /** Email digest settings */
267
+ emailDigest: EmailDigestConfig;
268
+ /** Push notification settings */
269
+ push: PushConfig;
270
+ /** When preferences were last updated */
271
+ updatedAt: Date | Timestamp;
272
+ }
273
+ /**
274
+ * Default notification preferences
275
+ */
276
+ export declare const DEFAULT_NOTIFICATION_PREFERENCES: Omit<NotificationPreferences, 'userId' | 'updatedAt'>;
277
+ /**
278
+ * Event definition for triggering notifications
279
+ */
280
+ export interface NotificationEventDefinition {
281
+ /** Event type identifier */
282
+ type: StandardEventType | string;
283
+ /** Event display name */
284
+ name: string;
285
+ /** Event description */
286
+ description: string;
287
+ /** Default notification category */
288
+ category: NotificationCategory;
289
+ /** Default notification type */
290
+ notificationType: NotificationType;
291
+ /** Default priority */
292
+ priority: NotificationPriority;
293
+ /** Available template variables */
294
+ variables: string[];
295
+ /** Whether this event is enabled by default */
296
+ defaultEnabled: boolean;
297
+ }
298
+ /**
299
+ * Event trigger payload
300
+ */
301
+ export interface NotificationEventPayload {
302
+ /** Event type */
303
+ type: StandardEventType | string;
304
+ /** User ID to notify */
305
+ userId: string;
306
+ /** Variable values for template interpolation */
307
+ data: Record<string, string | number | boolean>;
308
+ /** Optional override for notification title */
309
+ titleOverride?: string;
310
+ /** Optional override for notification message */
311
+ messageOverride?: string;
312
+ /** Optional action URL */
313
+ actionUrl?: string;
314
+ /** Optional action text */
315
+ actionText?: string;
316
+ /** Additional metadata */
317
+ metadata?: Record<string, unknown>;
318
+ }
319
+ /**
320
+ * Broadcast analytics summary
321
+ */
322
+ export interface BroadcastAnalytics {
323
+ broadcastId: string;
324
+ title: string;
325
+ status: BroadcastStatus;
326
+ impressions: number;
327
+ clicks: number;
328
+ dismissals: number;
329
+ ctr: number;
330
+ byPlatform: Record<NotificationPlatform, {
331
+ impressions: number;
332
+ clicks: number;
333
+ }>;
334
+ byProject: Record<string, {
335
+ impressions: number;
336
+ clicks: number;
337
+ }>;
338
+ byDate: Array<{
339
+ date: string;
340
+ impressions: number;
341
+ clicks: number;
342
+ }>;
343
+ }
344
+ /**
345
+ * Overall notification analytics
346
+ */
347
+ export interface NotificationAnalytics {
348
+ /** Total notifications sent */
349
+ totalSent: number;
350
+ /** Total notifications read */
351
+ totalRead: number;
352
+ /** Total notifications clicked */
353
+ totalClicked: number;
354
+ /** Read rate (read/sent) */
355
+ readRate: number;
356
+ /** Click rate (clicked/sent) */
357
+ clickRate: number;
358
+ /** Breakdown by category */
359
+ byCategory: Record<NotificationCategory, {
360
+ sent: number;
361
+ read: number;
362
+ clicked: number;
363
+ }>;
364
+ /** Breakdown by type */
365
+ byType: Record<NotificationType, {
366
+ sent: number;
367
+ read: number;
368
+ clicked: number;
369
+ }>;
370
+ /** Daily breakdown */
371
+ byDate: Array<{
372
+ date: string;
373
+ sent: number;
374
+ read: number;
375
+ clicked: number;
376
+ }>;
377
+ }
378
+ /**
379
+ * Props for NotificationBell component
380
+ */
381
+ export interface NotificationBellProps {
382
+ /** Additional CSS classes */
383
+ className?: string;
384
+ /** Icon size in pixels */
385
+ size?: number;
386
+ /** Show count badge even when 0 */
387
+ showZeroBadge?: boolean;
388
+ /** Custom onClick handler (default: toggle panel) */
389
+ onClick?: () => void;
390
+ }
391
+ /**
392
+ * Props for NotificationPanel component
393
+ */
394
+ export interface NotificationPanelProps {
395
+ /** Whether the panel is open */
396
+ isOpen: boolean;
397
+ /** Called when panel should close */
398
+ onClose: () => void;
399
+ /** Maximum height for the panel */
400
+ maxHeight?: string;
401
+ /** Whether to show the filter tabs */
402
+ showFilters?: boolean;
403
+ /** Custom empty state component */
404
+ emptyStateComponent?: React.ReactNode;
405
+ }
406
+ /**
407
+ * Props for NotificationCard component
408
+ */
409
+ export interface NotificationCardProps {
410
+ /** The notification to display */
411
+ notification: UserNotification;
412
+ /** Called when notification is clicked */
413
+ onClick?: () => void;
414
+ /** Called when delete button is clicked */
415
+ onDelete?: () => void;
416
+ /** Whether to show delete button */
417
+ showDelete?: boolean;
418
+ /** Whether to show timestamp */
419
+ showTimestamp?: boolean;
420
+ }
421
+ /**
422
+ * Props for BroadcastBanner component
423
+ */
424
+ export interface BroadcastBannerProps {
425
+ /** The broadcast to display */
426
+ broadcast: BroadcastNotification;
427
+ /** Called when CTA is clicked */
428
+ onActionClick?: () => void;
429
+ /** Called when banner is dismissed */
430
+ onDismiss?: () => void;
431
+ /** Additional CSS classes */
432
+ className?: string;
433
+ }
434
+ /**
435
+ * Props for AnnouncementModal component
436
+ */
437
+ export interface AnnouncementModalProps {
438
+ /** The broadcast to display */
439
+ broadcast: BroadcastNotification;
440
+ /** Whether the modal is open */
441
+ isOpen: boolean;
442
+ /** Called when modal should close */
443
+ onClose: () => void;
444
+ /** Called when CTA is clicked */
445
+ onActionClick?: () => void;
446
+ }
447
+ /**
448
+ * Props for NotificationPreferences component
449
+ */
450
+ export interface NotificationPreferencesProps {
451
+ /** Current preferences */
452
+ preferences: NotificationPreferences;
453
+ /** Called when preferences change */
454
+ onPreferencesChange: (preferences: NotificationPreferences) => void;
455
+ /** Whether saving is in progress */
456
+ isSaving?: boolean;
457
+ /** Categories to show (default: all) */
458
+ visibleCategories?: NotificationCategory[];
459
+ /** Whether to show push settings */
460
+ showPushSettings?: boolean;
461
+ /** Whether to show email settings */
462
+ showEmailSettings?: boolean;
463
+ /** Whether to show quiet hours settings */
464
+ showQuietHours?: boolean;
465
+ }
466
+ /**
467
+ * Return type for useNotifications hook
468
+ */
469
+ export interface UseNotificationsReturn {
470
+ /** List of notifications */
471
+ notifications: UserNotification[];
472
+ /** Number of unread notifications */
473
+ unreadCount: number;
474
+ /** Whether notifications are loading */
475
+ isLoading: boolean;
476
+ /** Error if any */
477
+ error: Error | null;
478
+ /** Mark a notification as read */
479
+ markAsRead: (notificationId: string) => Promise<void>;
480
+ /** Mark all notifications as read */
481
+ markAllAsRead: () => Promise<void>;
482
+ /** Delete a notification */
483
+ deleteNotification: (notificationId: string) => Promise<void>;
484
+ /** Clear all notifications */
485
+ clearAll: () => Promise<void>;
486
+ /** Refresh notifications */
487
+ refresh: () => Promise<void>;
488
+ }
489
+ /**
490
+ * Return type for useBroadcasts hook
491
+ */
492
+ export interface UseBroadcastsReturn {
493
+ /** List of active broadcasts */
494
+ broadcasts: BroadcastNotification[];
495
+ /** Whether broadcasts are loading */
496
+ isLoading: boolean;
497
+ /** Error if any */
498
+ error: Error | null;
499
+ /** Dismiss a broadcast */
500
+ dismissBroadcast: (broadcastId: string) => void;
501
+ /** Track broadcast impression */
502
+ trackImpression: (broadcastId: string) => void;
503
+ /** Track broadcast click */
504
+ trackClick: (broadcastId: string) => void;
505
+ /** Check if broadcast was dismissed */
506
+ isDismissed: (broadcastId: string) => boolean;
507
+ /** Refresh broadcasts from cache */
508
+ refresh: () => Promise<void>;
509
+ }
510
+ /**
511
+ * Return type for useNotificationEvents hook
512
+ */
513
+ export interface UseNotificationEventsReturn {
514
+ /** Trigger a notification event */
515
+ trigger: (payload: NotificationEventPayload) => Promise<void>;
516
+ /** Trigger account created event */
517
+ triggerAccountCreated: (data: {
518
+ userName: string;
519
+ email: string;
520
+ }) => Promise<void>;
521
+ /** Trigger new device signin event */
522
+ triggerNewDeviceSignin: (data: {
523
+ deviceName: string;
524
+ location?: string;
525
+ }) => Promise<void>;
526
+ /** Trigger password changed event */
527
+ triggerPasswordChanged: () => Promise<void>;
528
+ /** Trigger profile updated event */
529
+ triggerProfileUpdated: (data: {
530
+ changes: string[];
531
+ }) => Promise<void>;
532
+ /** Trigger CRUD event */
533
+ triggerCrudEvent: (data: {
534
+ action: 'created' | 'updated' | 'deleted';
535
+ entityType: string;
536
+ entityName: string;
537
+ }) => Promise<void>;
538
+ /** Trigger app tip event */
539
+ triggerAppTip: (data: {
540
+ tipId: string;
541
+ title: string;
542
+ body: string;
543
+ }) => Promise<void>;
544
+ }
545
+ /**
546
+ * Options for fetching broadcasts
547
+ */
548
+ export interface FetchBroadcastsOptions {
549
+ /** Filter by project ID */
550
+ projectId?: string;
551
+ /** Filter by platform */
552
+ platform?: NotificationPlatform;
553
+ /** Filter by variant */
554
+ variant?: BroadcastVariant;
555
+ /** Filter by status */
556
+ status?: BroadcastStatus;
557
+ /** Maximum results */
558
+ limit?: number;
559
+ }
560
+ /**
561
+ * Options for fetching user notifications
562
+ */
563
+ export interface FetchNotificationsOptions {
564
+ /** User ID */
565
+ userId: string;
566
+ /** Filter by category */
567
+ category?: NotificationCategory;
568
+ /** Filter by read status */
569
+ isRead?: boolean;
570
+ /** Maximum results */
571
+ limit?: number;
572
+ /** Offset for pagination */
573
+ offset?: number;
574
+ /** Start date filter */
575
+ startDate?: Date;
576
+ /** End date filter */
577
+ endDate?: Date;
578
+ }
579
+ /**
580
+ * Shared collections (stored in shared-features Firebase)
581
+ */
582
+ export declare const NOTIFICATION_COLLECTIONS: {
583
+ /** Cross-project broadcasts */
584
+ readonly BROADCASTS: "zaions_broadcasts";
585
+ /** Notification templates */
586
+ readonly TEMPLATES: "zaions_notification_templates";
587
+ /** Broadcast events/analytics */
588
+ readonly BROADCAST_EVENTS: "zaions_broadcast_events";
589
+ };
590
+ /**
591
+ * Get consumer project collection names
592
+ * @param prefix - Project prefix (e.g., 'pp' for pregnancy-pal)
593
+ */
594
+ export declare const getNotificationCollections: (prefix: string) => {
595
+ /** User notifications */
596
+ readonly NOTIFICATIONS: `${string}_notifications`;
597
+ /** User notification preferences */
598
+ readonly PREFERENCES: `${string}_notification_preferences`;
599
+ /** Push subscriptions */
600
+ readonly PUSH_SUBSCRIPTIONS: `${string}_push_subscriptions`;
601
+ };
602
+ /**
603
+ * Category display names
604
+ */
605
+ export declare const CATEGORY_NAMES: Record<NotificationCategory, string>;
606
+ /**
607
+ * Category descriptions
608
+ */
609
+ export declare const CATEGORY_DESCRIPTIONS: Record<NotificationCategory, string>;
610
+ /**
611
+ * Notification type display names
612
+ */
613
+ export declare const TYPE_NAMES: Record<NotificationType, string>;
614
+ /**
615
+ * Priority display names
616
+ */
617
+ export declare const PRIORITY_NAMES: Record<NotificationPriority, string>;
618
+ /**
619
+ * Event type display names
620
+ */
621
+ export declare const EVENT_TYPE_NAMES: Record<StandardEventType, string>;
622
+ /**
623
+ * Default broadcast priority
624
+ */
625
+ export declare const DEFAULT_BROADCAST_PRIORITY = 50;
626
+ /**
627
+ * Maximum notification title length
628
+ */
629
+ export declare const MAX_NOTIFICATION_TITLE_LENGTH = 100;
630
+ /**
631
+ * Maximum notification message length
632
+ */
633
+ export declare const MAX_NOTIFICATION_MESSAGE_LENGTH = 500;
634
+ //# sourceMappingURL=notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/types/notifications.ts"],"names":[],"mappings":"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"}