@opinly/next 0.1.8 → 0.1.10

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 (104) hide show
  1. package/dist/components/author-page/index.cjs +2 -3
  2. package/dist/components/author-page/index.cjs.map +1 -1
  3. package/dist/components/author-page/index.js +2 -3
  4. package/dist/components/author-page/index.js.map +1 -1
  5. package/dist/components/authors-page/index.cjs +2 -3
  6. package/dist/components/authors-page/index.cjs.map +1 -1
  7. package/dist/components/authors-page/index.js +2 -3
  8. package/dist/components/authors-page/index.js.map +1 -1
  9. package/dist/components/blog-post/_components/content.cjs +18 -1
  10. package/dist/components/blog-post/_components/content.cjs.map +1 -1
  11. package/dist/components/blog-post/_components/content.js +18 -1
  12. package/dist/components/blog-post/_components/content.js.map +1 -1
  13. package/dist/components/blog-post/_components/share.cjs +1 -1
  14. package/dist/components/blog-post/_components/share.cjs.map +1 -1
  15. package/dist/components/blog-post/_components/share.js +1 -1
  16. package/dist/components/blog-post/_components/share.js.map +1 -1
  17. package/dist/components/blog-post/_components/table-of-contents.cjs +3 -3
  18. package/dist/components/blog-post/_components/table-of-contents.cjs.map +1 -1
  19. package/dist/components/blog-post/_components/table-of-contents.js +3 -3
  20. package/dist/components/blog-post/_components/table-of-contents.js.map +1 -1
  21. package/dist/components/blog-post/_helpers/json-ld.cjs +2 -3
  22. package/dist/components/blog-post/_helpers/json-ld.cjs.map +1 -1
  23. package/dist/components/blog-post/_helpers/json-ld.js +2 -3
  24. package/dist/components/blog-post/_helpers/json-ld.js.map +1 -1
  25. package/dist/components/blog-post/index.cjs +1 -1
  26. package/dist/components/blog-post/index.cjs.map +1 -1
  27. package/dist/components/blog-post/index.js +1 -1
  28. package/dist/components/blog-post/index.js.map +1 -1
  29. package/dist/components/bread-crumbs.cjs +1 -1
  30. package/dist/components/bread-crumbs.cjs.map +1 -1
  31. package/dist/components/bread-crumbs.js +1 -1
  32. package/dist/components/bread-crumbs.js.map +1 -1
  33. package/dist/components/home-page/folders.cjs +98 -0
  34. package/dist/components/home-page/folders.cjs.map +1 -0
  35. package/dist/components/home-page/folders.d.cts +9 -0
  36. package/dist/components/home-page/folders.d.ts +9 -0
  37. package/dist/components/home-page/folders.js +63 -0
  38. package/dist/components/home-page/folders.js.map +1 -0
  39. package/dist/components/home-page/index.cjs +44 -0
  40. package/dist/components/home-page/index.cjs.map +1 -0
  41. package/dist/components/home-page/index.d.cts +11 -0
  42. package/dist/components/home-page/index.d.ts +11 -0
  43. package/dist/components/home-page/index.js +20 -0
  44. package/dist/components/home-page/index.js.map +1 -0
  45. package/dist/components/{home-page.cjs → home-page/pagination.cjs} +48 -28
  46. package/dist/components/home-page/pagination.cjs.map +1 -0
  47. package/dist/components/home-page/pagination.d.cts +10 -0
  48. package/dist/components/home-page/pagination.d.ts +10 -0
  49. package/dist/components/home-page/pagination.js +57 -0
  50. package/dist/components/home-page/pagination.js.map +1 -0
  51. package/dist/components/home-page/top-posts.cjs +52 -0
  52. package/dist/components/home-page/top-posts.cjs.map +1 -0
  53. package/dist/components/home-page/top-posts.d.cts +9 -0
  54. package/dist/components/home-page/top-posts.d.ts +9 -0
  55. package/dist/components/home-page/top-posts.js +28 -0
  56. package/dist/components/home-page/top-posts.js.map +1 -0
  57. package/dist/components/opinly-blog.cjs +3 -2
  58. package/dist/components/opinly-blog.cjs.map +1 -1
  59. package/dist/components/opinly-blog.d.cts +5 -2
  60. package/dist/components/opinly-blog.d.ts +5 -2
  61. package/dist/components/opinly-blog.js +3 -2
  62. package/dist/components/opinly-blog.js.map +1 -1
  63. package/dist/components/post-preview.cjs +26 -8
  64. package/dist/components/post-preview.cjs.map +1 -1
  65. package/dist/components/post-preview.d.cts +3 -4
  66. package/dist/components/post-preview.d.ts +3 -4
  67. package/dist/components/post-preview.js +24 -7
  68. package/dist/components/post-preview.js.map +1 -1
  69. package/dist/index.cjs +1 -3
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.cts +0 -1
  72. package/dist/index.d.ts +0 -1
  73. package/dist/index.js +0 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/utils/dates.cjs +33 -0
  76. package/dist/utils/dates.cjs.map +1 -0
  77. package/dist/utils/dates.d.cts +3 -0
  78. package/dist/utils/dates.d.ts +3 -0
  79. package/dist/utils/dates.js +9 -0
  80. package/dist/utils/dates.js.map +1 -0
  81. package/dist/utils/generate-metadata.cjs +60 -0
  82. package/dist/utils/generate-metadata.cjs.map +1 -0
  83. package/dist/utils/generate-metadata.d.cts +6 -0
  84. package/dist/utils/generate-metadata.d.ts +6 -0
  85. package/dist/utils/generate-metadata.js +36 -0
  86. package/dist/utils/generate-metadata.js.map +1 -0
  87. package/dist/utils/merge.cjs +33 -0
  88. package/dist/utils/merge.cjs.map +1 -0
  89. package/dist/utils/merge.d.cts +5 -0
  90. package/dist/utils/merge.d.ts +5 -0
  91. package/dist/utils/merge.js +9 -0
  92. package/dist/utils/merge.js.map +1 -0
  93. package/dist/utils/sdk-config.cjs +55 -0
  94. package/dist/utils/sdk-config.cjs.map +1 -0
  95. package/dist/utils/sdk-config.d.cts +12 -0
  96. package/dist/utils/sdk-config.d.ts +12 -0
  97. package/dist/utils/sdk-config.js +30 -0
  98. package/dist/utils/sdk-config.js.map +1 -0
  99. package/package.json +3 -2
  100. package/dist/components/home-page.cjs.map +0 -1
  101. package/dist/components/home-page.d.cts +0 -12
  102. package/dist/components/home-page.d.ts +0 -12
  103. package/dist/components/home-page.js +0 -37
  104. package/dist/components/home-page.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ interface HomePagePaginationProps {
5
+ client: Opinly;
6
+ page: number;
7
+ }
8
+ declare const HomePagePagination: ({ client, page, }: HomePagePaginationProps) => Promise<react_jsx_runtime.JSX.Element>;
9
+
10
+ export { HomePagePagination };
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ interface HomePagePaginationProps {
5
+ client: Opinly;
6
+ page: number;
7
+ }
8
+ declare const HomePagePagination: ({ client, page, }: HomePagePaginationProps) => Promise<react_jsx_runtime.JSX.Element>;
9
+
10
+ export { HomePagePagination };
@@ -0,0 +1,57 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import Link from "next/link";
3
+ import { cn } from "../../utils/merge";
4
+ const HomePagePagination = async ({
5
+ client,
6
+ page
7
+ }) => {
8
+ const count = await client.client.content.postsCount.query();
9
+ const totalPages = Math.ceil(count / 9);
10
+ const pages = [];
11
+ if (totalPages <= 5) {
12
+ for (let i = 1; i <= totalPages; i++) {
13
+ pages.push(i);
14
+ }
15
+ } else {
16
+ let start, end;
17
+ if (page <= 3) {
18
+ start = 1;
19
+ end = 5;
20
+ } else if (page >= totalPages - 2) {
21
+ start = totalPages - 4;
22
+ end = totalPages;
23
+ } else {
24
+ start = page - 2;
25
+ end = page + 2;
26
+ }
27
+ if (start > 1) {
28
+ pages.push(1);
29
+ if (start > 2) pages.push("ellipsis");
30
+ }
31
+ for (let i = start; i <= end; i++) {
32
+ pages.push(i);
33
+ }
34
+ if (end < totalPages) {
35
+ if (end < totalPages - 1) pages.push("ellipsis");
36
+ pages.push(totalPages);
37
+ }
38
+ }
39
+ return /* @__PURE__ */ jsx("nav", { "aria-label": "Pagination", children: /* @__PURE__ */ jsx("div", { className: "flex items-center space-x-1", children: pages.map(
40
+ (p, idx) => p === "ellipsis" ? /* @__PURE__ */ jsx("span", { className: "px-2", children: "\u2026" }, `el-${idx}`) : /* @__PURE__ */ jsx(
41
+ Link,
42
+ {
43
+ href: `?page=${p}`,
44
+ className: cn(
45
+ "w-10 h-10 flex items-center justify-center rounded-md",
46
+ page === p ? "bg-primary text-white bg-black" : "border border-gray-200 dark:border-gray-700"
47
+ ),
48
+ children: p
49
+ },
50
+ p
51
+ )
52
+ ) }) });
53
+ };
54
+ export {
55
+ HomePagePagination
56
+ };
57
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/home-page/pagination.tsx"],"sourcesContent":["import React from \"react\";\nimport Link from \"next/link\";\nimport { cn } from \"../../utils/merge\";\nimport { Opinly } from \"@opinly/backend\";\n\ninterface HomePagePaginationProps {\n client: Opinly;\n page: number;\n}\n\nexport const HomePagePagination = async ({\n client,\n page,\n}: HomePagePaginationProps) => {\n const count = await client.client.content.postsCount.query();\n const totalPages = Math.ceil(count / 9);\n\n // build a list of page labels: either a number or the string \"ellipsis\"\n const pages: (number | \"ellipsis\")[] = [];\n\n if (totalPages <= 5) {\n // Show every page\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n // determine sliding window\n let start: number, end: number;\n\n if (page <= 3) {\n start = 1;\n end = 5;\n } else if (page >= totalPages - 2) {\n start = totalPages - 4;\n end = totalPages;\n } else {\n start = page - 2;\n end = page + 2;\n }\n\n // first page + leading ellipsis\n if (start > 1) {\n pages.push(1);\n if (start > 2) pages.push(\"ellipsis\");\n }\n\n // window of pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // trailing ellipsis + last page\n if (end < totalPages) {\n if (end < totalPages - 1) pages.push(\"ellipsis\");\n pages.push(totalPages);\n }\n }\n\n return (\n <nav aria-label=\"Pagination\">\n <div className=\"flex items-center space-x-1\">\n {pages.map((p, idx) =>\n p === \"ellipsis\" ? (\n <span key={`el-${idx}`} className=\"px-2\">\n …\n </span>\n ) : (\n <Link\n key={p}\n href={`?page=${p}`}\n className={cn(\n \"w-10 h-10 flex items-center justify-center rounded-md\",\n page === p\n ? \"bg-primary text-white bg-black\"\n : \"border border-gray-200 dark:border-gray-700\"\n )}\n >\n {p}\n </Link>\n )\n )}\n </div>\n </nav>\n );\n};\n"],"mappings":"AA+DY;AA9DZ,OAAO,UAAU;AACjB,SAAS,UAAU;AAQZ,MAAM,qBAAqB,OAAO;AAAA,EACvC;AAAA,EACA;AACF,MAA+B;AAC7B,QAAM,QAAQ,MAAM,OAAO,OAAO,QAAQ,WAAW,MAAM;AAC3D,QAAM,aAAa,KAAK,KAAK,QAAQ,CAAC;AAGtC,QAAM,QAAiC,CAAC;AAExC,MAAI,cAAc,GAAG;AAEnB,aAAS,IAAI,GAAG,KAAK,YAAY,KAAK;AACpC,YAAM,KAAK,CAAC;AAAA,IACd;AAAA,EACF,OAAO;AAEL,QAAI,OAAe;AAEnB,QAAI,QAAQ,GAAG;AACb,cAAQ;AACR,YAAM;AAAA,IACR,WAAW,QAAQ,aAAa,GAAG;AACjC,cAAQ,aAAa;AACrB,YAAM;AAAA,IACR,OAAO;AACL,cAAQ,OAAO;AACf,YAAM,OAAO;AAAA,IACf;AAGA,QAAI,QAAQ,GAAG;AACb,YAAM,KAAK,CAAC;AACZ,UAAI,QAAQ,EAAG,OAAM,KAAK,UAAU;AAAA,IACtC;AAGA,aAAS,IAAI,OAAO,KAAK,KAAK,KAAK;AACjC,YAAM,KAAK,CAAC;AAAA,IACd;AAGA,QAAI,MAAM,YAAY;AACpB,UAAI,MAAM,aAAa,EAAG,OAAM,KAAK,UAAU;AAC/C,YAAM,KAAK,UAAU;AAAA,IACvB;AAAA,EACF;AAEA,SACE,oBAAC,SAAI,cAAW,cACd,8BAAC,SAAI,WAAU,+BACZ,gBAAM;AAAA,IAAI,CAAC,GAAG,QACb,MAAM,aACJ,oBAAC,UAAuB,WAAU,QAAO,sBAA9B,MAAM,GAAG,EAEpB,IAEA;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM,SAAS,CAAC;AAAA,QAChB,WAAW;AAAA,UACT;AAAA,UACA,SAAS,IACL,mCACA;AAAA,QACN;AAAA,QAEC;AAAA;AAAA,MATI;AAAA,IAUP;AAAA,EAEJ,GACF,GACF;AAEJ;","names":[]}
@@ -0,0 +1,52 @@
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 top_posts_exports = {};
20
+ __export(top_posts_exports, {
21
+ TopPosts: () => TopPosts
22
+ });
23
+ module.exports = __toCommonJS(top_posts_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_post_preview = require("../post-preview");
26
+ var import_react = require("react");
27
+ const TopPostsServer = async ({
28
+ client,
29
+ page
30
+ }) => {
31
+ const posts = await client.client.content.paginatedPosts.query({
32
+ page
33
+ });
34
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: posts.map((post) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_post_preview.PostPreview, { post }, "top-posts-" + post.slug)) });
35
+ };
36
+ const TopPosts = ({
37
+ client,
38
+ page
39
+ }) => {
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
41
+ import_react.Suspense,
42
+ {
43
+ fallback: Array.from({ length: 9 }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_post_preview.PostPreviewSkeleton, {}, i)),
44
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TopPostsServer, { client, page })
45
+ }
46
+ );
47
+ };
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ TopPosts
51
+ });
52
+ //# sourceMappingURL=top-posts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/home-page/top-posts.tsx"],"sourcesContent":["import { Opinly, OpinlyClient } from \"@opinly/backend\";\nimport { PostPreview, PostPreviewSkeleton } from \"../post-preview\";\nimport { Suspense } from \"react\";\n\nconst TopPostsServer = async ({\n client,\n page,\n}: {\n client: Opinly;\n page: number;\n}) => {\n // await new Promise(() => {});\n\n const posts = await client.client.content.paginatedPosts.query({\n page,\n });\n\n return (\n <>\n {posts.map((post) => (\n <PostPreview key={\"top-posts-\" + post.slug} post={post} />\n ))}\n </>\n );\n};\n\nexport const TopPosts = ({\n client,\n page,\n}: {\n client: Opinly;\n page: number;\n}) => {\n return (\n <Suspense\n fallback={Array.from({ length: 9 }).map((_, i) => (\n <PostPreviewSkeleton key={i} />\n ))}\n >\n <TopPostsServer client={client} page={page} />\n </Suspense>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBI;AAjBJ,0BAAiD;AACjD,mBAAyB;AAEzB,MAAM,iBAAiB,OAAO;AAAA,EAC5B;AAAA,EACA;AACF,MAGM;AAGJ,QAAM,QAAQ,MAAM,OAAO,OAAO,QAAQ,eAAe,MAAM;AAAA,IAC7D;AAAA,EACF,CAAC;AAED,SACE,2EACG,gBAAM,IAAI,CAAC,SACV,4CAAC,mCAA2C,QAA1B,eAAe,KAAK,IAAkB,CACzD,GACH;AAEJ;AAEO,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AACF,MAGM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAC1C,4CAAC,6CAAyB,CAAG,CAC9B;AAAA,MAED,sDAAC,kBAAe,QAAgB,MAAY;AAAA;AAAA,EAC9C;AAEJ;","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 TopPosts: ({ client, page, }: {
5
+ client: Opinly;
6
+ page: number;
7
+ }) => react_jsx_runtime.JSX.Element;
8
+
9
+ export { TopPosts };
@@ -0,0 +1,9 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Opinly } from '@opinly/backend';
3
+
4
+ declare const TopPosts: ({ client, page, }: {
5
+ client: Opinly;
6
+ page: number;
7
+ }) => react_jsx_runtime.JSX.Element;
8
+
9
+ export { TopPosts };
@@ -0,0 +1,28 @@
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { PostPreview, PostPreviewSkeleton } from "../post-preview";
3
+ import { Suspense } from "react";
4
+ const TopPostsServer = async ({
5
+ client,
6
+ page
7
+ }) => {
8
+ const posts = await client.client.content.paginatedPosts.query({
9
+ page
10
+ });
11
+ return /* @__PURE__ */ jsx(Fragment, { children: posts.map((post) => /* @__PURE__ */ jsx(PostPreview, { post }, "top-posts-" + post.slug)) });
12
+ };
13
+ const TopPosts = ({
14
+ client,
15
+ page
16
+ }) => {
17
+ return /* @__PURE__ */ jsx(
18
+ Suspense,
19
+ {
20
+ fallback: Array.from({ length: 9 }).map((_, i) => /* @__PURE__ */ jsx(PostPreviewSkeleton, {}, i)),
21
+ children: /* @__PURE__ */ jsx(TopPostsServer, { client, page })
22
+ }
23
+ );
24
+ };
25
+ export {
26
+ TopPosts
27
+ };
28
+ //# sourceMappingURL=top-posts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/home-page/top-posts.tsx"],"sourcesContent":["import { Opinly, OpinlyClient } from \"@opinly/backend\";\nimport { PostPreview, PostPreviewSkeleton } from \"../post-preview\";\nimport { Suspense } from \"react\";\n\nconst TopPostsServer = async ({\n client,\n page,\n}: {\n client: Opinly;\n page: number;\n}) => {\n // await new Promise(() => {});\n\n const posts = await client.client.content.paginatedPosts.query({\n page,\n });\n\n return (\n <>\n {posts.map((post) => (\n <PostPreview key={\"top-posts-\" + post.slug} post={post} />\n ))}\n </>\n );\n};\n\nexport const TopPosts = ({\n client,\n page,\n}: {\n client: Opinly;\n page: number;\n}) => {\n return (\n <Suspense\n fallback={Array.from({ length: 9 }).map((_, i) => (\n <PostPreviewSkeleton key={i} />\n ))}\n >\n <TopPostsServer client={client} page={page} />\n </Suspense>\n );\n};\n"],"mappings":"AAkBI,mBAEI,WAFJ;AAjBJ,SAAS,aAAa,2BAA2B;AACjD,SAAS,gBAAgB;AAEzB,MAAM,iBAAiB,OAAO;AAAA,EAC5B;AAAA,EACA;AACF,MAGM;AAGJ,QAAM,QAAQ,MAAM,OAAO,OAAO,QAAQ,eAAe,MAAM;AAAA,IAC7D;AAAA,EACF,CAAC;AAED,SACE,gCACG,gBAAM,IAAI,CAAC,SACV,oBAAC,eAA2C,QAA1B,eAAe,KAAK,IAAkB,CACzD,GACH;AAEJ;AAEO,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AACF,MAGM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAC1C,oBAAC,yBAAyB,CAAG,CAC9B;AAAA,MAED,8BAAC,kBAAe,QAAgB,MAAY;AAAA;AAAA,EAC9C;AAEJ;","names":[]}
@@ -30,13 +30,14 @@ var import_not_found = require("./not-found");
30
30
  var import_authors_page = require("./authors-page");
