@novu/react 3.11.0 → 3.11.2-nightly.20251224.eb609546a3

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 (109) hide show
  1. package/README.md +10 -18
  2. package/dist/cjs/components/Inbox.cjs +5 -1
  3. package/dist/cjs/components/Inbox.cjs.map +1 -1
  4. package/dist/cjs/components/NovuUI.cjs +3 -1
  5. package/dist/cjs/components/NovuUI.cjs.map +1 -1
  6. package/dist/cjs/components/NovuUI.d.cts +9 -9
  7. package/dist/cjs/components/index.cjs +7 -1
  8. package/dist/cjs/components/index.cjs.map +1 -1
  9. package/dist/cjs/components/index.d.cts +5 -0
  10. package/dist/cjs/components/subscription/DefaultSubscription.cjs +59 -0
  11. package/dist/cjs/components/subscription/DefaultSubscription.cjs.map +1 -0
  12. package/dist/cjs/components/subscription/DefaultSubscription.d.cts +11 -0
  13. package/dist/cjs/components/subscription/Subscription.cjs +80 -0
  14. package/dist/cjs/components/subscription/Subscription.cjs.map +1 -0
  15. package/dist/cjs/components/subscription/Subscription.d.cts +22 -0
  16. package/dist/cjs/components/subscription/SubscriptionButton.cjs +91 -0
  17. package/dist/cjs/components/subscription/SubscriptionButton.cjs.map +1 -0
  18. package/dist/cjs/components/subscription/SubscriptionButton.d.cts +8 -0
  19. package/dist/cjs/components/subscription/SubscriptionPreferences.cjs +91 -0
  20. package/dist/cjs/components/subscription/SubscriptionPreferences.cjs.map +1 -0
  21. package/dist/cjs/components/subscription/SubscriptionPreferences.d.cts +8 -0
  22. package/dist/cjs/hooks/NovuProvider.cjs +21 -18
  23. package/dist/cjs/hooks/NovuProvider.cjs.map +1 -1
  24. package/dist/cjs/hooks/index.cjs +11 -1
  25. package/dist/cjs/hooks/index.cjs.map +1 -1
  26. package/dist/cjs/hooks/index.d.cts +7 -1
  27. package/dist/cjs/hooks/useCounts.cjs +2 -2
  28. package/dist/cjs/hooks/useCounts.cjs.map +1 -1
  29. package/dist/cjs/hooks/useCreateSubscription.cjs +61 -0
  30. package/dist/cjs/hooks/useCreateSubscription.cjs.map +1 -0
  31. package/dist/cjs/hooks/useCreateSubscription.d.cts +17 -0
  32. package/dist/cjs/hooks/useNotifications.cjs +57 -60
  33. package/dist/cjs/hooks/useNotifications.cjs.map +1 -1
  34. package/dist/cjs/hooks/useRemoveSubscription.cjs +61 -0
  35. package/dist/cjs/hooks/useRemoveSubscription.cjs.map +1 -0
  36. package/dist/cjs/hooks/useRemoveSubscription.d.cts +17 -0
  37. package/dist/cjs/hooks/useSubscription.cjs +156 -0
  38. package/dist/cjs/hooks/useSubscription.cjs.map +1 -0
  39. package/dist/cjs/hooks/useSubscription.d.cts +21 -0
  40. package/dist/cjs/hooks/useSubscriptions.cjs +121 -0
  41. package/dist/cjs/hooks/useSubscriptions.cjs.map +1 -0
  42. package/dist/cjs/hooks/useSubscriptions.d.cts +36 -0
  43. package/dist/cjs/hooks/useUpdateSubscription.cjs +61 -0
  44. package/dist/cjs/hooks/useUpdateSubscription.cjs.map +1 -0
  45. package/dist/cjs/hooks/useUpdateSubscription.d.cts +18 -0
  46. package/dist/cjs/index.cjs +18 -2
  47. package/dist/cjs/index.cjs.map +1 -1
  48. package/dist/cjs/index.d.cts +14 -3
  49. package/dist/cjs/server/index.cjs +61 -2
  50. package/dist/cjs/server/index.cjs.map +1 -1
  51. package/dist/cjs/server/index.d.cts +18 -4
  52. package/dist/cjs/utils/appearance.cjs.map +1 -1
  53. package/dist/cjs/utils/appearance.d.cts +3 -3
  54. package/dist/cjs/utils/types.cjs.map +1 -1
  55. package/dist/cjs/utils/types.d.cts +32 -11
  56. package/dist/esm/components/Inbox.js +5 -1
  57. package/dist/esm/components/Inbox.js.map +1 -1
  58. package/dist/esm/components/NovuUI.d.ts +9 -9
  59. package/dist/esm/components/NovuUI.js +3 -1
  60. package/dist/esm/components/NovuUI.js.map +1 -1
  61. package/dist/esm/components/index.d.ts +5 -0
  62. package/dist/esm/components/index.js +3 -0
  63. package/dist/esm/components/index.js.map +1 -1
  64. package/dist/esm/components/subscription/DefaultSubscription.d.ts +11 -0
  65. package/dist/esm/components/subscription/DefaultSubscription.js +34 -0
  66. package/dist/esm/components/subscription/DefaultSubscription.js.map +1 -0
  67. package/dist/esm/components/subscription/Subscription.d.ts +22 -0
  68. package/dist/esm/components/subscription/Subscription.js +45 -0
  69. package/dist/esm/components/subscription/Subscription.js.map +1 -0
  70. package/dist/esm/components/subscription/SubscriptionButton.d.ts +8 -0
  71. package/dist/esm/components/subscription/SubscriptionButton.js +56 -0
  72. package/dist/esm/components/subscription/SubscriptionButton.js.map +1 -0
  73. package/dist/esm/components/subscription/SubscriptionPreferences.d.ts +8 -0
  74. package/dist/esm/components/subscription/SubscriptionPreferences.js +56 -0
  75. package/dist/esm/components/subscription/SubscriptionPreferences.js.map +1 -0
  76. package/dist/esm/hooks/NovuProvider.js +22 -19
  77. package/dist/esm/hooks/NovuProvider.js.map +1 -1
  78. package/dist/esm/hooks/index.d.ts +7 -1
  79. package/dist/esm/hooks/index.js +5 -0
  80. package/dist/esm/hooks/index.js.map +1 -1
  81. package/dist/esm/hooks/useCounts.js +3 -3
  82. package/dist/esm/hooks/useCounts.js.map +1 -1
  83. package/dist/esm/hooks/useCreateSubscription.d.ts +17 -0
  84. package/dist/esm/hooks/useCreateSubscription.js +36 -0
  85. package/dist/esm/hooks/useCreateSubscription.js.map +1 -0
  86. package/dist/esm/hooks/useNotifications.js +58 -61
  87. package/dist/esm/hooks/useNotifications.js.map +1 -1
  88. package/dist/esm/hooks/useRemoveSubscription.d.ts +17 -0
  89. package/dist/esm/hooks/useRemoveSubscription.js +36 -0
  90. package/dist/esm/hooks/useRemoveSubscription.js.map +1 -0
  91. package/dist/esm/hooks/useSubscription.d.ts +21 -0
  92. package/dist/esm/hooks/useSubscription.js +129 -0
  93. package/dist/esm/hooks/useSubscription.js.map +1 -0
  94. package/dist/esm/hooks/useSubscriptions.d.ts +36 -0
  95. package/dist/esm/hooks/useSubscriptions.js +96 -0
  96. package/dist/esm/hooks/useSubscriptions.js.map +1 -0
  97. package/dist/esm/hooks/useUpdateSubscription.d.ts +18 -0
  98. package/dist/esm/hooks/useUpdateSubscription.js +36 -0
  99. package/dist/esm/hooks/useUpdateSubscription.js.map +1 -0
  100. package/dist/esm/index.d.ts +14 -3
  101. package/dist/esm/index.js +32 -3
  102. package/dist/esm/index.js.map +1 -1
  103. package/dist/esm/server/index.d.ts +18 -4
  104. package/dist/esm/server/index.js +53 -2
  105. package/dist/esm/server/index.js.map +1 -1
  106. package/dist/esm/utils/appearance.d.ts +3 -3
  107. package/dist/esm/utils/appearance.js.map +1 -1
  108. package/dist/esm/utils/types.d.ts +32 -11
  109. package/package.json +11 -11
