@opinly/next 0.1.25 → 1.0.0-alpha.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/dist/config.cjs +16 -7
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +7 -2
- package/dist/config.d.ts +7 -2
- package/dist/config.js +16 -7
- package/dist/config.js.map +1 -1
- package/dist/index.cjs +33 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -6
- package/dist/index.d.ts +12 -6
- package/dist/index.js +26 -1
- package/dist/index.js.map +1 -1
- package/dist/json-ld.cjs +61 -0
- package/dist/json-ld.cjs.map +1 -0
- package/dist/json-ld.d.cts +17 -0
- package/dist/json-ld.d.ts +17 -0
- package/dist/json-ld.js +38 -0
- package/dist/json-ld.js.map +1 -0
- package/dist/utils/generate-metadata.cjs +23 -32
- package/dist/utils/generate-metadata.cjs.map +1 -1
- package/dist/utils/generate-metadata.d.cts +11 -2
- package/dist/utils/generate-metadata.d.ts +11 -2
- package/dist/utils/generate-metadata.js +23 -32
- package/dist/utils/generate-metadata.js.map +1 -1
- package/dist/utils/generate-sitemap-xml.cjs.map +1 -1
- package/dist/utils/generate-sitemap-xml.d.cts +5 -3
- package/dist/utils/generate-sitemap-xml.d.ts +5 -3
- package/dist/utils/generate-sitemap-xml.js.map +1 -1
- package/dist/utils/sdk-config.cjs +6 -2
- package/dist/utils/sdk-config.cjs.map +1 -1
- package/dist/utils/sdk-config.d.cts +4 -0
- package/dist/utils/sdk-config.d.ts +4 -0
- package/dist/utils/sdk-config.js +6 -2
- package/dist/utils/sdk-config.js.map +1 -1
- package/package.json +9 -23
- package/dist/components/author-page/_helpers/json-ld.cjs +0 -44
- package/dist/components/author-page/_helpers/json-ld.cjs.map +0 -1
- package/dist/components/author-page/_helpers/json-ld.d.cts +0 -8
- package/dist/components/author-page/_helpers/json-ld.d.ts +0 -8
- package/dist/components/author-page/_helpers/json-ld.js +0 -20
- package/dist/components/author-page/_helpers/json-ld.js.map +0 -1
- package/dist/components/author-page/index.cjs +0 -104
- package/dist/components/author-page/index.cjs.map +0 -1
- package/dist/components/author-page/index.d.cts +0 -10
- package/dist/components/author-page/index.d.ts +0 -10
- package/dist/components/author-page/index.js +0 -70
- package/dist/components/author-page/index.js.map +0 -1
- package/dist/components/authors-page/_helpers/json-ld.cjs +0 -53
- package/dist/components/authors-page/_helpers/json-ld.cjs.map +0 -1
- package/dist/components/authors-page/_helpers/json-ld.d.cts +0 -8
- package/dist/components/authors-page/_helpers/json-ld.d.ts +0 -8
- package/dist/components/authors-page/_helpers/json-ld.js +0 -29
- package/dist/components/authors-page/_helpers/json-ld.js.map +0 -1
- package/dist/components/authors-page/index.cjs +0 -121
- package/dist/components/authors-page/index.cjs.map +0 -1
- package/dist/components/authors-page/index.d.cts +0 -10
- package/dist/components/authors-page/index.d.ts +0 -10
- package/dist/components/authors-page/index.js +0 -87
- package/dist/components/authors-page/index.js.map +0 -1
- package/dist/components/blog-post/_components/content.cjs +0 -157
- package/dist/components/blog-post/_components/content.cjs.map +0 -1
- package/dist/components/blog-post/_components/content.d.cts +0 -10
- package/dist/components/blog-post/_components/content.d.ts +0 -10
- package/dist/components/blog-post/_components/content.js +0 -123
- package/dist/components/blog-post/_components/content.js.map +0 -1
- package/dist/components/blog-post/_components/faq.cjs +0 -39
- package/dist/components/blog-post/_components/faq.cjs.map +0 -1
- package/dist/components/blog-post/_components/faq.d.cts +0 -9
- package/dist/components/blog-post/_components/faq.d.ts +0 -9
- package/dist/components/blog-post/_components/faq.js +0 -15
- package/dist/components/blog-post/_components/faq.js.map +0 -1
- package/dist/components/blog-post/_components/share.cjs +0 -100
- package/dist/components/blog-post/_components/share.cjs.map +0 -1
- package/dist/components/blog-post/_components/share.d.cts +0 -9
- package/dist/components/blog-post/_components/share.d.ts +0 -9
- package/dist/components/blog-post/_components/share.js +0 -66
- package/dist/components/blog-post/_components/share.js.map +0 -1
- package/dist/components/blog-post/_components/table-of-contents.cjs +0 -111
- package/dist/components/blog-post/_components/table-of-contents.cjs.map +0 -1
- package/dist/components/blog-post/_components/table-of-contents.d.cts +0 -14
- package/dist/components/blog-post/_components/table-of-contents.d.ts +0 -14
- package/dist/components/blog-post/_components/table-of-contents.js +0 -77
- package/dist/components/blog-post/_components/table-of-contents.js.map +0 -1
- package/dist/components/blog-post/_helpers/calc-reading-time.cjs +0 -2
- package/dist/components/blog-post/_helpers/calc-reading-time.cjs.map +0 -1
- package/dist/components/blog-post/_helpers/calc-reading-time.d.cts +0 -2
- package/dist/components/blog-post/_helpers/calc-reading-time.d.ts +0 -2
- package/dist/components/blog-post/_helpers/calc-reading-time.js +0 -1
- package/dist/components/blog-post/_helpers/calc-reading-time.js.map +0 -1
- package/dist/components/blog-post/_helpers/extract-headings.cjs +0 -45
- package/dist/components/blog-post/_helpers/extract-headings.cjs.map +0 -1
- package/dist/components/blog-post/_helpers/extract-headings.d.cts +0 -9
- package/dist/components/blog-post/_helpers/extract-headings.d.ts +0 -9
- package/dist/components/blog-post/_helpers/extract-headings.js +0 -21
- package/dist/components/blog-post/_helpers/extract-headings.js.map +0 -1
- package/dist/components/blog-post/_helpers/json-ld.cjs +0 -162
- package/dist/components/blog-post/_helpers/json-ld.cjs.map +0 -1
- package/dist/components/blog-post/_helpers/json-ld.d.cts +0 -15
- package/dist/components/blog-post/_helpers/json-ld.d.ts +0 -15
- package/dist/components/blog-post/_helpers/json-ld.js +0 -135
- package/dist/components/blog-post/_helpers/json-ld.js.map +0 -1
- package/dist/components/blog-post/_helpers/reading-time.cjs +0 -50
- package/dist/components/blog-post/_helpers/reading-time.cjs.map +0 -1
- package/dist/components/blog-post/_helpers/reading-time.d.cts +0 -6
- package/dist/components/blog-post/_helpers/reading-time.d.ts +0 -6
- package/dist/components/blog-post/_helpers/reading-time.js +0 -25
- package/dist/components/blog-post/_helpers/reading-time.js.map +0 -1
- package/dist/components/blog-post/_types/blog-post.cjs +0 -17
- package/dist/components/blog-post/_types/blog-post.cjs.map +0 -1
- package/dist/components/blog-post/_types/blog-post.d.cts +0 -7
- package/dist/components/blog-post/_types/blog-post.d.ts +0 -7
- package/dist/components/blog-post/_types/blog-post.js +0 -1
- package/dist/components/blog-post/_types/blog-post.js.map +0 -1
- package/dist/components/blog-post/_types/class-names.cjs +0 -17
- package/dist/components/blog-post/_types/class-names.cjs.map +0 -1
- package/dist/components/blog-post/_types/class-names.d.cts +0 -12
- package/dist/components/blog-post/_types/class-names.d.ts +0 -12
- package/dist/components/blog-post/_types/class-names.js +0 -1
- package/dist/components/blog-post/_types/class-names.js.map +0 -1
- package/dist/components/blog-post/index.cjs +0 -134
- package/dist/components/blog-post/index.cjs.map +0 -1
- package/dist/components/blog-post/index.d.cts +0 -15
- package/dist/components/blog-post/index.d.ts +0 -15
- package/dist/components/blog-post/index.js +0 -100
- package/dist/components/blog-post/index.js.map +0 -1
- package/dist/components/bread-crumbs.cjs +0 -60
- package/dist/components/bread-crumbs.cjs.map +0 -1
- package/dist/components/bread-crumbs.d.cts +0 -10
- package/dist/components/bread-crumbs.d.ts +0 -10
- package/dist/components/bread-crumbs.js +0 -26
- package/dist/components/bread-crumbs.js.map +0 -1
- package/dist/components/folder-page/_helpers/json-ld.cjs +0 -43
- package/dist/components/folder-page/_helpers/json-ld.cjs.map +0 -1
- package/dist/components/folder-page/_helpers/json-ld.d.cts +0 -8
- package/dist/components/folder-page/_helpers/json-ld.d.ts +0 -8
- package/dist/components/folder-page/_helpers/json-ld.js +0 -19
- package/dist/components/folder-page/_helpers/json-ld.js.map +0 -1
- package/dist/components/folder-page/index.cjs +0 -84
- package/dist/components/folder-page/index.cjs.map +0 -1
- package/dist/components/folder-page/index.d.cts +0 -10
- package/dist/components/folder-page/index.d.ts +0 -10
- package/dist/components/folder-page/index.js +0 -60
- package/dist/components/folder-page/index.js.map +0 -1
- package/dist/components/home-page/_helpers/json-ld.cjs +0 -43
- package/dist/components/home-page/_helpers/json-ld.cjs.map +0 -1
- package/dist/components/home-page/_helpers/json-ld.d.cts +0 -3
- package/dist/components/home-page/_helpers/json-ld.d.ts +0 -3
- package/dist/components/home-page/_helpers/json-ld.js +0 -19
- package/dist/components/home-page/_helpers/json-ld.js.map +0 -1
- package/dist/components/home-page/folders.cjs +0 -108
- package/dist/components/home-page/folders.cjs.map +0 -1
- package/dist/components/home-page/folders.d.cts +0 -11
- package/dist/components/home-page/folders.d.ts +0 -11
- package/dist/components/home-page/folders.js +0 -73
- package/dist/components/home-page/folders.js.map +0 -1
- package/dist/components/home-page/index.cjs +0 -50
- package/dist/components/home-page/index.cjs.map +0 -1
- package/dist/components/home-page/index.d.cts +0 -14
- package/dist/components/home-page/index.d.ts +0 -14
- package/dist/components/home-page/index.js +0 -26
- package/dist/components/home-page/index.js.map +0 -1
- package/dist/components/home-page/pagination.cjs +0 -97
- package/dist/components/home-page/pagination.cjs.map +0 -1
- package/dist/components/home-page/pagination.d.cts +0 -9
- package/dist/components/home-page/pagination.d.ts +0 -9
- package/dist/components/home-page/pagination.js +0 -63
- package/dist/components/home-page/pagination.js.map +0 -1
- package/dist/components/home-page/top-posts.cjs +0 -35
- package/dist/components/home-page/top-posts.cjs.map +0 -1
- package/dist/components/home-page/top-posts.d.cts +0 -10
- package/dist/components/home-page/top-posts.d.ts +0 -10
- package/dist/components/home-page/top-posts.js +0 -11
- package/dist/components/home-page/top-posts.js.map +0 -1
- package/dist/components/json-ld.cjs +0 -92
- package/dist/components/json-ld.cjs.map +0 -1
- package/dist/components/json-ld.d.cts +0 -13
- package/dist/components/json-ld.d.ts +0 -13
- package/dist/components/json-ld.js +0 -57
- package/dist/components/json-ld.js.map +0 -1
- package/dist/components/opinly-blog.cjs +0 -59
- package/dist/components/opinly-blog.cjs.map +0 -1
- package/dist/components/opinly-blog.d.cts +0 -16
- package/dist/components/opinly-blog.d.ts +0 -16
- package/dist/components/opinly-blog.js +0 -35
- package/dist/components/opinly-blog.js.map +0 -1
- package/dist/components/post-preview.cjs +0 -114
- package/dist/components/post-preview.cjs.map +0 -1
- package/dist/components/post-preview.d.cts +0 -10
- package/dist/components/post-preview.d.ts +0 -10
- package/dist/components/post-preview.js +0 -79
- package/dist/components/post-preview.js.map +0 -1
- package/dist/pages/index.cjs +0 -23
- package/dist/pages/index.cjs.map +0 -1
- package/dist/pages/index.d.cts +0 -3
- package/dist/pages/index.d.ts +0 -3
- package/dist/pages/index.js +0 -2
- package/dist/pages/index.js.map +0 -1
- package/dist/pages/opinly-blog-pages.cjs +0 -127
- package/dist/pages/opinly-blog-pages.cjs.map +0 -1
- package/dist/pages/opinly-blog-pages.d.cts +0 -9
- package/dist/pages/opinly-blog-pages.d.ts +0 -9
- package/dist/pages/opinly-blog-pages.js +0 -103
- package/dist/pages/opinly-blog-pages.js.map +0 -1
- package/dist/utils/json-ld.cjs +0 -2
- package/dist/utils/json-ld.cjs.map +0 -1
- package/dist/utils/json-ld.d.cts +0 -2
- package/dist/utils/json-ld.d.ts +0 -2
- package/dist/utils/json-ld.js +0 -1
- package/dist/utils/json-ld.js.map +0 -1
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
const countWords = (content) => {
|
|
2
|
-
if (!content?.content) return 0;
|
|
3
|
-
let wordCount = 0;
|
|
4
|
-
const countWords2 = (nodes) => {
|
|
5
|
-
for (const node of nodes) {
|
|
6
|
-
if (node.type === "text" && node.text) {
|
|
7
|
-
const words = node.text.trim().split(/\s+/).filter(Boolean);
|
|
8
|
-
wordCount += words.length;
|
|
9
|
-
}
|
|
10
|
-
if (node.content) countWords2(node.content);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
countWords2(content.content);
|
|
14
|
-
return wordCount;
|
|
15
|
-
};
|
|
16
|
-
function calculateReadingTime(content) {
|
|
17
|
-
const wordCount = countWords(content);
|
|
18
|
-
const readingTimeMinutes = Math.ceil(wordCount / 200);
|
|
19
|
-
return readingTimeMinutes;
|
|
20
|
-
}
|
|
21
|
-
export {
|
|
22
|
-
calculateReadingTime,
|
|
23
|
-
countWords
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=reading-time.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/blog-post/_helpers/reading-time.ts"],"sourcesContent":["import { JSONContent } from \"@tiptap/core\";\n\nexport const countWords = (content: JSONContent | undefined): number => {\n if (!content?.content) return 0;\n\n let wordCount = 0;\n\n const countWords = (nodes: any[]) => {\n for (const node of nodes) {\n if (node.type === \"text\" && node.text) {\n const words = node.text.trim().split(/\\s+/).filter(Boolean);\n wordCount += words.length;\n }\n if (node.content) countWords(node.content);\n }\n };\n\n countWords(content.content);\n\n return wordCount;\n};\n\nexport function calculateReadingTime(content: JSONContent): number {\n const wordCount = countWords(content);\n\n const readingTimeMinutes = Math.ceil(wordCount / 200);\n return readingTimeMinutes;\n}\n"],"mappings":"AAEO,MAAM,aAAa,CAAC,YAA6C;AACtE,MAAI,CAAC,SAAS,QAAS,QAAO;AAE9B,MAAI,YAAY;AAEhB,QAAMA,cAAa,CAAC,UAAiB;AACnC,eAAW,QAAQ,OAAO;AACxB,UAAI,KAAK,SAAS,UAAU,KAAK,MAAM;AACrC,cAAM,QAAQ,KAAK,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO;AAC1D,qBAAa,MAAM;AAAA,MACrB;AACA,UAAI,KAAK,QAAS,CAAAA,YAAW,KAAK,OAAO;AAAA,IAC3C;AAAA,EACF;AAEA,EAAAA,YAAW,QAAQ,OAAO;AAE1B,SAAO;AACT;AAEO,SAAS,qBAAqB,SAA8B;AACjE,QAAM,YAAY,WAAW,OAAO;AAEpC,QAAM,qBAAqB,KAAK,KAAK,YAAY,GAAG;AACpD,SAAO;AACT;","names":["countWords"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
var blog_post_exports = {};
|
|
16
|
-
module.exports = __toCommonJS(blog_post_exports);
|
|
17
|
-
//# sourceMappingURL=blog-post.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/blog-post/_types/blog-post.ts"],"sourcesContent":["import type { Opinly } from \"@opinly/backend\";\n\nexport type BlogPostRes = Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"post\" }\n>[\"data\"];\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=blog-post.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
var class_names_exports = {};
|
|
16
|
-
module.exports = __toCommonJS(class_names_exports);
|
|
17
|
-
//# sourceMappingURL=class-names.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/blog-post/_types/class-names.ts"],"sourcesContent":["export type BlogComponentClassNames = {\n paragraph?: string;\n heading?: string;\n image?: string;\n bulletList?: string;\n orderedList?: string;\n listItem?: string;\n link?: string;\n container?: string;\n};\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=class-names.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var blog_post_exports = {};
|
|
30
|
-
__export(blog_post_exports, {
|
|
31
|
-
BlogPost: () => BlogPost
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(blog_post_exports);
|
|
34
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
|
-
var import_link = __toESM(require("next/link"), 1);
|
|
36
|
-
var import_merge = require("../../utils/merge");
|
|
37
|
-
var import_sdk_config = require("../../utils/sdk-config");
|
|
38
|
-
var import_json_ld = require("./_helpers/json-ld");
|
|
39
|
-
var import_faq = require("./_components/faq");
|
|
40
|
-
var import_reading_time = require("./_helpers/reading-time");
|
|
41
|
-
var import_content = require("./_components/content");
|
|
42
|
-
var import_table_of_contents = require("./_components/table-of-contents");
|
|
43
|
-
var import_bread_crumbs = require("../bread-crumbs");
|
|
44
|
-
var import_dates = require("../../utils/dates");
|
|
45
|
-
var import_json_ld2 = require("../json-ld");
|
|
46
|
-
const BlogPost = ({
|
|
47
|
-
post,
|
|
48
|
-
classNames = {},
|
|
49
|
-
cta
|
|
50
|
-
}) => {
|
|
51
|
-
const content = post.content;
|
|
52
|
-
const breadcrumbItems = [];
|
|
53
|
-
if (post.folder) {
|
|
54
|
-
breadcrumbItems.push({
|
|
55
|
-
slugNoPrefixSlash: post.folder.slug,
|
|
56
|
-
name: post.folder.name
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
breadcrumbItems.push({
|
|
60
|
-
slugNoPrefixSlash: post.slug,
|
|
61
|
-
name: post.title
|
|
62
|
-
});
|
|
63
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
64
|
-
post.faqs && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_json_ld2.OpinlyJSONLD, { content: JSON.stringify((0, import_json_ld.genFaqJSONLD)(post.faqs)) }),
|
|
65
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_json_ld2.OpinlyJSONLD, { content: JSON.stringify((0, import_json_ld.genBlogPostingJSONLD)(post)) }),
|
|
66
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_json_ld2.OpinlyBreadCrumbJsonLd, { items: breadcrumbItems }),
|
|
67
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "max-w-7xl mx-auto px-4 py-24 flex items-start space-x-8", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-12 w-full", children: [
|
|
68
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
69
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
70
|
-
import_bread_crumbs.BreadCrumbs,
|
|
71
|
-
{
|
|
72
|
-
breadcrumbs: [
|
|
73
|
-
post.folder && {
|
|
74
|
-
url: `${import_sdk_config.opinlyConfig.blogPrefix}/${post.folder.slug}`,
|
|
75
|
-
name: post.folder.name
|
|
76
|
-
}
|
|
77
|
-
]
|
|
78
|
-
}
|
|
79
|
-
),
|
|
80
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "text-op-heading text-4xl font-bold mb-2 leading-tight", children: post.title }),
|
|
81
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-sm mb-4 text-op-muted space-x-1", children: [
|
|
82
|
-
post.author && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
83
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
84
|
-
import_link.default,
|
|
85
|
-
{
|
|
86
|
-
href: `${import_sdk_config.opinlyConfig.blogPrefix}/authors/${post.author?.slug}`,
|
|
87
|
-
className: "font-medium",
|
|
88
|
-
children: post.author?.name
|
|
89
|
-
}
|
|
90
|
-
),
|
|
91
|
-
" ",
|
|
92
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-op-muted", children: "\xB7" })
|
|
93
|
-
] }),
|
|
94
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
95
|
-
(0, import_reading_time.calculateReadingTime)(content),
|
|
96
|
-
" min read ",
|
|
97
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "\xB7" })
|
|
98
|
-
] }),
|
|
99
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: (0, import_dates.formatDate)(post.firstPublishedAt) || "Today" })
|
|
100
|
-
] })
|
|
101
|
-
] }),
|
|
102
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
103
|
-
"div",
|
|
104
|
-
{
|
|
105
|
-
className: (0, import_merge.cn)(
|
|
106
|
-
"flex md:space-x-12 flex-col mx-auto w-full",
|
|
107
|
-
"md:flex-row-reverse",
|
|
108
|
-
classNames.container
|
|
109
|
-
),
|
|
110
|
-
children: [
|
|
111
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("article", { className: "w-full md:w-3/4 order-2 md:order-1 flex items-start", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "prose w-full ", children: [
|
|
112
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_content.Content, { content, classNames }),
|
|
113
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_faq.FAQS, { faqs: post.faqs })
|
|
114
|
-
] }) }),
|
|
115
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex md:w-1/4 md:sticky md:top-20", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
116
|
-
import_table_of_contents.TableOfContents,
|
|
117
|
-
{
|
|
118
|
-
content,
|
|
119
|
-
author: post.author,
|
|
120
|
-
post,
|
|
121
|
-
cta
|
|
122
|
-
}
|
|
123
|
-
) })
|
|
124
|
-
]
|
|
125
|
-
}
|
|
126
|
-
)
|
|
127
|
-
] }) })
|
|
128
|
-
] });
|
|
129
|
-
};
|
|
130
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
131
|
-
0 && (module.exports = {
|
|
132
|
-
BlogPost
|
|
133
|
-
});
|
|
134
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/blog-post/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { JSONContent } from \"@tiptap/core\";\nimport Link from \"next/link\";\nimport { cn } from \"../../utils/merge\";\nimport { opinlyConfig } from \"../../utils/sdk-config\";\nimport { BlogPostRes } from \"./_types/blog-post\";\nimport { genBlogPostingJSONLD, genFaqJSONLD } from \"./_helpers/json-ld\";\nimport { BlogComponentClassNames } from \"./_types/class-names\";\nimport { FAQS } from \"./_components/faq\";\nimport { calculateReadingTime } from \"./_helpers/reading-time\";\nimport { Content } from \"./_components/content\";\nimport { TableOfContents } from \"./_components/table-of-contents\";\nimport { BreadCrumbs } from \"../bread-crumbs\";\nimport { formatDate } from \"../../utils/dates\";\nimport Script from \"next/script\";\nimport { OpinlyBreadCrumbJsonLd, OpinlyJSONLD } from \"../json-ld\";\n\nexport type BlogPostProps = {\n cta?: React.ReactNode;\n};\n\nexport const BlogPost = ({\n post,\n classNames = {},\n cta,\n}: {\n post: BlogPostRes;\n classNames?: BlogComponentClassNames;\n} & BlogPostProps) => {\n const content = post.content as JSONContent;\n\n const breadcrumbItems = [];\n\n if (post.folder) {\n breadcrumbItems.push({\n slugNoPrefixSlash: post.folder.slug,\n name: post.folder.name,\n });\n }\n\n breadcrumbItems.push({\n slugNoPrefixSlash: post.slug,\n name: post.title,\n });\n\n return (\n <>\n {post.faqs && (\n <OpinlyJSONLD content={JSON.stringify(genFaqJSONLD(post.faqs))} />\n )}\n <OpinlyJSONLD content={JSON.stringify(genBlogPostingJSONLD(post))} />\n <OpinlyBreadCrumbJsonLd items={breadcrumbItems} />\n <div className=\"max-w-7xl mx-auto px-4 py-24 flex items-start space-x-8\">\n <div className=\"flex flex-col gap-12 w-full\">\n <div>\n <BreadCrumbs\n breadcrumbs={[\n post.folder && {\n url: `${opinlyConfig.blogPrefix}/${post.folder.slug}`,\n name: post.folder.name,\n },\n ]}\n />\n\n <h1 className=\"text-op-heading text-4xl font-bold mb-2 leading-tight\">\n {post.title}\n </h1>\n <div className=\"text-sm mb-4 text-op-muted space-x-1\">\n {post.author && (\n <>\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`}\n className=\"font-medium\"\n >\n {post.author?.name}\n </Link>{\" \"}\n <span className=\"text-op-muted\">·</span>\n </>\n )}\n <span>\n {calculateReadingTime(content)} min read <span>·</span>\n </span>\n <span>\n {formatDate(post.firstPublishedAt as string) || \"Today\"}\n </span>\n </div>\n </div>\n\n <div\n className={cn(\n \"flex md:space-x-12 flex-col mx-auto w-full\",\n \"md:flex-row-reverse\",\n classNames.container\n )}\n >\n <article className=\"w-full md:w-3/4 order-2 md:order-1 flex items-start\">\n <div className=\"prose w-full \">\n <Content content={content} classNames={classNames} />\n <FAQS faqs={post.faqs} />\n </div>\n </article>\n <div className=\"flex md:w-1/4 md:sticky md:top-20\">\n <TableOfContents\n content={content}\n author={post.author}\n post={post}\n cta={cta}\n />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDQ;AA9CR,kBAAiB;AACjB,mBAAmB;AACnB,wBAA6B;AAE7B,qBAAmD;AAEnD,iBAAqB;AACrB,0BAAqC;AACrC,qBAAwB;AACxB,+BAAgC;AAChC,0BAA4B;AAC5B,mBAA2B;AAE3B,IAAAA,kBAAqD;AAM9C,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA,aAAa,CAAC;AAAA,EACd;AACF,MAGsB;AACpB,QAAM,UAAU,KAAK;AAErB,QAAM,kBAAkB,CAAC;AAEzB,MAAI,KAAK,QAAQ;AACf,oBAAgB,KAAK;AAAA,MACnB,mBAAmB,KAAK,OAAO;AAAA,MAC/B,MAAM,KAAK,OAAO;AAAA,IACpB,CAAC;AAAA,EACH;AAEA,kBAAgB,KAAK;AAAA,IACnB,mBAAmB,KAAK;AAAA,IACxB,MAAM,KAAK;AAAA,EACb,CAAC;AAED,SACE,4EACG;AAAA,SAAK,QACJ,4CAAC,gCAAa,SAAS,KAAK,cAAU,6BAAa,KAAK,IAAI,CAAC,GAAG;AAAA,IAElE,4CAAC,gCAAa,SAAS,KAAK,cAAU,qCAAqB,IAAI,CAAC,GAAG;AAAA,IACnE,4CAAC,0CAAuB,OAAO,iBAAiB;AAAA,IAChD,4CAAC,SAAI,WAAU,2DACb,uDAAC,SAAI,WAAU,+BACb;AAAA,mDAAC,SACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,cACX,KAAK,UAAU;AAAA,gBACb,KAAK,GAAG,+BAAa,UAAU,IAAI,KAAK,OAAO,IAAI;AAAA,gBACnD,MAAM,KAAK,OAAO;AAAA,cACpB;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QAEA,4CAAC,QAAG,WAAU,yDACX,eAAK,OACR;AAAA,QACA,6CAAC,SAAI,WAAU,wCACZ;AAAA,eAAK,UACJ,4EACE;AAAA;AAAA,cAAC,YAAAC;AAAA,cAAA;AAAA,gBACC,MAAM,GAAG,+BAAa,UAAU,YAAY,KAAK,QAAQ,IAAI;AAAA,gBAC7D,WAAU;AAAA,gBAET,eAAK,QAAQ;AAAA;AAAA,YAChB;AAAA,YAAQ;AAAA,YACR,4CAAC,UAAK,WAAU,iBAAgB,kBAAC;AAAA,aACnC;AAAA,UAEF,6CAAC,UACE;AAAA,0DAAqB,OAAO;AAAA,YAAE;AAAA,YAAU,4CAAC,UAAK,kBAAC;AAAA,aAClD;AAAA,UACA,4CAAC,UACE,uCAAW,KAAK,gBAA0B,KAAK,SAClD;AAAA,WACF;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA,WAAW;AAAA,UACb;AAAA,UAEA;AAAA,wDAAC,aAAQ,WAAU,uDACjB,uDAAC,SAAI,WAAU,iBACb;AAAA,0DAAC,0BAAQ,SAAkB,YAAwB;AAAA,cACnD,4CAAC,mBAAK,MAAM,KAAK,MAAM;AAAA,eACzB,GACF;AAAA,YACA,4CAAC,SAAI,WAAU,qCACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,QAAQ,KAAK;AAAA,gBACb;AAAA,gBACA;AAAA;AAAA,YACF,GACF;AAAA;AAAA;AAAA,MACF;AAAA,OACF,GACF;AAAA,KACF;AAEJ;","names":["import_json_ld","Link"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { BlogPostRes } from './_types/blog-post.cjs';
|
|
4
|
-
import { BlogComponentClassNames } from './_types/class-names.cjs';
|
|
5
|
-
import '@opinly/backend';
|
|
6
|
-
|
|
7
|
-
type BlogPostProps = {
|
|
8
|
-
cta?: React.ReactNode;
|
|
9
|
-
};
|
|
10
|
-
declare const BlogPost: ({ post, classNames, cta, }: {
|
|
11
|
-
post: BlogPostRes;
|
|
12
|
-
classNames?: BlogComponentClassNames;
|
|
13
|
-
} & BlogPostProps) => react_jsx_runtime.JSX.Element;
|
|
14
|
-
|
|
15
|
-
export { BlogPost, type BlogPostProps };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { BlogPostRes } from './_types/blog-post.js';
|
|
4
|
-
import { BlogComponentClassNames } from './_types/class-names.js';
|
|
5
|
-
import '@opinly/backend';
|
|
6
|
-
|
|
7
|
-
type BlogPostProps = {
|
|
8
|
-
cta?: React.ReactNode;
|
|
9
|
-
};
|
|
10
|
-
declare const BlogPost: ({ post, classNames, cta, }: {
|
|
11
|
-
post: BlogPostRes;
|
|
12
|
-
classNames?: BlogComponentClassNames;
|
|
13
|
-
} & BlogPostProps) => react_jsx_runtime.JSX.Element;
|
|
14
|
-
|
|
15
|
-
export { BlogPost, type BlogPostProps };
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Link from "next/link";
|
|
3
|
-
import { cn } from "../../utils/merge";
|
|
4
|
-
import { opinlyConfig } from "../../utils/sdk-config";
|
|
5
|
-
import { genBlogPostingJSONLD, genFaqJSONLD } from "./_helpers/json-ld";
|
|
6
|
-
import { FAQS } from "./_components/faq";
|
|
7
|
-
import { calculateReadingTime } from "./_helpers/reading-time";
|
|
8
|
-
import { Content } from "./_components/content";
|
|
9
|
-
import { TableOfContents } from "./_components/table-of-contents";
|
|
10
|
-
import { BreadCrumbs } from "../bread-crumbs";
|
|
11
|
-
import { formatDate } from "../../utils/dates";
|
|
12
|
-
import { OpinlyBreadCrumbJsonLd, OpinlyJSONLD } from "../json-ld";
|
|
13
|
-
const BlogPost = ({
|
|
14
|
-
post,
|
|
15
|
-
classNames = {},
|
|
16
|
-
cta
|
|
17
|
-
}) => {
|
|
18
|
-
const content = post.content;
|
|
19
|
-
const breadcrumbItems = [];
|
|
20
|
-
if (post.folder) {
|
|
21
|
-
breadcrumbItems.push({
|
|
22
|
-
slugNoPrefixSlash: post.folder.slug,
|
|
23
|
-
name: post.folder.name
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
breadcrumbItems.push({
|
|
27
|
-
slugNoPrefixSlash: post.slug,
|
|
28
|
-
name: post.title
|
|
29
|
-
});
|
|
30
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
31
|
-
post.faqs && /* @__PURE__ */ jsx(OpinlyJSONLD, { content: JSON.stringify(genFaqJSONLD(post.faqs)) }),
|
|
32
|
-
/* @__PURE__ */ jsx(OpinlyJSONLD, { content: JSON.stringify(genBlogPostingJSONLD(post)) }),
|
|
33
|
-
/* @__PURE__ */ jsx(OpinlyBreadCrumbJsonLd, { items: breadcrumbItems }),
|
|
34
|
-
/* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto px-4 py-24 flex items-start space-x-8", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-12 w-full", children: [
|
|
35
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
36
|
-
/* @__PURE__ */ jsx(
|
|
37
|
-
BreadCrumbs,
|
|
38
|
-
{
|
|
39
|
-
breadcrumbs: [
|
|
40
|
-
post.folder && {
|
|
41
|
-
url: `${opinlyConfig.blogPrefix}/${post.folder.slug}`,
|
|
42
|
-
name: post.folder.name
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
),
|
|
47
|
-
/* @__PURE__ */ jsx("h1", { className: "text-op-heading text-4xl font-bold mb-2 leading-tight", children: post.title }),
|
|
48
|
-
/* @__PURE__ */ jsxs("div", { className: "text-sm mb-4 text-op-muted space-x-1", children: [
|
|
49
|
-
post.author && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
50
|
-
/* @__PURE__ */ jsx(
|
|
51
|
-
Link,
|
|
52
|
-
{
|
|
53
|
-
href: `${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`,
|
|
54
|
-
className: "font-medium",
|
|
55
|
-
children: post.author?.name
|
|
56
|
-
}
|
|
57
|
-
),
|
|
58
|
-
" ",
|
|
59
|
-
/* @__PURE__ */ jsx("span", { className: "text-op-muted", children: "\xB7" })
|
|
60
|
-
] }),
|
|
61
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
62
|
-
calculateReadingTime(content),
|
|
63
|
-
" min read ",
|
|
64
|
-
/* @__PURE__ */ jsx("span", { children: "\xB7" })
|
|
65
|
-
] }),
|
|
66
|
-
/* @__PURE__ */ jsx("span", { children: formatDate(post.firstPublishedAt) || "Today" })
|
|
67
|
-
] })
|
|
68
|
-
] }),
|
|
69
|
-
/* @__PURE__ */ jsxs(
|
|
70
|
-
"div",
|
|
71
|
-
{
|
|
72
|
-
className: cn(
|
|
73
|
-
"flex md:space-x-12 flex-col mx-auto w-full",
|
|
74
|
-
"md:flex-row-reverse",
|
|
75
|
-
classNames.container
|
|
76
|
-
),
|
|
77
|
-
children: [
|
|
78
|
-
/* @__PURE__ */ jsx("article", { className: "w-full md:w-3/4 order-2 md:order-1 flex items-start", children: /* @__PURE__ */ jsxs("div", { className: "prose w-full ", children: [
|
|
79
|
-
/* @__PURE__ */ jsx(Content, { content, classNames }),
|
|
80
|
-
/* @__PURE__ */ jsx(FAQS, { faqs: post.faqs })
|
|
81
|
-
] }) }),
|
|
82
|
-
/* @__PURE__ */ jsx("div", { className: "flex md:w-1/4 md:sticky md:top-20", children: /* @__PURE__ */ jsx(
|
|
83
|
-
TableOfContents,
|
|
84
|
-
{
|
|
85
|
-
content,
|
|
86
|
-
author: post.author,
|
|
87
|
-
post,
|
|
88
|
-
cta
|
|
89
|
-
}
|
|
90
|
-
) })
|
|
91
|
-
]
|
|
92
|
-
}
|
|
93
|
-
)
|
|
94
|
-
] }) })
|
|
95
|
-
] });
|
|
96
|
-
};
|
|
97
|
-
export {
|
|
98
|
-
BlogPost
|
|
99
|
-
};
|
|
100
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/blog-post/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { JSONContent } from \"@tiptap/core\";\nimport Link from \"next/link\";\nimport { cn } from \"../../utils/merge\";\nimport { opinlyConfig } from \"../../utils/sdk-config\";\nimport { BlogPostRes } from \"./_types/blog-post\";\nimport { genBlogPostingJSONLD, genFaqJSONLD } from \"./_helpers/json-ld\";\nimport { BlogComponentClassNames } from \"./_types/class-names\";\nimport { FAQS } from \"./_components/faq\";\nimport { calculateReadingTime } from \"./_helpers/reading-time\";\nimport { Content } from \"./_components/content\";\nimport { TableOfContents } from \"./_components/table-of-contents\";\nimport { BreadCrumbs } from \"../bread-crumbs\";\nimport { formatDate } from \"../../utils/dates\";\nimport Script from \"next/script\";\nimport { OpinlyBreadCrumbJsonLd, OpinlyJSONLD } from \"../json-ld\";\n\nexport type BlogPostProps = {\n cta?: React.ReactNode;\n};\n\nexport const BlogPost = ({\n post,\n classNames = {},\n cta,\n}: {\n post: BlogPostRes;\n classNames?: BlogComponentClassNames;\n} & BlogPostProps) => {\n const content = post.content as JSONContent;\n\n const breadcrumbItems = [];\n\n if (post.folder) {\n breadcrumbItems.push({\n slugNoPrefixSlash: post.folder.slug,\n name: post.folder.name,\n });\n }\n\n breadcrumbItems.push({\n slugNoPrefixSlash: post.slug,\n name: post.title,\n });\n\n return (\n <>\n {post.faqs && (\n <OpinlyJSONLD content={JSON.stringify(genFaqJSONLD(post.faqs))} />\n )}\n <OpinlyJSONLD content={JSON.stringify(genBlogPostingJSONLD(post))} />\n <OpinlyBreadCrumbJsonLd items={breadcrumbItems} />\n <div className=\"max-w-7xl mx-auto px-4 py-24 flex items-start space-x-8\">\n <div className=\"flex flex-col gap-12 w-full\">\n <div>\n <BreadCrumbs\n breadcrumbs={[\n post.folder && {\n url: `${opinlyConfig.blogPrefix}/${post.folder.slug}`,\n name: post.folder.name,\n },\n ]}\n />\n\n <h1 className=\"text-op-heading text-4xl font-bold mb-2 leading-tight\">\n {post.title}\n </h1>\n <div className=\"text-sm mb-4 text-op-muted space-x-1\">\n {post.author && (\n <>\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`}\n className=\"font-medium\"\n >\n {post.author?.name}\n </Link>{\" \"}\n <span className=\"text-op-muted\">·</span>\n </>\n )}\n <span>\n {calculateReadingTime(content)} min read <span>·</span>\n </span>\n <span>\n {formatDate(post.firstPublishedAt as string) || \"Today\"}\n </span>\n </div>\n </div>\n\n <div\n className={cn(\n \"flex md:space-x-12 flex-col mx-auto w-full\",\n \"md:flex-row-reverse\",\n classNames.container\n )}\n >\n <article className=\"w-full md:w-3/4 order-2 md:order-1 flex items-start\">\n <div className=\"prose w-full \">\n <Content content={content} classNames={classNames} />\n <FAQS faqs={post.faqs} />\n </div>\n </article>\n <div className=\"flex md:w-1/4 md:sticky md:top-20\">\n <TableOfContents\n content={content}\n author={post.author}\n post={post}\n cta={cta}\n />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n};\n"],"mappings":"AAgDQ,SAqBQ,UArBR,KAqBQ,YArBR;AA9CR,OAAO,UAAU;AACjB,SAAS,UAAU;AACnB,SAAS,oBAAoB;AAE7B,SAAS,sBAAsB,oBAAoB;AAEnD,SAAS,YAAY;AACrB,SAAS,4BAA4B;AACrC,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAE3B,SAAS,wBAAwB,oBAAoB;AAM9C,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA,aAAa,CAAC;AAAA,EACd;AACF,MAGsB;AACpB,QAAM,UAAU,KAAK;AAErB,QAAM,kBAAkB,CAAC;AAEzB,MAAI,KAAK,QAAQ;AACf,oBAAgB,KAAK;AAAA,MACnB,mBAAmB,KAAK,OAAO;AAAA,MAC/B,MAAM,KAAK,OAAO;AAAA,IACpB,CAAC;AAAA,EACH;AAEA,kBAAgB,KAAK;AAAA,IACnB,mBAAmB,KAAK;AAAA,IACxB,MAAM,KAAK;AAAA,EACb,CAAC;AAED,SACE,iCACG;AAAA,SAAK,QACJ,oBAAC,gBAAa,SAAS,KAAK,UAAU,aAAa,KAAK,IAAI,CAAC,GAAG;AAAA,IAElE,oBAAC,gBAAa,SAAS,KAAK,UAAU,qBAAqB,IAAI,CAAC,GAAG;AAAA,IACnE,oBAAC,0BAAuB,OAAO,iBAAiB;AAAA,IAChD,oBAAC,SAAI,WAAU,2DACb,+BAAC,SAAI,WAAU,+BACb;AAAA,2BAAC,SACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,cACX,KAAK,UAAU;AAAA,gBACb,KAAK,GAAG,aAAa,UAAU,IAAI,KAAK,OAAO,IAAI;AAAA,gBACnD,MAAM,KAAK,OAAO;AAAA,cACpB;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QAEA,oBAAC,QAAG,WAAU,yDACX,eAAK,OACR;AAAA,QACA,qBAAC,SAAI,WAAU,wCACZ;AAAA,eAAK,UACJ,iCACE;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,GAAG,aAAa,UAAU,YAAY,KAAK,QAAQ,IAAI;AAAA,gBAC7D,WAAU;AAAA,gBAET,eAAK,QAAQ;AAAA;AAAA,YAChB;AAAA,YAAQ;AAAA,YACR,oBAAC,UAAK,WAAU,iBAAgB,kBAAC;AAAA,aACnC;AAAA,UAEF,qBAAC,UACE;AAAA,iCAAqB,OAAO;AAAA,YAAE;AAAA,YAAU,oBAAC,UAAK,kBAAC;AAAA,aAClD;AAAA,UACA,oBAAC,UACE,qBAAW,KAAK,gBAA0B,KAAK,SAClD;AAAA,WACF;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA,WAAW;AAAA,UACb;AAAA,UAEA;AAAA,gCAAC,aAAQ,WAAU,uDACjB,+BAAC,SAAI,WAAU,iBACb;AAAA,kCAAC,WAAQ,SAAkB,YAAwB;AAAA,cACnD,oBAAC,QAAK,MAAM,KAAK,MAAM;AAAA,eACzB,GACF;AAAA,YACA,oBAAC,SAAI,WAAU,qCACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,QAAQ,KAAK;AAAA,gBACb;AAAA,gBACA;AAAA;AAAA,YACF,GACF;AAAA;AAAA;AAAA,MACF;AAAA,OACF,GACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var bread_crumbs_exports = {};
|
|
30
|
-
__export(bread_crumbs_exports, {
|
|
31
|
-
BreadCrumbs: () => BreadCrumbs
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(bread_crumbs_exports);
|
|
34
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
|
-
var import_link = __toESM(require("next/link"), 1);
|
|
36
|
-
var import_react = require("react");
|
|
37
|
-
var import_sdk_config = require("../utils/sdk-config");
|
|
38
|
-
const BreadCrumbs = ({
|
|
39
|
-
breadcrumbs
|
|
40
|
-
}) => {
|
|
41
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("nav", { className: "text-sm text-muted-foreground mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ol", { className: "list-reset flex space-x-2", children: [
|
|
42
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/", className: "font-bold", children: import_sdk_config.opinlyConfig.siteName }),
|
|
43
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "/" }),
|
|
44
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: import_sdk_config.opinlyConfig.blogPrefix, className: "font-bold", children: "Blog" }),
|
|
45
|
-
breadcrumbs?.map((breadcrumb, index) => {
|
|
46
|
-
if (!breadcrumb) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Fragment, { children: [
|
|
50
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "/" }),
|
|
51
|
-
breadcrumb.url ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: breadcrumb.url, className: "font-bold", children: breadcrumb.name }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-bold", children: breadcrumb.name })
|
|
52
|
-
] }, index);
|
|
53
|
-
})
|
|
54
|
-
] }) });
|
|
55
|
-
};
|
|
56
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
57
|
-
0 && (module.exports = {
|
|
58
|
-
BreadCrumbs
|
|
59
|
-
});
|
|
60
|
-
//# sourceMappingURL=bread-crumbs.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/bread-crumbs.tsx"],"sourcesContent":["import Link from \"next/link\";\nimport { Fragment } from \"react\";\nimport { opinlyConfig } from \"../utils/sdk-config\";\n\nexport const BreadCrumbs = ({\n breadcrumbs,\n}: {\n breadcrumbs?: (\n | {\n name: string;\n url?: string;\n }\n | null\n | undefined\n )[];\n}) => {\n return (\n <nav className=\"text-sm text-muted-foreground mb-4\">\n <ol className=\"list-reset flex space-x-2\">\n <Link href=\"/\" className=\"font-bold\">\n {opinlyConfig.siteName}\n </Link>\n <span>/</span>\n <Link href={opinlyConfig.blogPrefix} className=\"font-bold\">\n Blog\n </Link>\n {breadcrumbs?.map((breadcrumb, index) => {\n if (!breadcrumb) {\n return null;\n }\n\n return (\n <Fragment key={index}>\n <span>/</span>\n {breadcrumb.url ? (\n <Link href={breadcrumb.url} className=\"font-bold\">\n {breadcrumb.name}\n </Link>\n ) : (\n <span className=\"font-bold\">{breadcrumb.name}</span>\n )}\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBQ;AAnBR,kBAAiB;AACjB,mBAAyB;AACzB,wBAA6B;AAEtB,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MASM;AACJ,SACE,4CAAC,SAAI,WAAU,sCACb,uDAAC,QAAG,WAAU,6BACZ;AAAA,gDAAC,YAAAA,SAAA,EAAK,MAAK,KAAI,WAAU,aACtB,yCAAa,UAChB;AAAA,IACA,4CAAC,UAAK,eAAC;AAAA,IACP,4CAAC,YAAAA,SAAA,EAAK,MAAM,+BAAa,YAAY,WAAU,aAAY,kBAE3D;AAAA,IACC,aAAa,IAAI,CAAC,YAAY,UAAU;AACvC,UAAI,CAAC,YAAY;AACf,eAAO;AAAA,MACT;AAEA,aACE,6CAAC,yBACC;AAAA,oDAAC,UAAK,eAAC;AAAA,QACN,WAAW,MACV,4CAAC,YAAAA,SAAA,EAAK,MAAM,WAAW,KAAK,WAAU,aACnC,qBAAW,MACd,IAEA,4CAAC,UAAK,WAAU,aAAa,qBAAW,MAAK;AAAA,WAPlC,KASf;AAAA,IAEJ,CAAC;AAAA,KACH,GACF;AAEJ;","names":["Link"]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Link from "next/link";
|
|
3
|
-
import { Fragment } from "react";
|
|
4
|
-
import { opinlyConfig } from "../utils/sdk-config";
|
|
5
|
-
const BreadCrumbs = ({
|
|
6
|
-
breadcrumbs
|
|
7
|
-
}) => {
|
|
8
|
-
return /* @__PURE__ */ jsx("nav", { className: "text-sm text-muted-foreground mb-4", children: /* @__PURE__ */ jsxs("ol", { className: "list-reset flex space-x-2", children: [
|
|
9
|
-
/* @__PURE__ */ jsx(Link, { href: "/", className: "font-bold", children: opinlyConfig.siteName }),
|
|
10
|
-
/* @__PURE__ */ jsx("span", { children: "/" }),
|
|
11
|
-
/* @__PURE__ */ jsx(Link, { href: opinlyConfig.blogPrefix, className: "font-bold", children: "Blog" }),
|
|
12
|
-
breadcrumbs?.map((breadcrumb, index) => {
|
|
13
|
-
if (!breadcrumb) {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17
|
-
/* @__PURE__ */ jsx("span", { children: "/" }),
|
|
18
|
-
breadcrumb.url ? /* @__PURE__ */ jsx(Link, { href: breadcrumb.url, className: "font-bold", children: breadcrumb.name }) : /* @__PURE__ */ jsx("span", { className: "font-bold", children: breadcrumb.name })
|
|
19
|
-
] }, index);
|
|
20
|
-
})
|
|
21
|
-
] }) });
|
|
22
|
-
};
|
|
23
|
-
export {
|
|
24
|
-
BreadCrumbs
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=bread-crumbs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/bread-crumbs.tsx"],"sourcesContent":["import Link from \"next/link\";\nimport { Fragment } from \"react\";\nimport { opinlyConfig } from \"../utils/sdk-config\";\n\nexport const BreadCrumbs = ({\n breadcrumbs,\n}: {\n breadcrumbs?: (\n | {\n name: string;\n url?: string;\n }\n | null\n | undefined\n )[];\n}) => {\n return (\n <nav className=\"text-sm text-muted-foreground mb-4\">\n <ol className=\"list-reset flex space-x-2\">\n <Link href=\"/\" className=\"font-bold\">\n {opinlyConfig.siteName}\n </Link>\n <span>/</span>\n <Link href={opinlyConfig.blogPrefix} className=\"font-bold\">\n Blog\n </Link>\n {breadcrumbs?.map((breadcrumb, index) => {\n if (!breadcrumb) {\n return null;\n }\n\n return (\n <Fragment key={index}>\n <span>/</span>\n {breadcrumb.url ? (\n <Link href={breadcrumb.url} className=\"font-bold\">\n {breadcrumb.name}\n </Link>\n ) : (\n <span className=\"font-bold\">{breadcrumb.name}</span>\n )}\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"mappings":"AAmBQ,cAaI,YAbJ;AAnBR,OAAO,UAAU;AACjB,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAEtB,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MASM;AACJ,SACE,oBAAC,SAAI,WAAU,sCACb,+BAAC,QAAG,WAAU,6BACZ;AAAA,wBAAC,QAAK,MAAK,KAAI,WAAU,aACtB,uBAAa,UAChB;AAAA,IACA,oBAAC,UAAK,eAAC;AAAA,IACP,oBAAC,QAAK,MAAM,aAAa,YAAY,WAAU,aAAY,kBAE3D;AAAA,IACC,aAAa,IAAI,CAAC,YAAY,UAAU;AACvC,UAAI,CAAC,YAAY;AACf,eAAO;AAAA,MACT;AAEA,aACE,qBAAC,YACC;AAAA,4BAAC,UAAK,eAAC;AAAA,QACN,WAAW,MACV,oBAAC,QAAK,MAAM,WAAW,KAAK,WAAU,aACnC,qBAAW,MACd,IAEA,oBAAC,UAAK,WAAU,aAAa,qBAAW,MAAK;AAAA,WAPlC,KASf;AAAA,IAEJ,CAAC;AAAA,KACH,GACF;AAEJ;","names":[]}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var json_ld_exports = {};
|
|
20
|
-
__export(json_ld_exports, {
|
|
21
|
-
folderCollectionJSONLD: () => folderCollectionJSONLD
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(json_ld_exports);
|
|
24
|
-
var import_sdk_config = require("../../../utils/sdk-config");
|
|
25
|
-
const folderCollectionJSONLD = (folder) => {
|
|
26
|
-
const jsonLD = {
|
|
27
|
-
"@context": "https://schema.org",
|
|
28
|
-
"@type": "CollectionPage",
|
|
29
|
-
name: folder.name,
|
|
30
|
-
description: folder.description || `Explore articles in ${folder.name}.`,
|
|
31
|
-
url: `${import_sdk_config.opinlyConfig.blogUrl}/${folder.slug}`,
|
|
32
|
-
publisher: {
|
|
33
|
-
"@type": "Organization",
|
|
34
|
-
name: import_sdk_config.opinlyConfig.siteName
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
return JSON.stringify(jsonLD);
|
|
38
|
-
};
|
|
39
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
-
0 && (module.exports = {
|
|
41
|
-
folderCollectionJSONLD
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=json-ld.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/folder-page/_helpers/json-ld.ts"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport { CollectionPage, WithContext } from \"schema-dts\";\nimport { opinlyConfig } from \"../../../utils/sdk-config\";\n\ntype FolderRes = Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"folder\" }\n>[\"data\"];\n\nexport const folderCollectionJSONLD = (folder: FolderRes) => {\n const jsonLD: WithContext<CollectionPage> = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"CollectionPage\",\n name: folder.name,\n description: folder.description || `Explore articles in ${folder.name}.`,\n url: `${opinlyConfig.blogUrl}/${folder.slug}`,\n publisher: {\n \"@type\": \"Organization\",\n name: opinlyConfig.siteName,\n },\n };\n\n return JSON.stringify(jsonLD);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,wBAA6B;AAOtB,MAAM,yBAAyB,CAAC,WAAsB;AAC3D,QAAM,SAAsC;AAAA,IAC1C,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,MAAM,OAAO;AAAA,IACb,aAAa,OAAO,eAAe,uBAAuB,OAAO,IAAI;AAAA,IACrE,KAAK,GAAG,+BAAa,OAAO,IAAI,OAAO,IAAI;AAAA,IAC3C,WAAW;AAAA,MACT,SAAS;AAAA,MACT,MAAM,+BAAa;AAAA,IACrB;AAAA,EACF;AAEA,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
|