31
31
  const OpinlyBlog = ({
32
32
  blog,
33
- page
33
+ searchParams,
34
+ client
34
35
  }) => {
35
36
  if (blog.type === "not-found") {
36
37
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_not_found.OpinlyNotFound, {});
37
38
  }
38
39
  if (blog.type === "home") {
39
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_home_page.HomePage, { homePage: blog.data, page });
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_home_page.HomePage, { searchParams, client });
40
41
  }
41
42
  if (blog.type === "post") {
42
43
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_blog_post.BlogPost, { post: blog.data });
@@ -1 +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":[]}
1
+ {"version":3,"sources":["../../src/components/opinly-blog.tsx"],"sourcesContent":["import { BlogPost } from \"./blog-post\";\nimport { FolderPage } from \"./folder-page\";\nimport { Opinly, OpinlyClient } 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 searchParams,\n client,\n}: {\n blog: Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>;\n client: Opinly;\n searchParams: { page?: string };\n}) => {\n if (blog.type === \"not-found\") {\n return <OpinlyNotFound />;\n }\n\n if (blog.type === \"home\") {\n return <HomePage searchParams={searchParams} client={client} />;\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;AAkBW;AAlBX,uBAAyB;AACzB,yBAA2B;AAE3B,uBAAyB;AACzB,yBAA2B;AAC3B,uBAA+B;AAC/B,0BAA4B;AAErB,MAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,MAAI,KAAK,SAAS,aAAa;AAC7B,WAAO,4CAAC,mCAAe;AAAA,EACzB;AAEA,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,4CAAC,6BAAS,cAA4B,QAAgB;AAAA,EAC/D;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":[]}
@@ -1,9 +1,12 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Opinly } from '@opinly/backend';
3
3
 