@@ -0,0 +1,129 @@
1
+ // src/hooks/useSubscription.ts
2
+ import { buildSubscriptionIdentifier } from "@novu/js/internal";
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import { useNovu } from "./NovuProvider.js";
5
+ var useSubscription = (props) => {
6
+ const novu = useNovu();
7
+ const propsRef = useRef(props);
8
+ propsRef.current = {
9
+ ...props,
10
+ identifier: props.identifier ?? buildSubscriptionIdentifier({ topicKey: props.topicKey, subscriberId: novu.subscriberId })
11
+ };
12
+ const [subscription, setSubscription] = useState();
13
+ const subscriptionRef = useRef(null);
14
+ subscriptionRef.current = subscription ?? null;
15
+ const [error, setError] = useState();
16
+ const [isLoading, setIsLoading] = useState(true);
17
+ const [isFetching, setIsFetching] = useState(false);
18
+ const fetchSubscription = useCallback(
19
+ async (options) => {
20
+ const { topicKey, identifier, onSuccess, onError } = propsRef.current;
21
+ if (options?.refetch) {
22
+ setError(void 0);
23
+ setIsLoading(true);
24
+ }
25
+ setIsFetching(true);
26
+ const response = await novu.subscriptions.get(
27
+ {
28
+ topicKey,
29
+ identifier
30
+ },
31
+ { refetch: options?.refetch }
32
+ );
33
+ if (response.error) {
34
+ setError(response.error);
35
+ onError?.(response.error);
36
+ } else if (response.data !== void 0) {
37
+ onSuccess?.(response.data);
38
+ setSubscription(response.data);
39
+ }
40
+ setIsLoading(false);
41
+ setIsFetching(false);
42
+ },
43
+ [novu]
44
+ );
45
+ useEffect(() => {
46
+ const listener = ({ data: subscription2 }) => {
47
+ const { topicKey, identifier } = propsRef.current;
48
+ if (!subscription2 || subscription2.topicKey !== topicKey || subscription2.identifier !== identifier) {
49
+ return;
50
+ }
51
+ setSubscription(subscription2);
52
+ setIsFetching(false);
53
+ };
54
+ const cleanupGetPending = novu.on("subscription.get.pending", ({ args }) => {
55
+ const { topicKey, identifier } = propsRef.current;
56
+ if (!args || args.topicKey !== topicKey || args.identifier !== identifier) {
57
+ return;
58
+ }
59
+ setIsFetching(true);
60
+ });
61
+ const cleanupGetResolved = novu.on("subscription.get.resolved", ({ args, data, error: error2 }) => {
62
+ const { topicKey, identifier, onSuccess, onError } = propsRef.current;
63
+ if (!args || args.topicKey !== topicKey || args.identifier !== identifier) {
64
+ return;
65
+ }
66
+ if (error2) {
67
+ setError(error2);
68
+ onError?.(error2);
69
+ } else {
70
+ setSubscription(data ?? null);
71
+ onSuccess?.(data ?? null);
72
+ }
73
+ setIsFetching(false);
74
+ });
75
+ const cleanupCreatePending = novu.on("subscription.create.pending", ({ args }) => {
76
+ const { topicKey, identifier } = propsRef.current;
77
+ if (!args || args.topicKey !== topicKey || args.identifier !== identifier) {
78
+ return;
79
+ }
80
+ setIsFetching(true);
81
+ });
82
+ const cleanupCreateResolved = novu.on("subscription.create.resolved", listener);
83
+ const cleanupUpdateResolved = novu.on("subscription.update.resolved", listener);
84
+ const cleanupDeletePending = novu.on("subscription.delete.pending", ({ args }) => {
85
+ const subscriptionId = subscriptionRef.current?.id;
86
+ const subscriptionIdentifier = subscriptionRef.current?.identifier;
87
+ if (!subscriptionId || !subscriptionIdentifier) {
88
+ return;
89
+ }
90
+ if (!args || "subscriptionId" in args && args.subscriptionId !== subscriptionId && args.subscriptionId !== subscriptionIdentifier || "subscription" in args && args.subscription.id !== subscriptionId && args.subscription.identifier !== subscriptionIdentifier) {
91
+ return;
92
+ }
93
+ setIsFetching(true);
94
+ });
95
+ const cleanupDeleteResolved = novu.on("subscription.delete.resolved", ({ args }) => {
96
+ const subscriptionId = subscriptionRef.current?.id;
97
+ const subscriptionIdentifier = subscriptionRef.current?.identifier;
98
+ if (!subscriptionId || !subscriptionIdentifier) {
99
+ return;
100
+ }
101
+ if ("subscriptionId" in args && args.subscriptionId === subscriptionId || "subscriptionId" in args && args.subscriptionId === subscriptionIdentifier || "subscription" in args && args.subscription.id === subscriptionId || "subscription" in args && args.subscription.identifier === subscriptionIdentifier) {
102
+ setSubscription(null);
103
+ setIsFetching(false);
104
+ }
105
+ });
106
+ void fetchSubscription({ refetch: true });
107
+ return () => {
108
+ cleanupGetPending();
109
+ cleanupGetResolved();
110
+ cleanupCreatePending();
111
+ cleanupCreateResolved();
112
+ cleanupUpdateResolved();
113
+ cleanupDeletePending();
114
+ cleanupDeleteResolved();
115
+ };
116
+ }, [novu, fetchSubscription]);
117
+ const refetch = useCallback(() => fetchSubscription({ refetch: true }), [fetchSubscription]);
118
+ return {
119
+ subscription,
120
+ error,
121
+ isLoading,
122
+ isFetching,
123
+ refetch
124
+ };
125
+ };
126
+ export {
127
+ useSubscription
128
+ };
129
+ //# sourceMappingURL=useSubscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useSubscription.ts"],"sourcesContent":["import { NovuError, TopicSubscription } from '@novu/js';\nimport { buildSubscriptionIdentifier } from '@novu/js/internal';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useNovu } from './NovuProvider';\n\nexport type UseSubscriptionProps = {\n topicKey: string;\n identifier?: string;\n onSuccess?: (data: TopicSubscription | null) => void;\n onError?: (error: NovuError) => void;\n};\n\nexport type UseSubscriptionResult = {\n subscription?: TopicSubscription | null;\n error?: NovuError;\n isLoading: boolean;\n isFetching: boolean;\n refetch: () => Promise<void>;\n};\n\n/**\n * Get a subscription for a topic.\n */\nexport const useSubscription = (props: UseSubscriptionProps): UseSubscriptionResult => {\n const novu = useNovu();\n const propsRef = useRef<UseSubscriptionProps>(props);\n propsRef.current = {\n ...props,\n identifier:\n props.identifier ?? buildSubscriptionIdentifier({ topicKey: props.topicKey, subscriberId: novu.subscriberId }),\n };\n const [subscription, setSubscription] = useState<TopicSubscription | null>();\n const subscriptionRef = useRef<TopicSubscription | null>(null);\n subscriptionRef.current = subscription ?? null;\n const [error, setError] = useState<NovuError>();\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n\n const fetchSubscription = useCallback(\n async (options?: { refetch: boolean }) => {\n const { topicKey, identifier, onSuccess, onError } = propsRef.current;\n if (options?.refetch) {\n setError(undefined);\n setIsLoading(true);\n }\n\n setIsFetching(true);\n\n const response = await novu.subscriptions.get(\n {\n topicKey,\n identifier,\n },\n { refetch: options?.refetch }\n );\n\n if (response.error) {\n setError(response.error);\n onError?.(response.error);\n } else if (response.data !== undefined) {\n onSuccess?.(response.data);\n setSubscription(response.data);\n }\n setIsLoading(false);\n setIsFetching(false);\n },\n [novu]\n );\n\n useEffect(() => {\n const listener = ({ data: subscription }: { data?: TopicSubscription }) => {\n const { topicKey, identifier } = propsRef.current;\n if (!subscription || subscription.topicKey !== topicKey || subscription.identifier !== identifier) {\n return;\n }\n\n setSubscription(subscription);\n setIsFetching(false);\n };\n\n const cleanupGetPending = novu.on('subscription.get.pending', ({ args }) => {\n const { topicKey, identifier } = propsRef.current;\n if (!args || args.topicKey !== topicKey || args.identifier !== identifier) {\n return;\n }\n setIsFetching(true);\n });\n\n const cleanupGetResolved = novu.on('subscription.get.resolved', ({ args, data, error }) => {\n const { topicKey, identifier, onSuccess, onError } = propsRef.current;\n if (!args || args.topicKey !== topicKey || args.identifier !== identifier) {\n return;\n }\n if (error) {\n setError(error as NovuError);\n onError?.(error as NovuError);\n } else {\n setSubscription(data ?? null);\n onSuccess?.(data ?? null);\n }\n setIsFetching(false);\n });\n\n const cleanupCreatePending = novu.on('subscription.create.pending', ({ args }) => {\n const { topicKey, identifier } = propsRef.current;\n if (!args || args.topicKey !== topicKey || args.identifier !== identifier) {\n return;\n }\n setIsFetching(true);\n });\n\n const cleanupCreateResolved = novu.on('subscription.create.resolved', listener);\n\n const cleanupUpdateResolved = novu.on('subscription.update.resolved', listener);\n\n const cleanupDeletePending = novu.on('subscription.delete.pending', ({ args }) => {\n const subscriptionId = subscriptionRef.current?.id;\n const subscriptionIdentifier = subscriptionRef.current?.identifier;\n if (!subscriptionId || !subscriptionIdentifier) {\n return;\n }\n\n if (\n !args ||\n ('subscriptionId' in args &&\n args.subscriptionId !== subscriptionId &&\n args.subscriptionId !== subscriptionIdentifier) ||\n ('subscription' in args &&\n args.subscription.id !== subscriptionId &&\n args.subscription.identifier !== subscriptionIdentifier)\n ) {\n return;\n }\n setIsFetching(true);\n });\n\n const cleanupDeleteResolved = novu.on('subscription.delete.resolved', ({ args }) => {\n const subscriptionId = subscriptionRef.current?.id;\n const subscriptionIdentifier = subscriptionRef.current?.identifier;\n if (!subscriptionId || !subscriptionIdentifier) {\n return;\n }\n\n if (\n ('subscriptionId' in args && args.subscriptionId === subscriptionId) ||\n ('subscriptionId' in args && args.subscriptionId === subscriptionIdentifier) ||\n ('subscription' in args && args.subscription.id === subscriptionId) ||\n ('subscription' in args && args.subscription.identifier === subscriptionIdentifier)\n ) {\n setSubscription(null);\n setIsFetching(false);\n }\n });\n\n void fetchSubscription({ refetch: true });\n\n return () => {\n cleanupGetPending();\n cleanupGetResolved();\n cleanupCreatePending();\n cleanupCreateResolved();\n cleanupUpdateResolved();\n cleanupDeletePending();\n cleanupDeleteResolved();\n };\n }, [novu, fetchSubscription]);\n\n const refetch = useCallback(() => fetchSubscription({ refetch: true }), [fetchSubscription]);\n\n return {\n subscription,\n error,\n isLoading,\n isFetching,\n refetch,\n };\n};\n"],"mappings":"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","names":["subscription","error"]}
@@ -0,0 +1,36 @@
1
+ import { TopicSubscription, NovuError } from '@novu/js';
2
+
3
+ /**
4
+ * Get all subscriptions for a topic.
5
+ * Props for the useSubscriptions hook.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * // Get all subscriptions for a topic
10
+ * const { subscriptions } = useSubscriptions({
11
+ * topicKey: 'my-topic'
12
+ * });
13
+ *
14
+ * // Get subscriptions with callbacks
15
+ * const { subscriptions, refetch } = useSubscriptions({
16
+ * topicKey: 'my-topic',
17
+ * onSuccess: (data) => console.log('Loaded:', data),
18
+ * onError: (error) => console.error('Error:', error)
19
+ * });
20
+ * ```
21
+ */
22
+ type UseSubscriptionsProps = {
23
+ topicKey: string;
24
+ onSuccess?: (data: TopicSubscription[]) => void;
25
+ onError?: (error: NovuError) => void;
26
+ };
27
+ type UseSubscriptionsResult = {
28
+ subscriptions?: TopicSubscription[];
29
+ error?: NovuError;
30
+ isLoading: boolean;
31
+ isFetching: boolean;
32
+ refetch: () => Promise<void>;
33
+ };
34
+ declare const useSubscriptions: ({ topicKey, onSuccess, onError }: UseSubscriptionsProps) => UseSubscriptionsResult;
35
+
36
+ export { type UseSubscriptionsProps, type UseSubscriptionsResult, useSubscriptions };
@@ -0,0 +1,96 @@
1
+ // src/hooks/useSubscriptions.ts
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { useNovu } from "./NovuProvider.js";
4
+ var useSubscriptions = ({ topicKey, onSuccess, onError }) => {
5
+ const novu = useNovu();
6
+ const [data, setData] = useState();
7
+ const [error, setError] = useState();
8
+ const [isLoading, setIsLoading] = useState(true);
9
+ const [isFetching, setIsFetching] = useState(false);
10
+ const fetchSubscriptions = useCallback(
11
+ async (options) => {
12
+ if (options?.refetch) {
13
+ setError(void 0);
14
+ setIsLoading(true);
15
+ novu.subscriptions.cache.invalidate({ topicKey });
16
+ }
17
+ setIsFetching(true);
18
+ const response = await novu.subscriptions.list({ topicKey }, { refetch: options?.refetch });
19
+ if (response.error) {
20
+ setError(response.error);
21
+ onError?.(response.error);
22
+ } else if (response.data) {
23
+ onSuccess?.(response.data);
24
+ setData(response.data);
25
+ }
26
+ setIsLoading(false);
27
+ setIsFetching(false);
28
+ },
29
+ [novu, topicKey, onError, onSuccess]
30
+ );
31
+ useEffect(() => {
32
+ const cleanupListPending = novu.on("subscriptions.list.pending", ({ args }) => {
33
+ if (args.topicKey !== topicKey) {
34
+ return;
35
+ }
36
+ setIsFetching(true);
37
+ });
38
+ const cleanupListResolved = novu.on("subscriptions.list.resolved", ({ args, data: data2, error: error2 }) => {
39
+ if (args.topicKey !== topicKey) {
40
+ return;
41
+ }
42
+ if (error2) {
43
+ setError(error2);
44
+ onError?.(error2);
45
+ } else if (data2) {
46
+ onSuccess?.(data2);
47
+ setData(data2);
48
+ }
49
+ setIsLoading(false);
50
+ setIsFetching(false);
51
+ });
52
+ const cleanupListUpdated = novu.on("subscriptions.list.updated", ({ data: data2 }) => {
53
+ if (data2.topicKey !== topicKey) {
54
+ return;
55
+ }
56
+ setData(data2.subscriptions);
57
+ });
58
+ const cleanupCreateResolved = novu.on("subscription.create.resolved", ({ args, data: data2 }) => {
59
+ if (args.topicKey !== topicKey) {
60
+ return;
61
+ }
62
+ if (data2) {
63
+ void fetchSubscriptions({ refetch: true });
64
+ }
65
+ });
66
+ const cleanupDeleteResolved = novu.on("subscription.delete.resolved", ({ args }) => {
67
+ const deleteTopicKey = "subscription" in args ? args.subscription.topicKey : topicKey;
68
+ if (deleteTopicKey !== topicKey) {
69
+ return;
70
+ }
71
+ void fetchSubscriptions({ refetch: true });
72
+ });
73
+ void fetchSubscriptions({ refetch: true });
74
+ return () => {
75
+ cleanupListPending();
76
+ cleanupListResolved();
77
+ cleanupListUpdated();
78
+ cleanupCreateResolved();
79
+ cleanupDeleteResolved();
80
+ };
81
+ }, [topicKey, novu, fetchSubscriptions, onError, onSuccess]);
82
+ const refetch = useCallback(() => {
83
+ return fetchSubscriptions({ refetch: true });
84
+ }, [fetchSubscriptions]);
85
+ return {
86
+ subscriptions: data,
87
+ error,
88
+ isLoading,
89
+ isFetching,
90
+ refetch
91
+ };
92
+ };
93
+ export {
94
+ useSubscriptions
95
+ };
96
+ //# sourceMappingURL=useSubscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useSubscriptions.ts"],"sourcesContent":["import { NovuError, TopicSubscription } from '@novu/js';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useNovu } from './NovuProvider';\n\n/**\n * Get all subscriptions for a topic.\n * Props for the useSubscriptions hook.\n *\n * @example\n * ```tsx\n * // Get all subscriptions for a topic\n * const { subscriptions } = useSubscriptions({\n * topicKey: 'my-topic'\n * });\n *\n * // Get subscriptions with callbacks\n * const { subscriptions, refetch } = useSubscriptions({\n * topicKey: 'my-topic',\n * onSuccess: (data) => console.log('Loaded:', data),\n * onError: (error) => console.error('Error:', error)\n * });\n * ```\n */\nexport type UseSubscriptionsProps = {\n topicKey: string;\n onSuccess?: (data: TopicSubscription[]) => void;\n onError?: (error: NovuError) => void;\n};\n\nexport type UseSubscriptionsResult = {\n subscriptions?: TopicSubscription[];\n error?: NovuError;\n isLoading: boolean;\n isFetching: boolean;\n refetch: () => Promise<void>;\n};\n\nexport const useSubscriptions = ({ topicKey, onSuccess, onError }: UseSubscriptionsProps): UseSubscriptionsResult => {\n const novu = useNovu();\n const [data, setData] = useState<TopicSubscription[]>();\n const [error, setError] = useState<NovuError>();\n const [isLoading, setIsLoading] = useState(true);\n const [isFetching, setIsFetching] = useState(false);\n\n const fetchSubscriptions = useCallback(\n async (options?: { refetch: boolean }) => {\n if (options?.refetch) {\n setError(undefined);\n setIsLoading(true);\n novu.subscriptions.cache.invalidate({ topicKey });\n }\n setIsFetching(true);\n\n const response = await novu.subscriptions.list({ topicKey }, { refetch: options?.refetch });\n\n if (response.error) {\n setError(response.error);\n onError?.(response.error);\n } else if (response.data) {\n onSuccess?.(response.data);\n setData(response.data);\n }\n setIsLoading(false);\n setIsFetching(false);\n },\n [novu, topicKey, onError, onSuccess]\n );\n\n useEffect(() => {\n const cleanupListPending = novu.on('subscriptions.list.pending', ({ args }) => {\n if (args.topicKey !== topicKey) {\n return;\n }\n setIsFetching(true);\n });\n\n const cleanupListResolved = novu.on('subscriptions.list.resolved', ({ args, data, error }) => {\n if (args.topicKey !== topicKey) {\n return;\n }\n if (error) {\n setError(error as NovuError);\n onError?.(error as NovuError);\n } else if (data) {\n onSuccess?.(data);\n setData(data);\n }\n setIsLoading(false);\n setIsFetching(false);\n });\n\n const cleanupListUpdated = novu.on('subscriptions.list.updated', ({ data }) => {\n if (data.topicKey !== topicKey) {\n return;\n }\n setData(data.subscriptions);\n });\n\n const cleanupCreateResolved = novu.on('subscription.create.resolved', ({ args, data }) => {\n if (args.topicKey !== topicKey) {\n return;\n }\n if (data) {\n void fetchSubscriptions({ refetch: true });\n }\n });\n\n const cleanupDeleteResolved = novu.on('subscription.delete.resolved', ({ args }) => {\n const deleteTopicKey = 'subscription' in args ? args.subscription.topicKey : topicKey;\n if (deleteTopicKey !== topicKey) {\n return;\n }\n void fetchSubscriptions({ refetch: true });\n });\n\n void fetchSubscriptions({ refetch: true });\n\n return () => {\n cleanupListPending();\n cleanupListResolved();\n cleanupListUpdated();\n cleanupCreateResolved();\n cleanupDeleteResolved();\n };\n }, [topicKey, novu, fetchSubscriptions, onError, onSuccess]);\n\n const refetch = useCallback(() => {\n return fetchSubscriptions({ refetch: true });\n }, [fetchSubscriptions]);\n\n return {\n subscriptions: data,\n error,\n isLoading,\n isFetching,\n refetch,\n };\n};\n"],"mappings":"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","names":["data","error"]}
@@ -0,0 +1,18 @@
1
+ import { TopicSubscription, NovuError, UpdateSubscriptionArgs } from '@novu/js';
2
+
3
+ type UseUpdateSubscriptionProps = {
4
+ onSuccess?: (data: TopicSubscription) => void;
5
+ onError?: (error: NovuError) => void;
6
+ };
7
+ type UpdateResult = Promise<{
8
+ data?: TopicSubscription | undefined;
9
+ error?: NovuError;
10
+ }>;
11
+ type UseUpdateSubscriptionResult = {
12
+ isUpdating: boolean;
13
+ error?: NovuError;
14
+ update: (args: UpdateSubscriptionArgs) => UpdateResult;
15
+ };
16
+ declare const useUpdateSubscription: (props?: UseUpdateSubscriptionProps) => UseUpdateSubscriptionResult;
17
+
18
+ export { type UseUpdateSubscriptionProps, type UseUpdateSubscriptionResult, useUpdateSubscription };
@@ -0,0 +1,36 @@
1
+ // src/hooks/useUpdateSubscription.ts
2
+ import { useCallback, useRef, useState } from "react";
3
+ import { useNovu } from "./NovuProvider.js";
4
+ var useUpdateSubscription = (props = {}) => {
5
+ const propsRef = useRef(props);
6
+ propsRef.current = props;
7
+ const novu = useNovu();
8
+ const [isUpdating, setIsUpdating] = useState(false);
9
+ const [error, setError] = useState();
10
+ const update = useCallback(
11
+ async (args) => {
12
+ const { onSuccess, onError } = propsRef.current;
13
+ setError(void 0);
14
+ setIsUpdating(true);
15
+ const response = await novu.subscriptions.update(args);
16
+ setIsUpdating(false);
17
+ if (response.error) {
18
+ setError(response.error);
19
+ onError?.(response.error);
20
+ } else if (response.data) {
21
+ onSuccess?.(response.data);
22
+ }
23
+ return response;
24
+ },
25
+ [novu]
26
+ );
27
+ return {
28
+ update,
29
+ isUpdating,
30
+ error
31
+ };
32
+ };
33
+ export {
34
+ useUpdateSubscription
35
+ };
36
+ //# sourceMappingURL=useUpdateSubscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useUpdateSubscription.ts"],"sourcesContent":["import { BaseUpdateSubscriptionArgs, NovuError, TopicSubscription, UpdateSubscriptionArgs } from '@novu/js';\nimport { useCallback, useRef, useState } from 'react';\nimport { useNovu } from './NovuProvider';\n\nexport type UseUpdateSubscriptionProps = {\n onSuccess?: (data: TopicSubscription) => void;\n onError?: (error: NovuError) => void;\n};\n\ntype UpdateResult = Promise<{\n data?: TopicSubscription | undefined;\n error?: NovuError;\n}>;\n\nexport type UseUpdateSubscriptionResult = {\n isUpdating: boolean;\n error?: NovuError;\n update: (args: UpdateSubscriptionArgs) => UpdateResult;\n};\n\nexport const useUpdateSubscription = (props: UseUpdateSubscriptionProps = {}): UseUpdateSubscriptionResult => {\n const propsRef = useRef<UseUpdateSubscriptionProps>(props);\n propsRef.current = props;\n const novu = useNovu();\n const [isUpdating, setIsUpdating] = useState(false);\n const [error, setError] = useState<NovuError>();\n\n const update = useCallback(\n async (args: UpdateSubscriptionArgs): UpdateResult => {\n const { onSuccess, onError } = propsRef.current;\n setError(undefined);\n setIsUpdating(true);\n\n const response = await novu.subscriptions.update(args as BaseUpdateSubscriptionArgs);\n\n setIsUpdating(false);\n\n if (response.error) {\n setError(response.error);\n onError?.(response.error);\n } else if (response.data) {\n onSuccess?.(response.data);\n }\n\n return response;\n },\n [novu]\n );\n\n return {\n update,\n isUpdating,\n error,\n };\n};\n"],"mappings":";AACA,SAAS,aAAa,QAAQ,gBAAgB;AAC9C,SAAS,eAAe;AAkBjB,IAAM,wBAAwB,CAAC,QAAoC,CAAC,MAAmC;AAC5G,QAAM,WAAW,OAAmC,KAAK;AACzD,WAAS,UAAU;AACnB,QAAM,OAAO,QAAQ;AACrB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAoB;AAE9C,QAAM,SAAS;AAAA,IACb,OAAO,SAA+C;AACpD,YAAM,EAAE,WAAW,QAAQ,IAAI,SAAS;AACxC,eAAS,MAAS;AAClB,oBAAc,IAAI;AAElB,YAAM,WAAW,MAAM,KAAK,cAAc,OAAO,IAAkC;AAEnF,oBAAc,KAAK;AAEnB,UAAI,SAAS,OAAO;AAClB,iBAAS,SAAS,KAAK;AACvB,kBAAU,SAAS,KAAK;AAAA,MAC1B,WAAW,SAAS,MAAM;AACxB,oBAAY,SAAS,IAAI;AAAA,MAC3B;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1,15 +1,26 @@
1
- export { ChannelPreference, ChannelType, EventHandler, Events, FiltersCountResponse, InboxNotification, ListNotificationsResponse, Notification, NotificationFilter, NotificationStatus, NovuError, NovuOptions, Preference, PreferenceLevel, PreferencesResponse, SeverityLevelEnum, SocketEventNames, UnreadCount, WebSocketEvent, WorkflowCriticalityEnum } from '@novu/js';
2
- export { Appearance, AppearanceCallback, AppearanceCallbackFunction, AppearanceCallbackKeys, AppearanceKey, ElementStyles, Elements, Localization, LocalizationKey, NotificationActionClickHandler, NotificationClickHandler, NotificationRenderer, PreferenceGroups, PreferencesFilter, RouterPush, Tab, Variables } from '@novu/js/ui';
1
+ export * from '@novu/js';
2
+ export { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';
3
+ export { AllLocalization, AllLocalizationKey, ElementStyles, InboxAppearance, InboxAppearanceCallback, InboxAppearanceCallbackFunction, InboxAppearanceCallbackKeys, InboxAppearanceKey, InboxElements, InboxLocalization, InboxLocalizationKey, InboxTheme, NotificationActionClickHandler, NotificationClickHandler, NotificationRenderer, PreferenceGroups, PreferencesFilter, RouterPush, SubscriptionAppearance, SubscriptionAppearanceCallback, SubscriptionAppearanceCallbackFunction, SubscriptionAppearanceCallbackKeys, SubscriptionAppearanceKey, SubscriptionElements, SubscriptionLocalization, SubscriptionLocalizationKey, SubscriptionTheme, Tab, Variables } from '@novu/js/ui';
3
4
  export { NovuProvider, NovuProviderProps, useNovu } from './hooks/NovuProvider.js';
4
5
  export { Bell, BellProps } from './components/Bell.js';
5
6
  export { Inbox, InboxProps } from './components/Inbox.js';
6
7
  export { InboxContent, InboxContentProps } from './components/InboxContent.js';
7
8
  export { NotificationProps, Notifications } from './components/Notifications.js';
8
9
  export { Preferences } from './components/Preferences.js';
10
+ export { Subscription, SubscriptionProps } from './components/subscription/Subscription.js';
11
+ export { SubscriptionButton, SubscriptionButtonProps } from './components/subscription/SubscriptionButton.js';
12
+ export { SubscriptionPreferences, SubscriptionPreferencesProps } from './components/subscription/SubscriptionPreferences.js';
9
13
  export { UseCountsProps, UseCountsResult, useCounts } from './hooks/useCounts.js';
14
+ export { useCreateSubscription } from './hooks/useCreateSubscription.js';
10
15
  export { UseNotificationsProps, UseNotificationsResult, useNotifications } from './hooks/useNotifications.js';
11
16
  export { UsePreferencesResult, usePreferences } from './hooks/usePreferences.js';
17
+ export { useRemoveSubscription } from './hooks/useRemoveSubscription.js';
12
18
  export { UseScheduleProps as UsePreferencesProps, useSchedule } from './hooks/useSchedule.js';
13
- export { BaseProps, BellRenderer, BodyRenderer, DefaultInboxProps, DefaultProps, NoRendererProps, NotificationRendererProps, NotificationsRenderer, SubjectBodyRendererProps, SubjectRenderer, WithChildrenProps } from './utils/types.js';
19
+ export { useSubscription } from './hooks/useSubscription.js';
20
+ export { useSubscriptions } from './hooks/useSubscriptions.js';
21
+ export { useUpdateSubscription } from './hooks/useUpdateSubscription.js';
22
+ export { BaseProps, BellRenderer, BodyRenderer, DefaultInboxProps, DefaultProps, NoRendererProps, NotificationRendererProps, NotificationsRenderer, ReactInboxAppearance, ReactInboxTheme, ReactSubscriptionAppearance, ReactSubscriptionTheme, SubjectBodyRendererProps, SubjectRenderer, WithChildrenProps } from './utils/types.js';
14
23
  import 'react/jsx-runtime';
15
24
  import 'react';
25
+ import './components/NovuUI.js';
26
+ import './components/subscription/DefaultSubscription.js';
package/dist/esm/index.js CHANGED
@@ -1,7 +1,28 @@
1
1
  // src/index.ts
2
2
  import { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from "@novu/js";
3
- import { Bell, Inbox, InboxContent, Notifications, NovuProvider, Preferences } from "./components/index.js";
4
- import { useCounts, useNotifications, useNovu, usePreferences, useSchedule } from "./hooks/index.js";
3
+ import {
4
+ Bell,
5
+ Inbox,
6
+ InboxContent,
7
+ Notifications,
8
+ NovuProvider,
9
+ Preferences,
10
+ Subscription,
11
+ SubscriptionButton,
12
+ SubscriptionPreferences
13
+ } from "./components/index.js";
14
+ import {
15
+ useCounts,
16
+ useCreateSubscription,
17
+ useNotifications,
18
+ useNovu,
19
+ usePreferences,
20
+ useRemoveSubscription,
21
+ useSchedule,
22
+ useSubscription,
23
+ useSubscriptions,
24
+ useUpdateSubscription
25
+ } from "./hooks/index.js";
5
26
  export {
6
27
  Bell,
7
28
  Inbox,
@@ -11,11 +32,19 @@ export {
11
32
  PreferenceLevel,
12
33
  Preferences,
13
34
  SeverityLevelEnum,
35
+ Subscription,
36
+ SubscriptionButton,
37
+ SubscriptionPreferences,
14
38
  WorkflowCriticalityEnum,
15
39
  useCounts,
40
+ useCreateSubscription,
16
41
  useNotifications,
17
42
  useNovu,
18
43
  usePreferences,
19
- useSchedule
44
+ useRemoveSubscription,
45
+ useSchedule,
46
+ useSubscription,
47
+ useSubscriptions,
48
+ useUpdateSubscription
20
49
  };
21
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type {\n ChannelPreference,\n ChannelType,\n EventHandler,\n Events,\n FiltersCountResponse,\n InboxNotification,\n ListNotificationsResponse,\n Notification,\n NotificationFilter,\n NotificationStatus,\n NovuError,\n NovuOptions,\n Preference,\n PreferencesResponse,\n SocketEventNames,\n UnreadCount,\n WebSocketEvent,\n} from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n Appearance,\n AppearanceCallback,\n AppearanceCallbackFunction,\n AppearanceCallbackKeys,\n AppearanceKey,\n ElementStyles,\n Elements,\n Localization,\n LocalizationKey,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\n Tab,\n Variables,\n} from '@novu/js/ui';\nexport type { BellProps, InboxContentProps, InboxProps, NotificationProps, NovuProviderProps } from './components';\nexport { Bell, Inbox, InboxContent, Notifications, NovuProvider, Preferences } from './components';\nexport type {\n UseCountsProps,\n UseCountsResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n} from './hooks';\nexport { useCounts, useNotifications, useNovu, usePreferences, useSchedule } 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":";AAmBA,SAAS,iBAAiB,mBAAmB,+BAA+B;AAsB5E,SAAS,MAAM,OAAO,cAAc,eAAe,cAAc,mBAAmB;AASpF,SAAS,WAAW,kBAAkB,SAAS,gBAAgB,mBAAmB;","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 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 NotificationProps,\n NovuProviderProps,\n SubscriptionButtonProps,\n SubscriptionPreferencesProps,\n SubscriptionProps,\n} from './components';\nexport {\n Bell,\n Inbox,\n InboxContent,\n Notifications,\n NovuProvider,\n Preferences,\n Subscription,\n SubscriptionButton,\n SubscriptionPreferences,\n} from './components';\nexport type {\n UseCountsProps,\n UseCountsResult,\n UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesResult,\n UseScheduleProps as UsePreferencesProps,\n} from './hooks';\nexport {\n useCounts,\n useCreateSubscription,\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 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;AA2C5E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -1,12 +1,18 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { InboxProps } from '../components/Inbox.js';
3
- export { ChannelPreference, ChannelType, FiltersCountResponse, InboxNotification, ListNotificationsResponse, Notification, NotificationFilter, NotificationStatus, NovuError, NovuOptions, Preference, PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';
3
+ export * from '@novu/js';
4
+ export { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';
4
5
  import { NovuProviderProps } from '../hooks/NovuProvider.js';
5
6
  import { UseCountsProps, UseCountsResult } from '../hooks/useCounts.js';
7
+ import { UseCreateSubscriptionProps, UseCreateSubscriptionResult } from '../hooks/useCreateSubscription.js';
6
8
  import { UseNotificationsProps, UseNotificationsResult } from '../hooks/useNotifications.js';
7
9
  import { UsePreferencesProps, UsePreferencesResult } from '../hooks/usePreferences.js';
10
+ import { UseRemoveSubscriptionProps, UseRemoveSubscriptionResult } from '../hooks/useRemoveSubscription.js';
8
11
  import { UseScheduleProps, UseScheduleResult } from '../hooks/useSchedule.js';
9
- export { Appearance, AppearanceKey, ElementStyles, Elements, Localization, LocalizationKey, NotificationActionClickHandler, NotificationClickHandler, NotificationRenderer, PreferenceGroups, PreferencesFilter, RouterPush, Tab, Variables } from '@novu/js/ui';
12
+ import { UseSubscriptionProps, UseSubscriptionResult } from '../hooks/useSubscription.js';
13
+ import { UseSubscriptionsProps, UseSubscriptionsResult } from '../hooks/useSubscriptions.js';
14
+ import { UseUpdateSubscriptionProps, UseUpdateSubscriptionResult } from '../hooks/useUpdateSubscription.js';
15
+ export { AllLocalization, AllLocalizationKey, ElementStyles, InboxAppearance, InboxAppearanceCallback, InboxAppearanceCallbackFunction, InboxAppearanceCallbackKeys, InboxAppearanceKey, InboxElements, InboxLocalization, InboxLocalizationKey, InboxTheme, NotificationActionClickHandler, NotificationClickHandler, NotificationRenderer, PreferenceGroups, PreferencesFilter, RouterPush, SubscriptionAppearance, SubscriptionAppearanceCallback, SubscriptionAppearanceCallbackFunction, SubscriptionAppearanceCallbackKeys, SubscriptionAppearanceKey, SubscriptionElements, SubscriptionLocalization, SubscriptionLocalizationKey, SubscriptionTheme, Tab, Variables } from '@novu/js/ui';
10
16
  export { BellProps } from '../components/Bell.js';
11
17
  export { InboxContentProps } from '../components/InboxContent.js';
12
18
  export { NotificationProps } from '../components/Notifications.js';
@@ -24,11 +30,19 @@ declare function InboxContent(): void;
24
30
  declare function Notifications(): void;
25
31
  declare function Preferences(): void;
26
32
  declare function Bell(): void;
27
- declare function NovuProvider(props: NovuProviderProps): void;
33
+ declare function NovuProvider(props: NovuProviderProps): react_jsx_runtime.JSX.Element;
34
+ declare function Subscription(): react_jsx_runtime.JSX.Element;
35
+ declare function SubscriptionButton(): void;
36
+ declare function SubscriptionPreferences(): void;
28
37
  declare function useNovu(): null;
29
38
  declare function useCounts(_: UseCountsProps): UseCountsResult;
30
39
  declare function useNotifications(_: UseNotificationsProps): UseNotificationsResult;
31
40
  declare function usePreferences(_: UsePreferencesProps): UsePreferencesResult;
32
41
  declare function useSchedule(_: UseScheduleProps): UseScheduleResult;
42
+ declare function useSubscription(_: UseSubscriptionProps): UseSubscriptionResult;
43
+ declare function useCreateSubscription(_?: UseCreateSubscriptionProps): UseCreateSubscriptionResult;
44
+ declare function useUpdateSubscription(_?: UseUpdateSubscriptionProps): UseUpdateSubscriptionResult;
45
+ declare function useRemoveSubscription(_?: UseRemoveSubscriptionProps): UseRemoveSubscriptionResult;
46
+ declare function useSubscriptions(_: UseSubscriptionsProps): UseSubscriptionsResult;
33
47
 
34
- export { Bell, Inbox, InboxContent, InboxProps, Notifications, NovuProvider, NovuProviderProps, Preferences, UseCountsProps, UseCountsResult, UseNotificationsProps, UseNotificationsResult, UseScheduleProps as UsePreferencesProps, UsePreferencesResult, useCounts, useNotifications, useNovu, usePreferences, useSchedule };
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 };
@@ -1,7 +1,7 @@
1
1
  // src/server/index.tsx
2
2
  import { ShadowRootDetector } from "../components/ShadowRootDetector.js";
3
3
  import { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from "@novu/js";
4
- import { jsx } from "react/jsx-runtime";
4
+ import { Fragment, jsx } from "react/jsx-runtime";
5
5
  function Inbox(props) {
6
6
  return /* @__PURE__ */ jsx(ShadowRootDetector, {});
7
7
  }
@@ -14,6 +14,14 @@ function Preferences() {
14
14
  function Bell() {
15
15
  }
16
16
  function NovuProvider(props) {
17
+ return /* @__PURE__ */ jsx(Fragment, { children: props.children });
18
+ }
19
+ function Subscription() {
20
+ return /* @__PURE__ */ jsx(ShadowRootDetector, {});
21
+ }
22
+ function SubscriptionButton() {
23
+ }
24
+ function SubscriptionPreferences() {
17
25
  }
18
26
  function useNovu() {
19
27
  return null;
@@ -52,6 +60,41 @@ function useSchedule(_) {
52
60
  refetch: () => Promise.resolve()
53
61
  };
54
62
  }
63
+ function useSubscription(_) {
64
+ return {
65
+ isLoading: false,
66
+ isFetching: false,
67
+ refetch: () => Promise.resolve()
68
+ };
69
+ }
70
+ function useCreateSubscription(_ = {}) {
71
+ return {
72
+ isCreating: false,
73
+ error: void 0,
74
+ create: () => Promise.resolve({ data: void 0, error: void 0 })
75
+ };
76
+ }
77
+ function useUpdateSubscription(_ = {}) {
78
+ return {
79
+ isUpdating: false,
80
+ error: void 0,
81
+ update: () => Promise.resolve({ data: void 0, error: void 0 })
82
+ };
83
+ }
84
+ function useRemoveSubscription(_ = {}) {
85
+ return {
86
+ isRemoving: false,
87
+ error: void 0,
88
+ remove: () => Promise.resolve({ data: void 0, error: void 0 })
89
+ };
90
+ }
91
+ function useSubscriptions(_) {
92
+ return {
93
+ isLoading: false,
94
+ isFetching: false,
95
+ refetch: () => Promise.resolve()
96
+ };
97
+ }
55
98
  export {
56
99
  Bell,
57
100
  Inbox,
@@ -61,11 +104,19 @@ export {
61
104
  PreferenceLevel,
62
105
  Preferences,
63
106
  SeverityLevelEnum,
107
+ Subscription,
108
+ SubscriptionButton,
109
+ SubscriptionPreferences,
64
110
  WorkflowCriticalityEnum,
65
111
  useCounts,
112
+ useCreateSubscription,
66
113
  useNotifications,
67
114
  useNovu,
68
115
  usePreferences,
69
- useSchedule
116
+ useRemoveSubscription,
117
+ useSchedule,
118
+ useSubscription,
119
+ useSubscriptions,
120
+ useUpdateSubscription
70
121
  };
71
122
  //# sourceMappingURL=index.js.map
@@ -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 UseNotificationsProps,\n UseNotificationsResult,\n UsePreferencesProps,\n UsePreferencesResult,\n UseScheduleProps,\n UseScheduleResult,\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\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 type {\n ChannelPreference,\n ChannelType,\n FiltersCountResponse,\n InboxNotification,\n ListNotificationsResponse,\n Notification,\n NotificationFilter,\n NotificationStatus,\n NovuError,\n NovuOptions,\n Preference,\n} from '@novu/js';\nexport { PreferenceLevel, SeverityLevelEnum, WorkflowCriticalityEnum } from '@novu/js';\n\nexport type {\n Appearance,\n AppearanceKey,\n ElementStyles,\n Elements,\n Localization,\n LocalizationKey,\n NotificationActionClickHandler,\n NotificationClickHandler,\n NotificationRenderer,\n PreferenceGroups,\n PreferencesFilter,\n RouterPush,\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;AAuFnC,SAAS,iBAAiB,mBAAmB,+BAA+B;AApEnE;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;AAAC;AAEjD,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;","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 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,10 +1,10 @@
1
- import { Appearance } from '@novu/js/ui';
1
+ import { AllAppearance } from '@novu/js/ui';
2
2
  import { MountedElement } from '../context/RendererContext.js';
3
- import { ReactAppearance } from './types.js';
3
+ import { ReactInboxAppearance, ReactSubscriptionAppearance } from './types.js';
4
4
  import 'react/jsx-runtime';
5
5
  import 'react';
6
6
  import '@novu/js';
7
7
 
8
- declare function adaptAppearanceForJs(appearance: ReactAppearance, mountElement: (el: HTMLElement, mountedElement: MountedElement) => () => void): Appearance | undefined;
8
+ declare function adaptAppearanceForJs(appearance: ReactInboxAppearance | ReactSubscriptionAppearance, mountElement: (el: HTMLElement, mountedElement: MountedElement) => () => void): AllAppearance | undefined;
9
9
 
10
10
  export { adaptAppearanceForJs };