@marvalt/digivalt-core 0.2.3 → 0.2.6
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/CHANGELOG.md +24 -0
- package/README.md +11 -0
- package/dist/config/integrations.d.ts +2 -0
- package/dist/config.cjs +40 -12
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.esm.js +40 -12
- package/dist/config.esm.js.map +1 -1
- package/dist/hooks/useGravityForms.d.ts +6 -12
- package/dist/hooks/useGravityFormsNew.d.ts +6 -9
- package/dist/hooks/useSuiteCRM.d.ts +15 -22
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/lib/structured-data.d.ts +1 -0
- package/dist/seo/DigiValtSeoHead.d.ts +21 -0
- package/dist/seo/JsonLd.d.ts +11 -0
- package/dist/seo/defaults.d.ts +16 -0
- package/dist/seo/eventJsonLd.d.ts +16 -0
- package/dist/seo/index.d.ts +13 -0
- package/dist/seo/preconnect.d.ts +10 -0
- package/dist/seo/types.d.ts +7 -0
- package/dist/seo.cjs +562 -0
- package/dist/seo.cjs.map +1 -0
- package/dist/seo.d.ts +166 -0
- package/dist/seo.esm.js +544 -0
- package/dist/seo.esm.js.map +1 -0
- package/dist/services.cjs +40 -12
- package/dist/services.cjs.map +1 -1
- package/dist/services.esm.js +40 -12
- package/dist/services.esm.js.map +1 -1
- package/dist/static.cjs +1 -0
- package/dist/static.cjs.map +1 -1
- package/dist/static.esm.js +1 -0
- package/dist/static.esm.js.map +1 -1
- package/dist/utils/cfImages.d.ts +7 -0
- package/docs/SEO-PERFORMANCE.md +143 -0
- package/package.json +12 -2
- package/template/DIGIVALT_SETUP.md +7 -0
package/dist/seo.d.ts
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* JSON-LD / schema.org payload (loosely typed for extensibility).
|
|
5
|
+
*/
|
|
6
|
+
type StructuredData = Record<string, unknown> & {
|
|
7
|
+
'@context'?: string;
|
|
8
|
+
'@type'?: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
interface SeoDefaults {
|
|
12
|
+
siteUrl: string;
|
|
13
|
+
siteName: string;
|
|
14
|
+
defaultTitle: string;
|
|
15
|
+
defaultDescription: string;
|
|
16
|
+
defaultKeywords?: string;
|
|
17
|
+
defaultImage: string;
|
|
18
|
+
twitterHandle?: string;
|
|
19
|
+
facebookAppId?: string;
|
|
20
|
+
googleSiteVerification?: string;
|
|
21
|
+
bingSiteVerification?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* SEO defaults from env-backed integration config (see `VITE_SEO_*` in docs).
|
|
25
|
+
*/
|
|
26
|
+
declare function getSeoDefaultsFromEnv(): SeoDefaults;
|
|
27
|
+
|
|
28
|
+
interface PreconnectLink {
|
|
29
|
+
rel: 'preconnect';
|
|
30
|
+
href: string;
|
|
31
|
+
crossOrigin?: '' | 'anonymous' | 'use-credentials';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Suggest `<link rel="preconnect">` targets from an image URL (e.g. Cloudflare Images on imagedelivery.net).
|
|
35
|
+
* Apps may add more hosts (fonts, API) in `index.html` or via Helmet.
|
|
36
|
+
*/
|
|
37
|
+
declare function recommendedPreconnectHosts(imageUrl?: string | null): PreconnectLink[];
|
|
38
|
+
|
|
39
|
+
interface JsonLdProps {
|
|
40
|
+
data: StructuredData | StructuredData[];
|
|
41
|
+
/** Optional id for multiple blocks on one page */
|
|
42
|
+
id?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Renders one or more `<script type="application/ld+json">` tags.
|
|
46
|
+
*/
|
|
47
|
+
declare const JsonLd: React.FC<JsonLdProps>;
|
|
48
|
+
|
|
49
|
+
interface DigiValtSeoHeadProps {
|
|
50
|
+
title?: string;
|
|
51
|
+
description?: string;
|
|
52
|
+
keywords?: string;
|
|
53
|
+
/** Path only, e.g. `/about` — combined with `VITE_SEO_SITE_URL` for canonical and og:url */
|
|
54
|
+
pathname?: string;
|
|
55
|
+
/** Full canonical URL override */
|
|
56
|
+
canonicalUrl?: string;
|
|
57
|
+
/** Page URL for og:url when not derivable from siteUrl + pathname */
|
|
58
|
+
ogUrl?: string;
|
|
59
|
+
imageUrl?: string;
|
|
60
|
+
ogType?: 'website' | 'article';
|
|
61
|
+
noindex?: boolean;
|
|
62
|
+
children?: React.ReactNode;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Document head: title, description, canonical, Open Graph, Twitter cards, optional verification meta.
|
|
66
|
+
* Requires `HelmetProvider` from `react-helmet-async` above this component in the tree.
|
|
67
|
+
*/
|
|
68
|
+
declare const DigiValtSeoHead: React.FC<DigiValtSeoHeadProps>;
|
|
69
|
+
|
|
70
|
+
interface BuildEventJsonLdOptions {
|
|
71
|
+
siteUrl: string;
|
|
72
|
+
/** URL path including leading slash, e.g. `/events/slug` */
|
|
73
|
+
path: string;
|
|
74
|
+
fallbackImageUrl?: string;
|
|
75
|
+
/** Ticket or registration page when not in event meta */
|
|
76
|
+
defaultOffersUrl?: string;
|
|
77
|
+
organizerName?: string;
|
|
78
|
+
organizerUrl?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Build schema.org Event JSON-LD from a WordPress `eventbrite_event`-style REST object
|
|
82
|
+
* (title, slug, featured_media_cloudflare_url, event_meta, link, etc.).
|
|
83
|
+
*/
|
|
84
|
+
declare function buildEventJsonLd(event: Record<string, unknown>, options: BuildEventJsonLdOptions): StructuredData;
|
|
85
|
+
|
|
86
|
+
declare const createOrganizationSchema: (data: {
|
|
87
|
+
name: string;
|
|
88
|
+
url: string;
|
|
89
|
+
logo?: string;
|
|
90
|
+
description?: string;
|
|
91
|
+
address?: {
|
|
92
|
+
streetAddress: string;
|
|
93
|
+
addressLocality: string;
|
|
94
|
+
addressRegion: string;
|
|
95
|
+
postalCode: string;
|
|
96
|
+
addressCountry: string;
|
|
97
|
+
};
|
|
98
|
+
contactPoint?: {
|
|
99
|
+
telephone: string;
|
|
100
|
+
contactType: string;
|
|
101
|
+
};
|
|
102
|
+
}) => StructuredData;
|
|
103
|
+
declare const createWebSiteSchema: (data: {
|
|
104
|
+
name: string;
|
|
105
|
+
url: string;
|
|
106
|
+
description?: string;
|
|
107
|
+
publisher?: string;
|
|
108
|
+
}) => StructuredData;
|
|
109
|
+
declare const createArticleSchema: (data: {
|
|
110
|
+
headline: string;
|
|
111
|
+
description: string;
|
|
112
|
+
image?: string;
|
|
113
|
+
author: string;
|
|
114
|
+
publisher: string;
|
|
115
|
+
datePublished: string;
|
|
116
|
+
dateModified?: string;
|
|
117
|
+
url: string;
|
|
118
|
+
}) => StructuredData;
|
|
119
|
+
declare const createServiceSchema: (data: {
|
|
120
|
+
name: string;
|
|
121
|
+
description: string;
|
|
122
|
+
provider: string;
|
|
123
|
+
url: string;
|
|
124
|
+
areaServed?: string;
|
|
125
|
+
serviceType?: string;
|
|
126
|
+
}) => StructuredData;
|
|
127
|
+
declare const createBreadcrumbSchema: (breadcrumbs: Array<{
|
|
128
|
+
name: string;
|
|
129
|
+
url: string;
|
|
130
|
+
}>) => StructuredData;
|
|
131
|
+
declare const createFAQSchema: (faqs: Array<{
|
|
132
|
+
question: string;
|
|
133
|
+
answer: string;
|
|
134
|
+
}>) => StructuredData;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Cloudflare Images URL helpers
|
|
138
|
+
*
|
|
139
|
+
* Many endpoints (e.g., cloudflare_image_standardized) return the base URL
|
|
140
|
+
* without a variant/transform segment. Append a variant at render-time to
|
|
141
|
+
* control size and improve LCP/SEO.
|
|
142
|
+
*/
|
|
143
|
+
/** Default max width for OG/Twitter share images (~1200px guidelines). */
|
|
144
|
+
declare const DEFAULT_OG_IMAGE_MAX_WIDTH = 1200;
|
|
145
|
+
interface CloudflareVariantOptions {
|
|
146
|
+
width: number;
|
|
147
|
+
height?: number;
|
|
148
|
+
}
|
|
149
|
+
declare const isCloudflareImageUrl: (url: string | undefined | null) => boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Append Cloudflare Images variant to the base URL if not already present.
|
|
152
|
+
* Example output: https://imagedelivery.net/<account>/<id>/w=1024,h=600
|
|
153
|
+
*/
|
|
154
|
+
declare const getCloudflareVariantUrl: (url: string, options: CloudflareVariantOptions) => string;
|
|
155
|
+
/**
|
|
156
|
+
* Build a simple srcset for responsive images from a base Cloudflare URL.
|
|
157
|
+
*/
|
|
158
|
+
declare const buildCloudflareSrcSet: (url: string, widths: number[], fixedHeight?: number) => string | undefined;
|
|
159
|
+
/**
|
|
160
|
+
* Bound social / meta image URLs to a reasonable width (PageSpeed, crawler fetches).
|
|
161
|
+
* Uses Cloudflare Images variants when applicable; otherwise returns the URL unchanged.
|
|
162
|
+
*/
|
|
163
|
+
declare function boundedShareImageUrl(url: string | undefined | null, maxWidth?: number): string;
|
|
164
|
+
|
|
165
|
+
export { DEFAULT_OG_IMAGE_MAX_WIDTH, DigiValtSeoHead, JsonLd, boundedShareImageUrl, buildCloudflareSrcSet, buildEventJsonLd, createArticleSchema, createBreadcrumbSchema, createFAQSchema, createOrganizationSchema, createServiceSchema, createWebSiteSchema, getCloudflareVariantUrl, getSeoDefaultsFromEnv, isCloudflareImageUrl, recommendedPreconnectHosts };
|
|
166
|
+
export type { BuildEventJsonLdOptions, DigiValtSeoHeadProps, JsonLdProps, PreconnectLink, SeoDefaults, StructuredData };
|