@novu/react 3.17.0 → 3.17.1-rc.1-rc.da35e9062d

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 (55) hide show
  1. package/dist/cjs/components/index.cjs +3 -1
  2. package/dist/cjs/components/index.cjs.map +1 -1
  3. package/dist/cjs/components/index.d.cts +2 -0
  4. package/dist/cjs/components/telegram-connect-button/DefaultTelegramConnectButton.cjs +77 -0
  5. package/dist/cjs/components/telegram-connect-button/DefaultTelegramConnectButton.cjs.map +1 -0
  6. package/dist/cjs/components/telegram-connect-button/DefaultTelegramConnectButton.d.cts +7 -0
  7. package/dist/cjs/components/telegram-connect-button/TelegramConnectButton.cjs +63 -0
  8. package/dist/cjs/components/telegram-connect-button/TelegramConnectButton.cjs.map +1 -0
  9. package/dist/cjs/components/telegram-connect-button/TelegramConnectButton.d.cts +12 -0
  10. package/dist/cjs/hooks/index.cjs +2 -0
  11. package/dist/cjs/hooks/index.cjs.map +1 -1
  12. package/dist/cjs/hooks/index.d.cts +1 -0
  13. package/dist/cjs/hooks/useCounts.cjs +64 -45
  14. package/dist/cjs/hooks/useCounts.cjs.map +1 -1
  15. package/dist/cjs/hooks/usePreferences.cjs +2 -1
  16. package/dist/cjs/hooks/usePreferences.cjs.map +1 -1
  17. package/dist/cjs/hooks/useSchedule.cjs +2 -1
  18. package/dist/cjs/hooks/useSchedule.cjs.map +1 -1
  19. package/dist/cjs/hooks/useTelegramSubscriberLink.cjs +82 -0
  20. package/dist/cjs/hooks/useTelegramSubscriberLink.cjs.map +1 -0
  21. package/dist/cjs/hooks/useTelegramSubscriberLink.d.cts +51 -0
  22. package/dist/cjs/index.cjs +4 -0
  23. package/dist/cjs/index.cjs.map +1 -1
  24. package/dist/cjs/index.d.cts +3 -0
  25. package/dist/cjs/server/index.cjs +25 -0
  26. package/dist/cjs/server/index.cjs.map +1 -1
  27. package/dist/cjs/server/index.d.cts +6 -1
  28. package/dist/esm/components/index.d.ts +2 -0
  29. package/dist/esm/components/index.js +1 -0
  30. package/dist/esm/components/index.js.map +1 -1
  31. package/dist/esm/components/telegram-connect-button/DefaultTelegramConnectButton.d.ts +7 -0
  32. package/dist/esm/components/telegram-connect-button/DefaultTelegramConnectButton.js +52 -0
  33. package/dist/esm/components/telegram-connect-button/DefaultTelegramConnectButton.js.map +1 -0
  34. package/dist/esm/components/telegram-connect-button/TelegramConnectButton.d.ts +12 -0
  35. package/dist/esm/components/telegram-connect-button/TelegramConnectButton.js +28 -0
  36. package/dist/esm/components/telegram-connect-button/TelegramConnectButton.js.map +1 -0
  37. package/dist/esm/hooks/index.d.ts +1 -0
  38. package/dist/esm/hooks/index.js +1 -0
  39. package/dist/esm/hooks/index.js.map +1 -1
  40. package/dist/esm/hooks/useCounts.js +65 -47
  41. package/dist/esm/hooks/useCounts.js.map +1 -1
  42. package/dist/esm/hooks/usePreferences.js +2 -1
  43. package/dist/esm/hooks/usePreferences.js.map +1 -1
  44. package/dist/esm/hooks/useSchedule.js +2 -1
  45. package/dist/esm/hooks/useSchedule.js.map +1 -1
  46. package/dist/esm/hooks/useTelegramSubscriberLink.d.ts +51 -0
  47. package/dist/esm/hooks/useTelegramSubscriberLink.js +57 -0
  48. package/dist/esm/hooks/useTelegramSubscriberLink.js.map +1 -0
  49. package/dist/esm/index.d.ts +3 -0
  50. package/dist/esm/index.js +5 -1
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/server/index.d.ts +6 -1
  53. package/dist/esm/server/index.js +20 -0
  54. package/dist/esm/server/index.js.map +1 -1
  55. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/usePreferences.ts"],"sourcesContent":["import { NovuError, Preference, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\nimport { useEffect, useState } from 'react';\nimport { useNovu } from './NovuProvider';\n\nexport type UsePreferencesProps = {\n filter?: {\n tags?: string[];\n severity?: SeverityLevelEnum | SeverityLevelEnum[];\n criticality?: WorkflowCriticalityEnum;\n };\n onSuccess?: (data: Preference[]) => void;\n onError?: (error: NovuError) => void;\n};\n\nexport type UsePreferencesResult = {\n preferences?: Preference[];\n error?: NovuError;\n isLoading: boolean; // initial loading\n isFetching: boolean; // the request is in flight\n refetch: () => Promise<void>;\n};\n\nexport const usePreferences = (props?: UsePreferencesProps): UsePreferencesResult => {\n const { onSuccess, onError } = props || {};\n const [data, setData] = useState<Preference[]>();\n const { preferences, on } = useNovu();\n const [error, setError] = useState<NovuError>();\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n\n const sync = (event: { data?: Preference[] }) => {\n if (!event.data) {\n return;\n }\n setData(event.data);\n };\n\n useEffect(() => {\n fetchPreferences();\n\n const listUpdatedCleanup = on('preferences.list.updated', sync);\n const listPendingCleanup = on('preferences.list.pending', sync);\n const listResolvedCleanup = on('preferences.list.resolved', sync);\n\n return () => {\n listUpdatedCleanup();\n listPendingCleanup();\n listResolvedCleanup();\n };\n }, []);\n\n const fetchPreferences = async () => {\n setIsFetching(true);\n const response = await preferences.list(props?.filter);\n if (response.error) {\n setError(response.error);\n onError?.(response.error);\n } else {\n onSuccess?.(response.data!);\n }\n setIsLoading(false);\n setIsFetching(false);\n };\n\n const refetch = () => {\n preferences.cache.clearAll();\n\n return fetchPreferences();\n };\n\n return {\n preferences: data,\n error,\n isLoading,\n isFetching,\n refetch,\n };\n};\n"],"mappings":";AACA,SAAS,WAAW,gBAAgB;AACpC,SAAS,eAAe;AAoBjB,IAAM,iBAAiB,CAAC,UAAsD;AACnF,QAAM,EAAE,WAAW,QAAQ,IAAI,SAAS,CAAC;AACzC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAuB;AAC/C,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ;AACpC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAoB;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,OAAO,CAAC,UAAmC;AAC/C,QAAI,CAAC,MAAM,MAAM;AACf;AAAA,IACF;AACA,YAAQ,MAAM,IAAI;AAAA,EACpB;AAEA,YAAU,MAAM;AACd,qBAAiB;AAEjB,UAAM,qBAAqB,GAAG,4BAA4B,IAAI;AAC9D,UAAM,qBAAqB,GAAG,4BAA4B,IAAI;AAC9D,UAAM,sBAAsB,GAAG,6BAA6B,IAAI;AAEhE,WAAO,MAAM;AACX,yBAAmB;AACnB,yBAAmB;AACnB,0BAAoB;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,mBAAmB,YAAY;AACnC,kBAAc,IAAI;AAClB,UAAM,WAAW,MAAM,YAAY,KAAK,OAAO,MAAM;AACrD,QAAI,SAAS,OAAO;AAClB,eAAS,SAAS,KAAK;AACvB,gBAAU,SAAS,KAAK;AAAA,IAC1B,OAAO;AACL,kBAAY,SAAS,IAAK;AAAA,IAC5B;AACA,iBAAa,KAAK;AAClB,kBAAc,KAAK;AAAA,EACrB;AAEA,QAAM,UAAU,MAAM;AACpB,gBAAY,MAAM,SAAS;AAE3B,WAAO,iBAAiB;AAAA,EAC1B;AAEA,SAAO;AAAA,IACL,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/hooks/usePreferences.ts"],"sourcesContent":["import { NovuError, Preference, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\nimport { useEffect, useState } from 'react';\nimport { useNovu } from './NovuProvider';\n\nexport type UsePreferencesProps = {\n filter?: {\n tags?: string[];\n severity?: SeverityLevelEnum | SeverityLevelEnum[];\n criticality?: WorkflowCriticalityEnum;\n };\n onSuccess?: (data: Preference[]) => void;\n onError?: (error: NovuError) => void;\n};\n\nexport type UsePreferencesResult = {\n preferences?: Preference[];\n error?: NovuError;\n isLoading: boolean; // initial loading\n isFetching: boolean; // the request is in flight\n refetch: () => Promise<void>;\n};\n\nexport const usePreferences = (props?: UsePreferencesProps): UsePreferencesResult => {\n const { onSuccess, onError } = props || {};\n const [data, setData] = useState<Preference[]>();\n const { preferences, on } = useNovu();\n const [error, setError] = useState<NovuError>();\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n\n const sync = (event: { data?: Preference[] }) => {\n if (!event.data) {\n return;\n }\n setData(event.data);\n };\n\n useEffect(() => {\n fetchPreferences();\n\n const listUpdatedCleanup = on('preferences.list.updated', sync);\n const listPendingCleanup = on('preferences.list.pending', sync);\n const listResolvedCleanup = on('preferences.list.resolved', sync);\n\n return () => {\n listUpdatedCleanup();\n listPendingCleanup();\n listResolvedCleanup();\n };\n }, []);\n\n const fetchPreferences = async () => {\n setIsFetching(true);\n const response = await preferences.list(props?.filter);\n if (response.error) {\n setError(response.error);\n onError?.(response.error);\n } else if (response.data) {\n setData(response.data);\n onSuccess?.(response.data);\n }\n setIsLoading(false);\n setIsFetching(false);\n };\n\n const refetch = () => {\n preferences.cache.clearAll();\n\n return fetchPreferences();\n };\n\n return {\n preferences: data,\n error,\n isLoading,\n isFetching,\n refetch,\n };\n};\n"],"mappings":";AACA,SAAS,WAAW,gBAAgB;AACpC,SAAS,eAAe;AAoBjB,IAAM,iBAAiB,CAAC,UAAsD;AACnF,QAAM,EAAE,WAAW,QAAQ,IAAI,SAAS,CAAC;AACzC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAuB;AAC/C,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ;AACpC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAoB;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,OAAO,CAAC,UAAmC;AAC/C,QAAI,CAAC,MAAM,MAAM;AACf;AAAA,IACF;AACA,YAAQ,MAAM,IAAI;AAAA,EACpB;AAEA,YAAU,MAAM;AACd,qBAAiB;AAEjB,UAAM,qBAAqB,GAAG,4BAA4B,IAAI;AAC9D,UAAM,qBAAqB,GAAG,4BAA4B,IAAI;AAC9D,UAAM,sBAAsB,GAAG,6BAA6B,IAAI;AAEhE,WAAO,MAAM;AACX,yBAAmB;AACnB,yBAAmB;AACnB,0BAAoB;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,mBAAmB,YAAY;AACnC,kBAAc,IAAI;AAClB,UAAM,WAAW,MAAM,YAAY,KAAK,OAAO,MAAM;AACrD,QAAI,SAAS,OAAO;AAClB,eAAS,SAAS,KAAK;AACvB,gBAAU,SAAS,KAAK;AAAA,IAC1B,WAAW,SAAS,MAAM;AACxB,cAAQ,SAAS,IAAI;AACrB,kBAAY,SAAS,IAAI;AAAA,IAC3B;AACA,iBAAa,KAAK;AAClB,kBAAc,KAAK;AAAA,EACrB;AAEA,QAAM,UAAU,MAAM;AACpB,gBAAY,MAAM,SAAS;AAE3B,WAAO,iBAAiB;AAAA,EAC1B;AAEA,SAAO;AAAA,IACL,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -31,7 +31,8 @@ var useSchedule = (props) => {
31
31
  if (response.error) {
32
32
  setError(response.error);
33
33
  onError?.(response.error);
34
- } else {
34
+ } else if (response.data) {
35
+ setData(response.data);
35
36
  onSuccess?.(response.data);
36
37
  }
37
38
  setIsLoading(false);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useSchedule.ts"],"sourcesContent":["import { NovuError, Schedule } from '@novu/js';\nimport { useEffect, useState } from 'react';\nimport { useNovu } from './NovuProvider';\n\nexport type UseScheduleProps = {\n onSuccess?: (data: Schedule) => void;\n onError?: (error: NovuError) => void;\n};\n\nexport type UseScheduleResult = {\n schedule?: Schedule;\n error?: NovuError;\n isLoading: boolean; // initial loading\n isFetching: boolean; // the request is in flight\n refetch: () => Promise<void>;\n};\n\nexport const useSchedule = (props?: UseScheduleProps): UseScheduleResult => {\n const { onSuccess, onError } = props || {};\n const [data, setData] = useState<Schedule>();\n const { preferences, on } = useNovu();\n const [error, setError] = useState<NovuError>();\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n\n const sync = (event: { data?: Schedule }) => {\n if (!event.data) {\n return;\n }\n setData(event.data);\n };\n\n useEffect(() => {\n fetchSchedule();\n\n const listUpdatedCleanup = on('preference.schedule.get.updated', sync);\n const listPendingCleanup = on('preference.schedule.get.pending', sync);\n const listResolvedCleanup = on('preference.schedule.get.resolved', sync);\n\n return () => {\n listUpdatedCleanup();\n listPendingCleanup();\n listResolvedCleanup();\n };\n }, []);\n\n const fetchSchedule = async () => {\n setIsFetching(true);\n const response = await preferences.schedule.get();\n if (response.error) {\n setError(response.error);\n onError?.(response.error);\n } else {\n onSuccess?.(response.data!);\n }\n setIsLoading(false);\n setIsFetching(false);\n };\n\n const refetch = () => {\n preferences.schedule.cache.clearAll();\n\n return fetchSchedule();\n };\n\n return {\n schedule: data,\n error,\n isLoading,\n isFetching,\n refetch,\n };\n};\n"],"mappings":";AACA,SAAS,WAAW,gBAAgB;AACpC,SAAS,eAAe;AAejB,IAAM,cAAc,CAAC,UAAgD;AAC1E,QAAM,EAAE,WAAW,QAAQ,IAAI,SAAS,CAAC;AACzC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB;AAC3C,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ;AACpC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAoB;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,OAAO,CAAC,UAA+B;AAC3C,QAAI,CAAC,MAAM,MAAM;AACf;AAAA,IACF;AACA,YAAQ,MAAM,IAAI;AAAA,EACpB;AAEA,YAAU,MAAM;AACd,kBAAc;AAEd,UAAM,qBAAqB,GAAG,mCAAmC,IAAI;AACrE,UAAM,qBAAqB,GAAG,mCAAmC,IAAI;AACrE,UAAM,sBAAsB,GAAG,oCAAoC,IAAI;AAEvE,WAAO,MAAM;AACX,yBAAmB;AACnB,yBAAmB;AACnB,0BAAoB;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAgB,YAAY;AAChC,kBAAc,IAAI;AAClB,UAAM,WAAW,MAAM,YAAY,SAAS,IAAI;AAChD,QAAI,SAAS,OAAO;AAClB,eAAS,SAAS,KAAK;AACvB,gBAAU,SAAS,KAAK;AAAA,IAC1B,OAAO;AACL,kBAAY,SAAS,IAAK;AAAA,IAC5B;AACA,iBAAa,KAAK;AAClB,kBAAc,KAAK;AAAA,EACrB;AAEA,QAAM,UAAU,MAAM;AACpB,gBAAY,SAAS,MAAM,SAAS;AAEpC,WAAO,cAAc;AAAA,EACvB;AAEA,SAAO;AAAA,IACL,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/hooks/useSchedule.ts"],"sourcesContent":["import { NovuError, Schedule } from '@novu/js';\nimport { useEffect, useState } from 'react';\nimport { useNovu } from './NovuProvider';\n\nexport type UseScheduleProps = {\n onSuccess?: (data: Schedule) => void;\n onError?: (error: NovuError) => void;\n};\n\nexport type UseScheduleResult = {\n schedule?: Schedule;\n error?: NovuError;\n isLoading: boolean; // initial loading\n isFetching: boolean; // the request is in flight\n refetch: () => Promise<void>;\n};\n\nexport const useSchedule = (props?: UseScheduleProps): UseScheduleResult => {\n const { onSuccess, onError } = props || {};\n const [data, setData] = useState<Schedule>();\n const { preferences, on } = useNovu();\n const [error, setError] = useState<NovuError>();\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n\n const sync = (event: { data?: Schedule }) => {\n if (!event.data) {\n return;\n }\n setData(event.data);\n };\n\n useEffect(() => {\n fetchSchedule();\n\n const listUpdatedCleanup = on('preference.schedule.get.updated', sync);\n const listPendingCleanup = on('preference.schedule.get.pending', sync);\n const listResolvedCleanup = on('preference.schedule.get.resolved', sync);\n\n return () => {\n listUpdatedCleanup();\n listPendingCleanup();\n listResolvedCleanup();\n };\n }, []);\n\n const fetchSchedule = async () => {\n setIsFetching(true);\n const response = await preferences.schedule.get();\n if (response.error) {\n setError(response.error);\n onError?.(response.error);\n } else if (response.data) {\n setData(response.data);\n onSuccess?.(response.data);\n }\n setIsLoading(false);\n setIsFetching(false);\n };\n\n const refetch = () => {\n preferences.schedule.cache.clearAll();\n\n return fetchSchedule();\n };\n\n return {\n schedule: data,\n error,\n isLoading,\n isFetching,\n refetch,\n };\n};\n"],"mappings":";AACA,SAAS,WAAW,gBAAgB;AACpC,SAAS,eAAe;AAejB,IAAM,cAAc,CAAC,UAAgD;AAC1E,QAAM,EAAE,WAAW,QAAQ,IAAI,SAAS,CAAC;AACzC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB;AAC3C,QAAM,EAAE,aAAa,GAAG,IAAI,QAAQ;AACpC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAoB;AAC9C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAElD,QAAM,OAAO,CAAC,UAA+B;AAC3C,QAAI,CAAC,MAAM,MAAM;AACf;AAAA,IACF;AACA,YAAQ,MAAM,IAAI;AAAA,EACpB;AAEA,YAAU,MAAM;AACd,kBAAc;AAEd,UAAM,qBAAqB,GAAG,mCAAmC,IAAI;AACrE,UAAM,qBAAqB,GAAG,mCAAmC,IAAI;AACrE,UAAM,sBAAsB,GAAG,oCAAoC,IAAI;AAEvE,WAAO,MAAM;AACX,yBAAmB;AACnB,yBAAmB;AACnB,0BAAoB;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAgB,YAAY;AAChC,kBAAc,IAAI;AAClB,UAAM,WAAW,MAAM,YAAY,SAAS,IAAI;AAChD,QAAI,SAAS,OAAO;AAClB,eAAS,SAAS,KAAK;AACvB,gBAAU,SAAS,KAAK;AAAA,IAC1B,WAAW,SAAS,MAAM;AACxB,cAAQ,SAAS,IAAI;AACrB,kBAAY,SAAS,IAAI;AAAA,IAC3B;AACA,iBAAa,KAAK;AAClB,kBAAc,KAAK;AAAA,EACrB;AAEA,QAAM,UAAU,MAAM;AACpB,gBAAY,SAAS,MAAM,SAAS;AAEpC,WAAO,cAAc;AAAA,EACvB;AAEA,SAAO;AAAA,IACL,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,51 @@
1
+ import { TelegramSubscriberLinkOptions, TelegramSubscriberLinkStatus } from '@novu/js';
2
+
3
+ type UseTelegramSubscriberLinkProps = TelegramSubscriberLinkOptions;
4
+ type UseTelegramSubscriberLinkResult = {
5
+ /** Current deep-link URL (`t.me/<bot>?start=<code>`), or `null` before the first issue. */
6
+ deepLinkUrl: string | null;
7
+ /** Telegram bot username (no `@`), or `null` before the first issue. */
8
+ botUsername: string | null;
9
+ /** Lifecycle status: `loading` while resolving initial state, `pending` while waiting for Start, `connected` once linked, `expired` briefly before auto-reissue. */
10
+ status: TelegramSubscriberLinkStatus;
11
+ /** Last error, if any. */
12
+ error: Error | null;
13
+ /** Re-issue a fresh deep link and restart polling. */
14
+ refresh: () => Promise<void>;
15
+ };
16
+ /**
17
+ * React hook wrapping {@link TelegramSubscriberLink} from `@novu/js`.
18
+ *
19
+ * Issues a Telegram subscriber-link deep link, polls for connection, and
20
+ * re-issues automatically on code expiry. Returns reactive state that
21
+ * updates as the lifecycle progresses.
22
+ *
23
+ * **Important:** The underlying API endpoint requires `INTEGRATION_WRITE` permission.
24
+ * Either pass `secretKey` for direct server-side usage, or provide a custom
25
+ * `fetchFn` / `apiUrl` that routes through your backend proxy.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * import { useTelegramSubscriberLink } from '@novu/react';
30
+ *
31
+ * function TelegramConnect() {
32
+ * const { deepLinkUrl, botUsername, status, refresh } = useTelegramSubscriberLink({
33
+ * apiUrl: '/api/novu-proxy',
34
+ * integrationIdentifier: '<telegram-integration-identifier>',
35
+ * subscriberId: 'user-42',
36
+ * });
37
+ *
38
+ * if (status === 'connected') return <p>Connected!</p>;
39
+ *
40
+ * return (
41
+ * <div>
42
+ * {deepLinkUrl && <a href={deepLinkUrl}>Open @{botUsername} in Telegram</a>}
43
+ * <button onClick={refresh}>Refresh link</button>
44
+ * </div>
45
+ * );
46
+ * }
47
+ * ```
48
+ */
49
+ declare function useTelegramSubscriberLink(props: UseTelegramSubscriberLinkProps): UseTelegramSubscriberLinkResult;
50
+
51
+ export { type UseTelegramSubscriberLinkProps, type UseTelegramSubscriberLinkResult, useTelegramSubscriberLink };
@@ -0,0 +1,57 @@
1
+ // src/hooks/useTelegramSubscriberLink.ts
2
+ import { TelegramSubscriberLink } from "@novu/js";
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ function useTelegramSubscriberLink(props) {
5
+ const [state, setState] = useState({
6
+ status: "loading",
7
+ deepLinkUrl: null,
8
+ botUsername: null,
9
+ expiresAt: null,
10
+ error: null
11
+ });
12
+ const instanceRef = useRef(null);
13
+ const { apiUrl, secretKey, integrationIdentifier, subscriberId, pollIntervalMs, fetchFn } = props;
14
+ const fetchFnRef = useRef(fetchFn);
15
+ fetchFnRef.current = fetchFn;
16
+ const stableFetchFn = useCallback((input, init) => {
17
+ const fn = fetchFnRef.current ?? fetch;
18
+ return fn(input, init);
19
+ }, []);
20
+ useEffect(() => {
21
+ const link = new TelegramSubscriberLink({
22
+ apiUrl,
23
+ secretKey,
24
+ integrationIdentifier,
25
+ subscriberId,
26
+ pollIntervalMs,
27
+ fetchFn: stableFetchFn
28
+ });
29
+ instanceRef.current = link;
30
+ setState({ ...link.state });
31
+ const unsubscribe = link.onStateChange((next) => {
32
+ setState({ ...next });
33
+ });
34
+ void link.start();
35
+ return () => {
36
+ unsubscribe();
37
+ link.stop();
38
+ instanceRef.current = null;
39
+ };
40
+ }, [apiUrl, secretKey, integrationIdentifier, subscriberId, pollIntervalMs, stableFetchFn]);
41
+ const refresh = useCallback(async () => {
42
+ if (instanceRef.current) {
43
+ await instanceRef.current.refresh();
44
+ }
45
+ }, []);
46
+ return {
47
+ deepLinkUrl: state.deepLinkUrl,
48
+ botUsername: state.botUsername,
49
+ status: state.status,
50
+ error: state.error,
51
+ refresh
52
+ };
53
+ }
54
+ export {
55
+ useTelegramSubscriberLink
56
+ };
57
+ //# sourceMappingURL=useTelegramSubscriberLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useTelegramSubscriberLink.ts"],"sourcesContent":["import type {\n TelegramSubscriberLinkOptions,\n TelegramSubscriberLinkState,\n TelegramSubscriberLinkStatus,\n} from '@novu/js';\nimport { TelegramSubscriberLink } from '@novu/js';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type UseTelegramSubscriberLinkProps = TelegramSubscriberLinkOptions;\n\nexport type UseTelegramSubscriberLinkResult = {\n /** Current deep-link URL (`t.me/<bot>?start=<code>`), or `null` before the first issue. */\n deepLinkUrl: string | null;\n /** Telegram bot username (no `@`), or `null` before the first issue. */\n botUsername: string | null;\n /** Lifecycle status: `loading` while resolving initial state, `pending` while waiting for Start, `connected` once linked, `expired` briefly before auto-reissue. */\n status: TelegramSubscriberLinkStatus;\n /** Last error, if any. */\n error: Error | null;\n /** Re-issue a fresh deep link and restart polling. */\n refresh: () => Promise<void>;\n};\n\n/**\n * React hook wrapping {@link TelegramSubscriberLink} from `@novu/js`.\n *\n * Issues a Telegram subscriber-link deep link, polls for connection, and\n * re-issues automatically on code expiry. Returns reactive state that\n * updates as the lifecycle progresses.\n *\n * **Important:** The underlying API endpoint requires `INTEGRATION_WRITE` permission.\n * Either pass `secretKey` for direct server-side usage, or provide a custom\n * `fetchFn` / `apiUrl` that routes through your backend proxy.\n *\n * @example\n * ```tsx\n * import { useTelegramSubscriberLink } from '@novu/react';\n *\n * function TelegramConnect() {\n * const { deepLinkUrl, botUsername, status, refresh } = useTelegramSubscriberLink({\n * apiUrl: '/api/novu-proxy',\n * integrationIdentifier: '<telegram-integration-identifier>',\n * subscriberId: 'user-42',\n * });\n *\n * if (status === 'connected') return <p>Connected!</p>;\n *\n * return (\n * <div>\n * {deepLinkUrl && <a href={deepLinkUrl}>Open @{botUsername} in Telegram</a>}\n * <button onClick={refresh}>Refresh link</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useTelegramSubscriberLink(props: UseTelegramSubscriberLinkProps): UseTelegramSubscriberLinkResult {\n const [state, setState] = useState<TelegramSubscriberLinkState>({\n status: 'loading',\n deepLinkUrl: null,\n botUsername: null,\n expiresAt: null,\n error: null,\n });\n\n const instanceRef = useRef<TelegramSubscriberLink | null>(null);\n\n const { apiUrl, secretKey, integrationIdentifier, subscriberId, pollIntervalMs, fetchFn } = props;\n\n // Keep the latest `fetchFn` in a ref so a new inline-function identity on every\n // render does not re-trigger the effect (which would tear down and re-issue the\n // link on a loop). The stable wrapper below reads from this ref.\n const fetchFnRef = useRef(fetchFn);\n fetchFnRef.current = fetchFn;\n\n const stableFetchFn = useCallback<typeof fetch>((input, init) => {\n const fn = fetchFnRef.current ?? fetch;\n\n return fn(input, init);\n }, []);\n\n useEffect(() => {\n const link = new TelegramSubscriberLink({\n apiUrl,\n secretKey,\n integrationIdentifier,\n subscriberId,\n pollIntervalMs,\n fetchFn: stableFetchFn,\n });\n\n instanceRef.current = link;\n setState({ ...link.state });\n\n const unsubscribe = link.onStateChange((next) => {\n setState({ ...next });\n });\n\n void link.start();\n\n return () => {\n unsubscribe();\n link.stop();\n instanceRef.current = null;\n };\n }, [apiUrl, secretKey, integrationIdentifier, subscriberId, pollIntervalMs, stableFetchFn]);\n\n const refresh = useCallback(async () => {\n if (instanceRef.current) {\n await instanceRef.current.refresh();\n }\n }, []);\n\n return {\n deepLinkUrl: state.deepLinkUrl,\n botUsername: state.botUsername,\n status: state.status,\n error: state.error,\n refresh,\n };\n}\n"],"mappings":";AAKA,SAAS,8BAA8B;AACvC,SAAS,aAAa,WAAW,QAAQ,gBAAgB;AAkDlD,SAAS,0BAA0B,OAAwE;AAChH,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsC;AAAA,IAC9D,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,EACT,CAAC;AAED,QAAM,cAAc,OAAsC,IAAI;AAE9D,QAAM,EAAE,QAAQ,WAAW,uBAAuB,cAAc,gBAAgB,QAAQ,IAAI;AAK5F,QAAM,aAAa,OAAO,OAAO;AACjC,aAAW,UAAU;AAErB,QAAM,gBAAgB,YAA0B,CAAC,OAAO,SAAS;AAC/D,UAAM,KAAK,WAAW,WAAW;AAEjC,WAAO,GAAG,OAAO,IAAI;AAAA,EACvB,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,OAAO,IAAI,uBAAuB;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AAED,gBAAY,UAAU;AACtB,aAAS,EAAE,GAAG,KAAK,MAAM,CAAC;AAE1B,UAAM,cAAc,KAAK,cAAc,CAAC,SAAS;AAC/C,eAAS,EAAE,GAAG,KAAK,CAAC;AAAA,IACtB,CAAC;AAED,SAAK,KAAK,MAAM;AAEhB,WAAO,MAAM;AACX,kBAAY;AACZ,WAAK,KAAK;AACV,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,QAAQ,WAAW,uBAAuB,cAAc,gBAAgB,aAAa,CAAC;AAE1F,QAAM,UAAU,YAAY,YAAY;AACtC,QAAI,YAAY,SAAS;AACvB,YAAM,YAAY,QAAQ,QAAQ;AAAA,IACpC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL,aAAa,MAAM;AAAA,IACnB,aAAa,MAAM;AAAA,IACnB,QAAQ,MAAM;AAAA,IACd,OAAO,MAAM;AAAA,IACb;AAAA,EACF;AACF;","names":[]}
@@ -14,6 +14,7 @@ export { SlackLinkUser, SlackLinkUserProps } from './components/slack-link-user/
14
14
  export { Subscription, SubscriptionProps } from './components/subscription/Subscription.js';
15
15
  export { SubscriptionButton, SubscriptionButtonProps } from './components/subscription/SubscriptionButton.js';
16
16
  export { SubscriptionPreferences, SubscriptionPreferencesProps } from './components/subscription/SubscriptionPreferences.js';
17
+ export { TelegramConnectButton, TelegramConnectButtonProps } from './components/telegram-connect-button/TelegramConnectButton.js';
17
18
  export { UseChannelConnectionProps, UseChannelConnectionResult, useChannelConnection } from './hooks/useChannelConnection.js';
18
19
  export { UseChannelConnectionsProps, UseChannelConnectionsResult, useChannelConnections } from './hooks/useChannelConnections.js';
19
20
  export { UseChannelEndpointProps, UseChannelEndpointResult, useChannelEndpoint } from './hooks/useChannelEndpoint.js';
@@ -27,6 +28,7 @@ export { useRemoveSubscription } from './hooks/useRemoveSubscription.js';
27
28
  export { UseScheduleProps as UsePreferencesProps, useSchedule } from './hooks/useSchedule.js';
28
29
  export { useSubscription } from './hooks/useSubscription.js';
29
30
  export { useSubscriptions } from './hooks/useSubscriptions.js';
31
+ export { UseTelegramSubscriberLinkProps, UseTelegramSubscriberLinkResult, useTelegramSubscriberLink } from './hooks/useTelegramSubscriberLink.js';
30
32
  export { useUpdateSubscription } from './hooks/useUpdateSubscription.js';
31
33
  export { BaseProps, BellRenderer, BodyRenderer, DefaultInboxProps, DefaultProps, NoRendererProps, NotificationRendererProps, NotificationsRenderer, ReactAllAppearance, ReactInboxAppearance, ReactInboxTheme, ReactSubscriptionAppearance, ReactSubscriptionTheme, SubjectBodyRendererProps, SubjectRenderer, WithChildrenProps } from './utils/types.js';
32
34
  import 'react/jsx-runtime';
@@ -37,3 +39,4 @@ import './components/msteams-link-user/DefaultMsTeamsLinkUser.js';
37
39
  import './components/slack-connect-button/DefaultSlackConnectButton.js';
38
40
  import './components/slack-link-user/DefaultSlackLinkUser.js';
39
41
  import './components/subscription/DefaultSubscription.js';
42
+ import './components/telegram-connect-button/DefaultTelegramConnectButton.js';
package/dist/esm/index.js CHANGED
@@ -13,7 +13,8 @@ import {
13
13
  SlackLinkUser,
14
14
  Subscription,
15
15
  SubscriptionButton,
16
- SubscriptionPreferences
16
+ SubscriptionPreferences,
17
+ TelegramConnectButton
17
18
  } from "./components/index.js";
18
19
  import {
19
20
  useChannelConnection,
@@ -30,6 +31,7 @@ import {
30
31
  useSchedule,
31
32
  useSubscription,
32
33
  useSubscriptions,
34
+ useTelegramSubscriberLink,
33
35
  useUpdateSubscription
34
36
  } from "./hooks/index.js";
35
37
  export {
@@ -48,6 +50,7 @@ export {
48
50
  Subscription,
49
51
  SubscriptionButton,
50
52
  SubscriptionPreferences,
53
+ TelegramConnectButton,
51
54
  WorkflowCriticalityEnum,
52
55
  useChannelConnection,
53
56
  useChannelConnections,
@@ -63,6 +66,7 @@ export {
63
66
  useSchedule,
64
67
  useSubscription,
65
68
  useSubscriptions,
69
+ useTelegramSubscriberLink,
66
70
  useUpdateSubscription
67
71
  };
68
72
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ChannelConnectButtonIconKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\nexport type {\n BellProps,\n InboxContentProps,\n InboxProps,\n MsTeamsConnectButtonProps,\n MsTeamsLinkUserProps,\n NotificationProps,\n NovuProviderProps,\n SlackConnectButtonProps,\n SlackLinkUserProps,\n SubscriptionButtonProps,\n SubscriptionPreferencesProps,\n SubscriptionProps,\n} from './components';\nexport {\n Bell,\n Inbox,\n InboxContent,\n MsTeamsConnectButton,\n MsTeamsLinkUser,\n Notifications,\n NovuProvider,\n Preferences,\n SlackConnectButton,\n SlackLinkUser,\n Subscription,\n SubscriptionButton,\n SubscriptionPreferences,\n} from './components';\nexport type {\n UseChannelConnectionProps,\n UseChannelConnectionResult,\n UseChannelConnectionsProps,\n UseChannelConnectionsResult,\n UseChannelEndpointProps,\n UseChannelEndpointResult,\n UseCountsProps,\n UseCountsResult,\n UseCreateChannelEndpointProps,\n UseCreateChannelEndpointResult,\n UseDeleteChannelEndpointProps,\n UseDeleteChannelEndpointResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n} from './hooks';\nexport {\n useChannelConnection,\n useChannelConnections,\n useChannelEndpoint,\n useCounts,\n useCreateChannelEndpoint,\n useCreateSubscription,\n useDeleteChannelEndpoint,\n useNotifications,\n useNovu,\n usePreferences,\n useRemoveSubscription,\n useSchedule,\n useSubscription,\n useSubscriptions,\n useUpdateSubscription,\n} from './hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n ReactAllAppearance,\n ReactInboxAppearance,\n ReactInboxTheme,\n ReactSubscriptionAppearance,\n ReactSubscriptionTheme,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from './utils/types';\n"],"mappings":";AACA,SAAS,iBAAiB,mBAAmB,+BAA+B;AAgD5E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAmBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ChannelConnectButtonIconKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\nexport type {\n BellProps,\n InboxContentProps,\n InboxProps,\n MsTeamsConnectButtonProps,\n MsTeamsLinkUserProps,\n NotificationProps,\n NovuProviderProps,\n SlackConnectButtonProps,\n SlackLinkUserProps,\n SubscriptionButtonProps,\n SubscriptionPreferencesProps,\n SubscriptionProps,\n TelegramConnectButtonProps,\n} from './components';\nexport {\n Bell,\n Inbox,\n InboxContent,\n MsTeamsConnectButton,\n MsTeamsLinkUser,\n Notifications,\n NovuProvider,\n Preferences,\n SlackConnectButton,\n SlackLinkUser,\n Subscription,\n SubscriptionButton,\n SubscriptionPreferences,\n TelegramConnectButton,\n} from './components';\nexport type {\n UseChannelConnectionProps,\n UseChannelConnectionResult,\n UseChannelConnectionsProps,\n UseChannelConnectionsResult,\n UseChannelEndpointProps,\n UseChannelEndpointResult,\n UseCountsProps,\n UseCountsResult,\n UseCreateChannelEndpointProps,\n UseCreateChannelEndpointResult,\n UseDeleteChannelEndpointProps,\n UseDeleteChannelEndpointResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n UseTelegramSubscriberLinkProps,\n UseTelegramSubscriberLinkResult,\n} from './hooks';\nexport {\n useChannelConnection,\n useChannelConnections,\n useChannelEndpoint,\n useCounts,\n useCreateChannelEndpoint,\n useCreateSubscription,\n useDeleteChannelEndpoint,\n useNotifications,\n useNovu,\n usePreferences,\n useRemoveSubscription,\n useSchedule,\n useSubscription,\n useSubscriptions,\n useTelegramSubscriberLink,\n useUpdateSubscription,\n} from './hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n ReactAllAppearance,\n ReactInboxAppearance,\n ReactInboxTheme,\n ReactSubscriptionAppearance,\n ReactSubscriptionTheme,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from './utils/types';\n"],"mappings":";AACA,SAAS,iBAAiB,mBAAmB,+BAA+B;AAiD5E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAqBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -34,6 +34,11 @@ declare function NovuProvider(props: NovuProviderProps): react_jsx_runtime.JSX.E
34
34
  declare function Subscription(): react_jsx_runtime.JSX.Element;
35
35
  declare function SubscriptionButton(): void;
36
36
  declare function SubscriptionPreferences(): void;
37
+ declare function SlackConnectButton(): react_jsx_runtime.JSX.Element;
38
+ declare function SlackLinkUser(): react_jsx_runtime.JSX.Element;
39
+ declare function MsTeamsConnectButton(): react_jsx_runtime.JSX.Element;
40
+ declare function MsTeamsLinkUser(): react_jsx_runtime.JSX.Element;
41
+ declare function TelegramConnectButton(): react_jsx_runtime.JSX.Element;
37
42
  declare function useNovu(): null;
38
43
  declare function useCounts(_: UseCountsProps): UseCountsResult;
39
44
  declare function useNotifications(_: UseNotificationsProps): UseNotificationsResult;
@@ -45,4 +50,4 @@ declare function useUpdateSubscription(_?: UseUpdateSubscriptionProps): UseUpdat
45
50
  declare function useRemoveSubscription(_?: UseRemoveSubscriptionProps): UseRemoveSubscriptionResult;
46
51
  declare function useSubscriptions(_: UseSubscriptionsProps): UseSubscriptionsResult;
47
52
 
48
- export { Bell, Inbox, InboxContent, InboxProps, Notifications, NovuProvider, NovuProviderProps, Preferences, Subscription, SubscriptionButton, SubscriptionPreferences, UseCountsProps, UseCountsResult, UseNotificationsProps, UseNotificationsResult, UseScheduleProps as UsePreferencesProps, UsePreferencesResult, useCounts, useCreateSubscription, useNotifications, useNovu, usePreferences, useRemoveSubscription, useSchedule, useSubscription, useSubscriptions, useUpdateSubscription };
53
+ export { Bell, Inbox, InboxContent, InboxProps, MsTeamsConnectButton, MsTeamsLinkUser, Notifications, NovuProvider, NovuProviderProps, Preferences, SlackConnectButton, SlackLinkUser, Subscription, SubscriptionButton, SubscriptionPreferences, TelegramConnectButton, UseCountsProps, UseCountsResult, UseNotificationsProps, UseNotificationsResult, UseScheduleProps as UsePreferencesProps, UsePreferencesResult, useCounts, useCreateSubscription, useNotifications, useNovu, usePreferences, useRemoveSubscription, useSchedule, useSubscription, useSubscriptions, useUpdateSubscription };
@@ -23,6 +23,21 @@ function SubscriptionButton() {
23
23
  }
24
24
  function SubscriptionPreferences() {
25
25
  }
26
+ function SlackConnectButton() {
27
+ return /* @__PURE__ */ jsx(ShadowRootDetector, {});
28
+ }
29
+ function SlackLinkUser() {
30
+ return /* @__PURE__ */ jsx(ShadowRootDetector, {});
31
+ }
32
+ function MsTeamsConnectButton() {
33
+ return /* @__PURE__ */ jsx(ShadowRootDetector, {});
34
+ }
35
+ function MsTeamsLinkUser() {
36
+ return /* @__PURE__ */ jsx(ShadowRootDetector, {});
37
+ }
38
+ function TelegramConnectButton() {
39
+ return /* @__PURE__ */ jsx(ShadowRootDetector, {});
40
+ }
26
41
  function useNovu() {
27
42
  return null;
28
43
  }
@@ -99,14 +114,19 @@ export {
99
114
  Bell,
100
115
  Inbox,
101
116
  InboxContent,
117
+ MsTeamsConnectButton,
118
+ MsTeamsLinkUser,
102
119
  Notifications,
103
120
  NovuProvider,
104
121
  PreferenceLevel,
105
122
  Preferences,
106
123
  SeverityLevelEnum,
124
+ SlackConnectButton,
125
+ SlackLinkUser,
107
126
  Subscription,
108
127
  SubscriptionButton,
109
128
  SubscriptionPreferences,
129
+ TelegramConnectButton,
110
130
  WorkflowCriticalityEnum,
111
131
  useCounts,
112
132
  useCreateSubscription,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/index.tsx"],"sourcesContent":["import type { InboxProps } from '../components/Inbox';\nimport { ShadowRootDetector } from '../components/ShadowRootDetector';\nimport type {\n UseCreateSubscriptionProps,\n UseCreateSubscriptionResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesProps,\n UsePreferencesResult,\n UseRemoveSubscriptionProps,\n UseRemoveSubscriptionResult,\n UseScheduleProps,\n UseScheduleResult,\n UseSubscriptionProps,\n UseSubscriptionResult,\n UseSubscriptionsProps,\n UseSubscriptionsResult,\n UseUpdateSubscriptionProps,\n UseUpdateSubscriptionResult,\n} from '../hooks';\nimport type { NovuProviderProps } from '../hooks/NovuProvider';\nimport type { UseCountsProps, UseCountsResult } from '../hooks/useCounts';\n\n/**\n * Exporting all components from the components folder\n * as empty functions to fix build errors in SSR\n * This will be replaced with actual components\n * when we implement the SSR components in @novu/js/ui\n */\nexport function Inbox(props: InboxProps) {\n return <ShadowRootDetector />;\n}\n\nexport function InboxContent() {}\n\nexport function Notifications() {}\n\nexport function Preferences() {}\n\nexport function Bell() {}\n\nexport function NovuProvider(props: NovuProviderProps) {\n return <>{props.children}</>;\n}\n\nexport function Subscription() {\n return <ShadowRootDetector />;\n}\n\nexport function SubscriptionButton() {}\n\nexport function SubscriptionPreferences() {}\n\nexport function useNovu() {\n return null;\n}\n\nexport function useCounts(_: UseCountsProps): UseCountsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useNotifications(_: UseNotificationsProps): UseNotificationsResult {\n return {\n isLoading: false,\n isFetching: false,\n hasMore: false,\n readAll: () => Promise.resolve({ data: undefined, error: undefined }),\n seenAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAllRead: () => Promise.resolve({ data: undefined, error: undefined }),\n refetch: () => Promise.resolve(),\n fetchMore: () => Promise.resolve(),\n };\n}\n\nexport function usePreferences(_: UsePreferencesProps): UsePreferencesResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSchedule(_: UseScheduleProps): UseScheduleResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSubscription(_: UseSubscriptionProps): UseSubscriptionResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useCreateSubscription(_: UseCreateSubscriptionProps = {}): UseCreateSubscriptionResult {\n return {\n isCreating: false,\n error: undefined,\n create: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useUpdateSubscription(_: UseUpdateSubscriptionProps = {}): UseUpdateSubscriptionResult {\n return {\n isUpdating: false,\n error: undefined,\n update: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useRemoveSubscription(_: UseRemoveSubscriptionProps = {}): UseRemoveSubscriptionResult {\n return {\n isRemoving: false,\n error: undefined,\n remove: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useSubscriptions(_: UseSubscriptionsProps): UseSubscriptionsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\n\nexport type { BellProps, InboxContentProps, InboxProps, NotificationProps, NovuProviderProps } from '../components';\n\nexport type {\n UseCountsProps,\n UseCountsResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n} from '../hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from '../utils/types';\n"],"mappings":";AACA,SAAS,0BAA0B;AAuInC,SAAS,iBAAiB,mBAAmB,+BAA+B;AA1GnE,SAYA,UAZA;AADF,SAAS,MAAM,OAAmB;AACvC,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,eAAe;AAAC;AAEzB,SAAS,gBAAgB;AAAC;AAE1B,SAAS,cAAc;AAAC;AAExB,SAAS,OAAO;AAAC;AAEjB,SAAS,aAAa,OAA0B;AACrD,SAAO,gCAAG,gBAAM,UAAS;AAC3B;AAEO,SAAS,eAAe;AAC7B,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,qBAAqB;AAAC;AAE/B,SAAS,0BAA0B;AAAC;AAEpC,SAAS,UAAU;AACxB,SAAO;AACT;AAEO,SAAS,UAAU,GAAoC;AAC5D,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,iBAAiB,GAAkD;AACjF,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACpE,SAAS,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACpE,YAAY,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACvE,gBAAgB,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IAC3E,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,WAAW,MAAM,QAAQ,QAAQ;AAAA,EACnC;AACF;AAEO,SAAS,eAAe,GAA8C;AAC3E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,YAAY,GAAwC;AAClE,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,gBAAgB,GAAgD;AAC9E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,iBAAiB,GAAkD;AACjF,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/server/index.tsx"],"sourcesContent":["import type { InboxProps } from '../components/Inbox';\nimport { ShadowRootDetector } from '../components/ShadowRootDetector';\nimport type {\n UseCreateSubscriptionProps,\n UseCreateSubscriptionResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesProps,\n UsePreferencesResult,\n UseRemoveSubscriptionProps,\n UseRemoveSubscriptionResult,\n UseScheduleProps,\n UseScheduleResult,\n UseSubscriptionProps,\n UseSubscriptionResult,\n UseSubscriptionsProps,\n UseSubscriptionsResult,\n UseUpdateSubscriptionProps,\n UseUpdateSubscriptionResult,\n} from '../hooks';\nimport type { NovuProviderProps } from '../hooks/NovuProvider';\nimport type { UseCountsProps, UseCountsResult } from '../hooks/useCounts';\n\n/**\n * Exporting all components from the components folder\n * as empty functions to fix build errors in SSR\n * This will be replaced with actual components\n * when we implement the SSR components in @novu/js/ui\n */\nexport function Inbox(props: InboxProps) {\n return <ShadowRootDetector />;\n}\n\nexport function InboxContent() {}\n\nexport function Notifications() {}\n\nexport function Preferences() {}\n\nexport function Bell() {}\n\nexport function NovuProvider(props: NovuProviderProps) {\n return <>{props.children}</>;\n}\n\nexport function Subscription() {\n return <ShadowRootDetector />;\n}\n\nexport function SubscriptionButton() {}\n\nexport function SubscriptionPreferences() {}\n\nexport function SlackConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function SlackLinkUser() {\n return <ShadowRootDetector />;\n}\n\nexport function MsTeamsConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function MsTeamsLinkUser() {\n return <ShadowRootDetector />;\n}\n\nexport function TelegramConnectButton() {\n return <ShadowRootDetector />;\n}\n\nexport function useNovu() {\n return null;\n}\n\nexport function useCounts(_: UseCountsProps): UseCountsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useNotifications(_: UseNotificationsProps): UseNotificationsResult {\n return {\n isLoading: false,\n isFetching: false,\n hasMore: false,\n readAll: () => Promise.resolve({ data: undefined, error: undefined }),\n seenAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAll: () => Promise.resolve({ data: undefined, error: undefined }),\n archiveAllRead: () => Promise.resolve({ data: undefined, error: undefined }),\n refetch: () => Promise.resolve(),\n fetchMore: () => Promise.resolve(),\n };\n}\n\nexport function usePreferences(_: UsePreferencesProps): UsePreferencesResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSchedule(_: UseScheduleProps): UseScheduleResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useSubscription(_: UseSubscriptionProps): UseSubscriptionResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport function useCreateSubscription(_: UseCreateSubscriptionProps = {}): UseCreateSubscriptionResult {\n return {\n isCreating: false,\n error: undefined,\n create: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useUpdateSubscription(_: UseUpdateSubscriptionProps = {}): UseUpdateSubscriptionResult {\n return {\n isUpdating: false,\n error: undefined,\n update: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useRemoveSubscription(_: UseRemoveSubscriptionProps = {}): UseRemoveSubscriptionResult {\n return {\n isRemoving: false,\n error: undefined,\n remove: () => Promise.resolve({ data: undefined, error: undefined }),\n };\n}\n\nexport function useSubscriptions(_: UseSubscriptionsProps): UseSubscriptionsResult {\n return {\n isLoading: false,\n isFetching: false,\n refetch: () => Promise.resolve(),\n };\n}\n\nexport type * from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n AllLocalization,\n AllLocalizationKey,\n ElementStyles,\n InboxAppearance,\n InboxAppearanceCallback,\n InboxAppearanceCallbackFunction,\n InboxAppearanceCallbackKeys,\n InboxAppearanceKey,\n InboxElements,\n InboxLocalization,\n InboxLocalizationKey,\n InboxTheme,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n SubscriptionAppearance,\n SubscriptionAppearanceCallback,\n SubscriptionAppearanceCallbackFunction,\n SubscriptionAppearanceCallbackKeys,\n SubscriptionAppearanceKey,\n SubscriptionElements,\n SubscriptionLocalization,\n SubscriptionLocalizationKey,\n SubscriptionTheme,\n Tab,\n Variables,\n} from '@novu/js/ui';\n\nexport type { BellProps, InboxContentProps, InboxProps, NotificationProps, NovuProviderProps } from '../components';\n\nexport type {\n UseCountsProps,\n UseCountsResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n} from '../hooks';\n\nexport type {\n BaseProps,\n BellRenderer,\n BodyRenderer,\n DefaultInboxProps,\n DefaultProps,\n NoRendererProps,\n NotificationRendererProps,\n NotificationsRenderer,\n SubjectBodyRendererProps,\n SubjectRenderer,\n WithChildrenProps,\n} from '../utils/types';\n"],"mappings":";AACA,SAAS,0BAA0B;AA2JnC,SAAS,iBAAiB,mBAAmB,+BAA+B;AA9HnE,SAYA,UAZA;AADF,SAAS,MAAM,OAAmB;AACvC,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,eAAe;AAAC;AAEzB,SAAS,gBAAgB;AAAC;AAE1B,SAAS,cAAc;AAAC;AAExB,SAAS,OAAO;AAAC;AAEjB,SAAS,aAAa,OAA0B;AACrD,SAAO,gCAAG,gBAAM,UAAS;AAC3B;AAEO,SAAS,eAAe;AAC7B,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,qBAAqB;AAAC;AAE/B,SAAS,0BAA0B;AAAC;AAEpC,SAAS,qBAAqB;AACnC,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,gBAAgB;AAC9B,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,uBAAuB;AACrC,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,kBAAkB;AAChC,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,wBAAwB;AACtC,SAAO,oBAAC,sBAAmB;AAC7B;AAEO,SAAS,UAAU;AACxB,SAAO;AACT;AAEO,SAAS,UAAU,GAAoC;AAC5D,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,iBAAiB,GAAkD;AACjF,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACpE,SAAS,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACpE,YAAY,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IACvE,gBAAgB,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,IAC3E,SAAS,MAAM,QAAQ,QAAQ;AAAA,IAC/B,WAAW,MAAM,QAAQ,QAAQ;AAAA,EACnC;AACF;AAEO,SAAS,eAAe,GAA8C;AAC3E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,YAAY,GAAwC;AAClE,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,gBAAgB,GAAgD;AAC9E,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,sBAAsB,IAAgC,CAAC,GAAgC;AACrG,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,QAAQ,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAW,OAAO,OAAU,CAAC;AAAA,EACrE;AACF;AAEO,SAAS,iBAAiB,GAAkD;AACjF,SAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@novu/react",
3
- "version": "3.17.0",
3
+ "version": "3.17.1-rc.1-rc.da35e9062d",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/novuhq/novu",
@@ -121,7 +121,7 @@
121
121
  }
122
122
  },
123
123
  "dependencies": {
124
- "@novu/js": "3.17.0"
124
+ "@novu/js": "3.17.1-rc.1-rc.da35e9062d"
125
125
  },
126
126
  "nx": {
127
127
  "tags": [