kofi-stack-template-generator 2.1.36 → 2.1.38

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 (324) hide show
  1. package/.turbo/turbo-build.log +6 -6
  2. package/dist/index.js +8059 -441
  3. package/package.json +1 -1
  4. package/src/templates.generated.ts +250 -95
  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 +108 -0
  74. package/templates/marketing/payload/src/blocks/FeatureGrid/config.ts +109 -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/package.json.hbs +4 -0
  244. package/templates/packages/ui/src/components/button.tsx.hbs +53 -0
  245. package/templates/packages/ui/src/components/card.tsx.hbs +76 -0
  246. package/templates/packages/ui/src/components/separator.tsx.hbs +26 -0
  247. package/templates/{marketing/payload/src/app/globals.css.hbs → packages/ui/src/styles.css.hbs} +39 -1
  248. package/templates/marketing/payload/src/Footer/config.ts.hbs +0 -178
  249. package/templates/marketing/payload/src/Footer/index.ts.hbs +0 -1
  250. package/templates/marketing/payload/src/Header/RowLabel.tsx.hbs +0 -21
  251. package/templates/marketing/payload/src/Header/config.ts.hbs +0 -208
  252. package/templates/marketing/payload/src/Header/index.ts.hbs +0 -1
  253. package/templates/marketing/payload/src/access/index.ts.hbs +0 -3
  254. package/templates/marketing/payload/src/app/(frontend)/layout.tsx.hbs +0 -19
  255. package/templates/marketing/payload/src/app/(frontend)/next/seed/route.ts.hbs +0 -31
  256. package/templates/marketing/payload/src/app/(frontend)/page.tsx.hbs +0 -83
  257. package/templates/marketing/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx.hbs +0 -24
  258. package/templates/marketing/payload/src/app/(payload)/admin/[[...segments]]/page.tsx.hbs +0 -24
  259. package/templates/marketing/payload/src/app/(payload)/admin/importMap.js.hbs +0 -1
  260. package/templates/marketing/payload/src/app/(payload)/custom.scss.hbs +0 -1
  261. package/templates/marketing/payload/src/app/(payload)/layout.tsx.hbs +0 -31
  262. package/templates/marketing/payload/src/app/layout.tsx.hbs +0 -10
  263. package/templates/marketing/payload/src/blocks/Benefits.ts.hbs +0 -34
  264. package/templates/marketing/payload/src/blocks/CTA.ts.hbs +0 -39
  265. package/templates/marketing/payload/src/blocks/Content.ts.hbs +0 -9
  266. package/templates/marketing/payload/src/blocks/FAQ.ts.hbs +0 -18
  267. package/templates/marketing/payload/src/blocks/Features.ts.hbs +0 -32
  268. package/templates/marketing/payload/src/blocks/Hero.ts.hbs +0 -40
  269. package/templates/marketing/payload/src/blocks/LogoBanner.ts.hbs +0 -17
  270. package/templates/marketing/payload/src/blocks/Pricing.ts.hbs +0 -37
  271. package/templates/marketing/payload/src/blocks/Testimonials.ts.hbs +0 -21
  272. package/templates/marketing/payload/src/blocks/index.ts.hbs +0 -9
  273. package/templates/marketing/payload/src/collections/Categories/index.ts.hbs +0 -28
  274. package/templates/marketing/payload/src/collections/FAQs/index.ts.hbs +0 -100
  275. package/templates/marketing/payload/src/collections/Media.ts.hbs +0 -164
  276. package/templates/marketing/payload/src/collections/Pages/hooks/revalidatePage.ts.hbs +0 -43
  277. package/templates/marketing/payload/src/collections/Pages/index.ts.hbs +0 -142
  278. package/templates/marketing/payload/src/collections/Posts/hooks/populateAuthors.ts.hbs +0 -41
  279. package/templates/marketing/payload/src/collections/Posts/hooks/revalidatePost.ts.hbs +0 -44
  280. package/templates/marketing/payload/src/collections/Posts/index.ts.hbs +0 -244
  281. package/templates/marketing/payload/src/collections/Users/index.ts.hbs +0 -26
  282. package/templates/marketing/payload/src/collections/index.ts.hbs +0 -6
  283. package/templates/marketing/payload/src/components/BeforeDashboard/SeedButton/index.tsx.hbs +0 -89
  284. package/templates/marketing/payload/src/components/BeforeDashboard/index.tsx.hbs +0 -69
  285. package/templates/marketing/payload/src/components/BeforeLogin/index.tsx.hbs +0 -14
  286. package/templates/marketing/payload/src/components/Link/index.tsx.hbs +0 -79
  287. package/templates/marketing/payload/src/components/Media/index.tsx.hbs +0 -67
  288. package/templates/marketing/payload/src/components/RichText/index.tsx.hbs +0 -44
  289. package/templates/marketing/payload/src/endpoints/seed/home.ts.hbs +0 -76
  290. package/templates/marketing/payload/src/endpoints/seed/image-1.ts.hbs +0 -5
  291. package/templates/marketing/payload/src/endpoints/seed/image-2.ts.hbs +0 -5
  292. package/templates/marketing/payload/src/endpoints/seed/image-hero.ts.hbs +0 -5
  293. package/templates/marketing/payload/src/endpoints/seed/index.ts.hbs +0 -235
  294. package/templates/marketing/payload/src/endpoints/seed/post-1.ts.hbs +0 -252
  295. package/templates/marketing/payload/src/fields/defaultLexical.ts.hbs +0 -73
  296. package/templates/marketing/payload/src/fields/link.ts.hbs +0 -139
  297. package/templates/marketing/payload/src/fields/linkGroup.ts.hbs +0 -28
  298. package/templates/marketing/payload/src/globals/index.ts.hbs +0 -2
  299. package/templates/marketing/payload/src/heros/HighImpact/index.tsx.hbs +0 -53
  300. package/templates/marketing/payload/src/heros/LowImpact/index.tsx.hbs +0 -48
  301. package/templates/marketing/payload/src/heros/MediumImpact/index.tsx.hbs +0 -46
  302. package/templates/marketing/payload/src/heros/PostHero/index.tsx.hbs +0 -68
  303. package/templates/marketing/payload/src/heros/ProductShowcase/index.tsx.hbs +0 -88
  304. package/templates/marketing/payload/src/heros/config.ts.hbs +0 -112
  305. package/templates/marketing/payload/src/heros/index.ts.hbs +0 -7
  306. package/templates/marketing/payload/src/hooks/index.ts.hbs +0 -2
  307. package/templates/marketing/payload/src/hooks/populatePublishedAt.ts.hbs +0 -15
  308. package/templates/marketing/payload/src/providers/HeaderTheme/index.tsx.hbs +0 -34
  309. package/templates/marketing/payload/src/providers/Theme/index.tsx.hbs +0 -60
  310. package/templates/marketing/payload/src/providers/Theme/shared.ts.hbs +0 -17
  311. package/templates/marketing/payload/src/providers/index.tsx.hbs +0 -18
  312. package/templates/marketing/payload/src/utilities/deepMerge.ts.hbs +0 -35
  313. package/templates/marketing/payload/src/utilities/formatAuthors.ts.hbs +0 -24
  314. package/templates/marketing/payload/src/utilities/formatDateTime.ts.hbs +0 -13
  315. package/templates/marketing/payload/src/utilities/generateMeta.ts.hbs +0 -87
  316. package/templates/marketing/payload/src/utilities/generatePreviewPath.ts.hbs +0 -33
  317. package/templates/marketing/payload/src/utilities/getURL.ts.hbs +0 -26
  318. package/templates/marketing/payload/src/utilities/index.ts.hbs +0 -8
  319. package/templates/marketing/payload/src/utilities/mergeOpenGraph.ts.hbs +0 -26
  320. /package/templates/marketing/payload/src/access/{anyone.ts.hbs → anyone.ts} +0 -0
  321. /package/templates/marketing/payload/src/components/BeforeDashboard/SeedButton/{index.scss.hbs → index.scss} +0 -0
  322. /package/templates/marketing/payload/src/components/BeforeDashboard/{index.scss.hbs → index.scss} +0 -0
  323. /package/templates/marketing/payload/src/fields/{index.ts.hbs → index.ts} +0 -0
  324. /package/templates/marketing/payload/src/utilities/{canUseDOM.ts.hbs → canUseDOM.ts} +0 -0
