kofi-stack-template-generator 2.1.37 → 2.1.39

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 (323) hide show
  1. package/.turbo/turbo-build.log +6 -6
  2. package/dist/index.js +8057 -440
  3. package/package.json +1 -1
  4. package/src/templates.generated.ts +248 -94
  5. package/templates/integrations/posthog/src/components/providers/posthog-provider.tsx.hbs +4 -1
  6. package/templates/marketing/payload/package.json.hbs +41 -26
  7. package/templates/marketing/payload/src/Footer/Component.client.tsx +288 -0
  8. package/templates/marketing/payload/src/Footer/Component.tsx +11 -0
  9. package/templates/marketing/payload/src/Footer/RowLabel.tsx +15 -0
  10. package/templates/marketing/payload/src/Footer/config.ts +178 -0
  11. package/templates/marketing/payload/src/Footer/hooks/{revalidateFooter.ts.hbs → revalidateFooter.ts} +5 -5
  12. package/templates/marketing/payload/src/Header/Component.client.tsx +94 -0
  13. package/templates/marketing/payload/src/Header/Component.tsx +10 -0
  14. package/templates/marketing/payload/src/Header/MegaMenu/index.tsx +197 -0
  15. package/templates/marketing/payload/src/Header/MobileMenu/HamburgerIcon.tsx +48 -0
  16. package/templates/marketing/payload/src/Header/MobileMenu/index.tsx +299 -0
  17. package/templates/marketing/payload/src/Header/Nav/index.tsx +76 -0
  18. package/templates/marketing/payload/src/Header/RowLabel.tsx +21 -0
  19. package/templates/marketing/payload/src/Header/config.ts +208 -0
  20. package/templates/marketing/payload/src/Header/hooks/{revalidateHeader.ts.hbs → revalidateHeader.ts} +5 -5
  21. package/templates/marketing/payload/src/access/{authenticated.ts.hbs → authenticated.ts} +1 -1
  22. package/templates/marketing/payload/src/access/{authenticatedOrPublished.ts.hbs → authenticatedOrPublished.ts} +8 -8
  23. package/templates/marketing/payload/src/app/(docs)/docs/[[...slug]]/page.tsx +117 -0
  24. package/templates/marketing/payload/src/app/(docs)/docs/layout.tsx +39 -0
  25. package/templates/marketing/payload/src/app/(docs)/layout.tsx +44 -0
  26. package/templates/marketing/payload/src/app/(frontend)/(sitemaps)/pages-sitemap.xml/route.ts +68 -0
  27. package/templates/marketing/payload/src/app/(frontend)/(sitemaps)/posts-sitemap.xml/route.ts +55 -0
  28. package/templates/marketing/payload/src/app/(frontend)/[slug]/page.client.tsx +15 -0
  29. package/templates/marketing/payload/src/app/(frontend)/[slug]/page.tsx +114 -0
  30. package/templates/marketing/payload/src/app/(frontend)/api/docs-search/route.ts +67 -0
  31. package/templates/marketing/payload/src/app/(frontend)/api/newsletter/route.ts +260 -0
  32. package/templates/marketing/payload/src/app/(frontend)/api/pricing/route.ts +266 -0
  33. package/templates/marketing/payload/src/app/(frontend)/globals.css +1019 -0
  34. package/templates/marketing/payload/src/app/(frontend)/layout.tsx +114 -0
  35. package/templates/marketing/payload/src/app/(frontend)/next/exit-preview/route.ts +7 -0
  36. package/templates/marketing/payload/src/app/(frontend)/next/preview/route.ts +56 -0
  37. package/templates/marketing/payload/src/app/(frontend)/next/seed/route.ts +31 -0
  38. package/templates/marketing/payload/src/app/(frontend)/not-found.tsx +17 -0
  39. package/templates/marketing/payload/src/app/(frontend)/page.tsx +5 -0
  40. package/templates/marketing/payload/src/app/(frontend)/posts/BlogPageClient.tsx +190 -0
  41. package/templates/marketing/payload/src/app/(frontend)/posts/[slug]/BlogPostContent.tsx +67 -0
  42. package/templates/marketing/payload/src/app/(frontend)/posts/[slug]/page.client.tsx +15 -0
  43. package/templates/marketing/payload/src/app/(frontend)/posts/[slug]/page.tsx +118 -0
  44. package/templates/marketing/payload/src/app/(frontend)/posts/page/[pageNumber]/page.client.tsx +15 -0
  45. package/templates/marketing/payload/src/app/(frontend)/posts/page/[pageNumber]/page.tsx +87 -0
  46. package/templates/marketing/payload/src/app/(frontend)/posts/page.tsx +49 -0
  47. package/templates/marketing/payload/src/app/(frontend)/search/page.client.tsx +15 -0
  48. package/templates/marketing/payload/src/app/(frontend)/search/page.tsx +87 -0
  49. package/templates/marketing/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx +24 -0
  50. package/templates/marketing/payload/src/app/(payload)/admin/[[...segments]]/page.tsx +24 -0
  51. package/templates/marketing/payload/src/app/(payload)/admin/importMap.js +83 -0
  52. package/templates/marketing/payload/src/app/(payload)/api/[...slug]/{route.ts.hbs → route.ts} +13 -9
  53. package/templates/marketing/payload/src/app/(payload)/api/graphql/{route.ts.hbs → route.ts} +2 -2
  54. package/templates/marketing/payload/src/app/(payload)/api/graphql-playground/{route.ts.hbs → route.ts} +3 -3
  55. package/templates/marketing/payload/src/app/(payload)/custom.scss +0 -0
  56. package/templates/marketing/payload/src/app/(payload)/layout.tsx +31 -0
  57. package/templates/marketing/payload/src/blocks/ArchiveBlock/Component.tsx +65 -0
  58. package/templates/marketing/payload/src/blocks/ArchiveBlock/config.ts +120 -0
  59. package/templates/marketing/payload/src/blocks/Banner/Component.tsx +26 -0
  60. package/templates/marketing/payload/src/blocks/Banner/config.ts +67 -0
  61. package/templates/marketing/payload/src/blocks/BentoFeatures/Component.tsx +243 -0
  62. package/templates/marketing/payload/src/blocks/BentoFeatures/config.ts +147 -0
  63. package/templates/marketing/payload/src/blocks/CallToAction/Component.tsx +31 -0
  64. package/templates/marketing/payload/src/blocks/CallToAction/config.ts +68 -0
  65. package/templates/marketing/payload/src/blocks/Code/Component.client.tsx +33 -0
  66. package/templates/marketing/payload/src/blocks/Code/Component.tsx +21 -0
  67. package/templates/marketing/payload/src/blocks/Code/CopyButton.tsx +33 -0
  68. package/templates/marketing/payload/src/blocks/Code/config.ts +33 -0
  69. package/templates/marketing/payload/src/blocks/Content/Component.tsx +41 -0
  70. package/templates/marketing/payload/src/blocks/Content/config.ts +105 -0
  71. package/templates/marketing/payload/src/blocks/FAQAccordion/Component.tsx +90 -0
  72. package/templates/marketing/payload/src/blocks/FAQAccordion/config.ts +75 -0
  73. package/templates/marketing/payload/src/blocks/FeatureGrid/Component.tsx +124 -0
  74. package/templates/marketing/payload/src/blocks/FeatureGrid/config.ts +120 -0
  75. package/templates/marketing/payload/src/blocks/FeatureShowcase/Component.tsx +107 -0
  76. package/templates/marketing/payload/src/blocks/FeatureShowcase/config.ts +111 -0
  77. package/templates/marketing/payload/src/blocks/FinalCTA/Component.tsx +117 -0
  78. package/templates/marketing/payload/src/blocks/FinalCTA/config.ts +50 -0
  79. package/templates/marketing/payload/src/blocks/Form/Checkbox/index.tsx +45 -0
  80. package/templates/marketing/payload/src/blocks/Form/Component.tsx +170 -0
  81. package/templates/marketing/payload/src/blocks/Form/Country/index.tsx +65 -0
  82. package/templates/marketing/payload/src/blocks/Form/Country/options.ts +982 -0
  83. package/templates/marketing/payload/src/blocks/Form/Email/index.tsx +38 -0
  84. package/templates/marketing/payload/src/blocks/Form/Error/index.tsx +13 -0
  85. package/templates/marketing/payload/src/blocks/Form/Message/index.tsx +13 -0
  86. package/templates/marketing/payload/src/blocks/Form/Number/index.tsx +36 -0
  87. package/templates/marketing/payload/src/blocks/Form/Select/index.tsx +63 -0
  88. package/templates/marketing/payload/src/blocks/Form/State/index.tsx +64 -0
  89. package/templates/marketing/payload/src/blocks/Form/State/options.ts +52 -0
  90. package/templates/marketing/payload/src/blocks/Form/Text/index.tsx +32 -0
  91. package/templates/marketing/payload/src/blocks/Form/Textarea/index.tsx +40 -0
  92. package/templates/marketing/payload/src/blocks/Form/Width/index.tsx +13 -0
  93. package/templates/marketing/payload/src/blocks/Form/config.ts +77 -0
  94. package/templates/marketing/payload/src/blocks/Form/fields.tsx +21 -0
  95. package/templates/marketing/payload/src/blocks/HowItWorks/Component.tsx +59 -0
  96. package/templates/marketing/payload/src/blocks/HowItWorks/config.ts +88 -0
  97. package/templates/marketing/payload/src/blocks/IndustryTabs/Component.tsx +132 -0
  98. package/templates/marketing/payload/src/blocks/IndustryTabs/config.ts +77 -0
  99. package/templates/marketing/payload/src/blocks/LogoBanner/Component.tsx +95 -0
  100. package/templates/marketing/payload/src/blocks/LogoBanner/config.ts +48 -0
  101. package/templates/marketing/payload/src/blocks/MediaBlock/Component.tsx +67 -0
  102. package/templates/marketing/payload/src/blocks/MediaBlock/config.ts +14 -0
  103. package/templates/marketing/payload/src/blocks/Personas/Component.tsx +69 -0
  104. package/templates/marketing/payload/src/blocks/Personas/config.ts +96 -0
  105. package/templates/marketing/payload/src/blocks/PricingTable/ComparisonTable.tsx +250 -0
  106. package/templates/marketing/payload/src/blocks/PricingTable/Component.tsx +443 -0
  107. package/templates/marketing/payload/src/blocks/PricingTable/config.ts +142 -0
  108. package/templates/marketing/payload/src/blocks/ProofBanner/Component.tsx +65 -0
  109. package/templates/marketing/payload/src/blocks/ProofBanner/config.ts +42 -0
  110. package/templates/marketing/payload/src/blocks/RelatedPosts/Component.tsx +32 -0
  111. package/templates/marketing/payload/src/blocks/RenderBlocks.tsx +92 -0
  112. package/templates/marketing/payload/src/blocks/TestimonialsGrid/Component.tsx +107 -0
  113. package/templates/marketing/payload/src/blocks/TestimonialsGrid/config.ts +76 -0
  114. package/templates/marketing/payload/src/blocks/TrustColumns/Component.tsx +83 -0
  115. package/templates/marketing/payload/src/blocks/TrustColumns/config.ts +70 -0
  116. package/templates/marketing/payload/src/collections/Categories.ts +28 -0
  117. package/templates/marketing/payload/src/collections/FAQs/index.ts +100 -0
  118. package/templates/marketing/payload/src/collections/Media.ts +160 -0
  119. package/templates/marketing/payload/src/collections/Pages/hooks/revalidatePage.ts +43 -0
  120. package/templates/marketing/payload/src/collections/Pages/index.ts +168 -0
  121. package/templates/marketing/payload/src/collections/Posts/hooks/populateAuthors.ts +41 -0
  122. package/templates/marketing/payload/src/collections/Posts/hooks/revalidatePost.ts +44 -0
  123. package/templates/marketing/payload/src/collections/Posts/index.ts +259 -0
  124. package/templates/marketing/payload/src/collections/Users/index.ts +26 -0
  125. package/templates/marketing/payload/src/components/AdminBar/index.scss +7 -0
  126. package/templates/marketing/payload/src/components/AdminBar/index.tsx +89 -0
  127. package/templates/marketing/payload/src/components/Analytics/CTATracker.tsx +33 -0
  128. package/templates/marketing/payload/src/components/Analytics/FeatureSectionTracker.tsx +47 -0
  129. package/templates/marketing/payload/src/components/Analytics/PricingViewTracker.tsx +46 -0
  130. package/templates/marketing/payload/src/components/Analytics/index.tsx +3 -0
  131. package/templates/marketing/payload/src/components/BeforeDashboard/SeedButton/index.tsx +89 -0
  132. package/templates/marketing/payload/src/components/BeforeDashboard/index.tsx +69 -0
  133. package/templates/marketing/payload/src/components/BeforeLogin/index.tsx +14 -0
  134. package/templates/marketing/payload/src/components/BlogCTA/index.tsx +77 -0
  135. package/templates/marketing/payload/src/components/Card/index.tsx +85 -0
  136. package/templates/marketing/payload/src/components/CollectionArchive/index.tsx +32 -0
  137. package/templates/marketing/payload/src/components/JsonLd/index.tsx +138 -0
  138. package/templates/marketing/payload/src/components/Link/index.tsx +66 -0
  139. package/templates/marketing/payload/src/components/LivePreviewListener/index.tsx +10 -0
  140. package/templates/marketing/payload/src/components/Logo/Logo.tsx +46 -0
  141. package/templates/marketing/payload/src/components/Media/ImageMedia/index.tsx +80 -0
  142. package/templates/marketing/payload/src/components/Media/VideoMedia/index.tsx +47 -0
  143. package/templates/marketing/payload/src/components/Media/index.tsx +26 -0
  144. package/templates/marketing/payload/src/components/Media/types.ts +22 -0
  145. package/templates/marketing/payload/src/components/PageRange/index.tsx +57 -0
  146. package/templates/marketing/payload/src/components/Pagination/index.tsx +101 -0
  147. package/templates/marketing/payload/src/components/PayloadRedirects/index.tsx +48 -0
  148. package/templates/marketing/payload/src/components/RichText/index.tsx +152 -0
  149. package/templates/marketing/payload/src/components/TableOfContents/index.tsx +128 -0
  150. package/templates/marketing/payload/src/components/ui/accordion.tsx +64 -0
  151. package/templates/marketing/payload/src/components/ui/button.tsx +52 -0
  152. package/templates/marketing/payload/src/components/ui/card.tsx +48 -0
  153. package/templates/marketing/payload/src/components/ui/checkbox.tsx +27 -0
  154. package/templates/marketing/payload/src/components/ui/input.tsx +22 -0
  155. package/templates/marketing/payload/src/components/ui/label.tsx +19 -0
  156. package/templates/marketing/payload/src/components/ui/pagination.tsx +92 -0
  157. package/templates/marketing/payload/src/components/ui/select.tsx +144 -0
  158. package/templates/marketing/payload/src/components/ui/textarea.tsx +21 -0
  159. package/templates/marketing/payload/src/endpoints/seed/contact-form.ts +111 -0
  160. package/templates/marketing/payload/src/endpoints/seed/contact-page.ts +56 -0
  161. package/templates/marketing/payload/src/endpoints/seed/directoryhub/about.ts +281 -0
  162. package/templates/marketing/payload/src/endpoints/seed/directoryhub/faqs.ts +224 -0
  163. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/automation.ts +229 -0
  164. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/custom-fields.ts +229 -0
  165. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/dashboard.ts +228 -0
  166. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/index.ts +6 -0
  167. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/monetization.ts +230 -0
  168. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/seo.ts +229 -0
  169. package/templates/marketing/payload/src/endpoints/seed/directoryhub/features/templates.ts +218 -0
  170. package/templates/marketing/payload/src/endpoints/seed/directoryhub/home.ts +555 -0
  171. package/templates/marketing/payload/src/endpoints/seed/directoryhub/index.ts +767 -0
  172. package/templates/marketing/payload/src/endpoints/seed/directoryhub/posts.ts +623 -0
  173. package/templates/marketing/payload/src/endpoints/seed/directoryhub/pricing.ts +251 -0
  174. package/templates/marketing/payload/src/endpoints/seed/directoryhub/privacy.ts +457 -0
  175. package/templates/marketing/payload/src/endpoints/seed/directoryhub/richtext-helper.ts +88 -0
  176. package/templates/marketing/payload/src/endpoints/seed/directoryhub/terms.ts +478 -0
  177. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/b2b-vendor-hubs.ts +229 -0
  178. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/communities.ts +230 -0
  179. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/index.ts +4 -0
  180. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/local-services.ts +230 -0
  181. package/templates/marketing/payload/src/endpoints/seed/directoryhub/use-cases/marketplaces.ts +230 -0
  182. package/templates/marketing/payload/src/endpoints/seed/home-static.ts +691 -0
  183. package/templates/marketing/payload/src/endpoints/seed/home.ts +675 -0
  184. package/templates/marketing/payload/src/endpoints/seed/image-1.ts +67 -0
  185. package/templates/marketing/payload/src/endpoints/seed/image-2.ts +67 -0
  186. package/templates/marketing/payload/src/endpoints/seed/image-3.ts +67 -0
  187. package/templates/marketing/payload/src/endpoints/seed/image-hero-1.ts +5 -0
  188. package/templates/marketing/payload/src/endpoints/seed/image-hero1.webp +0 -0
  189. package/templates/marketing/payload/src/endpoints/seed/image-post1.webp +0 -0
  190. package/templates/marketing/payload/src/endpoints/seed/image-post2.webp +0 -0
  191. package/templates/marketing/payload/src/endpoints/seed/image-post3.webp +0 -0
  192. package/templates/marketing/payload/src/endpoints/seed/index.ts +335 -0
  193. package/templates/marketing/payload/src/endpoints/seed/post-1.ts +315 -0
  194. package/templates/marketing/payload/src/endpoints/seed/post-2.ts +232 -0
  195. package/templates/marketing/payload/src/endpoints/seed/post-3.ts +268 -0
  196. package/templates/marketing/payload/src/fields/defaultLexical.ts +73 -0
  197. package/templates/marketing/payload/src/fields/link.ts +139 -0
  198. package/templates/marketing/payload/src/fields/linkGroup.ts +28 -0
  199. package/templates/marketing/payload/src/heros/HighImpact/index.tsx +56 -0
  200. package/templates/marketing/payload/src/heros/LowImpact/index.tsx +48 -0
  201. package/templates/marketing/payload/src/heros/MediumImpact/index.tsx +50 -0
  202. package/templates/marketing/payload/src/heros/PostHero/index.tsx +73 -0
  203. package/templates/marketing/payload/src/heros/ProductShowcase/AnimatedMockup.tsx +241 -0
  204. package/templates/marketing/payload/src/heros/ProductShowcase/index.tsx +108 -0
  205. package/templates/marketing/payload/src/heros/{RenderHero.tsx.hbs → RenderHero.tsx} +9 -9
  206. package/templates/marketing/payload/src/heros/config.ts +121 -0
  207. package/templates/marketing/payload/src/hooks/populatePublishedAt.ts +15 -0
  208. package/templates/marketing/payload/src/hooks/{revalidateRedirects.ts.hbs → revalidateRedirects.ts} +3 -3
  209. package/templates/marketing/payload/src/lib/convex.ts +13 -0
  210. package/templates/marketing/payload/src/lib/docs-source.ts +138 -0
  211. package/templates/marketing/payload/src/lib/mdx.tsx +191 -0
  212. package/templates/marketing/payload/src/payload.config.ts.hbs +95 -145
  213. package/templates/marketing/payload/src/plugins/index.ts +107 -0
  214. package/templates/marketing/payload/src/providers/HeaderTheme/index.tsx +34 -0
  215. package/templates/marketing/payload/src/providers/PostHogProvider.tsx +33 -0
  216. package/templates/marketing/payload/src/providers/Theme/InitTheme/{index.tsx.hbs → index.tsx} +11 -10
  217. package/templates/marketing/payload/src/providers/Theme/ThemeSelector/index.tsx +133 -0
  218. package/templates/marketing/payload/src/providers/Theme/ThemeSelector/types.ts +7 -0
  219. package/templates/marketing/payload/src/providers/Theme/index.tsx +60 -0
  220. package/templates/marketing/payload/src/providers/Theme/shared.ts +17 -0
  221. package/templates/marketing/payload/src/providers/Theme/{types.ts.hbs → types.ts} +3 -3
  222. package/templates/marketing/payload/src/providers/index.tsx +17 -0
  223. package/templates/marketing/payload/src/search/Component.tsx +42 -0
  224. package/templates/marketing/payload/src/search/beforeSync.ts +56 -0
  225. package/templates/marketing/payload/src/search/fieldOverrides.ts +61 -0
  226. package/templates/marketing/payload/src/utilities/deepMerge.ts +35 -0
  227. package/templates/marketing/payload/src/utilities/extractHeadings.ts +78 -0
  228. package/templates/marketing/payload/src/utilities/formatAuthors.ts +24 -0
  229. package/templates/marketing/payload/src/utilities/formatDateTime.ts +20 -0
  230. package/templates/marketing/payload/src/utilities/generateMeta.ts +93 -0
  231. package/templates/marketing/payload/src/utilities/generatePreviewPath.ts +33 -0
  232. package/templates/marketing/payload/src/utilities/getDocument.ts +32 -0
  233. package/templates/marketing/payload/src/utilities/getGlobals.ts +26 -0
  234. package/templates/marketing/payload/src/utilities/getMeUser.ts +43 -0
  235. package/templates/marketing/payload/src/utilities/getMediaUrl.ts +24 -0
  236. package/templates/marketing/payload/src/utilities/getRedirects.ts +26 -0
  237. package/templates/marketing/payload/src/utilities/getURL.ts +26 -0
  238. package/templates/marketing/payload/src/utilities/mergeOpenGraph.ts +26 -0
  239. package/templates/marketing/payload/src/utilities/toKebabCase.ts +5 -0
  240. package/templates/marketing/payload/src/utilities/ui.ts +12 -0
  241. package/templates/marketing/payload/src/utilities/useClickableCard.ts +108 -0
  242. package/templates/marketing/payload/src/utilities/useDebounce.ts +17 -0
  243. package/templates/packages/ui/src/components/button.tsx.hbs +53 -0
  244. package/templates/packages/ui/src/components/card.tsx.hbs +76 -0
  245. package/templates/packages/ui/src/components/separator.tsx.hbs +26 -0
  246. package/templates/marketing/payload/src/Footer/config.ts.hbs +0 -178
  247. package/templates/marketing/payload/src/Footer/index.ts.hbs +0 -1
  248. package/templates/marketing/payload/src/Header/RowLabel.tsx.hbs +0 -21
  249. package/templates/marketing/payload/src/Header/config.ts.hbs +0 -208
  250. package/templates/marketing/payload/src/Header/index.ts.hbs +0 -1
  251. package/templates/marketing/payload/src/access/index.ts.hbs +0 -3
  252. package/templates/marketing/payload/src/app/(frontend)/layout.tsx.hbs +0 -19
  253. package/templates/marketing/payload/src/app/(frontend)/next/seed/route.ts.hbs +0 -31
  254. package/templates/marketing/payload/src/app/(frontend)/page.tsx.hbs +0 -83
  255. package/templates/marketing/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx.hbs +0 -24
  256. package/templates/marketing/payload/src/app/(payload)/admin/[[...segments]]/page.tsx.hbs +0 -24
  257. package/templates/marketing/payload/src/app/(payload)/admin/importMap.js.hbs +0 -1
  258. package/templates/marketing/payload/src/app/(payload)/custom.scss.hbs +0 -1
  259. package/templates/marketing/payload/src/app/(payload)/layout.tsx.hbs +0 -31
  260. package/templates/marketing/payload/src/app/globals.css.hbs +0 -83
  261. package/templates/marketing/payload/src/app/layout.tsx.hbs +0 -10
  262. package/templates/marketing/payload/src/blocks/Benefits.ts.hbs +0 -34
  263. package/templates/marketing/payload/src/blocks/CTA.ts.hbs +0 -39
  264. package/templates/marketing/payload/src/blocks/Content.ts.hbs +0 -9
  265. package/templates/marketing/payload/src/blocks/FAQ.ts.hbs +0 -18
  266. package/templates/marketing/payload/src/blocks/Features.ts.hbs +0 -34
  267. package/templates/marketing/payload/src/blocks/Hero.ts.hbs +0 -40
  268. package/templates/marketing/payload/src/blocks/LogoBanner.ts.hbs +0 -17
  269. package/templates/marketing/payload/src/blocks/Pricing.ts.hbs +0 -37
  270. package/templates/marketing/payload/src/blocks/Testimonials.ts.hbs +0 -21
  271. package/templates/marketing/payload/src/blocks/index.ts.hbs +0 -9
  272. package/templates/marketing/payload/src/collections/Categories/index.ts.hbs +0 -28
  273. package/templates/marketing/payload/src/collections/FAQs/index.ts.hbs +0 -100
  274. package/templates/marketing/payload/src/collections/Media.ts.hbs +0 -164
  275. package/templates/marketing/payload/src/collections/Pages/hooks/revalidatePage.ts.hbs +0 -43
  276. package/templates/marketing/payload/src/collections/Pages/index.ts.hbs +0 -142
  277. package/templates/marketing/payload/src/collections/Posts/hooks/populateAuthors.ts.hbs +0 -41
  278. package/templates/marketing/payload/src/collections/Posts/hooks/revalidatePost.ts.hbs +0 -44
  279. package/templates/marketing/payload/src/collections/Posts/index.ts.hbs +0 -244
  280. package/templates/marketing/payload/src/collections/Users/index.ts.hbs +0 -26
  281. package/templates/marketing/payload/src/collections/index.ts.hbs +0 -6
  282. package/templates/marketing/payload/src/components/BeforeDashboard/SeedButton/index.tsx.hbs +0 -89
  283. package/templates/marketing/payload/src/components/BeforeDashboard/index.tsx.hbs +0 -69
  284. package/templates/marketing/payload/src/components/BeforeLogin/index.tsx.hbs +0 -14
  285. package/templates/marketing/payload/src/components/Link/index.tsx.hbs +0 -79
  286. package/templates/marketing/payload/src/components/Media/index.tsx.hbs +0 -67
  287. package/templates/marketing/payload/src/components/RichText/index.tsx.hbs +0 -44
  288. package/templates/marketing/payload/src/endpoints/seed/home.ts.hbs +0 -76
  289. package/templates/marketing/payload/src/endpoints/seed/image-1.ts.hbs +0 -5
  290. package/templates/marketing/payload/src/endpoints/seed/image-2.ts.hbs +0 -5
  291. package/templates/marketing/payload/src/endpoints/seed/image-hero.ts.hbs +0 -5
  292. package/templates/marketing/payload/src/endpoints/seed/index.ts.hbs +0 -235
  293. package/templates/marketing/payload/src/endpoints/seed/post-1.ts.hbs +0 -252
  294. package/templates/marketing/payload/src/fields/defaultLexical.ts.hbs +0 -73
  295. package/templates/marketing/payload/src/fields/link.ts.hbs +0 -139
  296. package/templates/marketing/payload/src/fields/linkGroup.ts.hbs +0 -28
  297. package/templates/marketing/payload/src/globals/index.ts.hbs +0 -2
  298. package/templates/marketing/payload/src/heros/HighImpact/index.tsx.hbs +0 -53
  299. package/templates/marketing/payload/src/heros/LowImpact/index.tsx.hbs +0 -48
  300. package/templates/marketing/payload/src/heros/MediumImpact/index.tsx.hbs +0 -46
  301. package/templates/marketing/payload/src/heros/PostHero/index.tsx.hbs +0 -68
  302. package/templates/marketing/payload/src/heros/ProductShowcase/index.tsx.hbs +0 -88
  303. package/templates/marketing/payload/src/heros/config.ts.hbs +0 -112
  304. package/templates/marketing/payload/src/heros/index.ts.hbs +0 -7
  305. package/templates/marketing/payload/src/hooks/index.ts.hbs +0 -2
  306. package/templates/marketing/payload/src/hooks/populatePublishedAt.ts.hbs +0 -15
  307. package/templates/marketing/payload/src/providers/HeaderTheme/index.tsx.hbs +0 -34
  308. package/templates/marketing/payload/src/providers/Theme/index.tsx.hbs +0 -60
  309. package/templates/marketing/payload/src/providers/Theme/shared.ts.hbs +0 -17
  310. package/templates/marketing/payload/src/providers/index.tsx.hbs +0 -18
  311. package/templates/marketing/payload/src/utilities/deepMerge.ts.hbs +0 -35
  312. package/templates/marketing/payload/src/utilities/formatAuthors.ts.hbs +0 -24
  313. package/templates/marketing/payload/src/utilities/formatDateTime.ts.hbs +0 -13
  314. package/templates/marketing/payload/src/utilities/generateMeta.ts.hbs +0 -87
  315. package/templates/marketing/payload/src/utilities/generatePreviewPath.ts.hbs +0 -33
  316. package/templates/marketing/payload/src/utilities/getURL.ts.hbs +0 -26
  317. package/templates/marketing/payload/src/utilities/index.ts.hbs +0 -8
  318. package/templates/marketing/payload/src/utilities/mergeOpenGraph.ts.hbs +0 -26
  319. /package/templates/marketing/payload/src/access/{anyone.ts.hbs → anyone.ts} +0 -0
  320. /package/templates/marketing/payload/src/components/BeforeDashboard/SeedButton/{index.scss.hbs → index.scss} +0 -0
  321. /package/templates/marketing/payload/src/components/BeforeDashboard/{index.scss.hbs → index.scss} +0 -0
  322. /package/templates/marketing/payload/src/fields/{index.ts.hbs → index.ts} +0 -0
  323. /package/templates/marketing/payload/src/utilities/{canUseDOM.ts.hbs → canUseDOM.ts} +0 -0