4
- declare const OpinlyBlog: ({ blog, page, }: {
4
+ declare const OpinlyBlog: ({ blog, searchParams, client, }: {
5
5
  blog: Awaited<ReturnType<Opinly["content"]["blog"]>>;
6
- page: number | null | undefined;
6
+ client: Opinly;
7
+ searchParams: {
8
+ page?: string;
9
+ };
7
10
  }) => react_jsx_runtime.JSX.Element;
8
11
 
9
12
  export { OpinlyBlog };
@@ -1,9 +1,12 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Opinly } from '@opinly/backend';
3
3
 
4
- declare const OpinlyBlog: ({ blog, page, }: {
4
+ declare const OpinlyBlog: ({ blog, searchParams, client, }: {
5
5
  blog: Awaited<ReturnType<Opinly["content"]["blog"]>>;
6
- page: number | null | undefined;
6
+ client: Opinly;
7
+ searchParams: {
8
+ page?: string;
9
+ };
7
10
  }) => react_jsx_runtime.JSX.Element;
8
11
 
9
12
  export { OpinlyBlog };
@@ -7,13 +7,14 @@ import { OpinlyNotFound } from "./not-found";
7
7
  import { AuthorsPage } from "./authors-page";
8
8
  const OpinlyBlog = ({
9
9
  blog,
10
- page
10
+ searchParams,
11
+ client
11
12
  }) => {
12
13
  if (blog.type === "not-found") {
13
14
  return /* @__PURE__ */ jsx(OpinlyNotFound, {});
14
15
  }
15
16
  if (blog.type === "home") {
16
- return /* @__PURE__ */ jsx(HomePage, { homePage: blog.data, page });
17
+ return /* @__PURE__ */ jsx(HomePage, { searchParams, client });
17
18
  }
18
19
  if (blog.type === "post") {
19
20
  return /* @__PURE__ */ jsx(BlogPost, { post: blog.data });
@@ -1 +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":[]}
1
+ {"version":3,"sources":["../../src/components/opinly-blog.tsx"],"sourcesContent":["import { BlogPost } from \"./blog-post\";\nimport { FolderPage } from \"./folder-page\";\nimport { Opinly, OpinlyClient } 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 searchParams,\n client,\n}: {\n blog: Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>;\n client: Opinly;\n searchParams: { page?: string };\n}) => {\n if (blog.type === \"not-found\") {\n return <OpinlyNotFound />;\n }\n\n if (blog.type === \"home\") {\n return <HomePage searchParams={searchParams} client={client} />;\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":"AAkBW;AAlBX,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;AAAA,EACA;AACF,MAIM;AACJ,MAAI,KAAK,SAAS,aAAa;AAC7B,WAAO,oBAAC,kBAAe;AAAA,EACzB;AAEA,MAAI,KAAK,SAAS,QAAQ;AACxB,WAAO,oBAAC,YAAS,cAA4B,QAAgB;AAAA,EAC/D;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":[]}
@@ -28,29 +28,46 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var post_preview_exports = {};
30
30
  __export(post_preview_exports, {
31
- PostPreview: () => PostPreview
31
+ PostPreview: () => PostPreview,
32
+ PostPreviewSkeleton: () => PostPreviewSkeleton
32
33
  });
33
34
  module.exports = __toCommonJS(post_preview_exports);
34
35
  var import_jsx_runtime = require("react/jsx-runtime");
35
36
  var import_link = __toESM(require("next/link"), 1);
36
37
  var import_image = __toESM(require("next/image"), 1);
37
- var import_sdk_config = require("../sdk-config");
38
- var import_images = require("../utils/images");
38
+ var import_sdk_config = require("../utils/sdk-config");
39
39
  var import_dates = require("../utils/dates");
40
+ const PostPreviewSkeleton = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "w-full h-full ", children: [
41
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse mb-5", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-48 bg-gray-200 dark:bg-gray-700 rounded-lg" }) }),
42
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center space-x-2 text-sm text-muted-foreground mb-3", children: [
43
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-4 w-20 bg-gray-200 dark:bg-gray-700 rounded" }),
44
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-4 w-1 bg-gray-200 dark:bg-gray-700 rounded-full" }),
45
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-4 w-16 bg-gray-200 dark:bg-gray-700 rounded" })
46
+ ] }),
47
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-5 w-3/4 bg-gray-200 dark:bg-gray-700 rounded mb-2" }),
48
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-1 mt-1 pr-4", children: [
49
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-4 w-full bg-gray-200 dark:bg-gray-700 rounded" }),
50
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-4 w-10/12 bg-gray-200 dark:bg-gray-700 rounded" })
51
+ ] }),
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center space-x-2 text-xs text-gray-500 mt-2", children: [
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-3 w-24 bg-gray-200 dark:bg-gray-700 rounded" }),
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "animate-pulse h-3 w-12 bg-gray-200 dark:bg-gray-700 rounded" })
55
+ ] })
56
+ ] });
40
57
  const PostPreview = ({
41
58
  post
42
59
  }) => {
43
60
  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: [
61
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "w-full h-full ", children: [
45
62
  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
63
  import_image.default,
47
64
  {
48
- src: `${import_sdk_config.opinlyConfig.imagesPrefix}/${(0, import_images.replaceImageNameSpace)(post.image.fileKey)}`,
65
+ src: `${import_sdk_config.opinlyConfig.imagesPrefix}/${post.image.fileKey}`,
49
66
  alt: post.title,
50
67
  fill: true,
51
68
  className: "object-cover rounded-lg"
52
69
  }
53
- ) }) }, post.slug),
70
+ ) }) }),
54
71
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-sm text-muted-foreground mb-1", children: [
55
72
  post.folder?.name && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
