@djangocfg/ext-newsletter 1.0.4 → 1.0.7

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 (52) hide show
  1. package/dist/config.cjs +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/hooks.cjs +2 -2
  4. package/dist/hooks.js +2 -2
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.js +1 -1
  7. package/package.json +7 -7
  8. package/src/api/generated/ext_newsletter/CLAUDE.md +71 -0
  9. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter.ts +1 -0
  10. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__bulk_email.ts +1 -0
  11. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__campaigns.ts +1 -0
  12. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__logs.ts +1 -0
  13. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__newsletters.ts +1 -0
  14. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__subscriptions.ts +1 -0
  15. package/src/api/generated/ext_newsletter/_utils/fetchers/ext_newsletter__newsletter__testing.ts +1 -0
  16. package/src/api/generated/ext_newsletter/_utils/fetchers/index.ts +1 -0
  17. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter.ts +1 -0
  18. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__bulk_email.ts +1 -0
  19. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__campaigns.ts +1 -0
  20. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__logs.ts +1 -0
  21. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__newsletters.ts +1 -0
  22. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__subscriptions.ts +1 -0
  23. package/src/api/generated/ext_newsletter/_utils/hooks/ext_newsletter__newsletter__testing.ts +1 -0
  24. package/src/api/generated/ext_newsletter/_utils/hooks/index.ts +1 -0
  25. package/src/api/generated/ext_newsletter/_utils/schemas/index.ts +1 -0
  26. package/src/api/generated/ext_newsletter/api-instance.ts +1 -0
  27. package/src/api/generated/ext_newsletter/enums.ts +1 -0
  28. package/src/api/generated/ext_newsletter/errors.ts +1 -0
  29. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/index.ts +1 -0
  30. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter/models.ts +1 -0
  31. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/index.ts +1 -0
  32. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__bulk_email/models.ts +1 -0
  33. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/index.ts +1 -0
  34. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__campaigns/models.ts +1 -0
  35. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/index.ts +1 -0
  36. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__logs/models.ts +1 -0
  37. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/index.ts +1 -0
  38. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__newsletters/models.ts +1 -0
  39. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/index.ts +1 -0
  40. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__subscriptions/models.ts +1 -0
  41. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/index.ts +1 -0
  42. package/src/api/generated/ext_newsletter/ext_newsletter__newsletter__testing/models.ts +1 -0
  43. package/src/api/generated/ext_newsletter/http.ts +1 -0
  44. package/src/api/generated/ext_newsletter/index.ts +1 -0
  45. package/src/api/generated/ext_newsletter/logger.ts +1 -0
  46. package/src/api/generated/ext_newsletter/retry.ts +1 -0
  47. package/src/api/generated/ext_newsletter/storage.ts +1 -0
  48. package/src/api/generated/ext_newsletter/validation-events.ts +1 -0
  49. package/src/api/index.ts +2 -1
  50. package/src/components/Hero/index.tsx +4 -1
  51. package/src/config.ts +1 -0
  52. package/src/contexts/newsletter/NewsletterContext.tsx +9 -12
package/dist/config.cjs CHANGED
@@ -27,7 +27,7 @@ var import_ext_base = require("@djangocfg/ext-base");
27
27
  // package.json
