@elcrm/notifications
v0.3.3
Published
In-app inbox и Web Push для elCRM: Bell, Service Worker, подписка без FCM/APNs SDK.
Downloads
455
Maintainers
Readme
@elcrm/notifications
In-app inbox + Web Push для elCRM. Сервер: @elcrm/server ≥ 0.3.0.
Установка
bun add @elcrm/notifications @elcrm/serverimport { Notifications, bindRouterNavigate } from "@elcrm/notifications";
// Vite ?url инлайнит маленький SW в data: — браузер не регистрирует.
// Кладём файл в public/ или отдаём с API: GET /push-sw.js
const workerUrl = "/push-sw.js";
import "@elcrm/notifications/style.css";
import "@elcrm/notifications/light.css";
// опционально: deep link в @elcrm/router
bindRouterNavigate((url) => {
// applyPathnameToRouterData(new URL(url, location.origin).pathname)
});
<Notifications.Init
workerUrl={workerUrl}
tenantId="acme"
groupBy="module"
appBadge
autoSync
getVapidPublicKey={async () => (await api("notifications/vapid")).publicKey}
onSubscribe={(sub) => api("notifications/subscribe", sub)}
fetchPrefs={async () => (await api("notifications/prefsGet")).prefs}
onPrefsChange={(p) => api("notifications/prefsSet", p)}
onNavigate={(url) => {/* router */}}
/>
<Notifications.Bell />Возможности
| Область | Что есть |
|---------|----------|
| Push | enable / disable / sync, SW actions, subscriptionchange |
| Inbox | группировка module/tag, «N новых» |
| UI | mute / quiet hours в настройках Bell |
| Badge | navigator.setAppBadge |
| Navigate | onNavigate / bindRouterNavigate / elcrm:navigate |
| Темы | ./light.css ./dark.css |
Демо / тесты
bun run demo:server
bun run dev
bun run test
bun run test:e2e # Playwright, mock SW/NotificationСм. dev.md.
