@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.
- package/dist/components/author-page/index.cjs +2 -3
- package/dist/components/author-page/index.cjs.map +1 -1
- package/dist/components/author-page/index.js +2 -3
- package/dist/components/author-page/index.js.map +1 -1
- package/dist/components/authors-page/index.cjs +2 -3
- package/dist/components/authors-page/index.cjs.map +1 -1
- package/dist/components/authors-page/index.js +2 -3
- package/dist/components/authors-page/index.js.map +1 -1
- package/dist/components/blog-post/_components/content.cjs +18 -1
- package/dist/components/blog-post/_components/content.cjs.map +1 -1
- package/dist/components/blog-post/_components/content.js +18 -1
- package/dist/components/blog-post/_components/content.js.map +1 -1
- package/dist/components/blog-post/_components/share.cjs +1 -1
- package/dist/components/blog-post/_components/share.cjs.map +1 -1
- package/dist/components/blog-post/_components/share.js +1 -1
- package/dist/components/blog-post/_components/share.js.map +1 -1
- package/dist/components/blog-post/_components/table-of-contents.cjs +3 -3
- package/dist/components/blog-post/_components/table-of-contents.cjs.map +1 -1
- package/dist/components/blog-post/_components/table-of-contents.js +3 -3
- package/dist/components/blog-post/_components/table-of-contents.js.map +1 -1
- package/dist/components/blog-post/_helpers/json-ld.cjs +2 -3
- package/dist/components/blog-post/_helpers/json-ld.cjs.map +1 -1
- package/dist/components/blog-post/_helpers/json-ld.js +2 -3
- package/dist/components/blog-post/_helpers/json-ld.js.map +1 -1
- package/dist/components/blog-post/index.cjs +1 -1
- package/dist/components/blog-post/index.cjs.map +1 -1
- package/dist/components/blog-post/index.js +1 -1
- package/dist/components/blog-post/index.js.map +1 -1
- package/dist/components/bread-crumbs.cjs +1 -1
- package/dist/components/bread-crumbs.cjs.map +1 -1
- package/dist/components/bread-crumbs.js +1 -1
- package/dist/components/bread-crumbs.js.map +1 -1
- package/dist/components/home-page/folders.cjs +98 -0
- package/dist/components/home-page/folders.cjs.map +1 -0
- package/dist/components/home-page/folders.d.cts +9 -0
- package/dist/components/home-page/folders.d.ts +9 -0
- package/dist/components/home-page/folders.js +63 -0
- package/dist/components/home-page/folders.js.map +1 -0
- package/dist/components/home-page/index.cjs +44 -0
- package/dist/components/home-page/index.cjs.map +1 -0
- package/dist/components/home-page/index.d.cts +11 -0
- package/dist/components/home-page/index.d.ts +11 -0
- package/dist/components/home-page/index.js +20 -0
- package/dist/components/home-page/index.js.map +1 -0
- package/dist/components/{home-page.cjs → home-page/pagination.cjs} +48 -28
- package/dist/components/home-page/pagination.cjs.map +1 -0
- package/dist/components/home-page/pagination.d.cts +10 -0
- package/dist/components/home-page/pagination.d.ts +10 -0
- package/dist/components/home-page/pagination.js +57 -0
- package/dist/components/home-page/pagination.js.map +1 -0
- package/dist/components/home-page/top-posts.cjs +52 -0
- package/dist/components/home-page/top-posts.cjs.map +1 -0
- package/dist/components/home-page/top-posts.d.cts +9 -0
- package/dist/components/home-page/top-posts.d.ts +9 -0
- package/dist/components/home-page/top-posts.js +28 -0
- package/dist/components/home-page/top-posts.js.map +1 -0
- package/dist/components/opinly-blog.cjs +3 -2
- package/dist/components/opinly-blog.cjs.map +1 -1
- package/dist/components/opinly-blog.d.cts +5 -2
- package/dist/components/opinly-blog.d.ts +5 -2
- package/dist/components/opinly-blog.js +3 -2
- package/dist/components/opinly-blog.js.map +1 -1
- package/dist/components/post-preview.cjs +26 -8
- package/dist/components/post-preview.cjs.map +1 -1
- package/dist/components/post-preview.d.cts +3 -4
- package/dist/components/post-preview.d.ts +3 -4
- package/dist/components/post-preview.js +24 -7
- package/dist/components/post-preview.js.map +1 -1
- package/dist/index.cjs +1 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/dates.cjs +33 -0
- package/dist/utils/dates.cjs.map +1 -0
- package/dist/utils/dates.d.cts +3 -0
- package/dist/utils/dates.d.ts +3 -0
- package/dist/utils/dates.js +9 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/generate-metadata.cjs +60 -0
- package/dist/utils/generate-metadata.cjs.map +1 -0
- package/dist/utils/generate-metadata.d.cts +6 -0
- package/dist/utils/generate-metadata.d.ts +6 -0
- package/dist/utils/generate-metadata.js +36 -0
- package/dist/utils/generate-metadata.js.map +1 -0
- package/dist/utils/merge.cjs +33 -0
- package/dist/utils/merge.cjs.map +1 -0
- package/dist/utils/merge.d.cts +5 -0
- package/dist/utils/merge.d.ts +5 -0
- package/dist/utils/merge.js +9 -0
- package/dist/utils/merge.js.map +1 -0
- package/dist/utils/sdk-config.cjs +55 -0
- package/dist/utils/sdk-config.cjs.map +1 -0
- package/dist/utils/sdk-config.d.cts +12 -0
- package/dist/utils/sdk-config.d.ts +12 -0
- package/dist/utils/sdk-config.js +30 -0
- package/dist/utils/sdk-config.js.map +1 -0
- package/package.json +3 -2
- package/dist/components/home-page.cjs.map +0 -1
- package/dist/components/home-page.d.cts +0 -12
- package/dist/components/home-page.d.ts +0 -12
- package/dist/components/home-page.js +0 -37
- 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,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
|
-
|
|
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, {
|
|
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
|
|
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,
|
|
4
|
+
declare const OpinlyBlog: ({ blog, searchParams, client, }: {
|
|
5
5
|
blog: Awaited<ReturnType<Opinly["content"]["blog"]>>;
|
|
6
|
-
|
|
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,
|
|
4
|
+
declare const OpinlyBlog: ({ blog, searchParams, client, }: {
|
|
5
5
|
blog: Awaited<ReturnType<Opinly["content"]["blog"]>>;
|
|
6
|
-
|
|
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
|
-
|
|
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, {
|
|
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
|
|
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}/${
|
|
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
|
-
) }) }
|
|
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 }) }
|
|
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 {
|
|
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:
|
|
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:
|
|
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}/${
|
|
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
|
-
) }) }
|
|
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 }) }
|
|
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 {
|
|
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
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components/opinly-blog\";\
|
|
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
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./components/opinly-blog\";\
|
|
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":[]}
|