@opinly/next 0.1.6 → 0.1.7

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.
Files changed (123) hide show
  1. package/dist/components/author-page/_helpers/json-ld.cjs +2 -0
  2. package/dist/components/author-page/_helpers/json-ld.cjs.map +1 -0
  3. package/dist/components/author-page/_helpers/json-ld.d.cts +2 -0
  4. package/dist/components/author-page/_helpers/json-ld.d.ts +2 -0
  5. package/dist/components/author-page/_helpers/json-ld.js +1 -0
  6. package/dist/components/author-page/_helpers/json-ld.js.map +1 -0
  7. package/dist/components/author-page/index.cjs +84 -0
  8. package/dist/components/author-page/index.cjs.map +1 -0
  9. package/dist/components/author-page/index.d.cts +10 -0
  10. package/dist/components/author-page/index.d.ts +10 -0
  11. package/dist/components/author-page/index.js +50 -0
  12. package/dist/components/author-page/index.js.map +1 -0
  13. package/dist/components/authors-page/index.cjs +106 -0
  14. package/dist/components/authors-page/index.cjs.map +1 -0
  15. package/dist/components/authors-page/index.d.cts +10 -0
  16. package/dist/components/authors-page/index.d.ts +10 -0
  17. package/dist/components/authors-page/index.js +72 -0
  18. package/dist/components/authors-page/index.js.map +1 -0
  19. package/dist/components/blog-post/_components/content.cjs +130 -0
  20. package/dist/components/blog-post/_components/content.cjs.map +1 -0
  21. package/dist/components/blog-post/_components/content.d.cts +10 -0
  22. package/dist/components/blog-post/_components/content.d.ts +10 -0
  23. package/dist/components/blog-post/_components/content.js +96 -0
  24. package/dist/components/blog-post/_components/content.js.map +1 -0
  25. package/dist/components/blog-post/_components/faq.cjs +39 -0
  26. package/dist/components/blog-post/_components/faq.cjs.map +1 -0
  27. package/dist/components/blog-post/_components/faq.d.cts +9 -0
  28. package/dist/components/blog-post/_components/faq.d.ts +9 -0
  29. package/dist/components/blog-post/_components/faq.js +15 -0
  30. package/dist/components/blog-post/_components/faq.js.map +1 -0
  31. package/dist/components/blog-post/_components/share.cjs +100 -0
  32. package/dist/components/blog-post/_components/share.cjs.map +1 -0
  33. package/dist/components/blog-post/_components/share.d.cts +9 -0
  34. package/dist/components/blog-post/_components/share.d.ts +9 -0
  35. package/dist/components/blog-post/_components/share.js +66 -0
  36. package/dist/components/blog-post/_components/share.js.map +1 -0
  37. package/dist/components/blog-post/_components/table-of-contents.cjs +82 -0
  38. package/dist/components/blog-post/_components/table-of-contents.cjs.map +1 -0
  39. package/dist/components/blog-post/_components/table-of-contents.d.cts +13 -0
  40. package/dist/components/blog-post/_components/table-of-contents.d.ts +13 -0
  41. package/dist/components/blog-post/_components/table-of-contents.js +48 -0
  42. package/dist/components/blog-post/_components/table-of-contents.js.map +1 -0
  43. package/dist/components/blog-post/_helpers/calc-reading-time.cjs +2 -0
  44. package/dist/components/blog-post/_helpers/calc-reading-time.cjs.map +1 -0
  45. package/dist/components/blog-post/_helpers/calc-reading-time.d.cts +2 -0
  46. package/dist/components/blog-post/_helpers/calc-reading-time.d.ts +2 -0
  47. package/dist/components/blog-post/_helpers/calc-reading-time.js +1 -0
  48. package/dist/components/blog-post/_helpers/calc-reading-time.js.map +1 -0
  49. package/dist/components/blog-post/_helpers/extract-headings.cjs +44 -0
  50. package/dist/components/blog-post/_helpers/extract-headings.cjs.map +1 -0
  51. package/dist/components/blog-post/_helpers/extract-headings.d.cts +8 -0
  52. package/dist/components/blog-post/_helpers/extract-headings.d.ts +8 -0
  53. package/dist/components/blog-post/_helpers/extract-headings.js +20 -0
  54. package/dist/components/blog-post/_helpers/extract-headings.js.map +1 -0
  55. package/dist/components/blog-post/_helpers/json-ld.cjs +170 -0
  56. package/dist/components/blog-post/_helpers/json-ld.cjs.map +1 -0
  57. package/dist/components/blog-post/_helpers/json-ld.d.cts +11 -0
  58. package/dist/components/blog-post/_helpers/json-ld.d.ts +11 -0
  59. package/dist/components/blog-post/_helpers/json-ld.js +143 -0
  60. package/dist/components/blog-post/_helpers/json-ld.js.map +1 -0
  61. package/dist/components/blog-post/_helpers/reading-time.cjs +50 -0
  62. package/dist/components/blog-post/_helpers/reading-time.cjs.map +1 -0
  63. package/dist/components/blog-post/_helpers/reading-time.d.cts +6 -0
  64. package/dist/components/blog-post/_helpers/reading-time.d.ts +6 -0
  65. package/dist/components/blog-post/_helpers/reading-time.js +25 -0
  66. package/dist/components/blog-post/_helpers/reading-time.js.map +1 -0
  67. package/dist/components/blog-post/_types/blog-post.cjs +17 -0
  68. package/dist/components/blog-post/_types/blog-post.cjs.map +1 -0
  69. package/dist/components/blog-post/_types/blog-post.d.cts +7 -0
  70. package/dist/components/blog-post/_types/blog-post.d.ts +7 -0
  71. package/dist/components/blog-post/_types/blog-post.js +1 -0
  72. package/dist/components/blog-post/_types/blog-post.js.map +1 -0
  73. package/dist/components/blog-post/_types/class-names.cjs +17 -0
  74. package/dist/components/blog-post/_types/class-names.cjs.map +1 -0
  75. package/dist/components/blog-post/_types/class-names.d.cts +12 -0
  76. package/dist/components/blog-post/_types/class-names.d.ts +12 -0
  77. package/dist/components/blog-post/_types/class-names.js +1 -0
  78. package/dist/components/blog-post/_types/class-names.js.map +1 -0
  79. package/dist/components/blog-post/index.cjs +149 -0
  80. package/dist/components/blog-post/index.cjs.map +1 -0
  81. package/dist/components/blog-post/index.d.cts +13 -0
  82. package/dist/components/blog-post/index.d.ts +13 -0
  83. package/dist/components/blog-post/index.js +119 -0
  84. package/dist/components/blog-post/index.js.map +1 -0
  85. package/dist/components/bread-crumbs.cjs +60 -0
  86. package/dist/components/bread-crumbs.cjs.map +1 -0
  87. package/dist/components/bread-crumbs.d.cts +10 -0
  88. package/dist/components/bread-crumbs.d.ts +10 -0
  89. package/dist/components/bread-crumbs.js +26 -0
  90. package/dist/components/bread-crumbs.js.map +1 -0
  91. package/dist/components/folder-page/index.cjs +61 -0
  92. package/dist/components/folder-page/index.cjs.map +1 -0
  93. package/dist/components/folder-page/index.d.cts +10 -0
  94. package/dist/components/folder-page/index.d.ts +10 -0
  95. package/dist/components/folder-page/index.js +37 -0
  96. package/dist/components/folder-page/index.js.map +1 -0
  97. package/dist/components/home-page.cjs +71 -0
  98. package/dist/components/home-page.cjs.map +1 -0
  99. package/dist/components/home-page.d.cts +12 -0
  100. package/dist/components/home-page.d.ts +12 -0
  101. package/dist/components/home-page.js +37 -0
  102. package/dist/components/home-page.js.map +1 -0
  103. package/dist/components/not-found.cjs +60 -0
  104. package/dist/components/not-found.cjs.map +1 -0
  105. package/dist/components/not-found.d.cts +5 -0
  106. package/dist/components/not-found.d.ts +5 -0
  107. package/dist/components/not-found.js +26 -0
  108. package/dist/components/not-found.js.map +1 -0
  109. package/dist/components/opinly-blog.cjs +56 -0
  110. package/dist/components/opinly-blog.cjs.map +1 -0
  111. package/dist/components/opinly-blog.d.cts +9 -0
  112. package/dist/components/opinly-blog.d.ts +9 -0
  113. package/dist/components/opinly-blog.js +32 -0
  114. package/dist/components/opinly-blog.js.map +1 -0
  115. package/dist/components/post-preview.cjs +93 -0
  116. package/dist/components/post-preview.cjs.map +1 -0
  117. package/dist/components/post-preview.d.cts +10 -0
  118. package/dist/components/post-preview.d.ts +10 -0
  119. package/dist/components/post-preview.js +59 -0
  120. package/dist/components/post-preview.js.map +1 -0
  121. package/dist/index.d.cts +4 -17
  122. package/dist/index.d.ts +4 -17
  123. package/package.json +21 -2
