@masters-ws/react-seo 1.1.0 → 1.2.1

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/dist/index.js CHANGED
@@ -38,14 +38,19 @@ __export(index_exports, {
38
38
  SeoTag: () => SeoTag,
39
39
  SeoVideo: () => SeoVideo,
40
40
  generateArticleSchema: () => generateArticleSchema,
41
+ generateBookSchema: () => generateBookSchema,
41
42
  generateBreadcrumbSchema: () => generateBreadcrumbSchema,
42
43
  generateEventSchema: () => generateEventSchema,
43
44
  generateFAQSchema: () => generateFAQSchema,
44
45
  generateLocalBusinessSchema: () => generateLocalBusinessSchema,
46
+ generateMovieSchema: () => generateMovieSchema,
45
47
  generateOrganizationSchema: () => generateOrganizationSchema,
46
48
  generatePaginatedTitle: () => generatePaginatedTitle,
47
49
  generatePaginationLinks: () => generatePaginationLinks,
50
+ generatePodcastEpisodeSchema: () => generatePodcastEpisodeSchema,
51
+ generatePodcastSchema: () => generatePodcastSchema,
48
52
  generateProductSchema: () => generateProductSchema,
53
+ generateSoftwareSchema: () => generateSoftwareSchema,
49
54
  generateVideoSchema: () => generateVideoSchema,
50
55
  generateWebSiteSchema: () => generateWebSiteSchema,
51
56
  toNextMetadata: () => toNextMetadata,
@@ -210,6 +215,115 @@ function generateLocalBusinessSchema(data) {
210
215
  "priceRange": data.priceRange
211
216
  };
212
217
  }
218
+ function generateSoftwareSchema(data) {
219
+ return {
220
+ "@context": "https://schema.org",
221
+ "@type": "SoftwareApplication",
222
+ "name": data.name,
223
+ "description": data.description,
224
+ "operatingSystem": data.operatingSystem,
225
+ "applicationCategory": data.applicationCategory,
226
+ "offers": data.offers ? {
227
+ "@type": "Offer",
228
+ "price": data.offers.price,
229
+ "priceCurrency": data.offers.currency
230
+ } : void 0,
231
+ "aggregateRating": data.rating ? {
232
+ "@type": "AggregateRating",
233
+ "ratingValue": data.rating,
234
+ "reviewCount": data.reviewCount || 1
235
+ } : void 0,
236
+ "downloadUrl": data.downloadUrl,
237
+ "screenshot": data.screenshot
238
+ };
239
+ }
240
+ function generateBookSchema(data) {
241
+ return {
242
+ "@context": "https://schema.org",
243
+ "@type": "Book",
244
+ "name": data.name,
245
+ "author": typeof data.author === "string" ? {
246
+ "@type": "Person",
247
+ "name": data.author
248
+ } : {
249
+ "@type": "Person",
250
+ "name": data.author.name,
251
+ "url": data.author.url
252
+ },
253
+ "description": data.description,
254
+ "isbn": data.isbn,
255
+ "numberOfPages": data.numberOfPages,
256
+ "publisher": data.publisher ? {
257
+ "@type": "Organization",
258
+ "name": data.publisher
259
+ } : void 0,
260
+ "datePublished": data.datePublished,
261
+ "image": data.image,
262
+ "inLanguage": data.inLanguage,
263
+ "genre": data.genre
264
+ };
265
+ }
266
+ function generateMovieSchema(data) {
267
+ return {
268
+ "@context": "https://schema.org",
269
+ "@type": "Movie",
270
+ "name": data.name,
271
+ "description": data.description,
272
+ "image": data.image,
273
+ "director": data.director ? {
274
+ "@type": "Person",
275
+ "name": data.director
276
+ } : void 0,
277
+ "actor": data.actor?.map((name) => ({
278
+ "@type": "Person",
279
+ "name": name
280
+ })),
281
+ "dateCreated": data.dateCreated,
282
+ "duration": data.duration,
283
+ "genre": data.genre,
284
+ "aggregateRating": data.rating ? {
285
+ "@type": "AggregateRating",
286
+ "ratingValue": data.rating,
287
+ "reviewCount": data.reviewCount || 1
288
+ } : void 0
289
+ };
290
+ }
291
+ function generatePodcastSchema(data) {
292
+ return {
293
+ "@context": "https://schema.org",
294
+ "@type": "PodcastSeries",
295
+ "name": data.name,
296
+ "description": data.description,
297
+ "image": data.image,
298
+ "author": data.author ? {
299
+ "@type": "Person",
300
+ "name": data.author
301
+ } : void 0,
302
+ "webFeed": data.webFeed,
303
+ "url": data.url,
304
+ "genre": data.genre
305
+ };
306
+ }
307
+ function generatePodcastEpisodeSchema(data) {
308
+ return {
309
+ "@context": "https://schema.org",
310
+ "@type": "PodcastEpisode",
311
+ "name": data.name,
312
+ "description": data.description,
313
+ "datePublished": data.datePublished,
314
+ "timeRequired": data.duration,
315
+ "url": data.url,
316
+ "associatedMedia": data.audio ? {
317
+ "@type": "AudioObject",
318
+ "contentUrl": data.audio
319
+ } : void 0,
320
+ "partOfSeries": data.partOfSeries ? {
321
+ "@type": "PodcastSeries",
322
+ "name": data.partOfSeries.name,
323
+ "url": data.partOfSeries.url
324
+ } : void 0
325
+ };
326
+ }
213
327
 
214
328
  // src/core/metadata.ts
215
329
  function toNextMetadata(props, config) {
@@ -230,7 +344,12 @@ function toNextMetadata(props, config) {
230
344
  description: props.ogDescription || description,
231
345
  url,
232
346
  siteName: config.name,
233
- images: props.ogImage || image ? [{ url: props.ogImage || image }] : [],
347
+ images: props.ogImage || image ? [{
348
+ url: props.ogImage || image,
349
+ width: props.ogImageWidth || 1200,
350
+ height: props.ogImageHeight || 630,
351
+ alt: props.ogImageAlt || title
352
+ }] : [],
234
353
  type: props.ogType || (props.type === "article" ? "article" : "website"),
235
354
  locale: props.ogLocale || config.language || "ar_SA"
236
355
  },
@@ -238,7 +357,10 @@ function toNextMetadata(props, config) {
238
357
  card: props.twitterCard || "summary_large_image",
239
358
  title: props.twitterTitle || title,
240
359
  description: props.twitterDescription || description,
241
- images: props.twitterImage || image ? [props.twitterImage || image] : [],
360
+ images: props.twitterImage || image ? [{
361
+ url: props.twitterImage || image,
362
+ alt: props.twitterImageAlt || title
363
+ }] : [],
242
364
  site: config.twitterHandle,
243
365
  creator: config.twitterHandle
244
366
  },
@@ -872,14 +994,19 @@ var SeoJobPosting = ({ job }) => {
872
994
  SeoTag,
873
995
  SeoVideo,
874
996
  generateArticleSchema,
997
+ generateBookSchema,
875
998
  generateBreadcrumbSchema,
876
999
  generateEventSchema,
877
1000
  generateFAQSchema,
878
1001
  generateLocalBusinessSchema,
1002
+ generateMovieSchema,
879
1003
  generateOrganizationSchema,
880
1004
  generatePaginatedTitle,
881
1005
  generatePaginationLinks,
1006
+ generatePodcastEpisodeSchema,
1007
+ generatePodcastSchema,
882
1008
  generateProductSchema,
1009
+ generateSoftwareSchema,
883
1010
  generateVideoSchema,
884
1011
  generateWebSiteSchema,
885
1012
  toNextMetadata,
package/dist/index.mjs CHANGED
@@ -1,17 +1,22 @@
1
1
  import {
2
2
  generateArticleSchema,
3
+ generateBookSchema,
3
4
  generateBreadcrumbSchema,
4
5
  generateEventSchema,
5
6
  generateFAQSchema,
6
7
  generateLocalBusinessSchema,
8
+ generateMovieSchema,
7
9
  generateOrganizationSchema,
8
10
  generatePaginatedTitle,
9
11
  generatePaginationLinks,
12
+ generatePodcastEpisodeSchema,
13
+ generatePodcastSchema,
10
14
  generateProductSchema,
15
+ generateSoftwareSchema,
11
16
  generateVideoSchema,
12
17
  generateWebSiteSchema,
13
18
  toNextMetadata
14
- } from "./chunk-AAN7NRZE.mjs";
19
+ } from "./chunk-QD5UVA5B.mjs";
15
20
 
16
21
  // src/components/SEOProvider.tsx
17
22
  import { createContext, useContext } from "react";
@@ -610,14 +615,19 @@ export {
610
615
  SeoTag,
611
616
  SeoVideo,
612
617
  generateArticleSchema,
618
+ generateBookSchema,
613
619
  generateBreadcrumbSchema,
614
620
  generateEventSchema,
615
621
  generateFAQSchema,
616
622
  generateLocalBusinessSchema,
623
+ generateMovieSchema,
617
624
  generateOrganizationSchema,
618
625
  generatePaginatedTitle,
619
626
  generatePaginationLinks,
627
+ generatePodcastEpisodeSchema,
628
+ generatePodcastSchema,
620
629
  generateProductSchema,
630
+ generateSoftwareSchema,
621
631
  generateVideoSchema,
622
632
  generateWebSiteSchema,
623
633
  toNextMetadata,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masters-ws/react-seo",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "Professional high-performance SEO package for React/Next.js. Zero-dependency core for Next.js App Router, optional Helmet components for React.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",