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.
- package/dist/{AdBanner-CZz8trdz.cjs → AnnouncementModal-Bqy0pn3V.cjs} +428 -3
- package/dist/AnnouncementModal-Bqy0pn3V.cjs.map +1 -0
- package/dist/{AdBanner-DF1QuMxR.js → AnnouncementModal-sxH4K5gy.js} +430 -5
- package/dist/AnnouncementModal-sxH4K5gy.js.map +1 -0
- package/dist/admin-notifications-D9n9h-eY.cjs +362 -0
- package/dist/admin-notifications-D9n9h-eY.cjs.map +1 -0
- package/dist/admin-notifications-p1dy3zIP.js +363 -0
- package/dist/admin-notifications-p1dy3zIP.js.map +1 -0
- package/dist/{analytics-CdpCtTpu.js → analytics-40-S_fHC.js} +3 -2
- package/dist/{analytics-CdpCtTpu.js.map → analytics-40-S_fHC.js.map} +1 -1
- package/dist/{analytics--ZSO9ova.cjs → analytics-lEzOx2vl.cjs} +2 -1
- package/dist/{analytics--ZSO9ova.cjs.map → analytics-lEzOx2vl.cjs.map} +1 -1
- package/dist/broadcasts-3_WfQMNL.cjs +278 -0
- package/dist/broadcasts-3_WfQMNL.cjs.map +1 -0
- package/dist/broadcasts-DgZUzqMf.js +257 -0
- package/dist/broadcasts-DgZUzqMf.js.map +1 -0
- package/dist/components/index.cjs +23 -20
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +4 -1
- package/dist/components/notifications/AnnouncementModal.d.ts +21 -0
- package/dist/components/notifications/AnnouncementModal.d.ts.map +1 -0
- package/dist/components/notifications/BroadcastBanner.d.ts +55 -0
- package/dist/components/notifications/BroadcastBanner.d.ts.map +1 -0
- package/dist/components/notifications/index.d.ts +11 -0
- package/dist/components/notifications/index.d.ts.map +1 -0
- package/dist/hooks/index.cjs +9 -1
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +9 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useBroadcasts.d.ts +122 -0
- package/dist/hooks/useBroadcasts.d.ts.map +1 -0
- package/dist/index.cjs +99 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +94 -17
- package/dist/index.js.map +1 -1
- package/dist/notifications/events/index.d.ts +14 -0
- package/dist/notifications/events/index.d.ts.map +1 -0
- package/dist/notifications/events/registry.d.ts +75 -0
- package/dist/notifications/events/registry.d.ts.map +1 -0
- package/dist/notifications/events/templates/engine.d.ts +57 -0
- package/dist/notifications/events/templates/engine.d.ts.map +1 -0
- package/dist/notifications/events/templates/standard.d.ts +20 -0
- package/dist/notifications/events/templates/standard.d.ts.map +1 -0
- package/dist/notifications/events/useNotificationEvents.d.ts +36 -0
- package/dist/notifications/events/useNotificationEvents.d.ts.map +1 -0
- package/dist/notifications/index.cjs +25 -0
- package/dist/notifications/index.cjs.map +1 -0
- package/dist/notifications/index.d.ts +9 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +25 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/services/admin-notifications.d.ts +95 -0
- package/dist/services/admin-notifications.d.ts.map +1 -0
- package/dist/services/broadcasts.d.ts +55 -0
- package/dist/services/broadcasts.d.ts.map +1 -0
- package/dist/services/index.cjs +34 -1
- package/dist/services/index.cjs.map +1 -1
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +35 -2
- package/dist/services/index.js.map +1 -1
- package/dist/types/index.cjs +108 -0
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +109 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/notifications.d.ts +634 -0
- package/dist/types/notifications.d.ts.map +1 -0
- package/dist/useBroadcasts-DzpCcbC8.js +161 -0
- package/dist/useBroadcasts-DzpCcbC8.js.map +1 -0
- package/dist/useBroadcasts-FP6ZrcY_.cjs +160 -0
- package/dist/useBroadcasts-FP6ZrcY_.cjs.map +1 -0
- package/dist/{useCampaigns-Dltisb9N.cjs → useCampaigns-BOZ9dDsG.cjs} +2 -2
- package/dist/{useCampaigns-Dltisb9N.cjs.map → useCampaigns-BOZ9dDsG.cjs.map} +1 -1
- package/dist/{useCampaigns-nwfsALsN.js → useCampaigns-D46b9zuf.js} +2 -2
- package/dist/{useCampaigns-nwfsALsN.js.map → useCampaigns-D46b9zuf.js.map} +1 -1
- package/dist/useNotificationEvents-BXeMqdak.cjs +954 -0
- package/dist/useNotificationEvents-BXeMqdak.cjs.map +1 -0
- package/dist/useNotificationEvents-D8DVxah1.js +955 -0
- package/dist/useNotificationEvents-D8DVxah1.js.map +1 -0
- package/package.json +11 -3
- package/dist/AdBanner-CZz8trdz.cjs.map +0 -1
- 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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"}
|