@@ -0,0 +1,229 @@
1
+ import type { Page } from "@/payload-types"
2
+ import { createParagraph } from "../richtext-helper"
3
+
4
+ export const b2bVendorHubsPage = (): Partial<Page> => {
5
+ return {
6
+ slug: "use-cases/b2b-vendor-hubs",
7
+ _status: "published",
8
+ title: "B2B Vendor Hub",
9
+ hero: {
10
+ type: "lowImpact",
11
+ richText: {
12
+ root: {
13
+ type: "root",
14
+ children: [
15
+ {
16
+ type: "heading",
17
+ children: [
18
+ {
19
+ type: "text",
20
+ detail: 0,
21
+ format: 0,
22
+ mode: "normal",
23
+ style: "",
24
+ text: "Create the definitive vendor directory for your industry",
25
+ version: 1,
26
+ },
27
+ ],
28
+ direction: "ltr" as const,
29
+ format: "" as const,
30
+ indent: 0,
31
+ tag: "h1",
32
+ version: 1,
33
+ },
34
+ {
35
+ type: "paragraph",
36
+ children: [
37
+ {
38
+ type: "text",
39
+ detail: 0,
40
+ format: 0,
41
+ mode: "normal",
42
+ style: "",
43
+ text: "Help businesses find SaaS tools, agencies, consultants, and service providers. Advanced filtering, comparison views, and lead capture that convert browsers into buyers.",
44
+ version: 1,
45
+ },
46
+ ],
47
+ direction: "ltr" as const,
48
+ format: "" as const,
49
+ indent: 0,
50
+ textFormat: 0,
51
+ version: 1,
52
+ },
53
+ ],
54
+ direction: "ltr" as const,
55
+ format: "" as const,
56
+ indent: 0,
57
+ version: 1,
58
+ },
59
+ },
60
+ links: [
61
+ {
62
+ link: {
63
+ type: "custom",
64
+ appearance: "default",
65
+ label: "Build your directory",
66
+ url: "/sign-up",
67
+ },
68
+ },
69
+ {
70
+ link: {
71
+ type: "custom",
72
+ appearance: "outline",
73
+ label: "See B2B templates",
74
+ url: "/templates",
75
+ },
76
+ },
77
+ ],
78
+ },
79
+ layout: [
80
+ {
81
+ blockType: "featureShowcase",
82
+ blockName: "Advanced Filtering",
83
+ label: "Smart Filtering",
84
+ headline: "Find the right vendor with advanced filters",
85
+ description: createParagraph(
86
+ "Let buyers filter by pricing, features, integrations, company size, and more. Multi-select filters and faceted search help decision-makers narrow down options quickly.",
87
+ ),
88
+ link: {
89
+ type: "custom",
90
+ label: "See filtering options",
91
+ url: "/features",
92
+ appearance: "default",
93
+ },
94
+ imagePosition: "right",
95
+ features: [
96
+ { text: "Multi-attribute filtering" },
97
+ { text: "Price range sliders" },
98
+ { text: "Feature checkboxes" },
99
+ { text: "Integration compatibility" },
100
+ ],
101
+ },
102
+ {
103
+ blockType: "featureShowcase",
104
+ blockName: "Comparison Views",
105
+ label: "Vendor Comparison",
106
+ headline: "Side-by-side vendor comparison",
107
+ description: createParagraph(
108
+ "Help buyers evaluate options with comparison tables. Users can select vendors and compare features, pricing, and ratings in a clear side-by-side view.",
109
+ ),
110
+ link: {
111
+ type: "custom",
112
+ label: "See comparison features",
113
+ url: "/features",
114
+ appearance: "default",
115
+ },
116
+ imagePosition: "left",
117
+ features: [
118
+ { text: "Side-by-side comparison" },
119
+ { text: "Feature matrix tables" },
120
+ { text: "Save comparisons" },
121
+ { text: "Share comparison links" },
122
+ ],
123
+ },
124
+ {
125
+ blockType: "featureShowcase",
126
+ blockName: "Lead Capture",
127
+ label: "Lead Generation",
128
+ headline: "Capture and qualify B2B leads",
129
+ description: createParagraph(
130
+ "Built-in lead capture forms collect buyer information and route it to vendors. Track inquiries, measure conversion, and help vendors close deals faster.",
131
+ ),
132
+ link: {
133
+ type: "custom",
134
+ label: "Learn about lead capture",
135
+ url: "/features",
136
+ appearance: "default",
137
+ },
138
+ imagePosition: "right",
139
+ features: [
140
+ { text: "Custom inquiry forms" },
141
+ { text: "Lead qualification fields" },
142
+ { text: "Vendor notification emails" },
143
+ { text: "Lead analytics dashboard" },
144
+ ],
145
+ },
146
+ {
147
+ blockType: "bentoFeatures",
148
+ blockName: "B2B Features",
149
+ heading: "Purpose-built for B2B directories",
150
+ subheading: "Features that help businesses evaluate and connect with vendors",
151
+ features: [
152
+ {
153
+ size: "small",
154
+ style: "gradient",
155
+ icon: "building",
156
+ stat: "94%",
157
+ title: "Faster Onboarding",
158
+ description: createParagraph("Smart filters accelerate vendor discovery."),
159
+ },
160
+ {
161
+ size: "small",
162
+ style: "accent",
163
+ icon: "layers",
164
+ title: "Rich Profiles",
165
+ description: createParagraph("Detailed vendor info, case studies, and integrations."),
166
+ },
167
+ {
168
+ size: "small",
169
+ style: "default",
170
+ icon: "target",
171
+ title: "Buyer Intent",
172
+ description: createParagraph("Track which vendors buyers are researching."),
173
+ },
174
+ {
175
+ size: "small",
176
+ style: "primary",
177
+ icon: "barChart",
178
+ title: "Market Insights",
179
+ description: createParagraph("Category trends and vendor rankings."),
180
+ },
181
+ {
182
+ size: "small",
183
+ style: "default",
184
+ icon: "users",
185
+ title: "Vendor Reviews",
186
+ description: createParagraph("Verified B2B reviews from real customers."),
187
+ },
188
+ {
189
+ size: "small",
190
+ style: "default",
191
+ icon: "zap",
192
+ title: "Demo Requests",
193
+ description: createParagraph("One-click demo scheduling integration."),
194
+ },
195
+ ],
196
+ },
197
+ {
198
+ blockType: "proofBanner",
199
+ blockName: "CTA Section",
200
+ style: "centered",
201
+ headline: "Launch your B2B vendor directory",
202
+ subtext: "Become the go-to resource for businesses in your industry. Start building today.",
203
+ links: [
204
+ {
205
+ link: {
206
+ type: "custom",
207
+ appearance: "default",
208
+ label: "Start for free",
209
+ url: "/sign-up",
210
+ },
211
+ },
212
+ {
213
+ link: {
214
+ type: "custom",
215
+ appearance: "outline",
216
+ label: "Talk to sales",
217
+ url: "/contact",
218
+ },
219
+ },
220
+ ],
221
+ },
222
+ ],
223
+ meta: {
224
+ description:
225
+ "Build a B2B vendor directory with advanced filtering, comparison views, and lead capture. Help businesses find SaaS tools, agencies, and consultants.",
226
+ title: "B2B Vendor Hub — DirectoryHub Use Case",
227
+ },
228
+ }
229
+ }
@@ -0,0 +1,230 @@
1
+ import type { Page } from "@/payload-types"
2
+ import { createParagraph } from "../richtext-helper"
3
+
4
+ export const communitiesPage = (): Partial<Page> => {
5
+ return {
6
+ slug: "use-cases/communities",
7
+ _status: "published",
8
+ title: "Community Directory",
9
+ hero: {
10
+ type: "lowImpact",
11
+ richText: {
12
+ root: {
13
+ type: "root",
14
+ children: [
15
+ {
16
+ type: "heading",
17
+ children: [
18
+ {
19
+ type: "text",
20
+ detail: 0,
21
+ format: 0,
22
+ mode: "normal",
23
+ style: "",
24
+ text: "Connect your community with a powerful member directory",
25
+ version: 1,
26
+ },
27
+ ],
28
+ direction: "ltr" as const,
29
+ format: "" as const,
30
+ indent: 0,
31
+ tag: "h1",
32
+ version: 1,
33
+ },
34
+ {
35
+ type: "paragraph",
36
+ children: [
37
+ {
38
+ type: "text",
39
+ detail: 0,
40
+ format: 0,
41
+ mode: "normal",
42
+ style: "",
43
+ text: "Build member directories for alumni networks, professional associations, and private communities. Gated access, rich profiles, and networking tools included.",
44
+ version: 1,
45
+ },
46
+ ],
47
+ direction: "ltr" as const,
48
+ format: "" as const,
49
+ indent: 0,
50
+ textFormat: 0,
51
+ version: 1,
52
+ },
53
+ ],
54
+ direction: "ltr" as const,
55
+ format: "" as const,
56
+ indent: 0,
57
+ version: 1,
58
+ },
59
+ },
60
+ links: [
61
+ {
62
+ link: {
63
+ type: "custom",
64
+ appearance: "default",
65
+ label: "Start your directory",
66
+ url: "/sign-up",
67
+ },
68
+ },
69
+ {
70
+ link: {
71
+ type: "custom",
72
+ appearance: "outline",
73
+ label: "See community templates",
74
+ url: "/templates",
75
+ },
76
+ },
77
+ ],
78
+ },
79
+ layout: [
80
+ {
81
+ blockType: "featureShowcase",
82
+ blockName: "Member Profiles",
83
+ label: "Rich Member Profiles",
84
+ headline: "Showcase your members with detailed profiles",
85
+ description: createParagraph(
86
+ "Members can create rich profiles with photos, bios, skills, interests, and contact information. Custom fields let you capture whatever matters most to your community.",
87
+ ),
88
+ link: {
89
+ type: "custom",
90
+ label: "See profile options",
91
+ url: "/features",
92
+ appearance: "default",
93
+ },
94
+ imagePosition: "right",
95
+ features: [
96
+ { text: "Profile photos and cover images" },
97
+ { text: "Custom bio and about sections" },
98
+ { text: "Skills and interests tags" },
99
+ { text: "Social media links" },
100
+ ],
101
+ },
102
+ {
103
+ blockType: "featureShowcase",
104
+ blockName: "Access Control",
105
+ label: "Gated Access",
106
+ headline: "Control who can see and access content",
107
+ description: createParagraph(
108
+ "Restrict directory access to members only, or allow public browsing with limited profile visibility. Membership tiers can unlock different levels of access and features.",
109
+ ),
110
+ link: {
111
+ type: "custom",
112
+ label: "Learn about access control",
113
+ url: "/features",
114
+ appearance: "default",
115
+ },
116
+ imagePosition: "left",
117
+ features: [
118
+ { text: "Members-only directory" },
119
+ { text: "Tiered access levels" },
120
+ { text: "Private contact information" },
121
+ { text: "Approval workflows" },
122
+ ],
123
+ },
124
+ {
125
+ blockType: "featureShowcase",
126
+ blockName: "Networking",
127
+ label: "Networking Tools",
128
+ headline: "Help members connect with each other",
129
+ description: createParagraph(
130
+ "Built-in messaging, connection requests, and member search make it easy for community members to find and connect with each other. Foster meaningful professional relationships.",
131
+ ),
132
+ link: {
133
+ type: "custom",
134
+ label: "Explore networking features",
135
+ url: "/features",
136
+ appearance: "default",
137
+ },
138
+ imagePosition: "right",
139
+ features: [
140
+ { text: "Member search and discovery" },
141
+ { text: "Connection requests" },
142
+ { text: "Direct messaging" },
143
+ { text: "Member activity feed" },
144
+ ],
145
+ },
146
+ {
147
+ blockType: "bentoFeatures",
148
+ blockName: "Community Features",
149
+ heading: "Everything for member communities",
150
+ subheading: "Tools to build, engage, and grow your community",
151
+ features: [
152
+ {
153
+ size: "small",
154
+ style: "gradient",
155
+ icon: "users",
156
+ stat: "+12K",
157
+ title: "Members Connected",
158
+ description: createParagraph("Build thriving member networks."),
159
+ },
160
+ {
161
+ size: "small",
162
+ style: "accent",
163
+ icon: "shield",
164
+ title: "Privacy Controls",
165
+ description: createParagraph("Members control their visibility."),
166
+ },
167
+ {
168
+ size: "small",
169
+ style: "default",
170
+ icon: "search",
171
+ title: "Smart Search",
172
+ description: createParagraph("Find members by skills, location, or interests."),
173
+ },
174
+ {
175
+ size: "small",
176
+ style: "primary",
177
+ icon: "building",
178
+ title: "Organization Pages",
179
+ description: createParagraph("Company profiles for corporate members."),
180
+ },
181
+ {
182
+ size: "small",
183
+ style: "default",
184
+ icon: "globe",
185
+ title: "Subgroups",
186
+ description: createParagraph("Regional chapters or interest groups."),
187
+ },
188
+ {
189
+ size: "small",
190
+ style: "default",
191
+ icon: "barChart",
192
+ title: "Engagement Analytics",
193
+ description: createParagraph("Track member activity and growth."),
194
+ },
195
+ ],
196
+ },
197
+ {
198
+ blockType: "proofBanner",
199
+ blockName: "CTA Section",
200
+ style: "centered",
201
+ headline: "Build your community directory today",
202
+ subtext:
203
+ "Connect your members with a modern directory. Perfect for associations, alumni networks, and private communities.",
204
+ links: [
205
+ {
206
+ link: {
207
+ type: "custom",
208
+ appearance: "default",
209
+ label: "Get started free",
210
+ url: "/sign-up",
211
+ },
212
+ },
213
+ {
214
+ link: {
215
+ type: "custom",
216
+ appearance: "outline",
217
+ label: "Talk to sales",
218
+ url: "/contact",
219
+ },
220
+ },
221
+ ],
222
+ },
223
+ ],
224
+ meta: {
225
+ description:
226
+ "Build a community member directory with rich profiles, gated access, and networking tools. Perfect for alumni networks, associations, and private communities.",
227
+ title: "Community Directory — DirectoryHub Use Case",
228
+ },
229
+ }
230
+ }
@@ -0,0 +1,4 @@
1
+ export { localServicesPage } from "./local-services"
2
+ export { b2bVendorHubsPage } from "./b2b-vendor-hubs"
3
+ export { communitiesPage } from "./communities"
4
+ export { marketplacesPage } from "./marketplaces"
@@ -0,0 +1,230 @@
1
+ import type { Page } from "@/payload-types"
2
+ import { createParagraph } from "../richtext-helper"
3
+
4
+ export const localServicesPage = (): Partial<Page> => {
5
+ return {
6
+ slug: "use-cases/local-services",
7
+ _status: "published",
8
+ title: "Local Services Directory",
9
+ hero: {
10
+ type: "lowImpact",
11
+ richText: {
12
+ root: {
13
+ type: "root",
14
+ children: [
15
+ {
16
+ type: "heading",
17
+ children: [
18
+ {
19
+ type: "text",
20
+ detail: 0,
21
+ format: 0,
22
+ mode: "normal",
23
+ style: "",
24
+ text: "Build the go-to directory for local services",
25
+ version: 1,
26
+ },
27
+ ],
28
+ direction: "ltr" as const,
29
+ format: "" as const,
30
+ indent: 0,
31
+ tag: "h1",
32
+ version: 1,
33
+ },
34
+ {
35
+ type: "paragraph",
36
+ children: [
37
+ {
38
+ type: "text",
39
+ detail: 0,
40
+ format: 0,
41
+ mode: "normal",
42
+ style: "",
43
+ text: "Help customers find trusted plumbers, electricians, restaurants, photographers, and more. Location-based search, reviews, and verified badges make it easy.",
44
+ version: 1,
45
+ },
46
+ ],
47
+ direction: "ltr" as const,
48
+ format: "" as const,
49
+ indent: 0,
50
+ textFormat: 0,
51
+ version: 1,
52
+ },
53
+ ],
54
+ direction: "ltr" as const,
55
+ format: "" as const,
56
+ indent: 0,
57
+ version: 1,
58
+ },
59
+ },
60
+ links: [
61
+ {
62
+ link: {
63
+ type: "custom",
64
+ appearance: "default",
65
+ label: "Start your directory",
66
+ url: "/sign-up",
67
+ },
68
+ },
69
+ {
70
+ link: {
71
+ type: "custom",
72
+ appearance: "outline",
73
+ label: "See templates",
74
+ url: "/templates",
75
+ },
76
+ },
77
+ ],
78
+ },
79
+ layout: [
80
+ {
81
+ blockType: "featureShowcase",
82
+ blockName: "Location Search",
83
+ label: "Location-Based Discovery",
84
+ headline: "Find services near you with map search",
85
+ description: createParagraph(
86
+ "Integrated maps let users search by location, view service areas, and get directions. Auto-detect location for instant local results. Perfect for plumbers, electricians, restaurants, and any location-based service.",
87
+ ),
88
+ link: {
89
+ type: "custom",
90
+ label: "See location features",
91
+ url: "/features",
92
+ appearance: "default",
93
+ },
94
+ imagePosition: "right",
95
+ features: [
96
+ { text: "Interactive map search" },
97
+ { text: "Service area boundaries" },
98
+ { text: "Distance-based filtering" },
99
+ { text: "Auto-detect user location" },
100
+ ],
101
+ },
102
+ {
103
+ blockType: "featureShowcase",
104
+ blockName: "Reviews",
105
+ label: "Reviews & Ratings",
106
+ headline: "Build trust with verified reviews",
107
+ description: createParagraph(
108
+ "Let customers leave reviews and ratings. Display aggregate scores, filter by rating, and highlight top-rated services. Verified reviews build trust and help great businesses stand out.",
109
+ ),
110
+ link: {
111
+ type: "custom",
112
+ label: "Learn about reviews",
113
+ url: "/features",
114
+ appearance: "default",
115
+ },
116
+ imagePosition: "left",
117
+ features: [
118
+ { text: "Star ratings and written reviews" },
119
+ { text: "Verified customer badges" },
120
+ { text: "Review moderation tools" },
121
+ { text: "Aggregate score display" },
122
+ ],
123
+ },
124
+ {
125
+ blockType: "featureShowcase",
126
+ blockName: "Categories",
127
+ label: "Service Categories",
128
+ headline: "Organize by service type",
129
+ description: createParagraph(
130
+ "Create unlimited service categories and subcategories. Users can browse by type or search across all services. Clean category navigation helps customers find exactly what they need.",
131
+ ),
132
+ link: {
133
+ type: "custom",
134
+ label: "See category options",
135
+ url: "/features",
136
+ appearance: "default",
137
+ },
138
+ imagePosition: "right",
139
+ features: [
140
+ { text: "Unlimited categories" },
141
+ { text: "Nested subcategories" },
142
+ { text: "Category icons and images" },
143
+ { text: "Featured category sections" },
144
+ ],
145
+ },
146
+ {
147
+ blockType: "bentoFeatures",
148
+ blockName: "Local Services Features",
149
+ heading: "Everything for local service directories",
150
+ subheading: "Purpose-built features for connecting customers with local providers",
151
+ features: [
152
+ {
153
+ size: "small",
154
+ style: "gradient",
155
+ icon: "globe",
156
+ stat: "340%",
157
+ title: "Higher Conversion",
158
+ description: createParagraph("Location-based discovery drives action."),
159
+ },
160
+ {
161
+ size: "small",
162
+ style: "accent",
163
+ icon: "users",
164
+ title: "Business Profiles",
165
+ description: createParagraph("Rich profiles with hours, services, and contact."),
166
+ },
167
+ {
168
+ size: "small",
169
+ style: "default",
170
+ icon: "search",
171
+ title: "Smart Search",
172
+ description: createParagraph("Search by service, location, or keyword."),
173
+ },
174
+ {
175
+ size: "small",
176
+ style: "primary",
177
+ icon: "shield",
178
+ title: "Verified Badges",
179
+ description: createParagraph("Highlight licensed and insured providers."),
180
+ },
181
+ {
182
+ size: "small",
183
+ style: "default",
184
+ icon: "dollarSign",
185
+ title: "Price Ranges",
186
+ description: createParagraph("Display pricing tiers to set expectations."),
187
+ },
188
+ {
189
+ size: "small",
190
+ style: "default",
191
+ icon: "zap",
192
+ title: "Contact Forms",
193
+ description: createParagraph("Lead capture directly from listings."),
194
+ },
195
+ ],
196
+ },
197
+ {
198
+ blockType: "proofBanner",
199
+ blockName: "CTA Section",
200
+ style: "centered",
201
+ headline: "Launch your local services directory today",
202
+ subtext:
203
+ "Pick a template, customize for your market, and start connecting customers with local businesses.",
204
+ links: [
205
+ {
206
+ link: {
207
+ type: "custom",
208
+ appearance: "default",
209
+ label: "Get started free",
210
+ url: "/sign-up",
211
+ },
212
+ },
213
+ {
214
+ link: {
215
+ type: "custom",
216
+ appearance: "outline",
217
+ label: "View pricing",
218
+ url: "/pricing",
219
+ },
220
+ },
221
+ ],
222
+ },
223
+ ],
224
+ meta: {
225
+ description:
226
+ "Build a local services directory with location search, reviews, and verified badges. Help customers find plumbers, electricians, restaurants, and more.",
227
+ title: "Local Services Directory — DirectoryHub Use Case",
228
+ },
229
+ }
230
+ }