@@ -1,83 +0,0 @@
1
- @import "tailwindcss";
2
-
3
- @custom-variant dark (&:is(.dark *));
4
-
5
- @theme inline {
6
- --color-background: var(--background);
7
- --color-foreground: var(--foreground);
8
- --font-sans: var(--font-geist-sans);
9
- --font-mono: var(--font-geist-mono);
10
- --color-ring: var(--ring);
11
- --color-input: var(--input);
12
- --color-border: var(--border);
13
- --color-destructive: var(--destructive);
14
- --color-accent-foreground: var(--accent-foreground);
15
- --color-accent: var(--accent);
16
- --color-muted-foreground: var(--muted-foreground);
17
- --color-muted: var(--muted);
18
- --color-secondary-foreground: var(--secondary-foreground);
19
- --color-secondary: var(--secondary);
20
- --color-primary-foreground: var(--primary-foreground);
21
- --color-primary: var(--primary);
22
- --color-popover-foreground: var(--popover-foreground);
23
- --color-popover: var(--popover);
24
- --color-card-foreground: var(--card-foreground);
25
- --color-card: var(--card);
26
- --radius-sm: calc(var(--radius) - 4px);
27
- --radius-md: calc(var(--radius) - 2px);
28
- --radius-lg: var(--radius);
29
- --radius-xl: calc(var(--radius) + 4px);
30
- }
31
-
32
- :root {
33
- --radius: 0.625rem;
34
- --background: oklch(1 0 0);
35
- --foreground: oklch(0.145 0 0);
36
- --card: oklch(1 0 0);
37
- --card-foreground: oklch(0.145 0 0);
38
- --popover: oklch(1 0 0);
39
- --popover-foreground: oklch(0.145 0 0);
40
- --primary: oklch(0.205 0 0);
41
- --primary-foreground: oklch(0.985 0 0);
42
- --secondary: oklch(0.97 0 0);
43
- --secondary-foreground: oklch(0.205 0 0);
44
- --muted: oklch(0.97 0 0);
45
- --muted-foreground: oklch(0.556 0 0);
46
- --accent: oklch(0.97 0 0);
47
- --accent-foreground: oklch(0.205 0 0);
48
- --destructive: oklch(0.577 0.245 27.325);
49
- --border: oklch(0.922 0 0);
50
- --input: oklch(0.922 0 0);
51
- --ring: oklch(0.708 0 0);
52
- }
53
-
54
- .dark {
55
- --background: oklch(0.145 0 0);
56
- --foreground: oklch(0.985 0 0);
57
- --card: oklch(0.205 0 0);
58
- --card-foreground: oklch(0.985 0 0);
59
- --popover: oklch(0.205 0 0);
60
- --popover-foreground: oklch(0.985 0 0);
61
- --primary: oklch(0.922 0 0);
62
- --primary-foreground: oklch(0.205 0 0);
63
- --secondary: oklch(0.269 0 0);
64
- --secondary-foreground: oklch(0.985 0 0);
65
- --muted: oklch(0.269 0 0);
66
- --muted-foreground: oklch(0.708 0 0);
67
- --accent: oklch(0.269 0 0);
68
- --accent-foreground: oklch(0.985 0 0);
69
- --destructive: oklch(0.704 0.191 22.216);
70
- --border: oklch(1 0 0 / 10%);
71
- --input: oklch(1 0 0 / 15%);
72
- --ring: oklch(0.556 0 0);
73
- }
74
-
75
- @layer base {
76
- * {
77
- @apply border-border outline-ring/50;
78
- }
79
-
80
- body {
81
- @apply bg-background text-foreground;
82
- }
83
- }
@@ -1,10 +0,0 @@
1
- // Root layout is minimal - each route group has its own complete layout
2
- // This prevents nested <html>/<body> tags between frontend and Payload admin
3
- // CSS is imported in each route group's layout to avoid style conflicts
4
- export default function RootLayout({
5
- children,
6
- }: {
7
- children: React.ReactNode
8
- }) {
9
- return children
10
- }
@@ -1,34 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const BenefitsBlock: Block = {
4
- slug: 'benefits',
5
- labels: { singular: 'Benefits', plural: 'Benefits' },
6
- fields: [
7
- { name: 'label', type: 'text' },
8
- { name: 'heading', type: 'text', required: true },
9
- { name: 'description', type: 'textarea' },
10
- { name: 'image', type: 'upload', relationTo: 'media' },
11
- {
12
- name: 'imagePosition',
13
- type: 'select',
14
- options: [
15
- { label: 'Left', value: 'left' },
16
- { label: 'Right', value: 'right' },
17
- ],
18
- defaultValue: 'right',
19
- },
20
- {
21
- name: 'benefits',
22
- type: 'array',
23
- fields: [{ name: 'text', type: 'text', required: true }],
24
- },
25
- {
26
- name: 'cta',
27
- type: 'group',
28
- fields: [
29
- { name: 'label', type: 'text' },
30
- { name: 'url', type: 'text' },
31
- ],
32
- },
33
- ],
34
- }
@@ -1,39 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const CTABlock: Block = {
4
- slug: 'cta',
5
- labels: { singular: 'CTA', plural: 'CTAs' },
6
- fields: [
7
- { name: 'heading', type: 'text' },
8
- { name: 'description', type: 'textarea' },
9
- {
10
- name: 'style',
11
- type: 'select',
12
- options: [
13
- { label: 'Light', value: 'light' },
14
- { label: 'Dark', value: 'dark' },
15
- { label: 'Primary', value: 'primary' },
16
- ],
17
- defaultValue: 'dark',
18
- },
19
- {
20
- name: 'buttons',
21
- type: 'array',
22
- maxRows: 2,
23
- fields: [
24
- { name: 'label', type: 'text', required: true },
25
- { name: 'url', type: 'text', required: true },
26
- {
27
- name: 'variant',
28
- type: 'select',
29
- options: [
30
- { label: 'Primary', value: 'primary' },
31
- { label: 'Secondary', value: 'secondary' },
32
- { label: 'Outline', value: 'outline' },
33
- ],
34
- defaultValue: 'primary',
35
- },
36
- ],
37
- },
38
- ],
39
- }
@@ -1,9 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const ContentBlock: Block = {
4
- slug: 'content',
5
- labels: { singular: 'Content', plural: 'Content' },
6
- fields: [
7
- { name: 'content', type: 'richText' },
8
- ],
9
- }
@@ -1,18 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const FAQBlock: Block = {
4
- slug: 'faq',
5
- labels: { singular: 'FAQ', plural: 'FAQs' },
6
- fields: [
7
- { name: 'heading', type: 'text' },
8
- { name: 'subheading', type: 'textarea' },
9
- {
10
- name: 'items',
11
- type: 'array',
12
- fields: [
13
- { name: 'question', type: 'text', required: true },
14
- { name: 'answer', type: 'textarea', required: true },
15
- ],
16
- },
17
- ],
18
- }
@@ -1,34 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const FeaturesBlock: Block = {
4
- slug: 'features',
5
- labels: { singular: 'Features', plural: 'Features' },
6
- fields: [
7
- { name: 'heading', type: 'text' },
8
- { name: 'subheading', type: 'textarea' },
9
- {
10
- name: 'features',
11
- type: 'array',
12
- fields: [
13
- {
14
- name: 'icon',
15
- type: 'select',
16
- options: [
17
- { label: 'Zap', value: 'zap' },
18
- { label: 'Shield', value: 'shield' },
19
- { label: 'Globe', value: 'globe' },
20
- { label: 'Layers', value: 'layers' },
21
- { label: 'Layout', value: 'layout' },
22
- { label: 'Database', value: 'database' },
23
- { label: 'Settings', value: 'settings' },
24
- { label: 'Users', value: 'users' },
25
- { label: 'Lock', value: 'lock' },
26
- { label: 'Star', value: 'star' },
27
- ],
28
- },
29
- { name: 'title', type: 'text', required: true },
30
- { name: 'description', type: 'textarea' },
31
- ],
32
- },
33
- ],
34
- }
@@ -1,40 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const HeroBlock: Block = {
4
- slug: 'hero',
5
- labels: { singular: 'Hero', plural: 'Heroes' },
6
- fields: [
7
- {
8
- name: 'heading',
9
- type: 'text',
10
- required: true,
11
- },
12
- {
13
- name: 'subheading',
14
- type: 'textarea',
15
- },
16
- {
17
- name: 'image',
18
- type: 'upload',
19
- relationTo: 'media',
20
- },
21
- {
22
- name: 'buttons',
23
- type: 'array',
24
- maxRows: 2,
25
- fields: [
26
- { name: 'label', type: 'text', required: true },
27
- { name: 'url', type: 'text', required: true },
28
- {
29
- name: 'variant',
30
- type: 'select',
31
- options: [
32
- { label: 'Primary', value: 'primary' },
33
- { label: 'Secondary', value: 'secondary' },
34
- ],
35
- defaultValue: 'primary',
36
- },
37
- ],
38
- },
39
- ],
40
- }
@@ -1,17 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const LogoBannerBlock: Block = {
4
- slug: 'logoBanner',
5
- labels: { singular: 'Logo Banner', plural: 'Logo Banners' },
6
- fields: [
7
- { name: 'heading', type: 'text' },
8
- {
9
- name: 'logos',
10
- type: 'array',
11
- fields: [
12
- { name: 'name', type: 'text', required: true },
13
- { name: 'logo', type: 'upload', relationTo: 'media' },
14
- ],
15
- },
16
- ],
17
- }
@@ -1,37 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const PricingBlock: Block = {
4
- slug: 'pricing',
5
- labels: { singular: 'Pricing', plural: 'Pricing' },
6
- fields: [
7
- { name: 'heading', type: 'text' },
8
- { name: 'subheading', type: 'textarea' },
9
- {
10
- name: 'plans',
11
- type: 'array',
12
- fields: [
13
- { name: 'name', type: 'text', required: true },
14
- { name: 'price', type: 'text', required: true },
15
- { name: 'period', type: 'text', defaultValue: '/month' },
16
- { name: 'description', type: 'textarea' },
17
- { name: 'featured', type: 'checkbox', defaultValue: false },
18
- {
19
- name: 'features',
20
- type: 'array',
21
- fields: [
22
- { name: 'feature', type: 'text', required: true },
23
- { name: 'included', type: 'checkbox', defaultValue: true },
24
- ],
25
- },
26
- {
27
- name: 'cta',
28
- type: 'group',
29
- fields: [
30
- { name: 'label', type: 'text' },
31
- { name: 'url', type: 'text' },
32
- ],
33
- },
34
- ],
35
- },
36
- ],
37
- }
@@ -1,21 +0,0 @@
1
- import type { Block } from 'payload'
2
-
3
- export const TestimonialsBlock: Block = {
4
- slug: 'testimonials',
5
- labels: { singular: 'Testimonials', plural: 'Testimonials' },
6
- fields: [
7
- { name: 'heading', type: 'text' },
8
- { name: 'subheading', type: 'textarea' },
9
- {
10
- name: 'testimonials',
11
- type: 'array',
12
- fields: [
13
- { name: 'quote', type: 'textarea', required: true },
14
- { name: 'author', type: 'text', required: true },
15
- { name: 'role', type: 'text' },
16
- { name: 'company', type: 'text' },
17
- { name: 'image', type: 'upload', relationTo: 'media' },
18
- ],
19
- },
20
- ],
21
- }
@@ -1,9 +0,0 @@
1
- export { HeroBlock } from './Hero'
2
- export { LogoBannerBlock } from './LogoBanner'
3
- export { FeaturesBlock } from './Features'
4
- export { BenefitsBlock } from './Benefits'
5
- export { PricingBlock } from './Pricing'
6
- export { TestimonialsBlock } from './Testimonials'
7
- export { FAQBlock } from './FAQ'
8
- export { ContentBlock } from './Content'
9
- export { CTABlock } from './CTA'
@@ -1,28 +0,0 @@
1
- import type { CollectionConfig } from "payload"
2
-
3
- import { slugField } from "payload"
4
- import { anyone } from "../../access/anyone"
5
- import { authenticated } from "../../access/authenticated"
6
-
7
- export const Categories: CollectionConfig = {
8
- slug: "categories",
9
- access: {
10
- create: authenticated,
11
- delete: authenticated,
12
- read: anyone,
13
- update: authenticated,
14
- },
15
- admin: {
16
- useAsTitle: "title",
17
- },
18
- fields: [
19
- {
20
- name: "title",
21
- type: "text",
22
- required: true,
23
- },
24
- slugField({
25
- position: undefined,
26
- }),
27
- ],
28
- }
@@ -1,100 +0,0 @@
1
- import type { CollectionConfig } from "payload"
2
-
3
- import {
4
- AlignFeature,
5
- BlockquoteFeature,
6
- ChecklistFeature,
7
- EXPERIMENTAL_TableFeature,
8
- FixedToolbarFeature,
9
- IndentFeature,
10
- InlineCodeFeature,
11
- InlineToolbarFeature,
12
- OrderedListFeature,
13
- RelationshipFeature,
14
- StrikethroughFeature,
15
- SubscriptFeature,
16
- SuperscriptFeature,
17
- UnorderedListFeature,
18
- UploadFeature,
19
- lexicalEditor,
20
- } from "@payloadcms/richtext-lexical"
21
- import { anyone } from "../../access/anyone"
22
- import { authenticated } from "../../access/authenticated"
23
-
24
- export const FAQs: CollectionConfig = {
25
- slug: "faqs",
26
- access: {
27
- create: authenticated,
28
- delete: authenticated,
29
- read: anyone,
30
- update: authenticated,
31
- },
32
- admin: {
33
- useAsTitle: "question",
34
- defaultColumns: ["question", "category", "order", "updatedAt"],
35
- group: "Content",
36
- },
37
- fields: [
38
- {
39
- name: "question",
40
- type: "text",
41
- required: true,
42
- label: "Question",
43
- },
44
- {
45
- name: "answer",
46
- type: "richText",
47
- required: true,
48
- label: "Answer",
49
- editor: lexicalEditor({
50
- features: ({ rootFeatures }) => {
51
- return [
52
- ...rootFeatures,
53
- FixedToolbarFeature(),
54
- InlineToolbarFeature(),
55
- StrikethroughFeature(),
56
- SubscriptFeature(),
57
- SuperscriptFeature(),
58
- InlineCodeFeature(),
59
- BlockquoteFeature(),
60
- UnorderedListFeature(),
61
- OrderedListFeature(),
62
- ChecklistFeature(),
63
- AlignFeature(),
64
- IndentFeature(),
65
- RelationshipFeature(),
66
- UploadFeature(),
67
- EXPERIMENTAL_TableFeature(),
68
- ]
69
- },
70
- }),
71
- },
72
- {
73
- name: "category",
74
- type: "select",
75
- required: true,
76
- defaultValue: "general",
77
- options: [
78
- { label: "General", value: "general" },
79
- { label: "Pricing", value: "pricing" },
80
- { label: "Features", value: "features" },
81
- { label: "Getting Started", value: "getting-started" },
82
- { label: "Technical", value: "technical" },
83
- { label: "Support", value: "support" },
84
- ],
85
- admin: {
86
- position: "sidebar",
87
- },
88
- },
89
- {
90
- name: "order",
91
- type: "number",
92
- defaultValue: 0,
93
- admin: {
94
- position: "sidebar",
95
- description: "Lower numbers appear first",
96
- },
97
- },
98
- ],
99
- defaultSort: "order",
100
- }
@@ -1,164 +0,0 @@
1
- import type { CollectionConfig } from "payload"
2
-
3
- import path from "node:path"
4
- import { fileURLToPath } from "node:url"
5
- import {
6
- AlignFeature,
7
- BlockquoteFeature,
8
- ChecklistFeature,
9
- EXPERIMENTAL_TableFeature,
10
- FixedToolbarFeature,
11
- IndentFeature,
12
- InlineCodeFeature,
13
- InlineToolbarFeature,
14
- OrderedListFeature,
15
- RelationshipFeature,
16
- StrikethroughFeature,
17
- SubscriptFeature,
18
- SuperscriptFeature,
19
- UnorderedListFeature,
20
- UploadFeature,
21
- lexicalEditor,
22
- } from "@payloadcms/richtext-lexical"
23
-
24
- import { anyone } from "../access/anyone"
25
- import { authenticated } from "../access/authenticated"
26
-
27
- const filename = fileURLToPath(import.meta.url)
28
- const dirname = path.dirname(filename)
29
-
30
- {{#if (eq integrations.payloadStorage 'local')}}
31
- // Local storage configuration
32
- const useLocalStorage = true
33
- {{else}}
34
- // Only use local staticDir when storage token is not set (local development)
35
- // In production, cloud storage handles file storage
36
- const useLocalStorage = !process.env.BLOB_READ_WRITE_TOKEN && !process.env.S3_BUCKET && !process.env.R2_BUCKET && !process.env.GCS_BUCKET
37
- {{/if}}
38
-
39
- export const Media: CollectionConfig = {
40
- slug: "media",
41
- folders: true,
42
- access: {
43
- create: authenticated,
44
- delete: authenticated,
45
- read: anyone,
46
- update: authenticated,
47
- },
48
- fields: [
49
- {
50
- name: "alt",
51
- type: "text",
52
- },
53
- {
54
- name: "caption",
55
- type: "richText",
56
- editor: lexicalEditor({
57
- features: ({ rootFeatures }) => {
58
- return [
59
- ...rootFeatures,
60
- FixedToolbarFeature(),
61
- InlineToolbarFeature(),
62
- StrikethroughFeature(),
63
- SubscriptFeature(),
64
- SuperscriptFeature(),
65
- InlineCodeFeature(),
66
- BlockquoteFeature(),
67
- UnorderedListFeature(),
68
- OrderedListFeature(),
69
- ChecklistFeature(),
70
- AlignFeature(),
71
- IndentFeature(),
72
- RelationshipFeature(),
73
- UploadFeature(),
74
- EXPERIMENTAL_TableFeature(),
75
- ]
76
- },
77
- }),
78
- },
79
- ],
80
- upload: {
81
- // Only use local staticDir for development; production uses cloud storage
82
- ...(useLocalStorage && {
83
- staticDir: path.resolve(dirname, "../../public/media"),
84
- }),
85
- adminThumbnail: "thumbnail",
86
- focalPoint: true,
87
- // Allow common image and video file types
88
- mimeTypes: [
89
- "image/*",
90
- "video/mp4",
91
- "video/webm",
92
- "video/quicktime", // .mov files
93
- ],
94
- // Convert original uploaded image to WebP format for better compression
95
- // Note: formatOptions only applies to images, videos are uploaded as-is
96
- formatOptions: {
97
- format: "webp",
98
- options: {
99
- quality: 85,
100
- },
101
- },
102
- imageSizes: [
103
- {
104
- name: "thumbnail",
105
- width: 300,
106
- formatOptions: {
107
- format: "webp",
108
- options: { quality: 80 },
109
- },
110
- },
111
- {
112
- name: "square",
113
- width: 500,
114
- height: 500,
115
- formatOptions: {
116
- format: "webp",
117
- options: { quality: 80 },
118
- },
119
- },
120
- {
121
- name: "small",
122
- width: 600,
123
- formatOptions: {
124
- format: "webp",
125
- options: { quality: 80 },
126
- },
127
- },
128
- {
129
- name: "medium",
130
- width: 900,
131
- formatOptions: {
132
- format: "webp",
133
- options: { quality: 80 },
134
- },
135
- },
136
- {
137
- name: "large",
138
- width: 1400,
139
- formatOptions: {
140
- format: "webp",
141
- options: { quality: 80 },
142
- },
143
- },
144
- {
145
- name: "xlarge",
146
- width: 1920,
147
- formatOptions: {
148
- format: "webp",
149
- options: { quality: 80 },
150
- },
151
- },
152
- {
153
- name: "og",
154
- width: 1200,
155
- height: 630,
156
- crop: "center",
157
- formatOptions: {
158
- format: "webp",
159
- options: { quality: 85 },
160
- },
161
- },
162
- ],
163
- },
164
- }