@@ -0,0 +1,71 @@
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 home_page_exports = {};
30
+ __export(home_page_exports, {
31
+ HomePage: () => HomePage
32
+ });
33
+ module.exports = __toCommonJS(home_page_exports);
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_link = __toESM(require("next/link"), 1);
36
+ var import_post_preview = require("./post-preview");
37
+ const HomePage = ({
38
+ homePage,
39
+ page
40
+ }) => {
41
+ const { posts, folders, count } = homePage;
42
+ console.log("posts", JSON.stringify(posts, null, 2));
43
+ const currentPage = page;
44
+ const totalPages = Math.ceil(count / 10);
45
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "max-w-7xl mx-auto px-4 py-10", children: [
46
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10", children: posts.map((post) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_post_preview.PostPreview, { post }, post.slug)) }),
47
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex justify-center items-center mt-10 gap-2", children: Array.from({ length: totalPages }, (_, i) => i + 1).map((p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
48
+ import_link.default,
49
+ {
50
+ href: `?page=${p}`,
51
+ className: `px-3 py-1 border rounded ${p === currentPage ? "bg-black text-white" : "hover:bg-gray-100 text-gray-700"}`,
52
+ children: p
53
+ },
54
+ p
55
+ )) }),
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-wrap gap-2 mb-10", children: folders.map((folder) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57
+ import_link.default,
58
+ {
59
+ href: `/blog/${folder.slug}`,
60
+ className: "px-4 py-1 bg-gray-100 text-sm rounded-full hover:bg-gray-200",
61
+ children: folder.title
62
+ },
63
+ folder.slug
64
+ )) })
65
+ ] });
66
+ };
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ HomePage
70
+ });
71
+ //# sourceMappingURL=home-page.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/home-page.tsx"],"sourcesContent":["import Link from \"next/link\";\n\nimport { Opinly } from \"@opinly/backend\";\nimport { PostPreview } from \"./post-preview\";\n\ntype HomePage = Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"home\" }\n>[\"data\"];\n\nexport const HomePage = ({\n homePage,\n page,\n}: {\n homePage: HomePage;\n page: number | null | undefined;\n}) => {\n const { posts, folders, count } = homePage;\n\n console.log(\"posts\", JSON.stringify(posts, null, 2));\n\n const currentPage = page;\n const totalPages = Math.ceil(count / 10);\n\n return (\n <div className=\"max-w-7xl mx-auto px-4 py-10\">\n {/* Posts Grid */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10\">\n {posts.map((post) => (\n <PostPreview key={post.slug} post={post} />\n ))}\n </div>\n\n {/* Pagination */}\n <div className=\"flex justify-center items-center mt-10 gap-2\">\n {Array.from({ length: totalPages }, (_, i) => i + 1).map((p) => (\n <Link\n key={p}\n href={`?page=${p}`}\n className={`px-3 py-1 border rounded ${\n p === currentPage\n ? \"bg-black text-white\"\n : \"hover:bg-gray-100 text-gray-700\"\n }`}\n >\n {p}\n </Link>\n ))}\n </div>\n\n {/* Folder tags */}\n <div className=\"flex flex-wrap gap-2 mb-10\">\n {folders.map((folder) => (\n <Link\n key={folder.slug}\n href={`/blog/${folder.slug}`}\n className=\"px-4 py-1 bg-gray-100 text-sm rounded-full hover:bg-gray-200\"\n >\n {folder.title}\n </Link>\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBI;AAzBJ,kBAAiB;AAGjB,0BAA4B;AAOrB,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AACF,MAGM;AACJ,QAAM,EAAE,OAAO,SAAS,MAAM,IAAI;AAElC,UAAQ,IAAI,SAAS,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAEnD,QAAM,cAAc;AACpB,QAAM,aAAa,KAAK,KAAK,QAAQ,EAAE;AAEvC,SACE,6CAAC,SAAI,WAAU,gCAEb;AAAA,gDAAC,SAAI,WAAU,yDACZ,gBAAM,IAAI,CAAC,SACV,4CAAC,mCAA4B,QAAX,KAAK,IAAkB,CAC1C,GACH;AAAA,IAGA,4CAAC,SAAI,WAAU,gDACZ,gBAAM,KAAK,EAAE,QAAQ,WAAW,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,MACxD;AAAA,MAAC,YAAAA;AAAA,MAAA;AAAA,QAEC,MAAM,SAAS,CAAC;AAAA,QAChB,WAAW,4BACT,MAAM,cACF,wBACA,iCACN;AAAA,QAEC;AAAA;AAAA,MARI;AAAA,IASP,CACD,GACH;AAAA,IAGA,4CAAC,SAAI,WAAU,8BACZ,kBAAQ,IAAI,CAAC,WACZ;AAAA,MAAC,YAAAA;AAAA,MAAA;AAAA,QAEC,MAAM,SAAS,OAAO,IAAI;AAAA,QAC1B,WAAU;AAAA,QAET,iBAAO;AAAA;AAAA,MAJH,OAAO;AAAA,IAKd,CACD,GACH;AAAA,KACF;AAEJ;","names":["Link"]}
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ type HomePage = Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
5
+ type: "home";
6
+ }>["data"];
7
+ declare const HomePage: ({ homePage, page, }: {
8
+ homePage: HomePage;
9
+ page: number | null | undefined;
10
+ }) => react_jsx_runtime.JSX.Element;
11
+
12
+ export { HomePage };
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ type HomePage = Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
5
+ type: "home";
6
+ }>["data"];
7
+ declare const HomePage: ({ homePage, page, }: {
8
+ homePage: HomePage;
9
+ page: number | null | undefined;
10
+ }) => react_jsx_runtime.JSX.Element;
11
+
12
+ export { HomePage };
@@ -0,0 +1,37 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import Link from "next/link";
3
+ import { PostPreview } from "./post-preview";
4
+ const HomePage = ({
5
+ homePage,
6
+ page
7
+ }) => {
8
+ const { posts, folders, count } = homePage;
9
+ console.log("posts", JSON.stringify(posts, null, 2));
10
+ const currentPage = page;
11
+ const totalPages = Math.ceil(count / 10);
12
+ return /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto px-4 py-10", children: [
13
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10", children: posts.map((post) => /* @__PURE__ */ jsx(PostPreview, { post }, post.slug)) }),
14
+ /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center mt-10 gap-2", children: Array.from({ length: totalPages }, (_, i) => i + 1).map((p) => /* @__PURE__ */ jsx(
15
+ Link,
16
+ {
17
+ href: `?page=${p}`,
18
+ className: `px-3 py-1 border rounded ${p === currentPage ? "bg-black text-white" : "hover:bg-gray-100 text-gray-700"}`,
19
+ children: p
20
+ },
21
+ p
22
+ )) }),
23
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 mb-10", children: folders.map((folder) => /* @__PURE__ */ jsx(
24
+ Link,
25
+ {
26
+ href: `/blog/${folder.slug}`,
27
+ className: "px-4 py-1 bg-gray-100 text-sm rounded-full hover:bg-gray-200",
28
+ children: folder.title
29
+ },
30
+ folder.slug
31
+ )) })
32
+ ] });
33
+ };
34
+ export {
35
+ HomePage
36
+ };
37
+ //# sourceMappingURL=home-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/home-page.tsx"],"sourcesContent":["import Link from \"next/link\";\n\nimport { Opinly } from \"@opinly/backend\";\nimport { PostPreview } from \"./post-preview\";\n\ntype HomePage = Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"home\" }\n>[\"data\"];\n\nexport const HomePage = ({\n homePage,\n page,\n}: {\n homePage: HomePage;\n page: number | null | undefined;\n}) => {\n const { posts, folders, count } = homePage;\n\n console.log(\"posts\", JSON.stringify(posts, null, 2));\n\n const currentPage = page;\n const totalPages = Math.ceil(count / 10);\n\n return (\n <div className=\"max-w-7xl mx-auto px-4 py-10\">\n {/* Posts Grid */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10\">\n {posts.map((post) => (\n <PostPreview key={post.slug} post={post} />\n ))}\n </div>\n\n {/* Pagination */}\n <div className=\"flex justify-center items-center mt-10 gap-2\">\n {Array.from({ length: totalPages }, (_, i) => i + 1).map((p) => (\n <Link\n key={p}\n href={`?page=${p}`}\n className={`px-3 py-1 border rounded ${\n p === currentPage\n ? \"bg-black text-white\"\n : \"hover:bg-gray-100 text-gray-700\"\n }`}\n >\n {p}\n </Link>\n ))}\n </div>\n\n {/* Folder tags */}\n <div className=\"flex flex-wrap gap-2 mb-10\">\n {folders.map((folder) => (\n <Link\n key={folder.slug}\n href={`/blog/${folder.slug}`}\n className=\"px-4 py-1 bg-gray-100 text-sm rounded-full hover:bg-gray-200\"\n >\n {folder.title}\n </Link>\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":"AAyBI,SAIM,KAJN;AAzBJ,OAAO,UAAU;AAGjB,SAAS,mBAAmB;AAOrB,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AACF,MAGM;AACJ,QAAM,EAAE,OAAO,SAAS,MAAM,IAAI;AAElC,UAAQ,IAAI,SAAS,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAEnD,QAAM,cAAc;AACpB,QAAM,aAAa,KAAK,KAAK,QAAQ,EAAE;AAEvC,SACE,qBAAC,SAAI,WAAU,gCAEb;AAAA,wBAAC,SAAI,WAAU,yDACZ,gBAAM,IAAI,CAAC,SACV,oBAAC,eAA4B,QAAX,KAAK,IAAkB,CAC1C,GACH;AAAA,IAGA,oBAAC,SAAI,WAAU,gDACZ,gBAAM,KAAK,EAAE,QAAQ,WAAW,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,MACxD;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM,SAAS,CAAC;AAAA,QAChB,WAAW,4BACT,MAAM,cACF,wBACA,iCACN;AAAA,QAEC;AAAA;AAAA,MARI;AAAA,IASP,CACD,GACH;AAAA,IAGA,oBAAC,SAAI,WAAU,8BACZ,kBAAQ,IAAI,CAAC,WACZ;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM,SAAS,OAAO,IAAI;AAAA,QAC1B,WAAU;AAAA,QAET,iBAAO;AAAA;AAAA,MAJH,OAAO;AAAA,IAKd,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,60 @@
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 not_found_exports = {};
30
+ __export(not_found_exports, {
31
+ OpinlyNotFound: () => OpinlyNotFound
32
+ });
33
+ module.exports = __toCommonJS(not_found_exports);
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_link = __toESM(require("next/link"), 1);
36
+ const OpinlyNotFound = () => {
37
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
38
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "bg-orange-600 py-10", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "max-w-7xl mx-auto px-4", children: [
39
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "text-4xl font-bold mb-2 leading-tight text-white", children: "Post Not Found" }),
40
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-sm mb-4 text-orange-100", children: "The post you're looking for doesn't exist or has been removed." })
41
+ ] }) }),
42
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex max-w-7xl mx-auto mt-10 gap-12", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("article", { className: "w-2/3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "prose max-w-none", children: [
43
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-gray-600", children: "You can try:" }),
44
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className: "list-disc pl-6 my-4", children: [
45
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: "Checking the URL for typos" }),
46
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { children: [
47
+ "Returning to the",
48
+ " ",
49
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/blog", className: "text-blue-600 underline", children: "blog homepage" })
50
+ ] }),
51
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: "Using the search function to find what you're looking for" })
52
+ ] })
53
+ ] }) }) })
54
+ ] });
55
+ };
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ OpinlyNotFound
59
+ });
60
+ //# sourceMappingURL=not-found.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/not-found.tsx"],"sourcesContent":["import Link from \"next/link\";\n\nexport const OpinlyNotFound = () => {\n return (\n <>\n <div className=\"bg-orange-600 py-10\">\n <div className=\"max-w-7xl mx-auto px-4\">\n <h1 className=\"text-4xl font-bold mb-2 leading-tight text-white\">\n Post Not Found\n </h1>\n <div className=\"text-sm mb-4 text-orange-100\">\n The post you're looking for doesn't exist or has been removed.\n </div>\n </div>\n </div>\n\n <div className=\"flex max-w-7xl mx-auto mt-10 gap-12\">\n <article className=\"w-2/3\">\n <div className=\"prose max-w-none\">\n <p className=\"text-gray-600\">You can try:</p>\n <ul className=\"list-disc pl-6 my-4\">\n <li>Checking the URL for typos</li>\n <li>\n Returning to the{\" \"}\n <Link href=\"/blog\" className=\"text-blue-600 underline\">\n blog homepage\n </Link>\n </li>\n <li>Using the search function to find what you're looking for</li>\n </ul>\n </div>\n </article>\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAII;AAJJ,kBAAiB;AAEV,MAAM,iBAAiB,MAAM;AAClC,SACE,4EACE;AAAA,gDAAC,SAAI,WAAU,uBACb,uDAAC,SAAI,WAAU,0BACb;AAAA,kDAAC,QAAG,WAAU,oDAAmD,4BAEjE;AAAA,MACA,4CAAC,SAAI,WAAU,gCAA+B,4EAE9C;AAAA,OACF,GACF;AAAA,IAEA,4CAAC,SAAI,WAAU,uCACb,sDAAC,aAAQ,WAAU,SACjB,uDAAC,SAAI,WAAU,oBACb;AAAA,kDAAC,OAAE,WAAU,iBAAgB,0BAAY;AAAA,MACzC,6CAAC,QAAG,WAAU,uBACZ;AAAA,oDAAC,QAAG,wCAA0B;AAAA,QAC9B,6CAAC,QAAG;AAAA;AAAA,UACe;AAAA,UACjB,4CAAC,YAAAA,SAAA,EAAK,MAAK,SAAQ,WAAU,2BAA0B,2BAEvD;AAAA,WACF;AAAA,QACA,4CAAC,QAAG,uEAAyD;AAAA,SAC/D;AAAA,OACF,GACF,GACF;AAAA,KACF;AAEJ;","names":["Link"]}
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare const OpinlyNotFound: () => react_jsx_runtime.JSX.Element;
4
+
5
+ export { OpinlyNotFound };
@@ -0,0 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare const OpinlyNotFound: () => react_jsx_runtime.JSX.Element;
4
+
5
+ export { OpinlyNotFound };
@@ -0,0 +1,26 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import Link from "next/link";
3
+ const OpinlyNotFound = () => {
4
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
5
+ /* @__PURE__ */ jsx("div", { className: "bg-orange-600 py-10", children: /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto px-4", children: [
6
+ /* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold mb-2 leading-tight text-white", children: "Post Not Found" }),
7
+ /* @__PURE__ */ jsx("div", { className: "text-sm mb-4 text-orange-100", children: "The post you're looking for doesn't exist or has been removed." })
8
+ ] }) }),
9
+ /* @__PURE__ */ jsx("div", { className: "flex max-w-7xl mx-auto mt-10 gap-12", children: /* @__PURE__ */ jsx("article", { className: "w-2/3", children: /* @__PURE__ */ jsxs("div", { className: "prose max-w-none", children: [
10
+ /* @__PURE__ */ jsx("p", { className: "text-gray-600", children: "You can try:" }),
11
+ /* @__PURE__ */ jsxs("ul", { className: "list-disc pl-6 my-4", children: [
12
+ /* @__PURE__ */ jsx("li", { children: "Checking the URL for typos" }),
13
+ /* @__PURE__ */ jsxs("li", { children: [
14
+ "Returning to the",
15
+ " ",
16
+ /* @__PURE__ */ jsx(Link, { href: "/blog", className: "text-blue-600 underline", children: "blog homepage" })
17
+ ] }),
18
+ /* @__PURE__ */ jsx("li", { children: "Using the search function to find what you're looking for" })
19
+ ] })
20
+ ] }) }) })
21
+ ] });
22
+ };
23
+ export {
24
+ OpinlyNotFound
25
+ };
26
+ //# sourceMappingURL=not-found.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/not-found.tsx"],"sourcesContent":["import Link from \"next/link\";\n\nexport const OpinlyNotFound = () => {\n return (\n <>\n <div className=\"bg-orange-600 py-10\">\n <div className=\"max-w-7xl mx-auto px-4\">\n <h1 className=\"text-4xl font-bold mb-2 leading-tight text-white\">\n Post Not Found\n </h1>\n <div className=\"text-sm mb-4 text-orange-100\">\n The post you're looking for doesn't exist or has been removed.\n </div>\n </div>\n </div>\n\n <div className=\"flex max-w-7xl mx-auto mt-10 gap-12\">\n <article className=\"w-2/3\">\n <div className=\"prose max-w-none\">\n <p className=\"text-gray-600\">You can try:</p>\n <ul className=\"list-disc pl-6 my-4\">\n <li>Checking the URL for typos</li>\n <li>\n Returning to the{\" \"}\n <Link href=\"/blog\" className=\"text-blue-600 underline\">\n blog homepage\n </Link>\n </li>\n <li>Using the search function to find what you're looking for</li>\n </ul>\n </div>\n </article>\n </div>\n </>\n );\n};\n"],"mappings":"AAII,mBAGM,KADF,YAFJ;AAJJ,OAAO,UAAU;AAEV,MAAM,iBAAiB,MAAM;AAClC,SACE,iCACE;AAAA,wBAAC,SAAI,WAAU,uBACb,+BAAC,SAAI,WAAU,0BACb;AAAA,0BAAC,QAAG,WAAU,oDAAmD,4BAEjE;AAAA,MACA,oBAAC,SAAI,WAAU,gCAA+B,4EAE9C;AAAA,OACF,GACF;AAAA,IAEA,oBAAC,SAAI,WAAU,uCACb,8BAAC,aAAQ,WAAU,SACjB,+BAAC,SAAI,WAAU,oBACb;AAAA,0BAAC,OAAE,WAAU,iBAAgB,0BAAY;AAAA,MACzC,qBAAC,QAAG,WAAU,uBACZ;AAAA,4BAAC,QAAG,wCAA0B;AAAA,QAC9B,qBAAC,QAAG;AAAA;AAAA,UACe;AAAA,UACjB,oBAAC,QAAK,MAAK,SAAQ,WAAU,2BAA0B,2BAEvD;AAAA,WACF;AAAA,QACA,oBAAC,QAAG,uEAAyD;AAAA,SAC/D;AAAA,OACF,GACF,GACF;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,56 @@
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 opinly_blog_exports = {};
20
+ __export(opinly_blog_exports, {
21
+ OpinlyBlog: () => OpinlyBlog
22
+ });
23
+ module.exports = __toCommonJS(opinly_blog_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_blog_post = require("./blog-post");
26
+ var import_folder_page = require("./folder-page");
27
+ var import_home_page = require("./home-page");
28
+ var import_author_page = require("./author-page");
29
+ var import_not_found = require("./not-found");
30
+ var import_authors_page = require("./authors-page");
31
+ const OpinlyBlog = ({
32
+ blog,
33
+ page
34
+ }) => {
35
+ if (blog.type === "not-found") {
36
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_not_found.OpinlyNotFound, {});
37
+ }
38
+ if (blog.type === "home") {
39
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_home_page.HomePage, { homePage: blog.data, page });
40
+ }
41
+ if (blog.type === "post") {
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_blog_post.BlogPost, { post: blog.data });
43
+ }
44
+ if (blog.type === "author") {
45
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_author_page.AuthorPage, { author: blog.data });
46
+ }
47
+ if (blog.type === "authors") {
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_authors_page.AuthorsPage, { authors: blog.data });
49
+ }
50
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_folder_page.FolderPage, { folder: blog.data });
51
+ };
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ OpinlyBlog
55
+ });
56
+ //# sourceMappingURL=opinly-blog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/opinly-blog.tsx"],"sourcesContent":["import { BlogPost } from \"./blog-post\";\nimport { FolderPage } from \"./folder-page\";\nimport { Opinly } from \"@opinly/backend\";\nimport { HomePage } from \"./home-page\";\nimport { AuthorPage } from \"./author-page\";\nimport { OpinlyNotFound } from \"./not-found\";\nimport { AuthorsPage } from \"./authors-page\";\n\nexport const OpinlyBlog = ({\n blog,\n page,\n}: {\n blog: Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>;\n page: number | null | undefined;\n}) => {\n if (blog.type === \"not-found\") {\n return <OpinlyNotFound />;\n }\n\n if (blog.type === \"home\") {\n return <HomePage homePage={blog.data} page={page} />;\n }\n\n if (blog.type === \"post\") {\n return <BlogPost post={blog.data} />;\n }\n\n if (blog.type === \"author\") {\n return <AuthorPage author={blog.data} />;\n }\n\n if (blog.type === \"authors\") {\n return <AuthorsPage authors={blog.data} />;\n }\n\n return <FolderPage folder={blog.data} />;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBW;AAhBX,uBAAyB;AACzB,yBAA2B;AAE3B,uBAAyB;AACzB,yBAA2B;AAC3B,uBAA+B;AAC/B,0BAA4B;AAErB,MAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AACF,MAGM;AACJ,MAAI,KAAK,SAAS,aAAa;AAC7B,WAAO,4CAAC,mCAAe;AAAA,EACzB;AAEA,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,4CAAC,6BAAS,UAAU,KAAK,MAAM,MAAY;AAAA,EACpD;AAEA,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,4CAAC,6BAAS,MAAM,KAAK,MAAM;AAAA,EACpC;AAEA,MAAI,KAAK,SAAS,UAAU;AAC1B,WAAO,4CAAC,iCAAW,QAAQ,KAAK,MAAM;AAAA,EACxC;AAEA,MAAI,KAAK,SAAS,WAAW;AAC3B,WAAO,4CAAC,mCAAY,SAAS,KAAK,MAAM;AAAA,EAC1C;AAEA,SAAO,4CAAC,iCAAW,QAAQ,KAAK,MAAM;AACxC;","names":[]}
@@ -0,0 +1,9 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ declare const OpinlyBlog: ({ blog, page, }: {
5
+ blog: Awaited<ReturnType<Opinly["content"]["blog"]>>;
6
+ page: number | null | undefined;
7
+ }) => react_jsx_runtime.JSX.Element;
8
+
9
+ export { OpinlyBlog };
@@ -0,0 +1,9 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ declare const OpinlyBlog: ({ blog, page, }: {
5
+ blog: Awaited<ReturnType<Opinly["content"]["blog"]>>;
6
+ page: number | null | undefined;
7
+ }) => react_jsx_runtime.JSX.Element;
8
+
9
+ export { OpinlyBlog };
@@ -0,0 +1,32 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { BlogPost } from "./blog-post";
3
+ import { FolderPage } from "./folder-page";
4
+ import { HomePage } from "./home-page";
5
+ import { AuthorPage } from "./author-page";
6
+ import { OpinlyNotFound } from "./not-found";
7
+ import { AuthorsPage } from "./authors-page";
8
+ const OpinlyBlog = ({
9
+ blog,
10
+ page
11
+ }) => {
12
+ if (blog.type === "not-found") {
13
+ return /* @__PURE__ */ jsx(OpinlyNotFound, {});
14
+ }
15
+ if (blog.type === "home") {
16
+ return /* @__PURE__ */ jsx(HomePage, { homePage: blog.data, page });
17
+ }
18
+ if (blog.type === "post") {
19
+ return /* @__PURE__ */ jsx(BlogPost, { post: blog.data });
20
+ }
21
+ if (blog.type === "author") {
22
+ return /* @__PURE__ */ jsx(AuthorPage, { author: blog.data });
23
+ }
24
+ if (blog.type === "authors") {
25
+ return /* @__PURE__ */ jsx(AuthorsPage, { authors: blog.data });
26
+ }
27
+ return /* @__PURE__ */ jsx(FolderPage, { folder: blog.data });
28
+ };
29
+ export {
30
+ OpinlyBlog
31
+ };
32
+ //# sourceMappingURL=opinly-blog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/opinly-blog.tsx"],"sourcesContent":["import { BlogPost } from \"./blog-post\";\nimport { FolderPage } from \"./folder-page\";\nimport { Opinly } from \"@opinly/backend\";\nimport { HomePage } from \"./home-page\";\nimport { AuthorPage } from \"./author-page\";\nimport { OpinlyNotFound } from \"./not-found\";\nimport { AuthorsPage } from \"./authors-page\";\n\nexport const OpinlyBlog = ({\n blog,\n page,\n}: {\n blog: Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>;\n page: number | null | undefined;\n}) => {\n if (blog.type === \"not-found\") {\n return <OpinlyNotFound />;\n }\n\n if (blog.type === \"home\") {\n return <HomePage homePage={blog.data} page={page} />;\n }\n\n if (blog.type === \"post\") {\n return <BlogPost post={blog.data} />;\n }\n\n if (blog.type === \"author\") {\n return <AuthorPage author={blog.data} />;\n }\n\n if (blog.type === \"authors\") {\n return <AuthorsPage authors={blog.data} />;\n }\n\n return <FolderPage folder={blog.data} />;\n};\n"],"mappings":"AAgBW;AAhBX,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAE3B,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAErB,MAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AACF,MAGM;AACJ,MAAI,KAAK,SAAS,aAAa;AAC7B,WAAO,oBAAC,kBAAe;AAAA,EACzB;AAEA,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,oBAAC,YAAS,UAAU,KAAK,MAAM,MAAY;AAAA,EACpD;AAEA,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,oBAAC,YAAS,MAAM,KAAK,MAAM;AAAA,EACpC;AAEA,MAAI,KAAK,SAAS,UAAU;AAC1B,WAAO,oBAAC,cAAW,QAAQ,KAAK,MAAM;AAAA,EACxC;AAEA,MAAI,KAAK,SAAS,WAAW;AAC3B,WAAO,oBAAC,eAAY,SAAS,KAAK,MAAM;AAAA,EAC1C;AAEA,SAAO,oBAAC,cAAW,QAAQ,KAAK,MAAM;AACxC;","names":[]}
@@ -0,0 +1,93 @@
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 post_preview_exports = {};
30
+ __export(post_preview_exports, {
31
+ PostPreview: () => PostPreview
32
+ });
33
+ module.exports = __toCommonJS(post_preview_exports);
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_link = __toESM(require("next/link"), 1);
36
+ var import_image = __toESM(require("next/image"), 1);
37
+ var import_sdk_config = require("../sdk-config");
38
+ var import_images = require("../utils/images");
39
+ var import_dates = require("../utils/dates");
40
+ const PostPreview = ({
41
+ post
42
+ }) => {
43
+ const postSlug = `${import_sdk_config.opinlyConfig.blogPrefix}/${post.folder?.slug ? `${post.folder.slug}/` : ""}${post.slug}`;
44
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
45
+ post.image?.fileKey && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: postSlug, className: "group", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative w-full h-48 mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
+ import_image.default,
47
+ {
48
+ src: `${import_sdk_config.opinlyConfig.imagesPrefix}/${(0, import_images.replaceImageNameSpace)(post.image.fileKey)}`,
49
+ alt: post.title,
50
+ fill: true,
51
+ className: "object-cover rounded-lg"
52
+ }
53
+ ) }) }, post.slug),
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-sm text-muted-foreground mb-1", children: [
55
+ post.folder?.name && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57
+ import_link.default,
58
+ {
59
+ href: `${import_sdk_config.opinlyConfig.blogPrefix}/${post.folder.slug}`,
60
+ className: "hover:underline",
61
+ children: post.folder.name
62
+ }
63
+ ),
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "mx-1", children: "\xB7" })
65
+ ] }),
66
+ " ",
67
+ (0, import_dates.formatDate)(post.firstPublishedAt)
68
+ ] }),
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: postSlug, className: "group", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-lg font-semibold leading-snug group-hover:underline", children: post.title }) }, post.slug),
70
+ post.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-gray-600 mt-1 line-clamp-2", children: post.description }),
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-xs text-gray-500 mt-2", children: [
72
+ post.author && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
74
+ import_link.default,
75
+ {
76
+ href: `${import_sdk_config.opinlyConfig.blogPrefix}/authors/${post.author.slug}`,
77
+ className: "font-medium hover:underline",
78
+ children: post.author?.name
79
+ }
80
+ ),
81
+ " ",
82
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "mx-1", children: "\xB7" })
83
+ ] }),
84
+ " ",
85
+ (0, import_dates.formatDate)(post.firstPublishedAt)
86
+ ] })
87
+ ] });
88
+ };
89
+ // Annotate the CommonJS export names for ESM import in node:
90
+ 0 && (module.exports = {
91
+ PostPreview
92
+ });
93
+ //# sourceMappingURL=post-preview.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/post-preview.tsx"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport Link from \"next/link\";\nimport Image from \"next/image\";\nimport { opinlyConfig } from \"../sdk-config\";\nimport { replaceImageNameSpace } from \"../utils/images\";\nimport { formatDate } from \"../utils/dates\";\n\nexport const PostPreview = ({\n post,\n}: {\n post: Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"home\" }\n >[\"data\"][\"posts\"][number];\n}) => {\n const postSlug = `${opinlyConfig.blogPrefix}/${post.folder?.slug ? `${post.folder.slug}/` : \"\"}${post.slug}`;\n\n return (\n <div>\n {post.image?.fileKey && (\n <Link key={post.slug} href={postSlug} className=\"group\">\n <div className=\"relative w-full h-48 mb-4\">\n <Image\n src={`${opinlyConfig.imagesPrefix}/${replaceImageNameSpace(post.image.fileKey)}`}\n alt={post.title}\n fill\n className=\"object-cover rounded-lg\"\n />\n </div>\n </Link>\n )}\n <div className=\"text-sm text-muted-foreground mb-1\">\n {post.folder?.name && (\n <>\n <Link\n href={`${opinlyConfig.blogPrefix}/${post.folder.slug}`}\n className=\"hover:underline\"\n >\n {post.folder.name}\n </Link>\n <span className=\"mx-1\">·</span>\n </>\n )}{\" \"}\n {formatDate(post.firstPublishedAt as string)}\n </div>\n <Link key={post.slug} href={postSlug} className=\"group\">\n <h2 className=\"text-lg font-semibold leading-snug group-hover:underline\">\n {post.title}\n </h2>\n </Link>\n\n {post.description && (\n <p className=\"text-sm text-gray-600 mt-1 line-clamp-2\">\n {post.description}\n </p>\n )}\n <div className=\"text-xs text-gray-500 mt-2\">\n {post.author && (\n <>\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author.slug}`}\n className=\"font-medium hover:underline\"\n >\n {post.author?.name}\n </Link>{\" \"}\n <span className=\"mx-1\">·</span>\n </>\n )}{\" \"}\n {formatDate(post.firstPublishedAt as string)}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBY;AArBZ,kBAAiB;AACjB,mBAAkB;AAClB,wBAA6B;AAC7B,oBAAsC;AACtC,mBAA2B;AAEpB,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MAKM;AACJ,QAAM,WAAW,GAAG,+BAAa,UAAU,IAAI,KAAK,QAAQ,OAAO,GAAG,KAAK,OAAO,IAAI,MAAM,EAAE,GAAG,KAAK,IAAI;AAE1G,SACE,6CAAC,SACE;AAAA,SAAK,OAAO,WACX,4CAAC,YAAAA,SAAA,EAAqB,MAAM,UAAU,WAAU,SAC9C,sDAAC,SAAI,WAAU,6BACb;AAAA,MAAC,aAAAC;AAAA,MAAA;AAAA,QACC,KAAK,GAAG,+BAAa,YAAY,QAAI,qCAAsB,KAAK,MAAM,OAAO,CAAC;AAAA,QAC9E,KAAK,KAAK;AAAA,QACV,MAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ,GACF,KARS,KAAK,IAShB;AAAA,IAEF,6CAAC,SAAI,WAAU,sCACZ;AAAA,WAAK,QAAQ,QACZ,4EACE;AAAA;AAAA,UAAC,YAAAD;AAAA,UAAA;AAAA,YACC,MAAM,GAAG,+BAAa,UAAU,IAAI,KAAK,OAAO,IAAI;AAAA,YACpD,WAAU;AAAA,YAET,eAAK,OAAO;AAAA;AAAA,QACf;AAAA,QACA,4CAAC,UAAK,WAAU,QAAO,kBAAC;AAAA,SAC1B;AAAA,MACC;AAAA,UACF,yBAAW,KAAK,gBAA0B;AAAA,OAC7C;AAAA,IACA,4CAAC,YAAAA,SAAA,EAAqB,MAAM,UAAU,WAAU,SAC9C,sDAAC,QAAG,WAAU,4DACX,eAAK,OACR,KAHS,KAAK,IAIhB;AAAA,IAEC,KAAK,eACJ,4CAAC,OAAE,WAAU,2CACV,eAAK,aACR;AAAA,IAEF,6CAAC,SAAI,WAAU,8BACZ;AAAA,WAAK,UACJ,4EACE;AAAA;AAAA,UAAC,YAAAA;AAAA,UAAA;AAAA,YACC,MAAM,GAAG,+BAAa,UAAU,YAAY,KAAK,OAAO,IAAI;AAAA,YAC5D,WAAU;AAAA,YAET,eAAK,QAAQ;AAAA;AAAA,QAChB;AAAA,QAAQ;AAAA,QACR,4CAAC,UAAK,WAAU,QAAO,kBAAC;AAAA,SAC1B;AAAA,MACC;AAAA,UACF,yBAAW,KAAK,gBAA0B;AAAA,OAC7C;AAAA,KACF;AAEJ;","names":["Link","Image"]}
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ declare const PostPreview: ({ post, }: {
5
+ post: Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
6
+ type: "home";
7
+ }>["data"]["posts"][number];
8
+ }) => react_jsx_runtime.JSX.Element;
9
+
10
+ export { PostPreview };
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ declare const PostPreview: ({ post, }: {
5
+ post: Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
6
+ type: "home";
7
+ }>["data"]["posts"][number];
8
+ }) => react_jsx_runtime.JSX.Element;
9
+
10
+ export { PostPreview };
@@ -0,0 +1,59 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import Link from "next/link";
3
+ import Image from "next/image";
4
+ import { opinlyConfig } from "../sdk-config";
5
+ import { replaceImageNameSpace } from "../utils/images";
6
+ import { formatDate } from "../utils/dates";
7
+ const PostPreview = ({
8
+ post
9
+ }) => {
10
+ const postSlug = `${opinlyConfig.blogPrefix}/${post.folder?.slug ? `${post.folder.slug}/` : ""}${post.slug}`;
11
+ return /* @__PURE__ */ jsxs("div", { children: [
12
+ post.image?.fileKey && /* @__PURE__ */ jsx(Link, { href: postSlug, className: "group", children: /* @__PURE__ */ jsx("div", { className: "relative w-full h-48 mb-4", children: /* @__PURE__ */ jsx(
13
+ Image,
14
+ {
15
+ src: `${opinlyConfig.imagesPrefix}/${replaceImageNameSpace(post.image.fileKey)}`,
16
+ alt: post.title,
17
+ fill: true,
18
+ className: "object-cover rounded-lg"
19
+ }
20
+ ) }) }, post.slug),
21
+ /* @__PURE__ */ jsxs("div", { className: "text-sm text-muted-foreground mb-1", children: [
22
+ post.folder?.name && /* @__PURE__ */ jsxs(Fragment, { children: [
23
+ /* @__PURE__ */ jsx(
24
+ Link,
25
+ {
26
+ href: `${opinlyConfig.blogPrefix}/${post.folder.slug}`,
27
+ className: "hover:underline",
28
+ children: post.folder.name
29
+ }
30
+ ),
31
+ /* @__PURE__ */ jsx("span", { className: "mx-1", children: "\xB7" })
32
+ ] }),
33
+ " ",
34
+ formatDate(post.firstPublishedAt)
35
+ ] }),
36
+ /* @__PURE__ */ jsx(Link, { href: postSlug, className: "group", children: /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold leading-snug group-hover:underline", children: post.title }) }, post.slug),
37
+ post.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-600 mt-1 line-clamp-2", children: post.description }),
38
+ /* @__PURE__ */ jsxs("div", { className: "text-xs text-gray-500 mt-2", children: [
39
+ post.author && /* @__PURE__ */ jsxs(Fragment, { children: [
40
+ /* @__PURE__ */ jsx(
41
+ Link,
42
+ {
43
+ href: `${opinlyConfig.blogPrefix}/authors/${post.author.slug}`,
44
+ className: "font-medium hover:underline",
45
+ children: post.author?.name
46
+ }
47
+ ),
48
+ " ",
49
+ /* @__PURE__ */ jsx("span", { className: "mx-1", children: "\xB7" })
50
+ ] }),
51
+ " ",
52
+ formatDate(post.firstPublishedAt)
53
+ ] })
54
+ ] });
55
+ };
56
+ export {
57
+ PostPreview
58
+ };
59
+ //# sourceMappingURL=post-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/post-preview.tsx"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport Link from \"next/link\";\nimport Image from \"next/image\";\nimport { opinlyConfig } from \"../sdk-config\";\nimport { replaceImageNameSpace } from \"../utils/images\";\nimport { formatDate } from \"../utils/dates\";\n\nexport const PostPreview = ({\n post,\n}: {\n post: Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"home\" }\n >[\"data\"][\"posts\"][number];\n}) => {\n const postSlug = `${opinlyConfig.blogPrefix}/${post.folder?.slug ? `${post.folder.slug}/` : \"\"}${post.slug}`;\n\n return (\n <div>\n {post.image?.fileKey && (\n <Link key={post.slug} href={postSlug} className=\"group\">\n <div className=\"relative w-full h-48 mb-4\">\n <Image\n src={`${opinlyConfig.imagesPrefix}/${replaceImageNameSpace(post.image.fileKey)}`}\n alt={post.title}\n fill\n className=\"object-cover rounded-lg\"\n />\n </div>\n </Link>\n )}\n <div className=\"text-sm text-muted-foreground mb-1\">\n {post.folder?.name && (\n <>\n <Link\n href={`${opinlyConfig.blogPrefix}/${post.folder.slug}`}\n className=\"hover:underline\"\n >\n {post.folder.name}\n </Link>\n <span className=\"mx-1\">·</span>\n </>\n )}{\" \"}\n {formatDate(post.firstPublishedAt as string)}\n </div>\n <Link key={post.slug} href={postSlug} className=\"group\">\n <h2 className=\"text-lg font-semibold leading-snug group-hover:underline\">\n {post.title}\n </h2>\n </Link>\n\n {post.description && (\n <p className=\"text-sm text-gray-600 mt-1 line-clamp-2\">\n {post.description}\n </p>\n )}\n <div className=\"text-xs text-gray-500 mt-2\">\n {post.author && (\n <>\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author.slug}`}\n className=\"font-medium hover:underline\"\n >\n {post.author?.name}\n </Link>{\" \"}\n <span className=\"mx-1\">·</span>\n </>\n )}{\" \"}\n {formatDate(post.firstPublishedAt as string)}\n </div>\n </div>\n );\n};\n"],"mappings":"AAsBY,SAWF,UAXE,KAWF,YAXE;AArBZ,OAAO,UAAU;AACjB,OAAO,WAAW;AAClB,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AACtC,SAAS,kBAAkB;AAEpB,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MAKM;AACJ,QAAM,WAAW,GAAG,aAAa,UAAU,IAAI,KAAK,QAAQ,OAAO,GAAG,KAAK,OAAO,IAAI,MAAM,EAAE,GAAG,KAAK,IAAI;AAE1G,SACE,qBAAC,SACE;AAAA,SAAK,OAAO,WACX,oBAAC,QAAqB,MAAM,UAAU,WAAU,SAC9C,8BAAC,SAAI,WAAU,6BACb;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,GAAG,aAAa,YAAY,IAAI,sBAAsB,KAAK,MAAM,OAAO,CAAC;AAAA,QAC9E,KAAK,KAAK;AAAA,QACV,MAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ,GACF,KARS,KAAK,IAShB;AAAA,IAEF,qBAAC,SAAI,WAAU,sCACZ;AAAA,WAAK,QAAQ,QACZ,iCACE;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,aAAa,UAAU,IAAI,KAAK,OAAO,IAAI;AAAA,YACpD,WAAU;AAAA,YAET,eAAK,OAAO;AAAA;AAAA,QACf;AAAA,QACA,oBAAC,UAAK,WAAU,QAAO,kBAAC;AAAA,SAC1B;AAAA,MACC;AAAA,MACF,WAAW,KAAK,gBAA0B;AAAA,OAC7C;AAAA,IACA,oBAAC,QAAqB,MAAM,UAAU,WAAU,SAC9C,8BAAC,QAAG,WAAU,4DACX,eAAK,OACR,KAHS,KAAK,IAIhB;AAAA,IAEC,KAAK,eACJ,oBAAC,OAAE,WAAU,2CACV,eAAK,aACR;AAAA,IAEF,qBAAC,SAAI,WAAU,8BACZ;AAAA,WAAK,UACJ,iCACE;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,GAAG,aAAa,UAAU,YAAY,KAAK,OAAO,IAAI;AAAA,YAC5D,WAAU;AAAA,YAET,eAAK,QAAQ;AAAA;AAAA,QAChB;AAAA,QAAQ;AAAA,QACR,oBAAC,UAAK,WAAU,QAAO,kBAAC;AAAA,SAC1B;AAAA,MACC;AAAA,MACF,WAAW,KAAK,gBAA0B;AAAA,OAC7C;AAAA,KACF;AAEJ;","names":[]}
package/dist/index.d.cts CHANGED
@@ -1,17 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Opinly } from '@opinly/backend';
3
-
4
- declare const OpinlyBlog: ({ blog, page, }: {
5
- blog: Awaited<ReturnType<Opinly["content"]["blog"]>>;
6
- page: number | null | undefined;
7
- }) => react_jsx_runtime.JSX.Element;
8
-
9
- type HomePage = Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
10
- type: "home";
11
- }>["data"];
12
- declare const HomePage: ({ homePage, page, }: {
13
- homePage: HomePage;
14
- page: number | null | undefined;
15
- }) => react_jsx_runtime.JSX.Element;
16
-
17
- export { HomePage, OpinlyBlog };
1
+ export { OpinlyBlog } from './components/opinly-blog.cjs';
2
+ export { HomePage } from './components/home-page.cjs';
3
+ import 'react/jsx-runtime';
4
+ import '@opinly/backend';