@adatechnology/notification-ui 0.4.0 → 0.5.0

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.
@@ -2,9 +2,9 @@ import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import * as _adatechnology_notification_client from '@adatechnology/notification-client';
4
4
  import { NotificationClient } from '@adatechnology/notification-client';
5
- import * as _tanstack_react_query from '@tanstack/react-query';
6
5
  import * as _adatechnology_notification_contracts from '@adatechnology/notification-contracts';
7
- import { NotificationSummary, NotificationPreference, PreviewViewportSpec, RenderedTemplatePreview, NotificationTemplate, StandardEmailAssessment, TemplateVariableDefinition, TemplateVariableDiff } from '@adatechnology/notification-contracts';
6
+ import { WebPushSubscription, NotificationSummary, NotificationPreference, PreviewViewportSpec, RenderedTemplatePreview, NotificationTemplate, StandardEmailAssessment, TemplateVariableDefinition, TemplateVariableDiff } from '@adatechnology/notification-contracts';
7
+ import * as _tanstack_react_query from '@tanstack/react-query';
8
8
 
9
9
  var ptBR = {
10
10
  "bell.label": "Notificações",
@@ -20,6 +20,7 @@ var ptBR = {
20
20
  "item.markAsRead": "Marcar como lida",
21
21
  "item.delete": "Excluir",
22
22
  "item.unread": "Não lida",
23
+ "item.addToCalendar": "Adicionar à agenda",
23
24
  "preferences.title": "Preferências de notificação",
24
25
  "preferences.description": "Escolha por onde você quer ser avisado em cada assunto.",
25
26
  "preferences.save": "Salvar preferências",
@@ -115,7 +116,17 @@ var ptBR = {
115
116
  "toolbar.italic": "Italico",
116
117
  "toolbar.strikethrough": "Tachado",
117
118
  "toolbar.monospace": "Monoespacado",
118
- "toolbar.emoji": "Emoji"
119
+ "toolbar.emoji": "Emoji",
120
+ "banner.title": "Ativar notificações",
121
+ "banner.description": "Receba lembretes de atividades, mensagens e avisos importantes diretamente no seu navegador.",
122
+ "banner.allow": "Permitir notificações",
123
+ "banner.dismiss": "Agora não",
124
+ "banner.activeTitle": "Notificações ativas",
125
+ "banner.activeDescription": "Você está recebendo notificações neste navegador.",
126
+ "banner.disable": "Desativar notificações",
127
+ "banner.disabling": "Desativando…",
128
+ "banner.deniedTitle": "Notificações bloqueadas",
129
+ "banner.deniedDescription": "As notificações estão bloqueadas no navegador. Para receber alertas, permita nas configurações do site."
119
130
  };
120
131
 
121
132
  /**
@@ -159,6 +170,45 @@ type NotificationProviderProps = {
159
170
  };
160
171
  declare function NotificationProvider({ client, locale, messageOverrides, theme, pollIntervalSeconds, children, }: NotificationProviderProps): react.JSX.Element;
161
172
  declare function useNotificationContext(): NotificationContextValue;
173
+ declare function useOptionalNotificationContext(): NotificationContextValue | null;
174
+
175
+ /**
176
+ * Copyright (c) 2026 Ada Technology. MIT License.
177
+ *
178
+ * Hook headless para gerenciar permissão e ciclo de vida de Web Push no navegador.
179
+ * Isomórfico: seguro em SSR/Node/Bun sem quebrar quando `window` ou `Notification` não existem.
180
+ */
181
+
182
+ type NotificationPermissionStatus = 'default' | 'granted' | 'denied' | 'unsupported';
183
+ type UseNotificationPermissionOptions = {
184
+ /** Chave pública VAPID necessária para inscrição Web Push. Se omitida, tenta buscar via client.getVapidPublicKey(). */
185
+ readonly vapidPublicKey?: string;
186
+ /** Chave do localStorage para guardar a dispensa temporária do banner. Padrão: 'adatechnology:notification:permission-dismissed' */
187
+ readonly storageKey?: string;
188
+ /** Validade da dispensa em ms (padrão: 7 dias). 0 para permanente. */
189
+ readonly dismissTtlMs?: number;
190
+ /** Chave do localStorage onde o id do dispositivo registrado é salvo. Padrão: 'adatechnology:notification:device-id' */
191
+ readonly deviceStorageKey?: string;
192
+ /** Callback executado após inscrição bem-sucedida. */
193
+ readonly onSubscribe?: (subscription: WebPushSubscription) => Promise<void> | void;
194
+ /** Callback executado após cancelamento/desativação. */
195
+ readonly onUnsubscribe?: () => Promise<void> | void;
196
+ /** ServiceWorkerRegistration específico (opcional, senão aguarda navigator.serviceWorker.ready). */
197
+ readonly serviceWorkerRegistration?: ServiceWorkerRegistration;
198
+ };
199
+ type UseNotificationPermissionResult = {
200
+ readonly permission: NotificationPermissionStatus;
201
+ readonly isSupported: boolean;
202
+ readonly isSubscribed: boolean;
203
+ readonly isDismissed: boolean;
204
+ readonly isPending: boolean;
205
+ readonly error: Error | null;
206
+ readonly requestPermission: () => Promise<boolean>;
207
+ readonly disableNotifications: () => Promise<boolean>;
208
+ readonly dismiss: () => void;
209
+ readonly resetDismissed: () => void;
210
+ };
211
+ declare function useNotificationPermission(options?: UseNotificationPermissionOptions): UseNotificationPermissionResult;
162
212
 
163
213
  type UseNotificationsOptions = {
164
214
  readonly category?: string;
@@ -485,4 +535,4 @@ type UseTemplateEditorResult = {
485
535
  };
486
536
  declare function useTemplateEditor(params?: UseTemplateEditorParams): UseTemplateEditorResult;
487
537
 
488
- export { useDeleteNotification as A, useMarkAllAsRead as B, useMarkAsRead as C, DEFAULT_LOCALE as D, useNotificationContext as E, useNotificationStream as F, useNotifications as G, usePreferences as H, useRestoreTemplateDefault as I, useTemplateEditor as J, useTemplateVariables as K, useTemplates as L, useUnreadCount as M, NOTIFICATION_QUERY_KEYS as N, useUpdatePreferences as O, useUpsertTemplate as P, SORT_DIRECTIONS as S, TEMPLATE_COLUMNS as T, type UseCategoryPoliciesResult as U, type NotificationContextValue as a, type NotificationLocale as b, type NotificationMessages as c, NotificationProvider as d, type NotificationProviderProps as e, type NotificationTheme as f, type SortDirection as g, TEMPLATE_SORT_FIELDS as h, TEMPLATE_VIEWS as i, type TemplateColumn as j, type TemplateDraft as k, type TemplateDraftField as l, type TemplatePreviewFrame as m, type TemplateSort as n, type TemplateSortField as o, type TemplateView as p, type UseNotificationStreamOptions as q, type UseNotificationsOptions as r, type UseTemplateEditorParams as s, type UseTemplateEditorResult as t, flattenNotificationPages as u, formatNotificationTime as v, formatNotificationTimestamp as w, resolveMessages as x, useCategoryPolicies as y, useDeactivateTemplate as z };
538
+ export { resolveMessages as A, useCategoryPolicies as B, useDeactivateTemplate as C, DEFAULT_LOCALE as D, useDeleteNotification as E, useMarkAllAsRead as F, useMarkAsRead as G, useNotificationContext as H, useNotificationPermission as I, useNotificationStream as J, useNotifications as K, useOptionalNotificationContext as L, usePreferences as M, NOTIFICATION_QUERY_KEYS as N, useRestoreTemplateDefault as O, useTemplateEditor as P, useTemplateVariables as Q, useTemplates as R, SORT_DIRECTIONS as S, TEMPLATE_COLUMNS as T, type UseCategoryPoliciesResult as U, useUnreadCount as V, useUpdatePreferences as W, useUpsertTemplate as X, type NotificationContextValue as a, type NotificationLocale as b, type NotificationMessages as c, type NotificationPermissionStatus as d, NotificationProvider as e, type NotificationProviderProps as f, type NotificationTheme as g, type SortDirection as h, TEMPLATE_SORT_FIELDS as i, TEMPLATE_VIEWS as j, type TemplateColumn as k, type TemplateDraft as l, type TemplateDraftField as m, type TemplatePreviewFrame as n, type TemplateSort as o, type TemplateSortField as p, type TemplateView as q, type UseNotificationPermissionOptions as r, type UseNotificationPermissionResult as s, type UseNotificationStreamOptions as t, type UseNotificationsOptions as u, type UseTemplateEditorParams as v, type UseTemplateEditorResult as w, flattenNotificationPages as x, formatNotificationTime as y, formatNotificationTimestamp as z };
@@ -1,5 +1,5 @@
1
- export { D as DEFAULT_LOCALE, N as NOTIFICATION_QUERY_KEYS, a as NotificationContextValue, b as NotificationLocale, c as NotificationMessages, d as NotificationProvider, e as NotificationProviderProps, f as NotificationTheme, k as TemplateDraft, l as TemplateDraftField, m as TemplatePreviewFrame, U as UseCategoryPoliciesResult, q as UseNotificationStreamOptions, r as UseNotificationsOptions, s as UseTemplateEditorParams, t as UseTemplateEditorResult, u as flattenNotificationPages, v as formatNotificationTime, w as formatNotificationTimestamp, x as resolveMessages, y as useCategoryPolicies, z as useDeactivateTemplate, A as useDeleteNotification, B as useMarkAllAsRead, C as useMarkAsRead, E as useNotificationContext, F as useNotificationStream, G as useNotifications, H as usePreferences, I as useRestoreTemplateDefault, J as useTemplateEditor, K as useTemplateVariables, L as useTemplates, M as useUnreadCount, O as useUpdatePreferences, P as useUpsertTemplate } from './headless-03_gfBEI.js';
1
+ export { D as DEFAULT_LOCALE, N as NOTIFICATION_QUERY_KEYS, a as NotificationContextValue, b as NotificationLocale, c as NotificationMessages, d as NotificationPermissionStatus, e as NotificationProvider, f as NotificationProviderProps, g as NotificationTheme, l as TemplateDraft, m as TemplateDraftField, n as TemplatePreviewFrame, U as UseCategoryPoliciesResult, r as UseNotificationPermissionOptions, s as UseNotificationPermissionResult, t as UseNotificationStreamOptions, u as UseNotificationsOptions, v as UseTemplateEditorParams, w as UseTemplateEditorResult, x as flattenNotificationPages, y as formatNotificationTime, z as formatNotificationTimestamp, A as resolveMessages, B as useCategoryPolicies, C as useDeactivateTemplate, E as useDeleteNotification, F as useMarkAllAsRead, G as useMarkAsRead, H as useNotificationContext, I as useNotificationPermission, J as useNotificationStream, K as useNotifications, L as useOptionalNotificationContext, M as usePreferences, O as useRestoreTemplateDefault, P as useTemplateEditor, Q as useTemplateVariables, R as useTemplates, V as useUnreadCount, W as useUpdatePreferences, X as useUpsertTemplate } from './headless--Os4o240.js';
2
2
  import 'react';
3
3
  import '@adatechnology/notification-client';
4
- import '@tanstack/react-query';
5
4
  import '@adatechnology/notification-contracts';
5
+ import '@tanstack/react-query';
package/dist/headless.js CHANGED
@@ -12,8 +12,10 @@ import {
12
12
  useMarkAllAsRead,
13
13
  useMarkAsRead,
14
14
  useNotificationContext,
15
+ useNotificationPermission,
15
16
  useNotificationStream,
16
17
  useNotifications,
18
+ useOptionalNotificationContext,
17
19
  usePreferences,
18
20
  useRestoreTemplateDefault,
19
21
  useTemplateEditor,
@@ -22,7 +24,7 @@ import {
22
24
  useUnreadCount,
23
25
  useUpdatePreferences,
24
26
  useUpsertTemplate
25
- } from "./chunk-SFMOFCHV.js";
27
+ } from "./chunk-7A6A4MNA.js";
26
28
  export {
27
29
  DEFAULT_LOCALE,
28
30
  NOTIFICATION_QUERY_KEYS,
@@ -37,8 +39,10 @@ export {
37
39
  useMarkAllAsRead,
38
40
  useMarkAsRead,
39
41
  useNotificationContext,
42
+ useNotificationPermission,
40
43
  useNotificationStream,
41
44
  useNotifications,
45
+ useOptionalNotificationContext,
42
46
  usePreferences,
43
47
  useRestoreTemplateDefault,
44
48
  useTemplateEditor,
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { D as DEFAULT_LOCALE, N as NOTIFICATION_QUERY_KEYS, a as NotificationContextValue, b as NotificationLocale, c as NotificationMessages, d as NotificationProvider, e as NotificationProviderProps, f as NotificationTheme, S as SORT_DIRECTIONS, g as SortDirection, T as TEMPLATE_COLUMNS, h as TEMPLATE_SORT_FIELDS, i as TEMPLATE_VIEWS, j as TemplateColumn, k as TemplateDraft, l as TemplateDraftField, m as TemplatePreviewFrame, n as TemplateSort, o as TemplateSortField, p as TemplateView, U as UseCategoryPoliciesResult, q as UseNotificationStreamOptions, r as UseNotificationsOptions, s as UseTemplateEditorParams, t as UseTemplateEditorResult, u as flattenNotificationPages, v as formatNotificationTime, w as formatNotificationTimestamp, x as resolveMessages, y as useCategoryPolicies, z as useDeactivateTemplate, A as useDeleteNotification, B as useMarkAllAsRead, C as useMarkAsRead, E as useNotificationContext, F as useNotificationStream, G as useNotifications, H as usePreferences, I as useRestoreTemplateDefault, J as useTemplateEditor, K as useTemplateVariables, L as useTemplates, M as useUnreadCount, O as useUpdatePreferences, P as useUpsertTemplate } from './headless-03_gfBEI.js';
1
+ export { D as DEFAULT_LOCALE, N as NOTIFICATION_QUERY_KEYS, a as NotificationContextValue, b as NotificationLocale, c as NotificationMessages, d as NotificationPermissionStatus, e as NotificationProvider, f as NotificationProviderProps, g as NotificationTheme, S as SORT_DIRECTIONS, h as SortDirection, T as TEMPLATE_COLUMNS, i as TEMPLATE_SORT_FIELDS, j as TEMPLATE_VIEWS, k as TemplateColumn, l as TemplateDraft, m as TemplateDraftField, n as TemplatePreviewFrame, o as TemplateSort, p as TemplateSortField, q as TemplateView, U as UseCategoryPoliciesResult, r as UseNotificationPermissionOptions, s as UseNotificationPermissionResult, t as UseNotificationStreamOptions, u as UseNotificationsOptions, v as UseTemplateEditorParams, w as UseTemplateEditorResult, x as flattenNotificationPages, y as formatNotificationTime, z as formatNotificationTimestamp, A as resolveMessages, B as useCategoryPolicies, C as useDeactivateTemplate, E as useDeleteNotification, F as useMarkAllAsRead, G as useMarkAsRead, H as useNotificationContext, I as useNotificationPermission, J as useNotificationStream, K as useNotifications, L as useOptionalNotificationContext, M as usePreferences, O as useRestoreTemplateDefault, P as useTemplateEditor, Q as useTemplateVariables, R as useTemplates, V as useUnreadCount, W as useUpdatePreferences, X as useUpsertTemplate } from './headless--Os4o240.js';
2
2
  import * as react from 'react';
3
- import { ReactNode } from 'react';
4
- import { NotificationSummary, NotificationTemplate, RenderedTemplatePreview } from '@adatechnology/notification-contracts';
3
+ import react__default, { ReactNode } from 'react';
4
+ import { NotificationSummary, WebPushSubscription, NotificationTemplate, RenderedTemplatePreview } from '@adatechnology/notification-contracts';
5
5
  import '@adatechnology/notification-client';
6
6
  import '@tanstack/react-query';
7
7
 
@@ -47,6 +47,32 @@ type PreferencesPanelProps = {
47
47
  };
48
48
  declare function PreferencesPanel({ className }: PreferencesPanelProps): react.JSX.Element;
49
49
 
50
+ /**
51
+ * Copyright (c) 2026 Ada Technology. MIT License.
52
+ *
53
+ * Componente acessível de aviso para permitir ou desativar notificações do navegador (Web Push).
54
+ */
55
+
56
+ type NotificationPermissionBannerProps = {
57
+ /** Chave pública VAPID para registro do Web Push. */
58
+ readonly vapidPublicKey?: string;
59
+ /** Chave do localStorage para persistir a dispensa do banner. */
60
+ readonly storageKey?: string;
61
+ /** Mostra o banner quando as notificações já estão ativas (permite desativação). Padrão: false */
62
+ readonly showWhenGranted?: boolean;
63
+ /** Mostra o banner informativo quando as notificações foram bloqueadas no navegador. Padrão: true */
64
+ readonly showWhenDenied?: boolean;
65
+ /** Callback opcional ao se inscrever com sucesso. */
66
+ readonly onSubscribe?: (subscription: WebPushSubscription) => void | Promise<void>;
67
+ /** Callback opcional ao desativar notificações. */
68
+ readonly onUnsubscribe?: () => void | Promise<void>;
69
+ /** Callback disparado quando o usuário clica em dispensar/fechar. */
70
+ readonly onDismiss?: () => void;
71
+ /** Classe CSS customizada para o contêiner raiz. */
72
+ readonly className?: string;
73
+ };
74
+ declare function NotificationPermissionBanner({ vapidPublicKey, storageKey, showWhenGranted, showWhenDenied, onSubscribe, onUnsubscribe, onDismiss, className, }: NotificationPermissionBannerProps): react__default.JSX.Element | null;
75
+
50
76
  type NotificationsWorkspaceProps = {
51
77
  /** Sobrescreve textos pontuais sem trocar o locale inteiro. */
52
78
  readonly labels?: Partial<Record<string, string>>;
@@ -359,4 +385,4 @@ declare function insertAt({ text, insertion, selectionStart, selectionEnd, }: {
359
385
  readonly selectionEnd: number;
360
386
  }): ApplyMarkResult;
361
387
 
362
- export { HTML_TOKEN, HtmlCodeField, type HtmlCodeFieldProblem, type HtmlCodeFieldProps, type HtmlToken, type HtmlTokenKind, MESSAGE_EMOJI, MESSAGE_FORMAT, MESSAGE_FORMAT_MARKS, MessageBodyField, type MessageBodyFieldProps, type MessageFormat, type MessageFormatMark, MessageToolbar, type MessageToolbarProps, NotificationBell, type NotificationBellProps, type NotificationCategoryOption, type NotificationChannelOption, NotificationItem, type NotificationItemProps, NotificationList, type NotificationListProps, NotificationSettingsWorkspace, type NotificationSettingsWorkspaceProps, NotificationsWorkspace, type NotificationsWorkspaceProps, PreferencesPanel, type PreferencesPanelProps, type PreviewAttachment, type PreviewLabels, TemplatePreview, type TemplatePreviewProps, applyMark, insertAt, tokenizeHtml };
388
+ export { HTML_TOKEN, HtmlCodeField, type HtmlCodeFieldProblem, type HtmlCodeFieldProps, type HtmlToken, type HtmlTokenKind, MESSAGE_EMOJI, MESSAGE_FORMAT, MESSAGE_FORMAT_MARKS, MessageBodyField, type MessageBodyFieldProps, type MessageFormat, type MessageFormatMark, MessageToolbar, type MessageToolbarProps, NotificationBell, type NotificationBellProps, type NotificationCategoryOption, type NotificationChannelOption, NotificationItem, type NotificationItemProps, NotificationList, type NotificationListProps, NotificationPermissionBanner, type NotificationPermissionBannerProps, NotificationSettingsWorkspace, type NotificationSettingsWorkspaceProps, NotificationsWorkspace, type NotificationsWorkspaceProps, PreferencesPanel, type PreferencesPanelProps, type PreviewAttachment, type PreviewLabels, TemplatePreview, type TemplatePreviewProps, applyMark, insertAt, tokenizeHtml };