56
73
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -66,7 +83,7 @@ const PostPreview = ({
66
83
  " ",
67
84
  (0, import_dates.formatDate)(post.firstPublishedAt)
68
85
  ] }),
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),
86
+ /* @__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 }) }),
70
87
  post.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-gray-600 mt-1 line-clamp-2", children: post.description }),
71
88
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-xs text-gray-500 mt-2", children: [
72
89
  post.author && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
@@ -88,6 +105,7 @@ const PostPreview = ({
88
105
  };
89
106
  // Annotate the CommonJS export names for ESM import in node:
90
107
  0 && (module.exports = {
91
- PostPreview
108
+ PostPreview,
109
+ PostPreviewSkeleton
92
110
  });
93
111
  //# sourceMappingURL=post-preview.cjs.map
@@ -1 +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"]}
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 \"../utils/sdk-config\";\nimport { formatDate } from \"../utils/dates\";\n\nexport const PostPreviewSkeleton: React.FC = () => (\n <div className=\"w-full h-full \">\n {/* Image placeholder (with same mb-4 as real) */}\n <div className=\"animate-pulse mb-5\">\n <div className=\"w-full h-48 bg-gray-200 dark:bg-gray-700 rounded-lg\" />\n </div>\n\n {/* Folder · dot · date (text-sm text-muted-foreground mb-1) */}\n <div className=\"flex items-center space-x-2 text-sm text-muted-foreground mb-3\">\n <div className=\"animate-pulse h-4 w-20 bg-gray-200 dark:bg-gray-700 rounded\" />\n <div className=\"animate-pulse h-4 w-1 bg-gray-200 dark:bg-gray-700 rounded-full\" />\n <div className=\"animate-pulse h-4 w-16 bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n\n {/* Title (text-lg font-semibold leading-snug) */}\n <div className=\"animate-pulse h-5 w-3/4 bg-gray-200 dark:bg-gray-700 rounded mb-2\" />\n\n {/* Description (text-sm mt-1 line-clamp-2) */}\n <div className=\"space-y-1 mt-1 pr-4\">\n <div className=\"animate-pulse h-4 w-full bg-gray-200 dark:bg-gray-700 rounded\" />\n <div className=\"animate-pulse h-4 w-10/12 bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n\n {/* Author · date (text-xs text-gray-500 mt-2 flex items-center space-x-2) */}\n <div className=\"flex items-center space-x-2 text-xs text-gray-500 mt-2\">\n <div className=\"animate-pulse h-3 w-24 bg-gray-200 dark:bg-gray-700 rounded\" />\n <div className=\"animate-pulse h-3 w-12 bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n </div>\n);\nexport const PostPreview = ({\n post,\n}: {\n post: NonNullable<\n NonNullable<\n Awaited<\n ReturnType<Opinly[\"client\"][\"content\"][\"authorPage\"][\"query\"]>\n >[\"data\"]\n >[\"posts\"][number]\n >;\n}) => {\n const postSlug = `${opinlyConfig.blogPrefix}/${post.folder?.slug ? `${post.folder.slug}/` : \"\"}${post.slug}`;\n\n return (\n <div className=\"w-full h-full \">\n {post.image?.fileKey && (\n <Link href={postSlug} className=\"group\">\n <div className=\"relative w-full h-48 mb-4\">\n <Image\n src={`${opinlyConfig.imagesPrefix}/${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 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;AAAA;AAUM;AATN,kBAAiB;AACjB,mBAAkB;AAClB,wBAA6B;AAC7B,mBAA2B;AAEpB,MAAM,sBAAgC,MAC3C,6CAAC,SAAI,WAAU,kBAEb;AAAA,8CAAC,SAAI,WAAU,sBACb,sDAAC,SAAI,WAAU,uDAAsD,GACvE;AAAA,EAGA,6CAAC,SAAI,WAAU,kEACb;AAAA,gDAAC,SAAI,WAAU,+DAA8D;AAAA,IAC7E,4CAAC,SAAI,WAAU,mEAAkE;AAAA,IACjF,4CAAC,SAAI,WAAU,+DAA8D;AAAA,KAC/E;AAAA,EAGA,4CAAC,SAAI,WAAU,qEAAoE;AAAA,EAGnF,6CAAC,SAAI,WAAU,uBACb;AAAA,gDAAC,SAAI,WAAU,iEAAgE;AAAA,IAC/E,4CAAC,SAAI,WAAU,kEAAiE;AAAA,KAClF;AAAA,EAGA,6CAAC,SAAI,WAAU,0DACb;AAAA,gDAAC,SAAI,WAAU,+DAA8D;AAAA,IAC7E,4CAAC,SAAI,WAAU,+DAA8D;AAAA,KAC/E;AAAA,GACF;AAEK,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MAQM;AACJ,QAAM,WAAW,GAAG,+BAAa,UAAU,IAAI,KAAK,QAAQ,OAAO,GAAG,KAAK,OAAO,IAAI,MAAM,EAAE,GAAG,KAAK,IAAI;AAE1G,SACE,6CAAC,SAAI,WAAU,kBACZ;AAAA,SAAK,OAAO,WACX,4CAAC,YAAAA,SAAA,EAAK,MAAM,UAAU,WAAU,SAC9B,sDAAC,SAAI,WAAU,6BACb;AAAA,MAAC,aAAAC;AAAA,MAAA;AAAA,QACC,KAAK,GAAG,+BAAa,YAAY,IAAI,KAAK,MAAM,OAAO;AAAA,QACvD,KAAK,KAAK;AAAA,QACV,MAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ,GACF,GACF;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,EAAK,MAAM,UAAU,WAAU,SAC9B,sDAAC,QAAG,WAAU,4DACX,eAAK,OACR,GACF;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"]}
@@ -1,10 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Opinly } from '@opinly/backend';
3
3
 
