@djangocfg/ext-newsletter 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +140 -0
  2. package/dist/chunk-LQLPNWHR.js +2075 -0
  3. package/dist/hooks.cjs +2539 -0
  4. package/dist/hooks.d.cts +267 -0
  5. package/dist/hooks.d.ts +267 -0
  6. package/dist/hooks.js +370 -0
  7. package/dist/index.cjs +2153 -0
  8. package/dist/index.d.cts +2084 -0
  9. package/dist/index.d.ts +2084 -0
  10. package/dist/index.js +1 -0
  11. package/package.json +80 -0
  12. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter.ts +210 -0
  13. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__bulk_email.ts +93 -0
  14. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__campaigns.ts +338 -0
  15. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__logs.ts +92 -0
  16. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__newsletters.ts +150 -0
  17. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__subscriptions.ts +210 -0
  18. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__testing.ts +93 -0
  19. package/src/api/generated/ext_newsletter/_utils/fetchers/index.ts +34 -0
  20. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter.ts +81 -0
  21. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__bulk_email.ts +42 -0
  22. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__campaigns.ts +130 -0
  23. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__logs.ts +37 -0
  24. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__newsletters.ts +52 -0
  25. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__subscriptions.ts +78 -0
  26. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__testing.ts +42 -0
  27. package/src/api/generated/ext_newsletter/_utils/hooks/index.ts +34 -0
  28. package/src/api/generated/ext_newsletter/_utils/schemas/BulkEmailRequest.schema.ts +26 -0
  29. package/src/api/generated/ext_newsletter/_utils/schemas/BulkEmailResponse.schema.ts +23 -0
  30. package/src/api/generated/ext_newsletter/_utils/schemas/EmailLog.schema.ts +31 -0
  31. package/src/api/generated/ext_newsletter/_utils/schemas/ErrorResponse.schema.ts +20 -0
  32. package/src/api/generated/ext_newsletter/_utils/schemas/Newsletter.schema.ts +26 -0
  33. package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterCampaign.schema.ts +33 -0
  34. package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterCampaignRequest.schema.ts +26 -0
  35. package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterSubscription.schema.ts +27 -0
  36. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedEmailLogList.schema.ts +24 -0
  37. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterCampaignList.schema.ts +24 -0
  38. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterList.schema.ts +24 -0
  39. package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterSubscriptionList.schema.ts +24 -0
  40. package/src/api/generated/ext_newsletter/_utils/schemas/PatchedNewsletterCampaignRequest.schema.ts +26 -0
  41. package/src/api/generated/ext_newsletter/_utils/schemas/PatchedUnsubscribeRequest.schema.ts +19 -0
  42. package/src/api/generated/ext_newsletter/_utils/schemas/SendCampaignRequest.schema.ts +19 -0
  43. package/src/api/generated/ext_newsletter/_utils/schemas/SendCampaignResponse.schema.ts +22 -0
  44. package/src/api/generated/ext_newsletter/_utils/schemas/SubscribeRequest.schema.ts +20 -0
  45. package/src/api/generated/ext_newsletter/_utils/schemas/SubscribeResponse.schema.ts +21 -0
  46. package/src/api/generated/ext_newsletter/_utils/schemas/SuccessResponse.schema.ts +20 -0
  47. package/src/api/generated/ext_newsletter/_utils/schemas/TestEmailRequest.schema.ts +21 -0
  48. package/src/api/generated/ext_newsletter/_utils/schemas/Unsubscribe.schema.ts +19 -0
  49. package/src/api/generated/ext_newsletter/_utils/schemas/UnsubscribeRequest.schema.ts +19 -0
  50. package/src/api/generated/ext_newsletter/_utils/schemas/index.ts +40 -0
  51. package/src/api/generated/ext_newsletter/api-instance.ts +131 -0
  52. package/src/api/generated/ext_newsletter/client.ts +319 -0
  53. package/src/api/generated/ext_newsletter/enums.ts +24 -0
  54. package/src/api/generated/ext_newsletter/errors.ts +116 -0
  55. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/client.ts +38 -0
  56. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/index.ts +2 -0
  57. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/models.ts +71 -0
  58. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/client.ts +24 -0
  59. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/index.ts +2 -0
  60. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/models.ts +29 -0
  61. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/client.ts +85 -0
  62. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/index.ts +2 -0
  63. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/models.ts +100 -0
  64. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/client.ts +35 -0
  65. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/index.ts +2 -0
  66. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/models.ts +51 -0
  67. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/client.ts +45 -0
  68. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/index.ts +2 -0
  69. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/models.ts +42 -0
  70. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/client.ts +55 -0
  71. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/index.ts +2 -0
  72. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/models.ts +92 -0
  73. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/client.ts +24 -0
  74. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/index.ts +2 -0
  75. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/models.ts +24 -0
  76. package/src/api/generated/ext_newsletter/http.ts +103 -0
  77. package/src/api/generated/ext_newsletter/index.ts +315 -0
  78. package/src/api/generated/ext_newsletter/logger.ts +259 -0
  79. package/src/api/generated/ext_newsletter/retry.ts +175 -0
  80. package/src/api/generated/ext_newsletter/schema.json +1739 -0
  81. package/src/api/generated/ext_newsletter/storage.ts +161 -0
  82. package/src/api/generated/ext_newsletter/validation-events.ts +133 -0
  83. package/src/api/index.ts +9 -0
  84. package/src/components/Hero/index.tsx +160 -0
  85. package/src/components/Hero/types.ts +37 -0
  86. package/src/config.ts +20 -0
  87. package/src/contexts/newsletter/NewsletterContext.tsx +264 -0
  88. package/src/contexts/newsletter/types.ts +32 -0
  89. package/src/hooks/index.ts +21 -0
  90. package/src/index.ts +14 -0
  91. package/src/utils/logger.ts +9 -0
