@opinly/next 0.1.26 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/config.cjs +16 -7
  2. package/dist/config.cjs.map +1 -1
  3. package/dist/config.d.cts +7 -2
  4. package/dist/config.d.ts +7 -2
  5. package/dist/config.js +16 -7
  6. package/dist/config.js.map +1 -1
  7. package/dist/index.cjs +33 -3
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +12 -6
  10. package/dist/index.d.ts +12 -6
  11. package/dist/index.js +26 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/json-ld.cjs +61 -0
  14. package/dist/json-ld.cjs.map +1 -0
  15. package/dist/json-ld.d.cts +17 -0
  16. package/dist/json-ld.d.ts +17 -0
  17. package/dist/json-ld.js +38 -0
  18. package/dist/json-ld.js.map +1 -0
  19. package/dist/utils/generate-metadata.cjs +23 -79
  20. package/dist/utils/generate-metadata.cjs.map +1 -1
  21. package/dist/utils/generate-metadata.d.cts +11 -2
  22. package/dist/utils/generate-metadata.d.ts +11 -2
  23. package/dist/utils/generate-metadata.js +23 -79
  24. package/dist/utils/generate-metadata.js.map +1 -1
  25. package/dist/utils/generate-sitemap-xml.cjs.map +1 -1
  26. package/dist/utils/generate-sitemap-xml.d.cts +5 -3
  27. package/dist/utils/generate-sitemap-xml.d.ts +5 -3
  28. package/dist/utils/generate-sitemap-xml.js.map +1 -1
  29. package/dist/utils/sdk-config.cjs +6 -2
  30. package/dist/utils/sdk-config.cjs.map +1 -1
  31. package/dist/utils/sdk-config.d.cts +4 -0
  32. package/dist/utils/sdk-config.d.ts +4 -0
  33. package/dist/utils/sdk-config.js +6 -2
  34. package/dist/utils/sdk-config.js.map +1 -1
  35. package/package.json +10 -19
  36. package/dist/components/author-page/_helpers/json-ld.cjs +0 -44
  37. package/dist/components/author-page/_helpers/json-ld.cjs.map +0 -1
  38. package/dist/components/author-page/_helpers/json-ld.d.cts +0 -8
  39. package/dist/components/author-page/_helpers/json-ld.d.ts +0 -8
  40. package/dist/components/author-page/_helpers/json-ld.js +0 -20
  41. package/dist/components/author-page/_helpers/json-ld.js.map +0 -1
  42. package/dist/components/author-page/index.cjs +0 -104
  43. package/dist/components/author-page/index.cjs.map +0 -1
  44. package/dist/components/author-page/index.d.cts +0 -10
  45. package/dist/components/author-page/index.d.ts +0 -10
  46. package/dist/components/author-page/index.js +0 -70
  47. package/dist/components/author-page/index.js.map +0 -1
  48. package/dist/components/authors-page/_helpers/json-ld.cjs +0 -53
  49. package/dist/components/authors-page/_helpers/json-ld.cjs.map +0 -1
  50. package/dist/components/authors-page/_helpers/json-ld.d.cts +0 -8
  51. package/dist/components/authors-page/_helpers/json-ld.d.ts +0 -8
  52. package/dist/components/authors-page/_helpers/json-ld.js +0 -29
  53. package/dist/components/authors-page/_helpers/json-ld.js.map +0 -1
  54. package/dist/components/authors-page/index.cjs +0 -121
  55. package/dist/components/authors-page/index.cjs.map +0 -1
  56. package/dist/components/authors-page/index.d.cts +0 -10
  57. package/dist/components/authors-page/index.d.ts +0 -10
  58. package/dist/components/authors-page/index.js +0 -87
  59. package/dist/components/authors-page/index.js.map +0 -1
  60. package/dist/components/blog-post/_components/content.cjs +0 -157
  61. package/dist/components/blog-post/_components/content.cjs.map +0 -1
  62. package/dist/components/blog-post/_components/content.d.cts +0 -10
  63. package/dist/components/blog-post/_components/content.d.ts +0 -10
  64. package/dist/components/blog-post/_components/content.js +0 -123
  65. package/dist/components/blog-post/_components/content.js.map +0 -1
  66. package/dist/components/blog-post/_components/faq.cjs +0 -39
  67. package/dist/components/blog-post/_components/faq.cjs.map +0 -1
  68. package/dist/components/blog-post/_components/faq.d.cts +0 -9
  69. package/dist/components/blog-post/_components/faq.d.ts +0 -9
  70. package/dist/components/blog-post/_components/faq.js +0 -15
  71. package/dist/components/blog-post/_components/faq.js.map +0 -1
  72. package/dist/components/blog-post/_components/share.cjs +0 -100
  73. package/dist/components/blog-post/_components/share.cjs.map +0 -1
  74. package/dist/components/blog-post/_components/share.d.cts +0 -9
  75. package/dist/components/blog-post/_components/share.d.ts +0 -9
  76. package/dist/components/blog-post/_components/share.js +0 -66
  77. package/dist/components/blog-post/_components/share.js.map +0 -1
  78. package/dist/components/blog-post/_components/table-of-contents.cjs +0 -111
  79. package/dist/components/blog-post/_components/table-of-contents.cjs.map +0 -1
  80. package/dist/components/blog-post/_components/table-of-contents.d.cts +0 -14
  81. package/dist/components/blog-post/_components/table-of-contents.d.ts +0 -14
  82. package/dist/components/blog-post/_components/table-of-contents.js +0 -77
  83. package/dist/components/blog-post/_components/table-of-contents.js.map +0 -1
  84. package/dist/components/blog-post/_helpers/calc-reading-time.cjs +0 -2
  85. package/dist/components/blog-post/_helpers/calc-reading-time.cjs.map +0 -1
  86. package/dist/components/blog-post/_helpers/calc-reading-time.d.cts +0 -2
  87. package/dist/components/blog-post/_helpers/calc-reading-time.d.ts +0 -2
  88. package/dist/components/blog-post/_helpers/calc-reading-time.js +0 -1
  89. package/dist/components/blog-post/_helpers/calc-reading-time.js.map +0 -1
  90. package/dist/components/blog-post/_helpers/extract-headings.cjs +0 -45
  91. package/dist/components/blog-post/_helpers/extract-headings.cjs.map +0 -1
  92. package/dist/components/blog-post/_helpers/extract-headings.d.cts +0 -9
  93. package/dist/components/blog-post/_helpers/extract-headings.d.ts +0 -9
  94. package/dist/components/blog-post/_helpers/extract-headings.js +0 -21
  95. package/dist/components/blog-post/_helpers/extract-headings.js.map +0 -1
  96. package/dist/components/blog-post/_helpers/json-ld.cjs +0 -162
  97. package/dist/components/blog-post/_helpers/json-ld.cjs.map +0 -1
  98. package/dist/components/blog-post/_helpers/json-ld.d.cts +0 -15
  99. package/dist/components/blog-post/_helpers/json-ld.d.ts +0 -15
  100. package/dist/components/blog-post/_helpers/json-ld.js +0 -135
  101. package/dist/components/blog-post/_helpers/json-ld.js.map +0 -1
  102. package/dist/components/blog-post/_helpers/reading-time.cjs +0 -50
  103. package/dist/components/blog-post/_helpers/reading-time.cjs.map +0 -1
  104. package/dist/components/blog-post/_helpers/reading-time.d.cts +0 -6
  105. package/dist/components/blog-post/_helpers/reading-time.d.ts +0 -6
  106. package/dist/components/blog-post/_helpers/reading-time.js +0 -25
  107. package/dist/components/blog-post/_helpers/reading-time.js.map +0 -1
  108. package/dist/components/blog-post/_types/blog-post.cjs +0 -17
  109. package/dist/components/blog-post/_types/blog-post.cjs.map +0 -1
  110. package/dist/components/blog-post/_types/blog-post.d.cts +0 -7
  111. package/dist/components/blog-post/_types/blog-post.d.ts +0 -7
  112. package/dist/components/blog-post/_types/blog-post.js +0 -1
  113. package/dist/components/blog-post/_types/blog-post.js.map +0 -1
  114. package/dist/components/blog-post/_types/class-names.cjs +0 -17
  115. package/dist/components/blog-post/_types/class-names.cjs.map +0 -1
  116. package/dist/components/blog-post/_types/class-names.d.cts +0 -12
  117. package/dist/components/blog-post/_types/class-names.d.ts +0 -12
  118. package/dist/components/blog-post/_types/class-names.js +0 -1
  119. package/dist/components/blog-post/_types/class-names.js.map +0 -1
  120. package/dist/components/blog-post/index.cjs +0 -133
  121. package/dist/components/blog-post/index.cjs.map +0 -1
  122. package/dist/components/blog-post/index.d.cts +0 -15
  123. package/dist/components/blog-post/index.d.ts +0 -15
  124. package/dist/components/blog-post/index.js +0 -99
  125. package/dist/components/blog-post/index.js.map +0 -1
  126. package/dist/components/bread-crumbs.cjs +0 -60
  127. package/dist/components/bread-crumbs.cjs.map +0 -1
  128. package/dist/components/bread-crumbs.d.cts +0 -10
  129. package/dist/components/bread-crumbs.d.ts +0 -10
  130. package/dist/components/bread-crumbs.js +0 -26
  131. package/dist/components/bread-crumbs.js.map +0 -1
  132. package/dist/components/folder-page/_helpers/json-ld.cjs +0 -43
  133. package/dist/components/folder-page/_helpers/json-ld.cjs.map +0 -1
  134. package/dist/components/folder-page/_helpers/json-ld.d.cts +0 -8
  135. package/dist/components/folder-page/_helpers/json-ld.d.ts +0 -8
  136. package/dist/components/folder-page/_helpers/json-ld.js +0 -19
  137. package/dist/components/folder-page/_helpers/json-ld.js.map +0 -1
  138. package/dist/components/folder-page/index.cjs +0 -84
  139. package/dist/components/folder-page/index.cjs.map +0 -1
  140. package/dist/components/folder-page/index.d.cts +0 -10
  141. package/dist/components/folder-page/index.d.ts +0 -10
  142. package/dist/components/folder-page/index.js +0 -60
  143. package/dist/components/folder-page/index.js.map +0 -1
  144. package/dist/components/home-page/_helpers/json-ld.cjs +0 -43
  145. package/dist/components/home-page/_helpers/json-ld.cjs.map +0 -1
  146. package/dist/components/home-page/_helpers/json-ld.d.cts +0 -3
  147. package/dist/components/home-page/_helpers/json-ld.d.ts +0 -3
  148. package/dist/components/home-page/_helpers/json-ld.js +0 -19
  149. package/dist/components/home-page/_helpers/json-ld.js.map +0 -1
  150. package/dist/components/home-page/folders.cjs +0 -108
  151. package/dist/components/home-page/folders.cjs.map +0 -1
  152. package/dist/components/home-page/folders.d.cts +0 -11
  153. package/dist/components/home-page/folders.d.ts +0 -11
  154. package/dist/components/home-page/folders.js +0 -73
  155. package/dist/components/home-page/folders.js.map +0 -1
  156. package/dist/components/home-page/index.cjs +0 -50
  157. package/dist/components/home-page/index.cjs.map +0 -1
  158. package/dist/components/home-page/index.d.cts +0 -14
  159. package/dist/components/home-page/index.d.ts +0 -14
  160. package/dist/components/home-page/index.js +0 -26
  161. package/dist/components/home-page/index.js.map +0 -1
  162. package/dist/components/home-page/pagination.cjs +0 -97
  163. package/dist/components/home-page/pagination.cjs.map +0 -1
  164. package/dist/components/home-page/pagination.d.cts +0 -9
  165. package/dist/components/home-page/pagination.d.ts +0 -9
  166. package/dist/components/home-page/pagination.js +0 -63
  167. package/dist/components/home-page/pagination.js.map +0 -1
  168. package/dist/components/home-page/top-posts.cjs +0 -35
  169. package/dist/components/home-page/top-posts.cjs.map +0 -1
  170. package/dist/components/home-page/top-posts.d.cts +0 -10
  171. package/dist/components/home-page/top-posts.d.ts +0 -10
  172. package/dist/components/home-page/top-posts.js +0 -11
  173. package/dist/components/home-page/top-posts.js.map +0 -1
  174. package/dist/components/json-ld.cjs +0 -92
  175. package/dist/components/json-ld.cjs.map +0 -1
  176. package/dist/components/json-ld.d.cts +0 -13
  177. package/dist/components/json-ld.d.ts +0 -13
  178. package/dist/components/json-ld.js +0 -57
  179. package/dist/components/json-ld.js.map +0 -1
  180. package/dist/components/opinly-blog.cjs +0 -57
  181. package/dist/components/opinly-blog.cjs.map +0 -1
  182. package/dist/components/opinly-blog.d.cts +0 -15
  183. package/dist/components/opinly-blog.d.ts +0 -15
  184. package/dist/components/opinly-blog.js +0 -33
  185. package/dist/components/opinly-blog.js.map +0 -1
  186. package/dist/components/post-preview.cjs +0 -114
  187. package/dist/components/post-preview.cjs.map +0 -1
  188. package/dist/components/post-preview.d.cts +0 -10
  189. package/dist/components/post-preview.d.ts +0 -10
  190. package/dist/components/post-preview.js +0 -79
  191. package/dist/components/post-preview.js.map +0 -1
  192. package/dist/pages/index.cjs +0 -23
  193. package/dist/pages/index.cjs.map +0 -1
  194. package/dist/pages/index.d.cts +0 -3
  195. package/dist/pages/index.d.ts +0 -3
  196. package/dist/pages/index.js +0 -2
  197. package/dist/pages/index.js.map +0 -1
  198. package/dist/pages/opinly-blog-pages.cjs +0 -127
  199. package/dist/pages/opinly-blog-pages.cjs.map +0 -1
  200. package/dist/pages/opinly-blog-pages.d.cts +0 -9
  201. package/dist/pages/opinly-blog-pages.d.ts +0 -9
  202. package/dist/pages/opinly-blog-pages.js +0 -103
  203. package/dist/pages/opinly-blog-pages.js.map +0 -1
  204. package/dist/utils/json-ld.cjs +0 -2
  205. package/dist/utils/json-ld.cjs.map +0 -1
  206. package/dist/utils/json-ld.d.cts +0 -2
  207. package/dist/utils/json-ld.d.ts +0 -2
  208. package/dist/utils/json-ld.js +0 -1
  209. package/dist/utils/json-ld.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/blog-post/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { JSONContent } from \"@tiptap/core\";\nimport Link from \"next/link\";\nimport { cn } from \"../../utils/merge\";\nimport { opinlyConfig } from \"../../utils/sdk-config\";\nimport { BlogPostRes } from \"./_types/blog-post\";\nimport { genBlogPostingJSONLD, genFaqJSONLD } from \"./_helpers/json-ld\";\nimport { BlogComponentClassNames } from \"./_types/class-names\";\nimport { FAQS } from \"./_components/faq\";\nimport { calculateReadingTime } from \"./_helpers/reading-time\";\nimport { Content } from \"./_components/content\";\nimport { TableOfContents } from \"./_components/table-of-contents\";\nimport { BreadCrumbs } from \"../bread-crumbs\";\nimport { formatDate } from \"../../utils/dates\";\nimport Script from \"next/script\";\nimport { OpinlyBreadCrumbJsonLd, OpinlyJSONLD } from \"../json-ld\";\n\nexport type BlogPostProps = {\n cta?: React.ReactNode;\n};\n\nexport const BlogPost = ({\n post,\n classNames = {},\n cta,\n}: {\n post: BlogPostRes;\n classNames?: BlogComponentClassNames;\n} & BlogPostProps) => {\n const content = post.content as JSONContent;\n\n const breadcrumbItems = [];\n\n if (post.folder) {\n breadcrumbItems.push({\n slugNoPrefixSlash: post.folder.slug,\n name: post.folder.name,\n });\n }\n\n breadcrumbItems.push({\n slugNoPrefixSlash: post.slug,\n name: post.title,\n });\n\n return (\n <>\n {post.faqs && (\n <OpinlyJSONLD content={JSON.stringify(genFaqJSONLD(post.faqs))} />\n )}\n <OpinlyJSONLD content={JSON.stringify(genBlogPostingJSONLD(post))} />\n <OpinlyBreadCrumbJsonLd items={breadcrumbItems} />\n <div className=\"max-w-7xl mx-auto px-4 py-24 flex items-start space-x-8\">\n <div className=\"flex flex-col gap-12 w-full\">\n <div>\n <BreadCrumbs\n breadcrumbs={[\n post.folder && {\n url: `${opinlyConfig.blogPrefix}/${post.folder.slug}`,\n name: post.folder.name,\n },\n ]}\n />\n\n <h1 className=\"text-op-heading text-4xl font-bold mb-2 leading-tight\">\n {post.title}\n </h1>\n <div className=\"text-sm mb-4 text-op-muted space-x-1\">\n {post.author && (\n <>\n <Link\n href={`${opinlyConfig.blogPrefix}/authors/${post.author?.slug}`}\n className=\"font-medium\"\n >\n {post.author?.name}\n </Link>\n <span className=\"text-op-muted\">·</span>\n </>\n )}\n <span>\n {calculateReadingTime(content)} min read <span>·</span>\n </span>\n <span>\n {formatDate(post.firstPublishedAt as string) || \"Today\"}\n </span>\n </div>\n </div>\n\n <div\n className={cn(\n \"flex md:space-x-12 flex-col mx-auto w-full\",\n \"md:flex-row-reverse\",\n classNames.container\n )}\n >\n <article className=\"w-full md:w-3/4 order-2 md:order-1 flex items-start\">\n <div className=\"prose w-full \">\n <Content content={content} classNames={classNames} />\n <FAQS faqs={post.faqs} />\n </div>\n </article>\n <div className=\"flex md:w-1/4 md:sticky md:top-20\">\n <TableOfContents\n content={content}\n author={post.author}\n post={post}\n cta={cta}\n />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n};\n"],"mappings":"AAgDQ,SAqBQ,UArBR,KAqBQ,YArBR;AA9CR,OAAO,UAAU;AACjB,SAAS,UAAU;AACnB,SAAS,oBAAoB;AAE7B,SAAS,sBAAsB,oBAAoB;AAEnD,SAAS,YAAY;AACrB,SAAS,4BAA4B;AACrC,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAE3B,SAAS,wBAAwB,oBAAoB;AAM9C,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA,aAAa,CAAC;AAAA,EACd;AACF,MAGsB;AACpB,QAAM,UAAU,KAAK;AAErB,QAAM,kBAAkB,CAAC;AAEzB,MAAI,KAAK,QAAQ;AACf,oBAAgB,KAAK;AAAA,MACnB,mBAAmB,KAAK,OAAO;AAAA,MAC/B,MAAM,KAAK,OAAO;AAAA,IACpB,CAAC;AAAA,EACH;AAEA,kBAAgB,KAAK;AAAA,IACnB,mBAAmB,KAAK;AAAA,IACxB,MAAM,KAAK;AAAA,EACb,CAAC;AAED,SACE,iCACG;AAAA,SAAK,QACJ,oBAAC,gBAAa,SAAS,KAAK,UAAU,aAAa,KAAK,IAAI,CAAC,GAAG;AAAA,IAElE,oBAAC,gBAAa,SAAS,KAAK,UAAU,qBAAqB,IAAI,CAAC,GAAG;AAAA,IACnE,oBAAC,0BAAuB,OAAO,iBAAiB;AAAA,IAChD,oBAAC,SAAI,WAAU,2DACb,+BAAC,SAAI,WAAU,+BACb;AAAA,2BAAC,SACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,cACX,KAAK,UAAU;AAAA,gBACb,KAAK,GAAG,aAAa,UAAU,IAAI,KAAK,OAAO,IAAI;AAAA,gBACnD,MAAM,KAAK,OAAO;AAAA,cACpB;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QAEA,oBAAC,QAAG,WAAU,yDACX,eAAK,OACR;AAAA,QACA,qBAAC,SAAI,WAAU,wCACZ;AAAA,eAAK,UACJ,iCACE;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM,GAAG,aAAa,UAAU,YAAY,KAAK,QAAQ,IAAI;AAAA,gBAC7D,WAAU;AAAA,gBAET,eAAK,QAAQ;AAAA;AAAA,YAChB;AAAA,YACA,oBAAC,UAAK,WAAU,iBAAgB,kBAAC;AAAA,aACnC;AAAA,UAEF,qBAAC,UACE;AAAA,iCAAqB,OAAO;AAAA,YAAE;AAAA,YAAU,oBAAC,UAAK,kBAAC;AAAA,aAClD;AAAA,UACA,oBAAC,UACE,qBAAW,KAAK,gBAA0B,KAAK,SAClD;AAAA,WACF;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA,WAAW;AAAA,UACb;AAAA,UAEA;AAAA,gCAAC,aAAQ,WAAU,uDACjB,+BAAC,SAAI,WAAU,iBACb;AAAA,kCAAC,WAAQ,SAAkB,YAAwB;AAAA,cACnD,oBAAC,QAAK,MAAM,KAAK,MAAM;AAAA,eACzB,GACF;AAAA,YACA,oBAAC,SAAI,WAAU,qCACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA,QAAQ,KAAK;AAAA,gBACb;AAAA,gBACA;AAAA;AAAA,YACF,GACF;AAAA;AAAA;AAAA,MACF;AAAA,OACF,GACF;AAAA,KACF;AAEJ;","names":[]}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var bread_crumbs_exports = {};