4
+ declare const PostPreviewSkeleton: React.FC;
4
5
  declare const PostPreview: ({ post, }: {
5
- post: Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
6
- type: "home";
7
- }>["data"]["posts"][number];
6
+ post: NonNullable<NonNullable<Awaited<ReturnType<Opinly["client"]["content"]["authorPage"]["query"]>>["data"]>["posts"][number]>;
8
7
  }) => react_jsx_runtime.JSX.Element;
9
8
 
10
- export { PostPreview };
9
+ export { PostPreview, PostPreviewSkeleton };
@@ -1,10 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Opinly } from '@opinly/backend';
3
3
 
4
+ declare const PostPreviewSkeleton: React.FC;
4
5
  declare const PostPreview: ({ post, }: {
5
- post: Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
6
- type: "home";
7
- }>["data"]["posts"][number];
6
+ post: NonNullable<NonNullable<Awaited<ReturnType<Opinly["client"]["content"]["authorPage"]["query"]>>["data"]>["posts"][number]>;
8
7
  }) => react_jsx_runtime.JSX.Element;
9
8
 
10
- export { PostPreview };
9
+ export { PostPreview, PostPreviewSkeleton };
@@ -1,23 +1,39 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import Link from "next/link";
3
3
  import Image from "next/image";
4
- import { opinlyConfig } from "../sdk-config";
5
- import { replaceImageNameSpace } from "../utils/images";
4
+ import { opinlyConfig } from "../utils/sdk-config";
6
5
  import { formatDate } from "../utils/dates";
