@opinly/next 0.1.12 → 0.1.14
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/components/author-page/_helpers/json-ld.js +1 -0
- package/dist/components/author-page/_helpers/json-ld.mjs +1 -0
- package/dist/components/author-page/index.js +57 -22
- package/dist/components/author-page/index.js.map +1 -1
- package/dist/components/author-page/index.mjs +50 -0
- package/dist/components/author-page/index.mjs.map +1 -0
- package/dist/components/authors-page/index.js +63 -29
- package/dist/components/authors-page/index.js.map +1 -1
- package/dist/components/authors-page/index.mjs +71 -0
- package/dist/components/authors-page/{index.cjs.map → index.mjs.map} +1 -1
- package/dist/components/blog-post/_components/content.js +63 -28
- package/dist/components/blog-post/_components/content.js.map +1 -1
- package/dist/components/blog-post/_components/content.mjs +126 -0
- package/dist/components/blog-post/_components/content.mjs.map +1 -0
- package/dist/components/blog-post/_components/faq.js +32 -8
- package/dist/components/blog-post/_components/faq.js.map +1 -1
- package/dist/components/blog-post/_components/faq.mjs +15 -0
- package/dist/components/blog-post/_components/{faq.cjs.map → faq.mjs.map} +1 -1
- package/dist/components/blog-post/_components/share.js +58 -24
- package/dist/components/blog-post/_components/share.js.map +1 -1
- package/dist/components/blog-post/_components/share.mjs +66 -0
- package/dist/components/blog-post/_components/{share.cjs.map → share.mjs.map} +1 -1
- package/dist/components/blog-post/_components/table-of-contents.js +58 -23
- package/dist/components/blog-post/_components/table-of-contents.js.map +1 -1
- package/dist/components/blog-post/_components/table-of-contents.mjs +48 -0
- package/dist/components/blog-post/_components/table-of-contents.mjs.map +1 -0
- package/dist/components/blog-post/_helpers/calc-reading-time.js +1 -0
- package/dist/components/blog-post/_helpers/calc-reading-time.mjs +1 -0
- package/dist/components/blog-post/_helpers/extract-headings.js +26 -2
- package/dist/components/blog-post/_helpers/extract-headings.js.map +1 -1
- package/dist/components/blog-post/_helpers/extract-headings.mjs +20 -0
- package/dist/components/blog-post/_helpers/{extract-headings.cjs.map → extract-headings.mjs.map} +1 -1
- package/dist/components/blog-post/_helpers/json-ld.js +38 -11
- package/dist/components/blog-post/_helpers/json-ld.js.map +1 -1
- package/dist/components/blog-post/_helpers/{json-ld.cjs → json-ld.mjs} +12 -39
- package/dist/components/blog-post/_helpers/{json-ld.cjs.map → json-ld.mjs.map} +1 -1
- package/dist/components/blog-post/_helpers/reading-time.js +27 -2
- package/dist/components/blog-post/_helpers/reading-time.js.map +1 -1
- package/dist/components/blog-post/_helpers/reading-time.mjs +25 -0
- package/dist/components/blog-post/_helpers/{reading-time.cjs.map → reading-time.mjs.map} +1 -1
- package/dist/components/blog-post/_types/blog-post.js +16 -0
- package/dist/components/blog-post/_types/blog-post.js.map +1 -1
- package/dist/components/blog-post/_types/blog-post.mjs +1 -0
- package/dist/components/blog-post/_types/blog-post.mjs.map +1 -0
- package/dist/components/blog-post/_types/class-names.js +16 -0
- package/dist/components/blog-post/_types/class-names.js.map +1 -1
- package/dist/components/blog-post/_types/class-names.mjs +1 -0
- package/dist/components/blog-post/_types/class-names.mjs.map +1 -0
- package/dist/components/blog-post/index.js +77 -47
- package/dist/components/blog-post/index.js.map +1 -1
- package/dist/components/blog-post/index.mjs +118 -0
- package/dist/components/blog-post/{index.cjs.map → index.mjs.map} +1 -1
- package/dist/components/bread-crumbs.js +47 -13
- package/dist/components/bread-crumbs.js.map +1 -1
- package/dist/components/bread-crumbs.mjs +26 -0
- package/dist/components/{bread-crumbs.cjs.map → bread-crumbs.mjs.map} +1 -1
- package/dist/components/folder-page/index.js +36 -12
- package/dist/components/folder-page/index.js.map +1 -1
- package/dist/components/folder-page/index.mjs +37 -0
- package/dist/components/folder-page/{index.cjs.map → index.mjs.map} +1 -1
- package/dist/components/home-page/folders.js +64 -29
- package/dist/components/home-page/folders.js.map +1 -1
- package/dist/components/home-page/folders.mjs +63 -0
- package/dist/components/home-page/{folders.cjs.map → folders.mjs.map} +1 -1
- package/dist/components/home-page/index.js +35 -11
- package/dist/components/home-page/index.js.map +1 -1
- package/dist/components/home-page/index.mjs +20 -0
- package/dist/components/home-page/{index.cjs.map → index.mjs.map} +1 -1
- package/dist/components/home-page/pagination.js +43 -9
- package/dist/components/home-page/pagination.js.map +1 -1
- package/dist/components/home-page/pagination.mjs +57 -0
- package/dist/components/home-page/{pagination.cjs.map → pagination.mjs.map} +1 -1
- package/dist/components/home-page/top-posts.js +34 -10
- package/dist/components/home-page/top-posts.js.map +1 -1
- package/dist/components/home-page/top-posts.mjs +28 -0
- package/dist/components/home-page/{top-posts.cjs.map → top-posts.mjs.map} +1 -1
- package/dist/components/not-found.js +49 -15
- package/dist/components/not-found.js.map +1 -1
- package/dist/components/not-found.mjs +26 -0
- package/dist/components/{not-found.cjs.map → not-found.mjs.map} +1 -1
- package/dist/components/opinly-blog.js +39 -15
- package/dist/components/opinly-blog.js.map +1 -1
- package/dist/components/opinly-blog.mjs +33 -0
- package/dist/components/{opinly-blog.cjs.map → opinly-blog.mjs.map} +1 -1
- package/dist/components/post-preview.js +77 -41
- package/dist/components/post-preview.js.map +1 -1
- package/dist/components/post-preview.mjs +77 -0
- package/dist/components/post-preview.mjs.map +1 -0
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/utils/dates.js +26 -2
- package/dist/utils/dates.js.map +1 -1
- package/dist/utils/dates.mjs +9 -0
- package/dist/utils/{dates.cjs.map → dates.mjs.map} +1 -1
- package/dist/utils/generate-metadata.d.cts +5 -3
- package/dist/utils/generate-metadata.d.ts +5 -3
- package/dist/utils/generate-metadata.js +33 -9
- package/dist/utils/generate-metadata.js.map +1 -1
- package/dist/utils/generate-metadata.mjs +36 -0
- package/dist/utils/generate-metadata.mjs.map +1 -0
- package/dist/utils/merge.js +29 -5
- package/dist/utils/merge.js.map +1 -1
- package/dist/utils/merge.mjs +9 -0
- package/dist/utils/{merge.cjs.map → merge.mjs.map} +1 -1
- package/dist/utils/sdk-config.d.cts +1 -0
- package/dist/utils/sdk-config.d.ts +1 -0
- package/dist/utils/sdk-config.js +31 -4
- package/dist/utils/sdk-config.js.map +1 -1
- package/dist/utils/sdk-config.mjs +32 -0
- package/dist/utils/sdk-config.mjs.map +1 -0
- package/package.json +4 -4
- package/dist/components/author-page/_helpers/json-ld.cjs +0 -2
- package/dist/components/author-page/index.cjs +0 -83
- package/dist/components/author-page/index.cjs.map +0 -1
- package/dist/components/authors-page/index.cjs +0 -105
- package/dist/components/blog-post/_components/content.cjs +0 -159
- package/dist/components/blog-post/_components/content.cjs.map +0 -1
- package/dist/components/blog-post/_components/faq.cjs +0 -39
- package/dist/components/blog-post/_components/share.cjs +0 -100
- package/dist/components/blog-post/_components/table-of-contents.cjs +0 -81
- package/dist/components/blog-post/_components/table-of-contents.cjs.map +0 -1
- package/dist/components/blog-post/_helpers/calc-reading-time.cjs +0 -2
- package/dist/components/blog-post/_helpers/extract-headings.cjs +0 -44
- package/dist/components/blog-post/_helpers/reading-time.cjs +0 -50
- 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/class-names.cjs +0 -17
- package/dist/components/blog-post/_types/class-names.cjs.map +0 -1
- package/dist/components/blog-post/index.cjs +0 -148
- package/dist/components/bread-crumbs.cjs +0 -60
- package/dist/components/folder-page/index.cjs +0 -61
- package/dist/components/home-page/folders.cjs +0 -98
- package/dist/components/home-page/index.cjs +0 -44
- package/dist/components/home-page/pagination.cjs +0 -91
- package/dist/components/home-page/top-posts.cjs +0 -52
- package/dist/components/not-found.cjs +0 -60
- package/dist/components/opinly-blog.cjs +0 -57
- package/dist/components/post-preview.cjs +0 -111
- package/dist/components/post-preview.cjs.map +0 -1
- package/dist/index.cjs +0 -23
- package/dist/index.cjs.map +0 -1
- package/dist/utils/dates.cjs +0 -33
- package/dist/utils/generate-metadata.cjs +0 -60
- package/dist/utils/generate-metadata.cjs.map +0 -1
- package/dist/utils/merge.cjs +0 -33
- package/dist/utils/sdk-config.cjs +0 -55
- package/dist/utils/sdk-config.cjs.map +0 -1
- /package/dist/components/author-page/_helpers/{json-ld.cjs.map → json-ld.mjs.map} +0 -0
- /package/dist/components/blog-post/_helpers/{calc-reading-time.cjs.map → calc-reading-time.mjs.map} +0 -0
|
@@ -1,105 +1,134 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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_script = __toESM(require("next/script"), 1);
|
|
17
46
|
const BlogPost = ({
|
|
18
47
|
post,
|
|
19
48
|
classNames = {}
|
|
20
49
|
}) => {
|
|
21
50
|
const content = post.content;
|
|
22
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23
|
-
post.faqs && /* @__PURE__ */ jsx(
|
|
24
|
-
|
|
51
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
52
|
+
post.faqs && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
53
|
+
import_script.default,
|
|
25
54
|
{
|
|
26
55
|
strategy: "beforeInteractive",
|
|
27
56
|
type: "application/ld+json",
|
|
28
57
|
dangerouslySetInnerHTML: {
|
|
29
|
-
__html: JSON.stringify(genFaqJSONLD(post.faqs)).replace(
|
|
58
|
+
__html: JSON.stringify((0, import_json_ld.genFaqJSONLD)(post.faqs)).replace(
|
|
30
59
|
/</g,
|
|
31
60
|
"\\u003c"
|
|
32
61
|
)
|
|
33
62
|
}
|
|
34
63
|
}
|
|
35
64
|
),
|
|
36
|
-
/* @__PURE__ */ jsx(
|
|
37
|
-
|
|
65
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
66
|
+
import_script.default,
|
|
38
67
|
{
|
|
39
68
|
strategy: "beforeInteractive",
|
|
40
69
|
type: "application/ld+json",
|
|
41
70
|
dangerouslySetInnerHTML: {
|
|
42
|
-
__html: JSON.stringify(genBlogPostingJSONLD(post))
|
|
71
|
+
__html: JSON.stringify((0, import_json_ld.genBlogPostingJSONLD)(post))
|
|
43
72
|
}
|
|
44
73
|
}
|
|
45
74
|
),
|
|
46
|
-
/* @__PURE__ */ jsx(
|
|
47
|
-
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
76
|
+
import_script.default,
|
|
48
77
|
{
|
|
49
78
|
strategy: "beforeInteractive",
|
|
50
79
|
type: "application/ld+json",
|
|
51
80
|
dangerouslySetInnerHTML: {
|
|
52
|
-
__html: JSON.stringify(genBreadcrumbJSONLD(post))
|
|
81
|
+
__html: JSON.stringify((0, import_json_ld.genBreadcrumbJSONLD)(post))
|
|
53
82
|
}
|
|
54
83
|
}
|
|
55
84
|
),
|
|
56
|
-
/* @__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: [
|
|
57
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-orange-600", children: [
|
|
58
|
-
/* @__PURE__ */ jsx(
|
|
59
|
-
BreadCrumbs,
|
|
85
|
+
/* @__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: [
|
|
86
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "bg-orange-600", children: [
|
|
87
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
88
|
+
import_bread_crumbs.BreadCrumbs,
|
|
60
89
|
{
|
|
61
90
|
breadcrumbs: [
|
|
62
91
|
post.folder && {
|
|
63
|
-
url: `${opinlyConfig.blogPrefix}/${post.folder.slug}`,
|
|
92
|
+
url: `${import_sdk_config.opinlyConfig.blogPrefix}/${post.folder.slug}`,
|
|
64
93
|
name: post.folder.name
|
|
65
94
|
}
|
|
66
95
|
]
|
|
67
96
|
}
|
|
68
97
|
),
|
|
69
|
-
/* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold mb-2 leading-tight", children: post.title }),
|
|
70
|
-
/* @__PURE__ */ jsxs("div", { className: "text-sm mb-4", children: [
|
|
98
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "text-4xl font-bold mb-2 leading-tight", children: post.title }),
|
|
99
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-sm mb-4", children: [
|
|
71
100
|
"Author:",
|
|
72
101
|
" ",
|
|
73
|
-
/* @__PURE__ */ jsx(
|
|
74
|
-
|
|
102
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
103
|
+
import_link.default,
|
|
75
104
|
{
|
|
76
|
-
href: `${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`,
|
|
105
|
+
href: `${import_sdk_config.opinlyConfig.blogPrefix}/authors/${post.author?.slug}`,
|
|
77
106
|
className: "font-medium",
|
|
78
107
|
children: post.author?.name
|
|
79
108
|
}
|
|
80
109
|
),
|
|
81
110
|
" ",
|
|
82
111
|
"\xB7 ",
|
|
83
|
-
calculateReadingTime(content),
|
|
112
|
+
(0, import_reading_time.calculateReadingTime)(content),
|
|
84
113
|
" min read \xB7",
|
|
85
114
|
" ",
|
|
86
|
-
formatDate(post.firstPublishedAt) || "Today"
|
|
115
|
+
(0, import_dates.formatDate)(post.firstPublishedAt) || "Today"
|
|
87
116
|
] })
|
|
88
117
|
] }),
|
|
89
|
-
/* @__PURE__ */ jsxs(
|
|
118
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
90
119
|
"div",
|
|
91
120
|
{
|
|
92
|
-
className: cn(
|
|
121
|
+
className: (0, import_merge.cn)(
|
|
93
122
|
"flex flex-col-reverse md:flex-row mx-auto mt-10 gap-12 relative w-full ",
|
|
94
123
|
classNames.container
|
|
95
124
|
),
|
|
96
125
|
children: [
|
|
97
|
-
/* @__PURE__ */ jsx("article", { className: "w-full lg:w-2/3 order-2 lg:order-1 flex items-start space-x-4", children: /* @__PURE__ */ jsxs("div", { className: "prose w-full", children: [
|
|
98
|
-
/* @__PURE__ */ jsx(Content, { content, classNames }),
|
|
99
|
-
/* @__PURE__ */ jsx(FAQS, { faqs: post.faqs })
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("article", { className: "w-full lg:w-2/3 order-2 lg:order-1 flex items-start space-x-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "prose w-full", children: [
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_content.Content, { content, classNames }),
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_faq.FAQS, { faqs: post.faqs })
|
|
100
129
|
] }) }),
|
|
101
|
-
/* @__PURE__ */ jsx("div", { className: "block md:min-w-72 md:sticky md:top-20 md:self-start", children: /* @__PURE__ */ jsx(
|
|
102
|
-
TableOfContents,
|
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "block md:min-w-72 md:sticky md:top-20 md:self-start", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
131
|
+
import_table_of_contents.TableOfContents,
|
|
103
132
|
{
|
|
104
133
|
content,
|
|
105
134
|
author: post.author,
|
|
@@ -112,7 +141,8 @@ const BlogPost = ({
|
|
|
112
141
|
] }) })
|
|
113
142
|
] });
|
|
114
143
|
};
|
|
115
|
-
export
|
|
144
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
145
|
+
0 && (module.exports = {
|
|
116
146
|
BlogPost
|
|
117
|
-
};
|
|
147
|
+
});
|
|
118
148
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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 {\n genBlogPostingJSONLD,\n genBreadcrumbJSONLD,\n genFaqJSONLD,\n} 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\";\n\nexport const BlogPost = ({\n post,\n classNames = {},\n}: {\n post: BlogPostRes;\n classNames?: BlogComponentClassNames;\n notFoundComponent?: React.ReactNode;\n}) => {\n const content = post.content as JSONContent;\n\n return (\n <>\n {/* <Head>\n <> */}\n {post.faqs && (\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genFaqJSONLD(post.faqs)).replace(\n /</g,\n \"\\\\u003c\"\n ),\n }}\n />\n )}\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBlogPostingJSONLD(post)),\n }}\n />\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBreadcrumbJSONLD(post)),\n }}\n />\n {/* </>\n </Head> */}\n\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 className=\"bg-orange-600\">\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-4xl font-bold mb-2 leading-tight\">\n {post.title}\n </h1>\n <div className=\"text-sm mb-4\">\n Author:{\" \"}\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`}\n className=\"font-medium\"\n >\n {post.author?.name}\n </Link>{\" \"}\n · {calculateReadingTime(content)} min read ·{\" \"}\n {formatDate(post.firstPublishedAt as string) || \"Today\"}\n </div>\n </div>\n\n <div\n className={cn(\n \"flex flex-col-reverse md:flex-row mx-auto mt-10 gap-12 relative w-full \",\n classNames.container\n )}\n >\n <article className=\"w-full lg:w-2/3 order-2 lg:order-1 flex items-start space-x-4\">\n <div className=\"prose w-full\">\n <Content content={content} classNames={classNames} />\n <FAQS faqs={post.faqs} />\n </div>\n </article>\n <div className=\"block md:min-w-72 md:sticky md:top-20 md:self-start\">\n <TableOfContents\n content={content}\n author={post.author}\n post={post}\n />\n </div>\n </div>\n </div>\n {/* <div className=\"hidden md:block \">\n <TableOfContents\n content={content}\n author={post.post.author}\n post={post}\n />\n </div> */}\n </div>\n </>\n );\n};\n"],"mappings":"AA+BI
|
|
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 {\n genBlogPostingJSONLD,\n genBreadcrumbJSONLD,\n genFaqJSONLD,\n} 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\";\n\nexport const BlogPost = ({\n post,\n classNames = {},\n}: {\n post: BlogPostRes;\n classNames?: BlogComponentClassNames;\n notFoundComponent?: React.ReactNode;\n}) => {\n const content = post.content as JSONContent;\n\n return (\n <>\n {/* <Head>\n <> */}\n {post.faqs && (\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genFaqJSONLD(post.faqs)).replace(\n /</g,\n \"\\\\u003c\"\n ),\n }}\n />\n )}\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBlogPostingJSONLD(post)),\n }}\n />\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBreadcrumbJSONLD(post)),\n }}\n />\n {/* </>\n </Head> */}\n\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 className=\"bg-orange-600\">\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-4xl font-bold mb-2 leading-tight\">\n {post.title}\n </h1>\n <div className=\"text-sm mb-4\">\n Author:{\" \"}\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`}\n className=\"font-medium\"\n >\n {post.author?.name}\n </Link>{\" \"}\n · {calculateReadingTime(content)} min read ·{\" \"}\n {formatDate(post.firstPublishedAt as string) || \"Today\"}\n </div>\n </div>\n\n <div\n className={cn(\n \"flex flex-col-reverse md:flex-row mx-auto mt-10 gap-12 relative w-full \",\n classNames.container\n )}\n >\n <article className=\"w-full lg:w-2/3 order-2 lg:order-1 flex items-start space-x-4\">\n <div className=\"prose w-full\">\n <Content content={content} classNames={classNames} />\n <FAQS faqs={post.faqs} />\n </div>\n </article>\n <div className=\"block md:min-w-72 md:sticky md:top-20 md:self-start\">\n <TableOfContents\n content={content}\n author={post.author}\n post={post}\n />\n </div>\n </div>\n </div>\n {/* <div className=\"hidden md:block \">\n <TableOfContents\n content={content}\n author={post.post.author}\n post={post}\n />\n </div> */}\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BI;AA7BJ,kBAAiB;AACjB,mBAAmB;AACnB,wBAA6B;AAE7B,qBAIO;AAEP,iBAAqB;AACrB,0BAAqC;AACrC,qBAAwB;AACxB,+BAAgC;AAChC,0BAA4B;AAC5B,mBAA2B;AAC3B,oBAAmB;AAEZ,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA,aAAa,CAAC;AAChB,MAIM;AACJ,QAAM,UAAU,KAAK;AAErB,SACE,4EAGG;AAAA,SAAK,QACJ;AAAA,MAAC,cAAAA;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,MAAK;AAAA,QACL,yBAAyB;AAAA,UACvB,QAAQ,KAAK,cAAU,6BAAa,KAAK,IAAI,CAAC,EAAE;AAAA,YAC9C;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEF;AAAA,MAAC,cAAAA;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,MAAK;AAAA,QACL,yBAAyB;AAAA,UACvB,QAAQ,KAAK,cAAU,qCAAqB,IAAI,CAAC;AAAA,QACnD;AAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC,cAAAA;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,MAAK;AAAA,QACL,yBAAyB;AAAA,UACvB,QAAQ,KAAK,cAAU,oCAAoB,IAAI,CAAC;AAAA,QAClD;AAAA;AAAA,IACF;AAAA,IAIA,4CAAC,SAAI,WAAU,2DACb,uDAAC,SAAI,WAAU,+BACb;AAAA,mDAAC,SAAI,WAAU,iBACb;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,yCACX,eAAK,OACR;AAAA,QACA,6CAAC,SAAI,WAAU,gBAAe;AAAA;AAAA,UACpB;AAAA,UACR;AAAA,YAAC,YAAAC;AAAA,YAAA;AAAA,cACC,MAAM,GAAG,+BAAa,UAAU,YAAY,KAAK,QAAQ,IAAI;AAAA,cAC7D,WAAU;AAAA,cAET,eAAK,QAAQ;AAAA;AAAA,UAChB;AAAA,UAAQ;AAAA,UAAI;AAAA,cACT,0CAAqB,OAAO;AAAA,UAAE;AAAA,UAAY;AAAA,cAC5C,yBAAW,KAAK,gBAA0B,KAAK;AAAA,WAClD;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,YACT;AAAA,YACA,WAAW;AAAA,UACb;AAAA,UAEA;AAAA,wDAAC,aAAQ,WAAU,iEACjB,uDAAC,SAAI,WAAU,gBACb;AAAA,0DAAC,0BAAQ,SAAkB,YAAwB;AAAA,cACnD,4CAAC,mBAAK,MAAM,KAAK,MAAM;AAAA,eACzB,GACF;AAAA,YACA,4CAAC,SAAI,WAAU,uDACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,QAAQ,KAAK;AAAA,gBACb;AAAA;AAAA,YACF,GACF;AAAA;AAAA;AAAA,MACF;AAAA,OACF,GAQF;AAAA,KACF;AAEJ;","names":["Script","Link"]}
|
|
@@ -0,0 +1,118 @@
|
|
|
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 {
|
|
6
|
+
genBlogPostingJSONLD,
|
|
7
|
+
genBreadcrumbJSONLD,
|
|
8
|
+
genFaqJSONLD
|
|
9
|
+
} from "./_helpers/json-ld";
|
|
10
|
+
import { FAQS } from "./_components/faq";
|
|
11
|
+
import { calculateReadingTime } from "./_helpers/reading-time";
|
|
12
|
+
import { Content } from "./_components/content";
|
|
13
|
+
import { TableOfContents } from "./_components/table-of-contents";
|
|
14
|
+
import { BreadCrumbs } from "../bread-crumbs";
|
|
15
|
+
import { formatDate } from "../../utils/dates";
|
|
16
|
+
import Script from "next/script";
|
|
17
|
+
const BlogPost = ({
|
|
18
|
+
post,
|
|
19
|
+
classNames = {}
|
|
20
|
+
}) => {
|
|
21
|
+
const content = post.content;
|
|
22
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23
|
+
post.faqs && /* @__PURE__ */ jsx(
|
|
24
|
+
Script,
|
|
25
|
+
{
|
|
26
|
+
strategy: "beforeInteractive",
|
|
27
|
+
type: "application/ld+json",
|
|
28
|
+
dangerouslySetInnerHTML: {
|
|
29
|
+
__html: JSON.stringify(genFaqJSONLD(post.faqs)).replace(
|
|
30
|
+
/</g,
|
|
31
|
+
"\\u003c"
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
/* @__PURE__ */ jsx(
|
|
37
|
+
Script,
|
|
38
|
+
{
|
|
39
|
+
strategy: "beforeInteractive",
|
|
40
|
+
type: "application/ld+json",
|
|
41
|
+
dangerouslySetInnerHTML: {
|
|
42
|
+
__html: JSON.stringify(genBlogPostingJSONLD(post))
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
/* @__PURE__ */ jsx(
|
|
47
|
+
Script,
|
|
48
|
+
{
|
|
49
|
+
strategy: "beforeInteractive",
|
|
50
|
+
type: "application/ld+json",
|
|
51
|
+
dangerouslySetInnerHTML: {
|
|
52
|
+
__html: JSON.stringify(genBreadcrumbJSONLD(post))
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
/* @__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: [
|
|
57
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-orange-600", children: [
|
|
58
|
+
/* @__PURE__ */ jsx(
|
|
59
|
+
BreadCrumbs,
|
|
60
|
+
{
|
|
61
|
+
breadcrumbs: [
|
|
62
|
+
post.folder && {
|
|
63
|
+
url: `${opinlyConfig.blogPrefix}/${post.folder.slug}`,
|
|
64
|
+
name: post.folder.name
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold mb-2 leading-tight", children: post.title }),
|
|
70
|
+
/* @__PURE__ */ jsxs("div", { className: "text-sm mb-4", children: [
|
|
71
|
+
"Author:",
|
|
72
|
+
" ",
|
|
73
|
+
/* @__PURE__ */ jsx(
|
|
74
|
+
Link,
|
|
75
|
+
{
|
|
76
|
+
href: `${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`,
|
|
77
|
+
className: "font-medium",
|
|
78
|
+
children: post.author?.name
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
" ",
|
|
82
|
+
"\xB7 ",
|
|
83
|
+
calculateReadingTime(content),
|
|
84
|
+
" min read \xB7",
|
|
85
|
+
" ",
|
|
86
|
+
formatDate(post.firstPublishedAt) || "Today"
|
|
87
|
+
] })
|
|
88
|
+
] }),
|
|
89
|
+
/* @__PURE__ */ jsxs(
|
|
90
|
+
"div",
|
|
91
|
+
{
|
|
92
|
+
className: cn(
|
|
93
|
+
"flex flex-col-reverse md:flex-row mx-auto mt-10 gap-12 relative w-full ",
|
|
94
|
+
classNames.container
|
|
95
|
+
),
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ jsx("article", { className: "w-full lg:w-2/3 order-2 lg:order-1 flex items-start space-x-4", children: /* @__PURE__ */ jsxs("div", { className: "prose w-full", children: [
|
|
98
|
+
/* @__PURE__ */ jsx(Content, { content, classNames }),
|
|
99
|
+
/* @__PURE__ */ jsx(FAQS, { faqs: post.faqs })
|
|
100
|
+
] }) }),
|
|
101
|
+
/* @__PURE__ */ jsx("div", { className: "block md:min-w-72 md:sticky md:top-20 md:self-start", children: /* @__PURE__ */ jsx(
|
|
102
|
+
TableOfContents,
|
|
103
|
+
{
|
|
104
|
+
content,
|
|
105
|
+
author: post.author,
|
|
106
|
+
post
|
|
107
|
+
}
|
|
108
|
+
) })
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
] }) })
|
|
113
|
+
] });
|
|
114
|
+
};
|
|
115
|
+
export {
|
|
116
|
+
BlogPost
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
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 {\n genBlogPostingJSONLD,\n genBreadcrumbJSONLD,\n genFaqJSONLD,\n} 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\";\n\nexport const BlogPost = ({\n post,\n classNames = {},\n}: {\n post: BlogPostRes;\n classNames?: BlogComponentClassNames;\n notFoundComponent?: React.ReactNode;\n}) => {\n const content = post.content as JSONContent;\n\n return (\n <>\n {/* <Head>\n <> */}\n {post.faqs && (\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genFaqJSONLD(post.faqs)).replace(\n /</g,\n \"\\\\u003c\"\n ),\n }}\n />\n )}\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBlogPostingJSONLD(post)),\n }}\n />\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBreadcrumbJSONLD(post)),\n }}\n />\n {/* </>\n </Head> */}\n\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 className=\"bg-orange-600\">\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-4xl font-bold mb-2 leading-tight\">\n {post.title}\n </h1>\n <div className=\"text-sm mb-4\">\n Author:{\" \"}\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`}\n className=\"font-medium\"\n >\n {post.author?.name}\n </Link>{\" \"}\n · {calculateReadingTime(content)} min read ·{\" \"}\n {formatDate(post.firstPublishedAt as string) || \"Today\"}\n </div>\n </div>\n\n <div\n className={cn(\n \"flex flex-col-reverse md:flex-row mx-auto mt-10 gap-12 relative w-full \",\n classNames.container\n )}\n >\n <article className=\"w-full lg:w-2/3 order-2 lg:order-1 flex items-start space-x-4\">\n <div className=\"prose w-full\">\n <Content content={content} classNames={classNames} />\n <FAQS faqs={post.faqs} />\n </div>\n </article>\n <div className=\"block md:min-w-72 md:sticky md:top-20 md:self-start\">\n <TableOfContents\n content={content}\n author={post.author}\n post={post}\n />\n </div>\n </div>\n </div>\n {/* <div className=\"hidden md:block \">\n <TableOfContents\n content={content}\n author={post.post.author}\n post={post}\n />\n </div> */}\n </div>\n </>\n );\n};\n"],"mappings":"
|
|
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 {\n genBlogPostingJSONLD,\n genBreadcrumbJSONLD,\n genFaqJSONLD,\n} 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\";\n\nexport const BlogPost = ({\n post,\n classNames = {},\n}: {\n post: BlogPostRes;\n classNames?: BlogComponentClassNames;\n notFoundComponent?: React.ReactNode;\n}) => {\n const content = post.content as JSONContent;\n\n return (\n <>\n {/* <Head>\n <> */}\n {post.faqs && (\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genFaqJSONLD(post.faqs)).replace(\n /</g,\n \"\\\\u003c\"\n ),\n }}\n />\n )}\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBlogPostingJSONLD(post)),\n }}\n />\n <Script\n strategy=\"beforeInteractive\"\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: JSON.stringify(genBreadcrumbJSONLD(post)),\n }}\n />\n {/* </>\n </Head> */}\n\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 className=\"bg-orange-600\">\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-4xl font-bold mb-2 leading-tight\">\n {post.title}\n </h1>\n <div className=\"text-sm mb-4\">\n Author:{\" \"}\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`}\n className=\"font-medium\"\n >\n {post.author?.name}\n </Link>{\" \"}\n · {calculateReadingTime(content)} min read ·{\" \"}\n {formatDate(post.firstPublishedAt as string) || \"Today\"}\n </div>\n </div>\n\n <div\n className={cn(\n \"flex flex-col-reverse md:flex-row mx-auto mt-10 gap-12 relative w-full \",\n classNames.container\n )}\n >\n <article className=\"w-full lg:w-2/3 order-2 lg:order-1 flex items-start space-x-4\">\n <div className=\"prose w-full\">\n <Content content={content} classNames={classNames} />\n <FAQS faqs={post.faqs} />\n </div>\n </article>\n <div className=\"block md:min-w-72 md:sticky md:top-20 md:self-start\">\n <TableOfContents\n content={content}\n author={post.author}\n post={post}\n />\n </div>\n </div>\n </div>\n {/* <div className=\"hidden md:block \">\n <TableOfContents\n content={content}\n author={post.post.author}\n post={post}\n />\n </div> */}\n </div>\n </>\n );\n};\n"],"mappings":"AA+BI,mBAII,KA2CI,YA/CR;AA7BJ,OAAO,UAAU;AACjB,SAAS,UAAU;AACnB,SAAS,oBAAoB;AAE7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,YAAY;AACrB,SAAS,4BAA4B;AACrC,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAC3B,OAAO,YAAY;AAEZ,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA,aAAa,CAAC;AAChB,MAIM;AACJ,QAAM,UAAU,KAAK;AAErB,SACE,iCAGG;AAAA,SAAK,QACJ;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,MAAK;AAAA,QACL,yBAAyB;AAAA,UACvB,QAAQ,KAAK,UAAU,aAAa,KAAK,IAAI,CAAC,EAAE;AAAA,YAC9C;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEF;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,MAAK;AAAA,QACL,yBAAyB;AAAA,UACvB,QAAQ,KAAK,UAAU,qBAAqB,IAAI,CAAC;AAAA,QACnD;AAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,MAAK;AAAA,QACL,yBAAyB;AAAA,UACvB,QAAQ,KAAK,UAAU,oBAAoB,IAAI,CAAC;AAAA,QAClD;AAAA;AAAA,IACF;AAAA,IAIA,oBAAC,SAAI,WAAU,2DACb,+BAAC,SAAI,WAAU,+BACb;AAAA,2BAAC,SAAI,WAAU,iBACb;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,yCACX,eAAK,OACR;AAAA,QACA,qBAAC,SAAI,WAAU,gBAAe;AAAA;AAAA,UACpB;AAAA,UACR;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,GAAG,aAAa,UAAU,YAAY,KAAK,QAAQ,IAAI;AAAA,cAC7D,WAAU;AAAA,cAET,eAAK,QAAQ;AAAA;AAAA,UAChB;AAAA,UAAQ;AAAA,UAAI;AAAA,UACT,qBAAqB,OAAO;AAAA,UAAE;AAAA,UAAY;AAAA,UAC5C,WAAW,KAAK,gBAA0B,KAAK;AAAA,WAClD;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA,WAAW;AAAA,UACb;AAAA,UAEA;AAAA,gCAAC,aAAQ,WAAU,iEACjB,+BAAC,SAAI,WAAU,gBACb;AAAA,kCAAC,WAAQ,SAAkB,YAAwB;AAAA,cACnD,oBAAC,QAAK,MAAM,KAAK,MAAM;AAAA,eACzB,GACF;AAAA,YACA,oBAAC,SAAI,WAAU,uDACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,QAAQ,KAAK;AAAA,gBACb;AAAA;AAAA,YACF,GACF;AAAA;AAAA;AAAA,MACF;AAAA,OACF,GAQF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1,26 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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");
|
|
5
38
|
const BreadCrumbs = ({
|
|
6
39
|
breadcrumbs
|
|
7
40
|
}) => {
|
|
8
|
-
return /* @__PURE__ */ jsx("nav", { className: "text-sm text-orange-100 text-muted-foreground mb-4", children: /* @__PURE__ */ jsxs("ol", { className: "list-reset flex space-x-2", children: [
|
|
9
|
-
/* @__PURE__ */ jsx(
|
|
10
|
-
/* @__PURE__ */ jsx("span", { children: "/" }),
|
|
11
|
-
/* @__PURE__ */ jsx(
|
|
41
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("nav", { className: "text-sm text-orange-100 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" }),
|
|
12
45
|
breadcrumbs?.map((breadcrumb, index) => {
|
|
13
46
|
if (!breadcrumb) {
|
|
14
47
|
return null;
|
|
15
48
|
}
|
|
16
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17
|
-
/* @__PURE__ */ jsx("span", { children: "/" }),
|
|
18
|
-
breadcrumb.url ? /* @__PURE__ */ jsx(
|
|
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 })
|
|
19
52
|
] }, index);
|
|
20
53
|
})
|
|
21
54
|
] }) });
|
|
22
55
|
};
|
|
23
|
-
export
|
|
56
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
57
|
+
0 && (module.exports = {
|
|
24
58
|
BreadCrumbs
|
|
25
|
-
};
|
|
59
|
+
});
|
|
26
60
|
//# sourceMappingURL=bread-crumbs.js.map
|
|
@@ -1 +1 @@
|
|
|
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-orange-100 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
|
|
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-orange-100 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,sDACb,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"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
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-orange-100 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.mjs.map
|
|
@@ -1 +1 @@
|
|
|
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-orange-100 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":"
|
|
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-orange-100 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,sDACb,+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,19 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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 folder_page_exports = {};
|
|
20
|
+
__export(folder_page_exports, {
|
|
21
|
+
FolderPage: () => FolderPage
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(folder_page_exports);
|
|
24
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
|
+
var import_post_preview = require("../post-preview");
|
|
26
|
+
var import_bread_crumbs = require("../bread-crumbs");
|
|
4
27
|
const FolderPage = ({
|
|
5
28
|
folder
|
|
6
29
|
}) => {
|
|
7
30
|
console.log("folder", JSON.stringify(folder, null, 2));
|
|
8
|
-
return /* @__PURE__ */ jsxs("div", { className: "max-w-6xl mx-auto px-4 py-10", children: [
|
|
9
|
-
/* @__PURE__ */ jsx(BreadCrumbs, {}),
|
|
10
|
-
/* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold mb-2", children: folder.name }),
|
|
11
|
-
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground max-w-2xl mb-8", children: folder.description || `Explore articles about ${folder.name}.` }),
|
|
12
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8", children: [
|
|
13
|
-
folder.posts.length === 0 && /* @__PURE__ */ jsx("div", { className: "text-muted-foreground", children: "No posts added yet" }),
|
|
31
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "max-w-6xl mx-auto px-4 py-10", children: [
|
|
32
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_bread_crumbs.BreadCrumbs, {}),
|
|
33
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "text-4xl font-bold mb-2", children: folder.name }),
|
|
34
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground max-w-2xl mb-8", children: folder.description || `Explore articles about ${folder.name}.` }),
|
|
35
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8", children: [
|
|
36
|
+
folder.posts.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-muted-foreground", children: "No posts added yet" }),
|
|
14
37
|
folder.posts.map((post) => {
|
|
15
38
|
console.log("post.image", post.image);
|
|
16
|
-
return /* @__PURE__ */ jsx(PostPreview, { post }, post.slug);
|
|
39
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_post_preview.PostPreview, { post }, post.slug);
|
|
17
40
|
})
|
|
18
41
|
] })
|
|
19
42
|
] });
|
|
@@ -31,7 +54,8 @@ function formatMinutes(description) {
|
|
|
31
54
|
const mins = Math.ceil(words / 200);
|
|
32
55
|
return `${mins} min read`;
|
|
33
56
|
}
|
|
34
|
-
export
|
|
57
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
58
|
+
0 && (module.exports = {
|
|
35
59
|
FolderPage
|
|
36
|
-
};
|
|
60
|
+
});
|
|
37
61
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/folder-page/index.tsx"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport { PostPreview } from \"../post-preview\";\nimport { BreadCrumbs } from \"../bread-crumbs\";\n\nexport const FolderPage = ({\n folder,\n}: {\n folder: Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"folder\" }\n >[\"data\"];\n}) => {\n console.log(\"folder\", JSON.stringify(folder, null, 2));\n return (\n <div className=\"max-w-6xl mx-auto px-4 py-10\">\n <BreadCrumbs />\n\n <h1 className=\"text-4xl font-bold mb-2\">{folder.name}</h1>\n <p className=\"text-muted-foreground max-w-2xl mb-8\">\n {folder.description || `Explore articles about ${folder.name}.`}\n </p>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8\">\n {folder.posts.length === 0 && (\n <div className=\"text-muted-foreground\">No posts added yet</div>\n )}\n {folder.posts.map((post) => {\n console.log(\"post.image\", post.image);\n return <PostPreview key={post.slug} post={post} />;\n })}\n </div>\n </div>\n );\n};\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString(\"en-GB\", {\n day: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n });\n}\n\nfunction formatMinutes(description: string | null) {\n // Fake estimate based on length of description\n if (!description) return \"5 min read\";\n const words = description.split(\" \").length;\n const mins = Math.ceil(words / 200);\n return `${mins} min read`;\n}\n"],"mappings":"AAeM
|
|
1
|
+
{"version":3,"sources":["../../../src/components/folder-page/index.tsx"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport { PostPreview } from \"../post-preview\";\nimport { BreadCrumbs } from \"../bread-crumbs\";\n\nexport const FolderPage = ({\n folder,\n}: {\n folder: Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"folder\" }\n >[\"data\"];\n}) => {\n console.log(\"folder\", JSON.stringify(folder, null, 2));\n return (\n <div className=\"max-w-6xl mx-auto px-4 py-10\">\n <BreadCrumbs />\n\n <h1 className=\"text-4xl font-bold mb-2\">{folder.name}</h1>\n <p className=\"text-muted-foreground max-w-2xl mb-8\">\n {folder.description || `Explore articles about ${folder.name}.`}\n </p>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8\">\n {folder.posts.length === 0 && (\n <div className=\"text-muted-foreground\">No posts added yet</div>\n )}\n {folder.posts.map((post) => {\n console.log(\"post.image\", post.image);\n return <PostPreview key={post.slug} post={post} />;\n })}\n </div>\n </div>\n );\n};\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString(\"en-GB\", {\n day: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n });\n}\n\nfunction formatMinutes(description: string | null) {\n // Fake estimate based on length of description\n if (!description) return \"5 min read\";\n const words = description.split(\" \").length;\n const mins = Math.ceil(words / 200);\n return `${mins} min read`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAeM;AAdN,0BAA4B;AAC5B,0BAA4B;AAErB,MAAM,aAAa,CAAC;AAAA,EACzB;AACF,MAKM;AACJ,UAAQ,IAAI,UAAU,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AACrD,SACE,6CAAC,SAAI,WAAU,gCACb;AAAA,gDAAC,mCAAY;AAAA,IAEb,4CAAC,QAAG,WAAU,2BAA2B,iBAAO,MAAK;AAAA,IACrD,4CAAC,OAAE,WAAU,wCACV,iBAAO,eAAe,0BAA0B,OAAO,IAAI,KAC9D;AAAA,IAEA,6CAAC,SAAI,WAAU,wDACZ;AAAA,aAAO,MAAM,WAAW,KACvB,4CAAC,SAAI,WAAU,yBAAwB,gCAAkB;AAAA,MAE1D,OAAO,MAAM,IAAI,CAAC,SAAS;AAC1B,gBAAQ,IAAI,cAAc,KAAK,KAAK;AACpC,eAAO,4CAAC,mCAA4B,QAAX,KAAK,IAAkB;AAAA,MAClD,CAAC;AAAA,OACH;AAAA,KACF;AAEJ;AAEA,SAAS,WAAW,SAAiB;AACnC,SAAO,IAAI,KAAK,OAAO,EAAE,mBAAmB,SAAS;AAAA,IACnD,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AACH;AAEA,SAAS,cAAc,aAA4B;AAEjD,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,QAAQ,YAAY,MAAM,GAAG,EAAE;AACrC,QAAM,OAAO,KAAK,KAAK,QAAQ,GAAG;AAClC,SAAO,GAAG,IAAI;AAChB;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PostPreview } from "../post-preview";
|
|
3
|
+
import { BreadCrumbs } from "../bread-crumbs";
|
|
4
|
+
const FolderPage = ({
|
|
5
|
+
folder
|
|
6
|
+
}) => {
|
|
7
|
+
console.log("folder", JSON.stringify(folder, null, 2));
|
|
8
|
+
return /* @__PURE__ */ jsxs("div", { className: "max-w-6xl mx-auto px-4 py-10", children: [
|
|
9
|
+
/* @__PURE__ */ jsx(BreadCrumbs, {}),
|
|
10
|
+
/* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold mb-2", children: folder.name }),
|
|
11
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground max-w-2xl mb-8", children: folder.description || `Explore articles about ${folder.name}.` }),
|
|
12
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8", children: [
|
|
13
|
+
folder.posts.length === 0 && /* @__PURE__ */ jsx("div", { className: "text-muted-foreground", children: "No posts added yet" }),
|
|
14
|
+
folder.posts.map((post) => {
|
|
15
|
+
console.log("post.image", post.image);
|
|
16
|
+
return /* @__PURE__ */ jsx(PostPreview, { post }, post.slug);
|
|
17
|
+
})
|
|
18
|
+
] })
|
|
19
|
+
] });
|
|
20
|
+
};
|
|
21
|
+
function formatDate(dateStr) {
|
|
22
|
+
return new Date(dateStr).toLocaleDateString("en-GB", {
|
|
23
|
+
day: "2-digit",
|
|
24
|
+
month: "short",
|
|
25
|
+
year: "numeric"
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function formatMinutes(description) {
|
|
29
|
+
if (!description) return "5 min read";
|
|
30
|
+
const words = description.split(" ").length;
|
|
31
|
+
const mins = Math.ceil(words / 200);
|
|
32
|
+
return `${mins} min read`;
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
FolderPage
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=index.mjs.map
|