@djangocfg/nextjs 2.1.225 → 2.1.226

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.
@@ -1,112 +1,52 @@
1
- import { ImageResponse } from 'next/og';
2
- import { NextRequest } from 'next/server';
3
- import { ReactElement } from 'react';
4
- import { OgImageTemplateProps } from './components/index.mjs';
5
- export { DefaultTemplate, LightTemplate } from './components/index.mjs';
6
- export { AppMetadataOptions, FontConfig, OgImageUrlParams, createAppMetadataGenerator, createFontLoader, createOgImageUrlBuilder, decodeBase64, encodeBase64, generateAppMetadata, generateOgImageUrl, getAbsoluteOgImageUrl, loadGoogleFont, loadGoogleFonts, parseOgImageData, parseOgImageUrl } from './utils/index.mjs';
7
- import 'next';
1
+ import { Metadata } from 'next';
2
+
3
+ type OGPreset = 'DARK' | 'DARK_BLUE' | 'DARK_PURPLE' | 'DARK_GREEN' | 'DARK_ROSE' | 'LIGHT' | 'LIGHT_GRAY' | 'LIGHT_WARM' | 'LIGHT_GREEN';
4
+ type OGLayout = 'DEFAULT' | 'HERO' | 'ARTICLE' | 'MINIMAL';
5
+ /** Mirrors Django OGImageParams exactly */
6
+ interface OGImageParams {
7
+ title: string;
8
+ description?: string;
9
+ locale?: string;
10
+ style?: 'dark' | 'light';
11
+ bg_color?: string;
12
+ bg_color2?: string;
13
+ text_color?: string;
14
+ accent_color?: string;
15
+ /** e.g. "1200x630" */
16
+ size?: string;
17
+ preset?: OGPreset;
18
+ layout?: OGLayout;
19
+ /** Excluded from cache key on Django side */
20
+ page_url?: string;
21
+ }
8
22
 
9
23
  /**
10
- * OG Image Route Handler
11
- *
12
- * Factory function to create OG Image route handler for Next.js App Router
24
+ * Builds an absolute (or relative) OG image URL pointing to Django's
25
+ * django_ogimage endpoint: /cfg/og/<base64params>/
13
26
  *
14
- * Usage:
15
- * ```tsx
16
- * // app/api/og/route.tsx
17
- * import { createOgImageHandler } from '@djangocfg/nextjs/og-image';
18
- * import { MyTemplate } from './templates';
19
- *
20
- * export const { GET, runtime } = createOgImageHandler({
21
- * template: MyTemplate,
22
- * defaultProps: {
23
- * siteName: 'My Site',
24
- * },
25
- * fonts: [{ family: 'Manrope', weight: 700 }],
26
- * });
27
- * ```
27
+ * The URL is suitable for use in og:image and twitter:image meta tags.
28
28
  */
29
+ declare function buildOgUrl(params: OGImageParams): string;
29
30
 
30
- interface OgImageHandlerConfig {
31
- /** Custom template component (optional, defaults to DefaultTemplate) */
32
- template?: (props: OgImageTemplateProps) => ReactElement;
33
- /** Default props to merge with query params */
34
- defaultProps?: Partial<OgImageTemplateProps>;
35
- /** Google Fonts to load */
36
- fonts?: Array<{
37
- family: string;
38
- weight: 400 | 500 | 600 | 700 | 800 | 900;
39
- }>;
40
- /** Image size */
41
- size?: {
42
- width: number;
43
- height: number;
44
- };
45
- /** Enable debug mode */
46
- debug?: boolean;
47
- }
48
31
  /**
49
- * Factory function to create OG Image route handler
32
+ * Creates Next.js Metadata fragment with og:image and twitter:image
33
+ * pointing to Django's django_ogimage renderer.
50
34
  *
51
- * @example
52
- * ```tsx
53
- * // app/api/og/route.tsx
54
- * import { createOgImageHandler } from '@djangocfg/nextjs/og-image';
55
- * import { MyTemplate } from '@/components/MyTemplate';
56
- *
57
- * export const { GET, runtime } = createOgImageHandler({
58
- * template: MyTemplate,
59
- * defaultProps: { siteName: 'My Site' },
60
- * fonts: [{ family: 'Inter', weight: 700 }],
61
- * });
62
- * ```
35
+ * Usage in generateMetadata():
36
+ * return createOgMetadata({ title: 'Page', preset: 'DARK_BLUE' })
63
37
  */
64
- declare function createOgImageHandler(config: OgImageHandlerConfig): {
65
- GET: (req: NextRequest) => Promise<ImageResponse>;
66
- runtime: "edge";
67
- };
38
+ declare function createOgMetadata(params: OGImageParams): Metadata;
68
39
  /**
69
- * Create OG Image route handler for dynamic route with path parameter
70
- *
71
- * This is a convenience wrapper for Next.js dynamic routes like `/api/og/[data]/route.tsx`.
72
- * It extracts the `data` parameter from the path and passes it to the handler as a query parameter.
73
- * Also handles static export mode automatically.
74
- *
75
- * @example
76
- * ```tsx
77
- * // app/api/og/[data]/route.tsx
78
- * import { createOgImageDynamicRoute } from '@djangocfg/nextjs/og-image';
79
- * import { OgImageTemplate } from '@/components/OgImageTemplate';
40
+ * Merges og:image metadata into an existing Metadata object.
80
41
  *
81
- * export const runtime = 'nodejs';
82
- * export const dynamic = 'force-static';
83
- * export const revalidate = false;
84
- *
85
- * const handler = createOgImageDynamicRoute({
86
- * template: OgImageTemplate,
87
- * defaultProps: {
88
- * siteName: 'My App',
89
- * logo: '/logo.svg',
90
- * },
91
- * });
92
- *
93
- * export async function GET(
94
- * request: NextRequest,
95
- * { params }: { params: { data: string } }
96
- ) {
97
- * return handler(request, params);
98
- * }
99
- * ```
42
+ * Usage:
43
+ * return withOgImage(
44
+ * { title: 'Page', description: '...' },
45
+ * { preset: 'DARK_BLUE', layout: 'HERO' }
46
+ * )
100
47
  */
101
- declare function createOgImageDynamicRoute(config: OgImageHandlerConfig): {
102
- GET: (request: NextRequest, context: {
103
- params: Promise<{
104
- data: string;
105
- }>;
106
- }) => Promise<Response>;
107
- generateStaticParams: () => Promise<Array<{
108
- data: string;
109
- }>>;
110
- };
48
+ declare function withOgImage(metadata: Metadata, params: OGImageParams & {
49
+ title?: string;
50
+ }): Metadata;
111
51
 
112
- export { type OgImageHandlerConfig, OgImageTemplateProps, createOgImageDynamicRoute, createOgImageHandler };
52
+ export { type OGImageParams, type OGLayout, type OGPreset, buildOgUrl, createOgMetadata, withOgImage };