@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.
- package/README.md +140 -0
- package/dist/chunk-LQLPNWHR.js +2075 -0
- package/dist/hooks.cjs +2539 -0
- package/dist/hooks.d.cts +267 -0
- package/dist/hooks.d.ts +267 -0
- package/dist/hooks.js +370 -0
- package/dist/index.cjs +2153 -0
- package/dist/index.d.cts +2084 -0
- package/dist/index.d.ts +2084 -0
- package/dist/index.js +1 -0
- package/package.json +80 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter.ts +210 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__bulk_email.ts +93 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__campaigns.ts +338 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__logs.ts +92 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__newsletters.ts +150 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__subscriptions.ts +210 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__testing.ts +93 -0
- package/src/api/generated/ext_newsletter/_utils/fetchers/index.ts +34 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter.ts +81 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__bulk_email.ts +42 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__campaigns.ts +130 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__logs.ts +37 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__newsletters.ts +52 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__subscriptions.ts +78 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__testing.ts +42 -0
- package/src/api/generated/ext_newsletter/_utils/hooks/index.ts +34 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/BulkEmailRequest.schema.ts +26 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/BulkEmailResponse.schema.ts +23 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/EmailLog.schema.ts +31 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/ErrorResponse.schema.ts +20 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/Newsletter.schema.ts +26 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterCampaign.schema.ts +33 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterCampaignRequest.schema.ts +26 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/NewsletterSubscription.schema.ts +27 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedEmailLogList.schema.ts +24 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterCampaignList.schema.ts +24 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterList.schema.ts +24 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/PaginatedNewsletterSubscriptionList.schema.ts +24 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/PatchedNewsletterCampaignRequest.schema.ts +26 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/PatchedUnsubscribeRequest.schema.ts +19 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/SendCampaignRequest.schema.ts +19 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/SendCampaignResponse.schema.ts +22 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/SubscribeRequest.schema.ts +20 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/SubscribeResponse.schema.ts +21 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/SuccessResponse.schema.ts +20 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/TestEmailRequest.schema.ts +21 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/Unsubscribe.schema.ts +19 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/UnsubscribeRequest.schema.ts +19 -0
- package/src/api/generated/ext_newsletter/_utils/schemas/index.ts +40 -0
- package/src/api/generated/ext_newsletter/api-instance.ts +131 -0
- package/src/api/generated/ext_newsletter/client.ts +319 -0
- package/src/api/generated/ext_newsletter/enums.ts +24 -0
- package/src/api/generated/ext_newsletter/errors.ts +116 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/client.ts +38 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/index.ts +2 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/models.ts +71 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/client.ts +24 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/index.ts +2 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/models.ts +29 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/client.ts +85 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/index.ts +2 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/models.ts +100 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/client.ts +35 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/index.ts +2 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/models.ts +51 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/client.ts +45 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/index.ts +2 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/models.ts +42 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/client.ts +55 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/index.ts +2 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/models.ts +92 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/client.ts +24 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/index.ts +2 -0
- package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/models.ts +24 -0
- package/src/api/generated/ext_newsletter/http.ts +103 -0
- package/src/api/generated/ext_newsletter/index.ts +315 -0
- package/src/api/generated/ext_newsletter/logger.ts +259 -0
- package/src/api/generated/ext_newsletter/retry.ts +175 -0
- package/src/api/generated/ext_newsletter/schema.json +1739 -0
- package/src/api/generated/ext_newsletter/storage.ts +161 -0
- package/src/api/generated/ext_newsletter/validation-events.ts +133 -0
- package/src/api/index.ts +9 -0
- package/src/components/Hero/index.tsx +160 -0
- package/src/components/Hero/types.ts +37 -0
- package/src/config.ts +20 -0
- package/src/contexts/newsletter/NewsletterContext.tsx +264 -0
- package/src/contexts/newsletter/types.ts +32 -0
- package/src/hooks/index.ts +21 -0
- package/src/index.ts +14 -0
- 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)
|