6
+ const PostPreviewSkeleton = () => /* @__PURE__ */ jsxs("div", { className: "w-full h-full ", children: [
7
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse mb-5", children: /* @__PURE__ */ jsx("div", { className: "w-full h-48 bg-gray-200 dark:bg-gray-700 rounded-lg" }) }),
8
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2 text-sm text-muted-foreground mb-3", children: [
9
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-4 w-20 bg-gray-200 dark:bg-gray-700 rounded" }),
10
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-4 w-1 bg-gray-200 dark:bg-gray-700 rounded-full" }),
11
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-4 w-16 bg-gray-200 dark:bg-gray-700 rounded" })
12
+ ] }),
13
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-5 w-3/4 bg-gray-200 dark:bg-gray-700 rounded mb-2" }),
14
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1 mt-1 pr-4", children: [
15
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-4 w-full bg-gray-200 dark:bg-gray-700 rounded" }),
16
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-4 w-10/12 bg-gray-200 dark:bg-gray-700 rounded" })
17
+ ] }),
18
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2 text-xs text-gray-500 mt-2", children: [
19
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-3 w-24 bg-gray-200 dark:bg-gray-700 rounded" }),
20
+ /* @__PURE__ */ jsx("div", { className: "animate-pulse h-3 w-12 bg-gray-200 dark:bg-gray-700 rounded" })
21
+ ] })
22
+ ] });
7
23
  const PostPreview = ({
8
24
  post
9
25
  }) => {
10
26
  const postSlug = `${opinlyConfig.blogPrefix}/${post.folder?.slug ? `${post.folder.slug}/` : ""}${post.slug}`;
11
- return /* @__PURE__ */ jsxs("div", { children: [
27
+ return /* @__PURE__ */ jsxs("div", { className: "w-full h-full ", children: [
12
28
  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
29
  Image,
14
30
  {
15
- src: `${opinlyConfig.imagesPrefix}/${replaceImageNameSpace(post.image.fileKey)}`,
31
+ src: `${opinlyConfig.imagesPrefix}/${post.image.fileKey}`,
16
32
  alt: post.title,
17
33
  fill: true,
18
34
  className: "object-cover rounded-lg"
19
35
  }
20
- ) }) }, post.slug),
36
+ ) }) }),
21
37
  /* @__PURE__ */ jsxs("div", { className: "text-sm text-muted-foreground mb-1", children: [
22
38
  post.folder?.name && /* @__PURE__ */ jsxs(Fragment, { children: [
23
39
  /* @__PURE__ */ jsx(
@@ -33,7 +49,7 @@ const PostPreview = ({
33
49
  " ",
34
50
  formatDate(post.firstPublishedAt)
35
51
  ] }),
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),
52
+ /* @__PURE__ */ jsx(Link, { href: postSlug, className: "group", children: /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold leading-snug group-hover:underline", children: post.title }) }),
37
53
  post.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-600 mt-1 line-clamp-2", children: post.description }),
38
54
  /* @__PURE__ */ jsxs("div", { className: "text-xs text-gray-500 mt-2", children: [
39
55
  post.author && /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -54,6 +70,7 @@ const PostPreview = ({
54
70
  ] });
55
71
  };
56
72
  export {
57
- PostPreview
73
+ PostPreview,
74
+ PostPreviewSkeleton
58
75
  };
59
76
  //# sourceMappingURL=post-preview.js.map
@@ -1 +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":[]}
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 \"../utils/sdk-config\";\nimport { formatDate } from \"../utils/dates\";\n\nexport const PostPreviewSkeleton: React.FC = () => (\n <div className=\"w-full h-full \">\n {/* Image placeholder (with same mb-4 as real) */}\n <div className=\"animate-pulse mb-5\">\n <div className=\"w-full h-48 bg-gray-200 dark:bg-gray-700 rounded-lg\" />\n </div>\n\n {/* Folder · dot · date (text-sm text-muted-foreground mb-1) */}\n <div className=\"flex items-center space-x-2 text-sm text-muted-foreground mb-3\">\n <div className=\"animate-pulse h-4 w-20 bg-gray-200 dark:bg-gray-700 rounded\" />\n <div className=\"animate-pulse h-4 w-1 bg-gray-200 dark:bg-gray-700 rounded-full\" />\n <div className=\"animate-pulse h-4 w-16 bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n\n {/* Title (text-lg font-semibold leading-snug) */}\n <div className=\"animate-pulse h-5 w-3/4 bg-gray-200 dark:bg-gray-700 rounded mb-2\" />\n\n {/* Description (text-sm mt-1 line-clamp-2) */}\n <div className=\"space-y-1 mt-1 pr-4\">\n <div className=\"animate-pulse h-4 w-full bg-gray-200 dark:bg-gray-700 rounded\" />\n <div className=\"animate-pulse h-4 w-10/12 bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n\n {/* Author · date (text-xs text-gray-500 mt-2 flex items-center space-x-2) */}\n <div className=\"flex items-center space-x-2 text-xs text-gray-500 mt-2\">\n <div className=\"animate-pulse h-3 w-24 bg-gray-200 dark:bg-gray-700 rounded\" />\n <div className=\"animate-pulse h-3 w-12 bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n </div>\n);\nexport const PostPreview = ({\n post,\n}: {\n post: NonNullable<\n NonNullable<\n Awaited<\n ReturnType<Opinly[\"client\"][\"content\"][\"authorPage\"][\"query\"]>\n >[\"data\"]\n >[\"posts\"][number]\n >;\n}) => {\n const postSlug = `${opinlyConfig.blogPrefix}/${post.folder?.slug ? `${post.folder.slug}/` : \"\"}${post.slug}`;\n\n return (\n <div className=\"w-full h-full \">\n {post.image?.fileKey && (\n <Link href={postSlug} className=\"group\">\n <div className=\"relative w-full h-48 mb-4\">\n <Image\n src={`${opinlyConfig.imagesPrefix}/${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 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":"AAUM,SAuDI,UAvDJ,KAIF,YAJE;AATN,OAAO,UAAU;AACjB,OAAO,WAAW;AAClB,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAEpB,MAAM,sBAAgC,MAC3C,qBAAC,SAAI,WAAU,kBAEb;AAAA,sBAAC,SAAI,WAAU,sBACb,8BAAC,SAAI,WAAU,uDAAsD,GACvE;AAAA,EAGA,qBAAC,SAAI,WAAU,kEACb;AAAA,wBAAC,SAAI,WAAU,+DAA8D;AAAA,IAC7E,oBAAC,SAAI,WAAU,mEAAkE;AAAA,IACjF,oBAAC,SAAI,WAAU,+DAA8D;AAAA,KAC/E;AAAA,EAGA,oBAAC,SAAI,WAAU,qEAAoE;AAAA,EAGnF,qBAAC,SAAI,WAAU,uBACb;AAAA,wBAAC,SAAI,WAAU,iEAAgE;AAAA,IAC/E,oBAAC,SAAI,WAAU,kEAAiE;AAAA,KAClF;AAAA,EAGA,qBAAC,SAAI,WAAU,0DACb;AAAA,wBAAC,SAAI,WAAU,+DAA8D;AAAA,IAC7E,oBAAC,SAAI,WAAU,+DAA8D;AAAA,KAC/E;AAAA,GACF;AAEK,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MAQM;AACJ,QAAM,WAAW,GAAG,aAAa,UAAU,IAAI,KAAK,QAAQ,OAAO,GAAG,KAAK,OAAO,IAAI,MAAM,EAAE,GAAG,KAAK,IAAI;AAE1G,SACE,qBAAC,SAAI,WAAU,kBACZ;AAAA,SAAK,OAAO,WACX,oBAAC,QAAK,MAAM,UAAU,WAAU,SAC9B,8BAAC,SAAI,WAAU,6BACb;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,GAAG,aAAa,YAAY,IAAI,KAAK,MAAM,OAAO;AAAA,QACvD,KAAK,KAAK;AAAA,QACV,MAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ,GACF,GACF;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,QAAK,MAAM,UAAU,WAAU,SAC9B,8BAAC,QAAG,WAAU,4DACX,eAAK,OACR,GACF;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.cjs CHANGED
@@ -16,10 +16,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
16
16
  var index_exports = {};
17
17
  module.exports = __toCommonJS(index_exports);
18
18
  __reExport(index_exports, require("./components/opinly-blog"), module.exports);
19
- __reExport(index_exports, require("./components/home-page"), module.exports);
20
19
  // Annotate the CommonJS export names for ESM import in node:
21
20
  0 && (module.exports = {
22
- ...require("./components/opinly-blog"),
23
- ...require("./components/home-page")
21
+ ...require("./components/opinly-blog")
24
22
  });
25
23
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components/opinly-blog\";\nexport * from \"./components/home-page\";\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,qCAAd;AACA,0BAAc,mCADd;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components/opinly-blog\";\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,qCAAd;","names":[]}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,3 @@
1
1
  export { OpinlyBlog } from './components/opinly-blog.cjs';
2
- export { HomePage } from './components/home-page.cjs';
3
2
  import 'react/jsx-runtime';
4
3
  import '@opinly/backend';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export { OpinlyBlog } from './components/opinly-blog.js';
2
- export { HomePage } from './components/home-page.js';
3
2
  import 'react/jsx-runtime';
4
3
  import '@opinly/backend';
package/dist/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from "./components/opinly-blog";
2
- export * from "./components/home-page";
3
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components/opinly-blog\";\nexport * from \"./components/home-page\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components/opinly-blog\";\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -0,0 +1,33 @@
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 dates_exports = {};
20
+ __export(dates_exports, {
21
+ formatDate: () => formatDate
22
+ });
23
+ module.exports = __toCommonJS(dates_exports);
24
+ const formatDate = (iso) => new Date(iso).toLocaleDateString("en-US", {
25
+ month: "short",
26
+ day: "2-digit",
27
+ year: "numeric"
28
+ });
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ formatDate
32
+ });
33
+ //# sourceMappingURL=dates.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/dates.ts"],"sourcesContent":["export const formatDate = (iso: string) =>\n new Date(iso).toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"2-digit\",\n year: \"numeric\",\n });\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,aAAa,CAAC,QACzB,IAAI,KAAK,GAAG,EAAE,mBAAmB,SAAS;AAAA,EACxC,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AACR,CAAC;","names":[]}
@@ -0,0 +1,3 @@
1
+ declare const formatDate: (iso: string) => string;
2
+
3
+ export { formatDate };
@@ -0,0 +1,3 @@
1
+ declare const formatDate: (iso: string) => string;
2
+
3
+ export { formatDate };