30
- __export(bread_crumbs_exports, {
31
- BreadCrumbs: () => BreadCrumbs
32
- });
33
- module.exports = __toCommonJS(bread_crumbs_exports);
34
- var import_jsx_runtime = require("react/jsx-runtime");
35
- var import_link = __toESM(require("next/link"), 1);
36
- var import_react = require("react");
37
- var import_sdk_config = require("../utils/sdk-config");
38
- const BreadCrumbs = ({
39
- breadcrumbs
40
- }) => {
41
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("nav", { className: "text-sm text-muted-foreground mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ol", { className: "list-reset flex space-x-2", children: [
42
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/", className: "font-bold", children: import_sdk_config.opinlyConfig.siteName }),
43
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "/" }),
44
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: import_sdk_config.opinlyConfig.blogPrefix, className: "font-bold", children: "Blog" }),
45
- breadcrumbs?.map((breadcrumb, index) => {
46
- if (!breadcrumb) {
47
- return null;
48
- }
49
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Fragment, { children: [
50
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "/" }),
51
- breadcrumb.url ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: breadcrumb.url, className: "font-bold", children: breadcrumb.name }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-bold", children: breadcrumb.name })
52
- ] }, index);
53
- })
54
- ] }) });
55
- };
56
- // Annotate the CommonJS export names for ESM import in node:
57
- 0 && (module.exports = {
58
- BreadCrumbs
59
- });
60
- //# sourceMappingURL=bread-crumbs.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/bread-crumbs.tsx"],"sourcesContent":["import Link from \"next/link\";\nimport { Fragment } from \"react\";\nimport { opinlyConfig } from \"../utils/sdk-config\";\n\nexport const BreadCrumbs = ({\n breadcrumbs,\n}: {\n breadcrumbs?: (\n | {\n name: string;\n url?: string;\n }\n | null\n | undefined\n )[];\n}) => {\n return (\n <nav className=\"text-sm text-muted-foreground mb-4\">\n <ol className=\"list-reset flex space-x-2\">\n <Link href=\"/\" className=\"font-bold\">\n {opinlyConfig.siteName}\n </Link>\n <span>/</span>\n <Link href={opinlyConfig.blogPrefix} className=\"font-bold\">\n Blog\n </Link>\n {breadcrumbs?.map((breadcrumb, index) => {\n if (!breadcrumb) {\n return null;\n }\n\n return (\n <Fragment key={index}>\n <span>/</span>\n {breadcrumb.url ? (\n <Link href={breadcrumb.url} className=\"font-bold\">\n {breadcrumb.name}\n </Link>\n ) : (\n <span className=\"font-bold\">{breadcrumb.name}</span>\n )}\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBQ;AAnBR,kBAAiB;AACjB,mBAAyB;AACzB,wBAA6B;AAEtB,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MASM;AACJ,SACE,4CAAC,SAAI,WAAU,sCACb,uDAAC,QAAG,WAAU,6BACZ;AAAA,gDAAC,YAAAA,SAAA,EAAK,MAAK,KAAI,WAAU,aACtB,yCAAa,UAChB;AAAA,IACA,4CAAC,UAAK,eAAC;AAAA,IACP,4CAAC,YAAAA,SAAA,EAAK,MAAM,+BAAa,YAAY,WAAU,aAAY,kBAE3D;AAAA,IACC,aAAa,IAAI,CAAC,YAAY,UAAU;AACvC,UAAI,CAAC,YAAY;AACf,eAAO;AAAA,MACT;AAEA,aACE,6CAAC,yBACC;AAAA,oDAAC,UAAK,eAAC;AAAA,QACN,WAAW,MACV,4CAAC,YAAAA,SAAA,EAAK,MAAM,WAAW,KAAK,WAAU,aACnC,qBAAW,MACd,IAEA,4CAAC,UAAK,WAAU,aAAa,qBAAW,MAAK;AAAA,WAPlC,KASf;AAAA,IAEJ,CAAC;AAAA,KACH,GACF;AAEJ;","names":["Link"]}
@@ -1,10 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- declare const BreadCrumbs: ({ breadcrumbs, }: {
4
- breadcrumbs?: ({
5
- name: string;
6
- url?: string;
7
- } | null | undefined)[];
8
- }) => react_jsx_runtime.JSX.Element;
9
-
10
- export { BreadCrumbs };
@@ -1,10 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- declare const BreadCrumbs: ({ breadcrumbs, }: {
4
- breadcrumbs?: ({
5
- name: string;
6
- url?: string;
7
- } | null | undefined)[];
8
- }) => react_jsx_runtime.JSX.Element;
9
-
10
- export { BreadCrumbs };
@@ -1,26 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import Link from "next/link";
3
- import { Fragment } from "react";
4
- import { opinlyConfig } from "../utils/sdk-config";
5
- const BreadCrumbs = ({
6
- breadcrumbs
7
- }) => {
8
- return /* @__PURE__ */ jsx("nav", { className: "text-sm text-muted-foreground mb-4", children: /* @__PURE__ */ jsxs("ol", { className: "list-reset flex space-x-2", children: [
9
- /* @__PURE__ */ jsx(Link, { href: "/", className: "font-bold", children: opinlyConfig.siteName }),
10
- /* @__PURE__ */ jsx("span", { children: "/" }),
11
- /* @__PURE__ */ jsx(Link, { href: opinlyConfig.blogPrefix, className: "font-bold", children: "Blog" }),
12
- breadcrumbs?.map((breadcrumb, index) => {
13
- if (!breadcrumb) {
14
- return null;
15
- }
16
- return /* @__PURE__ */ jsxs(Fragment, { children: [
17
- /* @__PURE__ */ jsx("span", { children: "/" }),
18
- breadcrumb.url ? /* @__PURE__ */ jsx(Link, { href: breadcrumb.url, className: "font-bold", children: breadcrumb.name }) : /* @__PURE__ */ jsx("span", { className: "font-bold", children: breadcrumb.name })
19
- ] }, index);
20
- })
21
- ] }) });
22
- };
23
- export {
24
- BreadCrumbs
25
- };
26
- //# sourceMappingURL=bread-crumbs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/bread-crumbs.tsx"],"sourcesContent":["import Link from \"next/link\";\nimport { Fragment } from \"react\";\nimport { opinlyConfig } from \"../utils/sdk-config\";\n\nexport const BreadCrumbs = ({\n breadcrumbs,\n}: {\n breadcrumbs?: (\n | {\n name: string;\n url?: string;\n }\n | null\n | undefined\n )[];\n}) => {\n return (\n <nav className=\"text-sm text-muted-foreground mb-4\">\n <ol className=\"list-reset flex space-x-2\">\n <Link href=\"/\" className=\"font-bold\">\n {opinlyConfig.siteName}\n </Link>\n <span>/</span>\n <Link href={opinlyConfig.blogPrefix} className=\"font-bold\">\n Blog\n </Link>\n {breadcrumbs?.map((breadcrumb, index) => {\n if (!breadcrumb) {\n return null;\n }\n\n return (\n <Fragment key={index}>\n <span>/</span>\n {breadcrumb.url ? (\n <Link href={breadcrumb.url} className=\"font-bold\">\n {breadcrumb.name}\n </Link>\n ) : (\n <span className=\"font-bold\">{breadcrumb.name}</span>\n )}\n </Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"mappings":"AAmBQ,cAaI,YAbJ;AAnBR,OAAO,UAAU;AACjB,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAEtB,MAAM,cAAc,CAAC;AAAA,EAC1B;AACF,MASM;AACJ,SACE,oBAAC,SAAI,WAAU,sCACb,+BAAC,QAAG,WAAU,6BACZ;AAAA,wBAAC,QAAK,MAAK,KAAI,WAAU,aACtB,uBAAa,UAChB;AAAA,IACA,oBAAC,UAAK,eAAC;AAAA,IACP,oBAAC,QAAK,MAAM,aAAa,YAAY,WAAU,aAAY,kBAE3D;AAAA,IACC,aAAa,IAAI,CAAC,YAAY,UAAU;AACvC,UAAI,CAAC,YAAY;AACf,eAAO;AAAA,MACT;AAEA,aACE,qBAAC,YACC;AAAA,4BAAC,UAAK,eAAC;AAAA,QACN,WAAW,MACV,oBAAC,QAAK,MAAM,WAAW,KAAK,WAAU,aACnC,qBAAW,MACd,IAEA,oBAAC,UAAK,WAAU,aAAa,qBAAW,MAAK;AAAA,WAPlC,KASf;AAAA,IAEJ,CAAC;AAAA,KACH,GACF;AAEJ;","names":[]}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var json_ld_exports = {};
20
- __export(json_ld_exports, {
21
- folderCollectionJSONLD: () => folderCollectionJSONLD
22
- });
23
- module.exports = __toCommonJS(json_ld_exports);
24
- var import_sdk_config = require("../../../utils/sdk-config");
25
- const folderCollectionJSONLD = (folder) => {
26
- const jsonLD = {
27
- "@context": "https://schema.org",
28
- "@type": "CollectionPage",
29
- name: folder.name,
30
- description: folder.description || `Explore articles in ${folder.name}.`,
31
- url: `${import_sdk_config.opinlyConfig.blogUrl}/${folder.slug}`,
32
- publisher: {
33
- "@type": "Organization",
34
- name: import_sdk_config.opinlyConfig.siteName
35
- }
36
- };
37
- return JSON.stringify(jsonLD);
38
- };
39
- // Annotate the CommonJS export names for ESM import in node:
40
- 0 && (module.exports = {
41
- folderCollectionJSONLD
42
- });
43
- //# sourceMappingURL=json-ld.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/folder-page/_helpers/json-ld.ts"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport { CollectionPage, WithContext } from \"schema-dts\";\nimport { opinlyConfig } from \"../../../utils/sdk-config\";\n\ntype FolderRes = Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"folder\" }\n>[\"data\"];\n\nexport const folderCollectionJSONLD = (folder: FolderRes) => {\n const jsonLD: WithContext<CollectionPage> = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"CollectionPage\",\n name: folder.name,\n description: folder.description || `Explore articles in ${folder.name}.`,\n url: `${opinlyConfig.blogUrl}/${folder.slug}`,\n publisher: {\n \"@type\": \"Organization\",\n name: opinlyConfig.siteName,\n },\n };\n\n return JSON.stringify(jsonLD);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,wBAA6B;AAOtB,MAAM,yBAAyB,CAAC,WAAsB;AAC3D,QAAM,SAAsC;AAAA,IAC1C,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,MAAM,OAAO;AAAA,IACb,aAAa,OAAO,eAAe,uBAAuB,OAAO,IAAI;AAAA,IACrE,KAAK,GAAG,+BAAa,OAAO,IAAI,OAAO,IAAI;AAAA,IAC3C,WAAW;AAAA,MACT,SAAS;AAAA,MACT,MAAM,+BAAa;AAAA,IACrB;AAAA,EACF;AAEA,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
@@ -1,8 +0,0 @@
1
- import { Opinly } from '@opinly/backend';
2
-
3
- type FolderRes = Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
4
- type: "folder";
5
- }>["data"];
6
- declare const folderCollectionJSONLD: (folder: FolderRes) => string;
7
-
8
- export { folderCollectionJSONLD };
@@ -1,8 +0,0 @@
1
- import { Opinly } from '@opinly/backend';
2
-
3
- type FolderRes = Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
4
- type: "folder";
5
- }>["data"];
6
- declare const folderCollectionJSONLD: (folder: FolderRes) => string;
7
-
8
- export { folderCollectionJSONLD };
@@ -1,19 +0,0 @@
1
- import { opinlyConfig } from "../../../utils/sdk-config";
2
- const folderCollectionJSONLD = (folder) => {
3
- const jsonLD = {
4
- "@context": "https://schema.org",
5
- "@type": "CollectionPage",
6
- name: folder.name,
7
- description: folder.description || `Explore articles in ${folder.name}.`,
8
- url: `${opinlyConfig.blogUrl}/${folder.slug}`,
9
- publisher: {
10
- "@type": "Organization",
11
- name: opinlyConfig.siteName
12
- }
13
- };
14
- return JSON.stringify(jsonLD);
15
- };
16
- export {
17
- folderCollectionJSONLD
18
- };
19
- //# sourceMappingURL=json-ld.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/folder-page/_helpers/json-ld.ts"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport { CollectionPage, WithContext } from \"schema-dts\";\nimport { opinlyConfig } from \"../../../utils/sdk-config\";\n\ntype FolderRes = Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"folder\" }\n>[\"data\"];\n\nexport const folderCollectionJSONLD = (folder: FolderRes) => {\n const jsonLD: WithContext<CollectionPage> = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"CollectionPage\",\n name: folder.name,\n description: folder.description || `Explore articles in ${folder.name}.`,\n url: `${opinlyConfig.blogUrl}/${folder.slug}`,\n publisher: {\n \"@type\": \"Organization\",\n name: opinlyConfig.siteName,\n },\n };\n\n return JSON.stringify(jsonLD);\n};\n"],"mappings":"AAEA,SAAS,oBAAoB;AAOtB,MAAM,yBAAyB,CAAC,WAAsB;AAC3D,QAAM,SAAsC;AAAA,IAC1C,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,MAAM,OAAO;AAAA,IACb,aAAa,OAAO,eAAe,uBAAuB,OAAO,IAAI;AAAA,IACrE,KAAK,GAAG,aAAa,OAAO,IAAI,OAAO,IAAI;AAAA,IAC3C,WAAW;AAAA,MACT,SAAS;AAAA,MACT,MAAM,aAAa;AAAA,IACrB;AAAA,EACF;AAEA,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
@@ -1,84 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var folder_page_exports = {};
20
- __export(folder_page_exports, {
21
- FolderPage: () => FolderPage
22
- });
23
- module.exports = __toCommonJS(folder_page_exports);
24
- var import_jsx_runtime = require("react/jsx-runtime");
25
- var import_post_preview = require("../post-preview");
26
- var import_bread_crumbs = require("../bread-crumbs");
27
- var import_sdk_config = require("../../utils/sdk-config");
28
- var import_json_ld = require("../json-ld");
29
- const FolderPage = ({
30
- folder
31
- }) => {
32
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
33
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
34
- import_json_ld.OpinlyBreadCrumbJsonLd,
35
- {
36
- items: [
37
- {
38
- slugNoPrefixSlash: folder.slug,
39
- name: folder.name
40
- }
41
- ]
42
- }
43
- ),
44
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "max-w-6xl mx-auto px-4 py-10", children: [
45
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
- import_bread_crumbs.BreadCrumbs,
47
- {
48
- breadcrumbs: [
49
- {
50
- name: folder.name,
51
- url: `${import_sdk_config.opinlyConfig.blogUrl}/${folder.slug}`
52
- }
53
- ]
54
- }
55
- ),
56
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "text-4xl font-bold mb-2", children: folder.name }),
57
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground max-w-2xl mb-8", children: folder.description || `Explore articles about ${folder.name}.` }),
58
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8", children: [
59
- folder.posts.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-muted-foreground", children: "No posts added yet" }),
60
- folder.posts.map((post) => {
61
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_post_preview.PostPreview, { post }, post.slug);
62
- })
63
- ] })
64
- ] })
65
- ] });
66
- };
67
- function formatDate(dateStr) {
68
- return new Date(dateStr).toLocaleDateString("en-GB", {
69
- day: "2-digit",
70
- month: "short",
71
- year: "numeric"
72
- });
73
- }
74
- function formatMinutes(description) {
75
- if (!description) return "5 min read";
76
- const words = description.split(" ").length;
77
- const mins = Math.ceil(words / 200);
78
- return `${mins} min read`;
79
- }
80
- // Annotate the CommonJS export names for ESM import in node:
81
- 0 && (module.exports = {
82
- FolderPage
83
- });
84
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/folder-page/index.tsx"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport { PostPreview } from \"../post-preview\";\nimport { BreadCrumbs } from \"../bread-crumbs\";\nimport { BreadcrumbJsonLd } from \"next-seo\";\nimport { opinlyConfig } from \"../../utils/sdk-config\";\nimport { OpinlyBreadCrumbJsonLd } from \"../json-ld\";\n\nexport const FolderPage = ({\n folder,\n}: {\n folder: Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"folder\" }\n >[\"data\"];\n}) => {\n return (\n <>\n <OpinlyBreadCrumbJsonLd\n items={[\n {\n slugNoPrefixSlash: folder.slug,\n name: folder.name,\n },\n ]}\n />\n\n <div className=\"max-w-6xl mx-auto px-4 py-10\">\n <BreadCrumbs\n breadcrumbs={[\n {\n name: folder.name,\n url: `${opinlyConfig.blogUrl}/${folder.slug}`,\n },\n ]}\n />\n\n <h1 className=\"text-4xl font-bold mb-2\">{folder.name}</h1>\n <p className=\"text-muted-foreground max-w-2xl mb-8\">\n {folder.description || `Explore articles about ${folder.name}.`}\n </p>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8\">\n {folder.posts.length === 0 && (\n <div className=\"text-muted-foreground\">No posts added yet</div>\n )}\n {folder.posts.map((post) => {\n return <PostPreview key={post.slug} post={post} />;\n })}\n </div>\n </div>\n </>\n );\n};\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString(\"en-GB\", {\n day: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n });\n}\n\nfunction formatMinutes(description: string | null) {\n // Fake estimate based on length of description\n if (!description) return \"5 min read\";\n const words = description.split(\" \").length;\n const mins = Math.ceil(words / 200);\n return `${mins} min read`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBI;AAfJ,0BAA4B;AAC5B,0BAA4B;AAE5B,wBAA6B;AAC7B,qBAAuC;AAEhC,MAAM,aAAa,CAAC;AAAA,EACzB;AACF,MAKM;AACJ,SACE,4EACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL;AAAA,YACE,mBAAmB,OAAO;AAAA,YAC1B,MAAM,OAAO;AAAA,UACf;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEA,6CAAC,SAAI,WAAU,gCACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,YACX;AAAA,cACE,MAAM,OAAO;AAAA,cACb,KAAK,GAAG,+BAAa,OAAO,IAAI,OAAO,IAAI;AAAA,YAC7C;AAAA,UACF;AAAA;AAAA,MACF;AAAA,MAEA,4CAAC,QAAG,WAAU,2BAA2B,iBAAO,MAAK;AAAA,MACrD,4CAAC,OAAE,WAAU,wCACV,iBAAO,eAAe,0BAA0B,OAAO,IAAI,KAC9D;AAAA,MAEA,6CAAC,SAAI,WAAU,wDACZ;AAAA,eAAO,MAAM,WAAW,KACvB,4CAAC,SAAI,WAAU,yBAAwB,gCAAkB;AAAA,QAE1D,OAAO,MAAM,IAAI,CAAC,SAAS;AAC1B,iBAAO,4CAAC,mCAA4B,QAAX,KAAK,IAAkB;AAAA,QAClD,CAAC;AAAA,SACH;AAAA,OACF;AAAA,KACF;AAEJ;AAEA,SAAS,WAAW,SAAiB;AACnC,SAAO,IAAI,KAAK,OAAO,EAAE,mBAAmB,SAAS;AAAA,IACnD,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AACH;AAEA,SAAS,cAAc,aAA4B;AAEjD,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,QAAQ,YAAY,MAAM,GAAG,EAAE;AACrC,QAAM,OAAO,KAAK,KAAK,QAAQ,GAAG;AAClC,SAAO,GAAG,IAAI;AAChB;","names":[]}
@@ -1,10 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Opinly } from '@opinly/backend';
3
-
4
- declare const FolderPage: ({ folder, }: {
5
- folder: Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
6
- type: "folder";
7
- }>["data"];
8
- }) => react_jsx_runtime.JSX.Element;
9
-
10
- export { FolderPage };
@@ -1,10 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Opinly } from '@opinly/backend';
3
-
4
- declare const FolderPage: ({ folder, }: {
5
- folder: Extract<Awaited<ReturnType<Opinly["content"]["blog"]>>, {
6
- type: "folder";
7
- }>["data"];
8
- }) => react_jsx_runtime.JSX.Element;
9
-
10
- export { FolderPage };
@@ -1,60 +0,0 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { PostPreview } from "../post-preview";
3
- import { BreadCrumbs } from "../bread-crumbs";
4
- import { opinlyConfig } from "../../utils/sdk-config";
5
- import { OpinlyBreadCrumbJsonLd } from "../json-ld";
6
- const FolderPage = ({
7
- folder
8
- }) => {
9
- return /* @__PURE__ */ jsxs(Fragment, { children: [
10
- /* @__PURE__ */ jsx(
11
- OpinlyBreadCrumbJsonLd,
12
- {
13
- items: [
14
- {
15
- slugNoPrefixSlash: folder.slug,
16
- name: folder.name
17
- }
18
- ]
19
- }
20
- ),
21
- /* @__PURE__ */ jsxs("div", { className: "max-w-6xl mx-auto px-4 py-10", children: [
22
- /* @__PURE__ */ jsx(
23
- BreadCrumbs,
24
- {
25
- breadcrumbs: [
26
- {
27
- name: folder.name,
28
- url: `${opinlyConfig.blogUrl}/${folder.slug}`
29
- }
30
- ]
31
- }
32
- ),
33
- /* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold mb-2", children: folder.name }),
34
- /* @__PURE__ */ jsx("p", { className: "text-muted-foreground max-w-2xl mb-8", children: folder.description || `Explore articles about ${folder.name}.` }),
35
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8", children: [
36
- folder.posts.length === 0 && /* @__PURE__ */ jsx("div", { className: "text-muted-foreground", children: "No posts added yet" }),
37
- folder.posts.map((post) => {
38
- return /* @__PURE__ */ jsx(PostPreview, { post }, post.slug);
39
- })
40
- ] })
41
- ] })
42
- ] });
43
- };
44
- function formatDate(dateStr) {
45
- return new Date(dateStr).toLocaleDateString("en-GB", {
46
- day: "2-digit",
47
- month: "short",
48
- year: "numeric"
49
- });
50
- }
51
- function formatMinutes(description) {
52
- if (!description) return "5 min read";
53
- const words = description.split(" ").length;
54
- const mins = Math.ceil(words / 200);
55
- return `${mins} min read`;
56
- }
57
- export {
58
- FolderPage
59
- };
60
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/folder-page/index.tsx"],"sourcesContent":["import { Opinly } from \"@opinly/backend\";\nimport { PostPreview } from \"../post-preview\";\nimport { BreadCrumbs } from \"../bread-crumbs\";\nimport { BreadcrumbJsonLd } from \"next-seo\";\nimport { opinlyConfig } from \"../../utils/sdk-config\";\nimport { OpinlyBreadCrumbJsonLd } from \"../json-ld\";\n\nexport const FolderPage = ({\n folder,\n}: {\n folder: Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"folder\" }\n >[\"data\"];\n}) => {\n return (\n <>\n <OpinlyBreadCrumbJsonLd\n items={[\n {\n slugNoPrefixSlash: folder.slug,\n name: folder.name,\n },\n ]}\n />\n\n <div className=\"max-w-6xl mx-auto px-4 py-10\">\n <BreadCrumbs\n breadcrumbs={[\n {\n name: folder.name,\n url: `${opinlyConfig.blogUrl}/${folder.slug}`,\n },\n ]}\n />\n\n <h1 className=\"text-4xl font-bold mb-2\">{folder.name}</h1>\n <p className=\"text-muted-foreground max-w-2xl mb-8\">\n {folder.description || `Explore articles about ${folder.name}.`}\n </p>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8\">\n {folder.posts.length === 0 && (\n <div className=\"text-muted-foreground\">No posts added yet</div>\n )}\n {folder.posts.map((post) => {\n return <PostPreview key={post.slug} post={post} />;\n })}\n </div>\n </div>\n </>\n );\n};\n\nfunction formatDate(dateStr: string) {\n return new Date(dateStr).toLocaleDateString(\"en-GB\", {\n day: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n });\n}\n\nfunction formatMinutes(description: string | null) {\n // Fake estimate based on length of description\n if (!description) return \"5 min read\";\n const words = description.split(\" \").length;\n const mins = Math.ceil(words / 200);\n return `${mins} min read`;\n}\n"],"mappings":"AAgBI,mBACE,KAwBE,YAzBJ;AAfJ,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAE5B,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AAEhC,MAAM,aAAa,CAAC;AAAA,EACzB;AACF,MAKM;AACJ,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL;AAAA,YACE,mBAAmB,OAAO;AAAA,YAC1B,MAAM,OAAO;AAAA,UACf;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAEA,qBAAC,SAAI,WAAU,gCACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,YACX;AAAA,cACE,MAAM,OAAO;AAAA,cACb,KAAK,GAAG,aAAa,OAAO,IAAI,OAAO,IAAI;AAAA,YAC7C;AAAA,UACF;AAAA;AAAA,MACF;AAAA,MAEA,oBAAC,QAAG,WAAU,2BAA2B,iBAAO,MAAK;AAAA,MACrD,oBAAC,OAAE,WAAU,wCACV,iBAAO,eAAe,0BAA0B,OAAO,IAAI,KAC9D;AAAA,MAEA,qBAAC,SAAI,WAAU,wDACZ;AAAA,eAAO,MAAM,WAAW,KACvB,oBAAC,SAAI,WAAU,yBAAwB,gCAAkB;AAAA,QAE1D,OAAO,MAAM,IAAI,CAAC,SAAS;AAC1B,iBAAO,oBAAC,eAA4B,QAAX,KAAK,IAAkB;AAAA,QAClD,CAAC;AAAA,SACH;AAAA,OACF;AAAA,KACF;AAEJ;AAEA,SAAS,WAAW,SAAiB;AACnC,SAAO,IAAI,KAAK,OAAO,EAAE,mBAAmB,SAAS;AAAA,IACnD,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AACH;AAEA,SAAS,cAAc,aAA4B;AAEjD,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,QAAQ,YAAY,MAAM,GAAG,EAAE;AACrC,QAAM,OAAO,KAAK,KAAK,QAAQ,GAAG;AAClC,SAAO,GAAG,IAAI;AAChB;","names":[]}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var json_ld_exports = {};
20
- __export(json_ld_exports, {
21
- blogJSONLD: () => blogJSONLD
22
- });
23
- module.exports = __toCommonJS(json_ld_exports);
24
- var import_sdk_config = require("../../../utils/sdk-config");
25
- const blogJSONLD = () => {
26
- const jsonLD = {
27
- "@context": "https://schema.org",
28
- "@type": "Blog",
29
- name: import_sdk_config.opinlyConfig.siteName,
30
- description: `Latest news and insights from ${import_sdk_config.opinlyConfig.siteName}`,
31
- url: import_sdk_config.opinlyConfig.blogUrl,
32
- publisher: {
33
- "@type": "Organization",
34
- name: import_sdk_config.opinlyConfig.siteName
35
- }
36
- };
37
- return JSON.stringify(jsonLD);
38
- };
39
- // Annotate the CommonJS export names for ESM import in node:
40
- 0 && (module.exports = {
41
- blogJSONLD
42
- });
43
- //# sourceMappingURL=json-ld.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/home-page/_helpers/json-ld.ts"],"sourcesContent":["import { Blog, WithContext } from \"schema-dts\";\nimport { opinlyConfig } from \"../../../utils/sdk-config\";\n\nexport const blogJSONLD = () => {\n const jsonLD: WithContext<Blog> = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"Blog\",\n name: opinlyConfig.siteName,\n description: `Latest news and insights from ${opinlyConfig.siteName}`,\n url: opinlyConfig.blogUrl,\n publisher: {\n \"@type\": \"Organization\",\n name: opinlyConfig.siteName,\n },\n };\n\n return JSON.stringify(jsonLD);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,wBAA6B;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM,SAA4B;AAAA,IAChC,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,MAAM,+BAAa;AAAA,IACnB,aAAa,iCAAiC,+BAAa,QAAQ;AAAA,IACnE,KAAK,+BAAa;AAAA,IAClB,WAAW;AAAA,MACT,SAAS;AAAA,MACT,MAAM,+BAAa;AAAA,IACrB;AAAA,EACF;AAEA,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
@@ -1,3 +0,0 @@
1
- declare const blogJSONLD: () => string;
2
-
3
- export { blogJSONLD };
@@ -1,3 +0,0 @@
1
- declare const blogJSONLD: () => string;
2
-
3
- export { blogJSONLD };
@@ -1,19 +0,0 @@
1
- import { opinlyConfig } from "../../../utils/sdk-config";
2
- const blogJSONLD = () => {
3
- const jsonLD = {
4
- "@context": "https://schema.org",
5
- "@type": "Blog",
6
- name: opinlyConfig.siteName,
7
- description: `Latest news and insights from ${opinlyConfig.siteName}`,
8
- url: opinlyConfig.blogUrl,
9
- publisher: {
10
- "@type": "Organization",
11
- name: opinlyConfig.siteName
12
- }
13
- };
14
- return JSON.stringify(jsonLD);
15
- };
16
- export {
17
- blogJSONLD
18
- };
19
- //# sourceMappingURL=json-ld.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/home-page/_helpers/json-ld.ts"],"sourcesContent":["import { Blog, WithContext } from \"schema-dts\";\nimport { opinlyConfig } from \"../../../utils/sdk-config\";\n\nexport const blogJSONLD = () => {\n const jsonLD: WithContext<Blog> = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"Blog\",\n name: opinlyConfig.siteName,\n description: `Latest news and insights from ${opinlyConfig.siteName}`,\n url: opinlyConfig.blogUrl,\n publisher: {\n \"@type\": \"Organization\",\n name: opinlyConfig.siteName,\n },\n };\n\n return JSON.stringify(jsonLD);\n};\n"],"mappings":"AACA,SAAS,oBAAoB;AAEtB,MAAM,aAAa,MAAM;AAC9B,QAAM,SAA4B;AAAA,IAChC,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,MAAM,aAAa;AAAA,IACnB,aAAa,iCAAiC,aAAa,QAAQ;AAAA,IACnE,KAAK,aAAa;AAAA,IAClB,WAAW;AAAA,MACT,SAAS;AAAA,MACT,MAAM,aAAa;AAAA,IACrB;AAAA,EACF;AAEA,SAAO,KAAK,UAAU,MAAM;AAC9B;","names":[]}
@@ -1,108 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var folders_exports = {};
30
- __export(folders_exports, {
31
- HomePageFolders: () => HomePageFolders,
32
- HomePageFoldersSkeleton: () => HomePageFoldersSkeleton
33
- });
34
- module.exports = __toCommonJS(folders_exports);
35
- var import_jsx_runtime = require("react/jsx-runtime");
36
- var import_link = __toESM(require("next/link"), 1);
37
- var import_post_preview = require("../post-preview");
38
- var import_lucide_react = require("lucide-react");
39
- const HomePageFoldersSkeleton = () => {
40
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: Array(2).fill(null).map((_, sectionIdx) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-4 mb-5", children: [
41
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "animate-pulse space-y-2", children: [
42
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-8 w-1/3 bg-gray-200 dark:bg-gray-700 rounded" }),
43
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-4 w-1/2 bg-gray-200 dark:bg-gray-700 rounded" })
44
- ] }),
45
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10", children: [
46
- Array(3).fill(null).map((__, postIdx) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "animate-pulse space-y-3", children: [
47
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-full h-48 bg-gray-200 dark:bg-gray-700 rounded-lg" }),
48
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-5 w-3/4 bg-gray-200 dark:bg-gray-700 rounded" }),
49
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-4 w-full bg-gray-200 dark:bg-gray-700 rounded" })
50
- ] }, postIdx)),
51
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex justify-center items-center animate-pulse", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-4 w-48 bg-gray-200 text-op-heading rounded" }) })
52
- ] })
53
- ] }, sectionIdx)) });
54
- };
55
- const HomePageFolders = ({
56
- folders
57
- }) => {
58
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-col gap-10 mt-20", children: folders.map((folder) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-4", children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-2 mb-20", children: [
60
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
61
- import_link.default,
62
- {
63
- href: `/blog/${folder.slug}`,
64
- className: "text-3xl",
65
- children: folder.title
66
- },
67
- folder.slug
68
- ),
69
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-op-muted", children: folder.description })
70
- ] }),
71
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10 mb-20", children: [
72
- folder.posts.filter((post) => post !== null).map((post) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
73
- import_post_preview.PostPreview,
74
- {
75
- post: {
76
- ...post,
77
- folder: {
78
- name: folder.title,
79
- slug: folder.slug,
80
- description: folder.description || ""
81
- }
82
- }
83
- },
84
- post.slug
85
- )),
86
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex justify-center w-full h-full items-center ", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
87
- import_link.default,
88
- {
89
- href: `/blog/${folder.slug}`,
90
- className: "flex items-center gap-2",
91
- children: [
92
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
93
- "View all posts in ",
94
- folder.title
95
- ] }),
96
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "w-4 h-4" })
97
- ]
98
- }
99
- ) })
100
- ] })
101
- ] })) });
102
- };
103
- // Annotate the CommonJS export names for ESM import in node:
104
- 0 && (module.exports = {
105
- HomePageFolders,
106
- HomePageFoldersSkeleton
107
- });
108
- //# sourceMappingURL=folders.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/home-page/folders.tsx"],"sourcesContent":["import Link from \"next/link\";\nimport { PostPreview } from \"../post-preview\";\nimport { ArrowRight } from \"lucide-react\";\nimport { Opinly } from \"@opinly/backend\";\n\nexport const HomePageFoldersSkeleton = () => {\n return (\n <>\n {Array(2) // render 2 folder sections\n .fill(null)\n .map((_, sectionIdx) => (\n <div key={sectionIdx} className=\"space-y-4 mb-5\">\n {/* Folder title + description */}\n <div className=\"animate-pulse space-y-2\">\n <div className=\"h-8 w-1/3 bg-gray-200 dark:bg-gray-700 rounded\" />\n <div className=\"h-4 w-1/2 bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n\n {/* Posts grid */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10\">\n {Array(3) // 3 post placeholders\n .fill(null)\n .map((__, postIdx) => (\n <div key={postIdx} className=\"animate-pulse space-y-3\">\n {/* Image */}\n <div className=\"w-full h-48 bg-gray-200 dark:bg-gray-700 rounded-lg\" />\n {/* Title bar */}\n <div className=\"h-5 w-3/4 bg-gray-200 dark:bg-gray-700 rounded\" />\n {/* Description line */}\n <div className=\"h-4 w-full bg-gray-200 dark:bg-gray-700 rounded\" />\n </div>\n ))}\n\n {/* “View all” link */}\n <div className=\"flex justify-center items-center animate-pulse\">\n <div className=\"h-4 w-48 bg-gray-200 text-op-heading rounded\" />\n </div>\n </div>\n </div>\n ))}\n </>\n );\n};\n\nexport const HomePageFolders = ({\n folders,\n}: {\n folders: Extract<\n Awaited<ReturnType<Opinly[\"content\"][\"blog\"]>>,\n { type: \"home\" }\n >[\"data\"][\"folders\"];\n}) => {\n return (\n <div className=\"flex flex-col gap-10 mt-20\">\n {folders.map((folder) => (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-2 mb-20\">\n <Link\n key={folder.slug}\n href={`/blog/${folder.slug}`}\n className=\"text-3xl\"\n >\n {folder.title}\n </Link>\n <p className=\"text-sm text-op-muted\">{folder.description}</p>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-10 mb-20\">\n {folder.posts\n .filter((post) => post !== null)\n .map((post) => (\n <PostPreview\n key={post.slug}\n post={{\n ...post,\n folder: {\n name: folder.title,\n slug: folder.slug,\n description: folder.description || \"\",\n },\n }}\n />\n ))}\n <div className=\"flex justify-center w-full h-full items-center \">\n <Link\n href={`/blog/${folder.slug}`}\n className=\"flex items-center gap-2\"\n >\n <span>View all posts in {folder.title}</span>\n <ArrowRight className=\"w-4 h-4\" />\n </Link>\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOI;AAPJ,kBAAiB;AACjB,0BAA4B;AAC5B,0BAA2B;AAGpB,MAAM,0BAA0B,MAAM;AAC3C,SACE,2EACG,gBAAM,CAAC,EACL,KAAK,IAAI,EACT,IAAI,CAAC,GAAG,eACP,6CAAC,SAAqB,WAAU,kBAE9B;AAAA,iDAAC,SAAI,WAAU,2BACb;AAAA,kDAAC,SAAI,WAAU,kDAAiD;AAAA,MAChE,4CAAC,SAAI,WAAU,kDAAiD;AAAA,OAClE;AAAA,IAGA,6CAAC,SAAI,WAAU,yDACZ;AAAA,YAAM,CAAC,EACL,KAAK,IAAI,EACT,IAAI,CAAC,IAAI,YACR,6CAAC,SAAkB,WAAU,2BAE3B;AAAA,oDAAC,SAAI,WAAU,uDAAsD;AAAA,QAErE,4CAAC,SAAI,WAAU,kDAAiD;AAAA,QAEhE,4CAAC,SAAI,WAAU,mDAAkD;AAAA,WANzD,OAOV,CACD;AAAA,MAGH,4CAAC,SAAI,WAAU,kDACb,sDAAC,SAAI,WAAU,gDAA+C,GAChE;AAAA,OACF;AAAA,OA1BQ,UA2BV,CACD,GACL;AAEJ;AAEO,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AACF,MAKM;AACJ,SACE,4CAAC,SAAI,WAAU,8BACZ,kBAAQ,IAAI,CAAC,WACZ,6CAAC,SAAI,WAAU,aACb;AAAA,iDAAC,SAAI,WAAU,6BACb;AAAA;AAAA,QAAC,YAAAA;AAAA,QAAA;AAAA,UAEC,MAAM,SAAS,OAAO,IAAI;AAAA,UAC1B,WAAU;AAAA,UAET,iBAAO;AAAA;AAAA,QAJH,OAAO;AAAA,MAKd;AAAA,MACA,4CAAC,OAAE,WAAU,yBAAyB,iBAAO,aAAY;AAAA,OAC3D;AAAA,IACA,6CAAC,SAAI,WAAU,+DACZ;AAAA,aAAO,MACL,OAAO,CAAC,SAAS,SAAS,IAAI,EAC9B,IAAI,CAAC,SACJ;AAAA,QAAC;AAAA;AAAA,UAEC,MAAM;AAAA,YACJ,GAAG;AAAA,YACH,QAAQ;AAAA,cACN,MAAM,OAAO;AAAA,cACb,MAAM,OAAO;AAAA,cACb,aAAa,OAAO,eAAe;AAAA,YACrC;AAAA,UACF;AAAA;AAAA,QARK,KAAK;AAAA,MASZ,CACD;AAAA,MACH,4CAAC,SAAI,WAAU,mDACb;AAAA,QAAC,YAAAA;AAAA,QAAA;AAAA,UACC,MAAM,SAAS,OAAO,IAAI;AAAA,UAC1B,WAAU;AAAA,UAEV;AAAA,yDAAC,UAAK;AAAA;AAAA,cAAmB,OAAO;AAAA,eAAM;AAAA,YACtC,4CAAC,kCAAW,WAAU,WAAU;AAAA;AAAA;AAAA,MAClC,GACF;AAAA,OACF;AAAA,KACF,CACD,GACH;AAEJ;","names":["Link"]}