package/README.md ADDED
@@ -0,0 +1,140 @@
1
+ # @djangocfg/ext-newsletter
2
+
3
+ Newsletter subscription and campaign management extension for DjangoCFG.
4
+
5
+ **Part of [DjangoCFG](https://djangocfg.com)** — modern Django framework for production-ready SaaS applications.
6
+
7
+ ## Features
8
+
9
+ - 📧 **Email Campaigns** - Create, manage, and send email campaigns
10
+ - 📝 **Subscription Management** - Handle newsletter subscriptions
11
+ - 📊 **Campaign Analytics** - Track opens, clicks, and conversions
12
+ - 🎯 **Audience Segmentation** - Target specific subscriber groups
13
+ - 📋 **List Management** - Organize subscribers into lists
14
+ - 🚀 **Automated Sending** - Schedule and automate campaign delivery
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ pnpm add @djangocfg/ext-newsletter
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ ### Provider Setup
25
+
26
+ ```typescript
27
+ import { NewsletterProvider } from '@djangocfg/ext-newsletter/hooks';
28
+
29
+ export default function RootLayout({ children }) {
30
+ return (
31
+ <NewsletterProvider>
32
+ {children}
33
+ </NewsletterProvider>
34
+ );
35
+ }
36
+ ```
37
+
38
+ ### Managing Campaigns
39
+
40
+ ```typescript
41
+ import { useNewsletterContext } from '@djangocfg/ext-newsletter/hooks';
42
+
43
+ function CampaignsPage() {
44
+ const {
45
+ campaigns,
46
+ isLoadingCampaigns,
47
+ createCampaign,
48
+ sendCampaign,
49
+ } = useNewsletterContext();
50
+
51
+ const handleCreate = async () => {
52
+ await createCampaign({
53
+ subject: 'Monthly Newsletter',
54
+ content: '<h1>Hello!</h1>',
55
+ scheduled_at: new Date().toISOString(),
56
+ });
57
+ };
58
+
59
+ return (
60
+ <div>
61
+ <button onClick={handleCreate}>Create Campaign</button>
62
+ {campaigns.map(campaign => (
63
+ <div key={campaign.id}>
64
+ <h3>{campaign.subject}</h3>
65
+ <button onClick={() => sendCampaign(campaign.id)}>
66
+ Send Now
67
+ </button>
68
+ </div>
69
+ ))}
70
+ </div>
71
+ );
72
+ }
73
+ ```
74
+
75
+ ### Newsletter Subscription Form
76
+
77
+ ```typescript
78
+ import { Hero } from '@djangocfg/ext-newsletter';
79
+ import { useNewsletterContext } from '@djangocfg/ext-newsletter/hooks';
80
+
81
+ function HomePage() {
82
+ const { subscribe } = useNewsletterContext();
83
+
84
+ return (
85
+ <Hero
86
+ title="Subscribe to our newsletter"
87
+ description="Get weekly updates delivered to your inbox"
88
+ showNewsletter={true}
89
+ onNewsletterSubmit={async (email) => {
90
+ await subscribe({ email });
91
+ }}
92
+ />
93
+ );
94
+ }
95
+ ```
96
+
97
+ ## Components
98
+
99
+ ### Hero
100
+
101
+ Landing page hero section with integrated newsletter subscription form.
102
+
103
+ ```typescript
104
+ <Hero
105
+ title="Welcome to our platform"
106
+ description="Join thousands of subscribers"
107
+ primaryAction={{
108
+ label: 'Get Started',
109
+ href: '/signup',
110
+ }}
111
+ secondaryAction={{
112
+ label: 'Learn More',
113
+ href: '/about',
114
+ }}
115
+ showNewsletter={true}
116
+ onNewsletterSubmit={(email) => subscribe({ email })}
117
+ />
118
+ ```
119
+
120
+ ## API Reference
121
+
122
+ ### Context Methods
123
+
124
+ - `campaigns` - List of all campaigns
125
+ - `createCampaign(data)` - Create new campaign
126
+ - `updateCampaign(id, data)` - Update campaign
127
+ - `deleteCampaign(id)` - Delete campaign
128
+ - `sendCampaign(id)` - Send campaign immediately
129
+ - `subscribe(data)` - Subscribe email to newsletter
130
+ - `unsubscribe(data)` - Unsubscribe email from newsletter
131
+ - `subscriptions` - List of all subscriptions
132
+
133
+ ## License
134
+
135
+ MIT
136
+
137
+ ## Links
138
+
139
+ - [DjangoCFG Documentation](https://djangocfg.com)
140
+ - [GitHub](https://github.com/markolofsen/django-cfg)