28
28
  var package_default = {
29
29
  name: "@djangocfg/ext-newsletter",
30
- version: "1.0.4",
30
+ version: "1.0.6",
31
31
  description: "Newsletter and subscription management extension for DjangoCFG",
32
32
  keywords: [
33
33
  "django",
package/dist/config.js CHANGED
@@ -4,7 +4,7 @@ import { createExtensionConfig } from "@djangocfg/ext-base";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "@djangocfg/ext-newsletter",
7
- version: "1.0.4",
7
+ version: "1.0.6",
8
8
  description: "Newsletter and subscription management extension for DjangoCFG",
9
9
  keywords: [
10
10
  "django",
package/dist/hooks.cjs CHANGED
@@ -9,8 +9,8 @@ var useSWR = require('swr');
9
9
  var react = require('react');
10
10
  var hooks = require('@djangocfg/ext-base/hooks');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
- var uiNextjs = require('@djangocfg/ui-nextjs');
13
12
  var lucideReact = require('lucide-react');
13
+ var uiNextjs = require('@djangocfg/ui-nextjs');
14
14
 
15
15
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
16
 
@@ -2089,7 +2089,7 @@ var apiNewsletter = api.createExtensionAPI(API);
2089
2089
  // package.json
2090
2090
  var package_default = {
2091
2091
  name: "@djangocfg/ext-newsletter",
2092
- version: "1.0.4",
2092
+ version: "1.0.6",
2093
2093
  description: "Newsletter and subscription management extension for DjangoCFG",
2094
2094
  keywords: [
2095
2095
  "django",
package/dist/hooks.js CHANGED
@@ -7,8 +7,8 @@ import useSWR, { useSWRConfig } from 'swr';
7
7
  import { createContext, useContext, useState } from 'react';
8
8
  import { ExtensionProvider } from '@djangocfg/ext-base/hooks';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
- import { Button, Input } from '@djangocfg/ui-nextjs';
11
10
  import { Mail, Loader2, CheckCircle2, AlertCircle } from 'lucide-react';
11
+ import { Button, Input } from '@djangocfg/ui-nextjs';
12
12
 
13
13
  var __defProp = Object.defineProperty;
14
14
  var __export = (target, all) => {
@@ -2082,7 +2082,7 @@ var apiNewsletter = createExtensionAPI(API);
2082
2082
  // package.json
2083
2083
  var package_default = {
2084
2084
  name: "@djangocfg/ext-newsletter",
2085
- version: "1.0.4",
2085
+ version: "1.0.6",
2086
2086
  description: "Newsletter and subscription management extension for DjangoCFG",
2087
2087
  keywords: [
2088
2088
  "django",
package/dist/index.cjs CHANGED
@@ -2082,7 +2082,7 @@ var apiNewsletter = api.createExtensionAPI(API);
2082
2082
  // package.json
2083
2083
  var package_default = {
2084
2084
  name: "@djangocfg/ext-newsletter",
2085
- version: "1.0.4",
2085
+ version: "1.0.6",
2086
2086
  description: "Newsletter and subscription management extension for DjangoCFG",
2087
2087
  keywords: [
2088
2088
  "django",
package/dist/index.js CHANGED
@@ -2076,7 +2076,7 @@ var apiNewsletter = createExtensionAPI(API);
2076
2076
  // package.json
2077
2077
  var package_default = {
2078
2078
  name: "@djangocfg/ext-newsletter",
2079
- version: "1.0.4",
2079
+ version: "1.0.6",
2080
2080
  description: "Newsletter and subscription management extension for DjangoCFG",
2081
2081
  keywords: [
2082
2082
  "django",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@djangocfg/ext-newsletter",
3
- "version": "1.0.4",
3
+ "version": "1.0.7",
4
4
  "description": "Newsletter and subscription management extension for DjangoCFG",
5
5
  "keywords": [
6
6
  "django",
@@ -59,9 +59,9 @@
59
59
  "check": "tsc --noEmit"
60
60
  },
61
61
  "peerDependencies": {
62
- "@djangocfg/api": "^2.1.16",
63
- "@djangocfg/ext-base": "^1.0.4",
64
- "@djangocfg/ui-nextjs": "^2.1.16",
62
+ "@djangocfg/api": "^2.1.43",
63
+ "@djangocfg/ext-base": "^1.0.7",
64
+ "@djangocfg/ui-nextjs": "^2.1.43",
65
65
  "consola": "^3.4.2",
66
66
  "lucide-react": "^0.545.0",
67
67
  "next": "^15.5.7",
@@ -72,9 +72,9 @@
72
72
  "zod": "^4.1.13"
73
73
  },
74
74
  "devDependencies": {
75
- "@djangocfg/api": "^2.1.16",
76
- "@djangocfg/ext-base": "^1.0.4",
77
- "@djangocfg/typescript-config": "^2.1.16",
75
+ "@djangocfg/api": "^2.1.43",
76
+ "@djangocfg/ext-base": "^1.0.7",
77
+ "@djangocfg/typescript-config": "^2.1.43",
78
78
  "@types/node": "^24.7.2",
79
79
  "@types/react": "^19.0.0",
80
80
  "consola": "^3.4.2",
@@ -0,0 +1,71 @@
1
+ # Django CFG API - Typescript Client
2
+
3
+ Auto-generated. **Do not edit manually.**
4
+
5
+ ```bash
6
+ python manage.py generate_client --groups ext_newsletter --typescript
7
+ ```
8
+
9
+ ## Stats
10
+
11
+ | | |
12
+ |---|---|
13
+ | Version | 3.0.3 |
14
+ | Operations | 17 |
15
+ | Schemas | 22 |
16
+
17
+ ## Resources
18
+
19
+ - **Bulk Email** (1 ops)
20
+ - **Campaigns** (6 ops)
21
+ - **Logs** (1 ops)
22
+ - **Newsletters** (2 ops)
23
+ - **Subscriptions** (3 ops)
24
+ - **Testing** (1 ops)
25
+ - **newsletter** (3 ops)
26
+
27
+ ## Usage
28
+
29
+ ```typescript
30
+ import { APIClient } from './';
31
+
32
+ const client = new APIClient({ baseUrl, token });
33
+
34
+ await client.bulk email.create({ ... });
35
+ await client.campaigns.list();
36
+ await client.campaigns.retrieve({ id: 1 });
37
+ await client.campaigns.create({ ... });
38
+ ```
39
+
40
+ **SWR Hooks:**
41
+ ```typescript
42
+ import { useBulk emailList } from './hooks';
43
+ const { data, isLoading } = useBulk emailList();
44
+ ```
45
+
46
+ ## How It Works
47
+
48
+ ```
49
+ DRF ViewSets → drf-spectacular → OpenAPI → IR Parser → Generator → This Client
50
+ ```
51
+
52
+ **Configuration** (`api/config.py`):
53
+ ```python
54
+ openapi_client = OpenAPIClientConfig(
55
+ enabled=True,
56
+ groups=[OpenAPIGroupConfig(name="ext_newsletter", apps=["..."])],
57
+ generate_zod_schemas=True, # → schemas.ts
58
+ generate_fetchers=True, # → fetchers.ts
59
+ generate_swr_hooks=True, # → hooks.ts
60
+ )
61
+ ```
62
+
63
+ **Copy to Next.js** (if `nextjs_admin` configured):
64
+ ```python
65
+ nextjs_admin = NextJsAdminConfig(
66
+ project_path="../frontend/apps/...",
67
+ api_output_path="app/_lib/api/generated",
68
+ )
69
+ ```
70
+
71
+ @see https://djangocfg.com/docs/features/api-generation
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed fetchers for Newsletter
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed fetchers for Bulk Email
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed fetchers for Campaigns
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed fetchers for Logs
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed fetchers for Newsletters
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed fetchers for Subscriptions
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed fetchers for Testing
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Typed Fetchers - Universal API functions
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  'use client';
2
3
 
3
4
  /**
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Zod Schemas - Runtime validation and type inference
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Global API Instance - Singleton configuration
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * * `pending` - Pending
3
4
  * * `sent` - Sent
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * API Error Classes
3
4
  *
@@ -1,2 +1,3 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  export * from "./client";
2
3
  export * as Models from "./models";
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  import * as Enums from "../enums";
2
3
 
3
4
  /**
@@ -1,2 +1,3 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  export * from "./client";
2
3
  export * as Models from "./models";
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Simple serializer for bulk email.
3
4
  *
@@ -1,2 +1,3 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  export * from "./client";
2
3
  export * as Models from "./models";
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  import * as Enums from "../enums";
2
3
 
3
4
  /**
@@ -1,2 +1,3 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  export * from "./client";
2
3
  export * as Models from "./models";
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  import * as Enums from "../enums";
2
3
 
3
4
  /**
@@ -1,2 +1,3 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  export * from "./client";
2
3
  export * as Models from "./models";
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  *
3
4
  * Response model (includes read-only fields).
@@ -1,2 +1,3 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  export * from "./client";
2
3
  export * as Models from "./models";
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Simple serializer for newsletter subscription.
3
4
  *
@@ -1,2 +1,3 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  export * from "./client";
2
3
  export * as Models from "./models";
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Simple serializer for test email.
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * HTTP Client Adapter Pattern
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Django CFG API - API Client with JWT Management
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * API Logger with Consola
3
4
  * Beautiful console logging for API requests and responses
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Retry Configuration and Utilities
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Storage adapters for cross-platform token storage.
3
4
  *
@@ -1,3 +1,4 @@
1
+ // Auto-generated by DjangoCFG - see CLAUDE.md
1
2
  /**
2
3
  * Zod Validation Events - Browser CustomEvent integration
3
4
  *
package/src/api/index.ts CHANGED
@@ -1,9 +1,10 @@
1
+ import { createExtensionAPI } from '@djangocfg/ext-base/api';
2
+
1
3
  /**
2
4
  * Newsletter Extension API
3
5
  *
4
6
  * Pre-configured API instance with shared authentication
5
7
  */
6
8
  import { API } from './generated/ext_newsletter';
7
- import { createExtensionAPI } from '@djangocfg/ext-base/api';
8
9
 
9
10
  export const apiNewsletter = createExtensionAPI(API);
@@ -5,10 +5,13 @@
5
5
 
6
6
  'use client';
7
7
 
8
+ import { AlertCircle, CheckCircle2, Loader2, Mail } from 'lucide-react';
8
9
  import React, { useState } from 'react';
10
+
9
11
  import { Button, Input } from '@djangocfg/ui-nextjs';
10
- import { Mail, CheckCircle2, AlertCircle, Loader2 } from 'lucide-react';
12
+
11
13
  import { newsletterLogger } from '../../utils/logger';
14
+
12
15
  import type { HeroProps } from './types';
13
16
 
14
17
  export function Hero({
package/src/config.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
 
5
5
  import { createExtensionConfig } from '@djangocfg/ext-base';
6
+
6
7
  import packageJson from '../package.json';
7
8
 
8
9
  export const extensionConfig = createExtensionConfig(packageJson, {
@@ -12,24 +12,21 @@
12
12
 
13
13
  "use client";
14
14
 
15
- import { createContext, useContext, ReactNode } from 'react';
15
+ import { createContext, ReactNode, useContext } from 'react';
16
16
  import { useSWRConfig } from 'swr';
17
+
17
18
  import { ExtensionProvider } from '@djangocfg/ext-base/hooks';
18
19
 
19
- import { extensionConfig } from '../../config';
20
20
  import { apiNewsletter } from '../../api';
21
21
  import {
22
- useNewsletterCampaignsList,
23
- useNewsletterCampaignsRetrieve,
24
- useCreateNewsletterCampaignsCreate,
25
- useUpdateNewsletterCampaignsUpdate,
26
- usePartialUpdateNewsletterCampaignsPartialUpdate,
27
- useDeleteNewsletterCampaignsDestroy,
28
- useCreateNewsletterCampaignsSendCreate,
29
- useNewsletterSubscriptionsList,
30
- useCreateNewsletterSubscribeCreate,
31
- useCreateNewsletterUnsubscribeCreate,
22
+ useCreateNewsletterCampaignsCreate, useCreateNewsletterCampaignsSendCreate,
23
+ useCreateNewsletterSubscribeCreate, useCreateNewsletterUnsubscribeCreate,
24
+ useDeleteNewsletterCampaignsDestroy, useNewsletterCampaignsList, useNewsletterCampaignsRetrieve,
25
+ useNewsletterSubscriptionsList, usePartialUpdateNewsletterCampaignsPartialUpdate,
26
+ useUpdateNewsletterCampaignsUpdate
32
27
  } from '../../api/generated/ext_newsletter/_utils/hooks';
28
+ import { extensionConfig } from '../../config';
29
+
33
30
  import type {
34
31
  NewsletterCampaign,
35
32
  NewsletterCampaignRequest,