create-ailk 0.6.0 → 0.7.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 (248) hide show
  1. package/README.md +44 -5
  2. package/component-catalog.json +146 -21
  3. package/component-catalog.md +9 -6
  4. package/dist/add-module-core.d.ts +22 -0
  5. package/dist/add-module-core.js +50 -0
  6. package/dist/add-module.d.ts +89 -0
  7. package/dist/add-module.js +334 -0
  8. package/dist/category-profile.d.ts +126 -0
  9. package/dist/category-profile.js +262 -0
  10. package/dist/cli.js +124 -13
  11. package/dist/copy.d.ts +14 -0
  12. package/dist/copy.js +38 -1
  13. package/dist/index.d.ts +4 -2
  14. package/dist/index.js +6 -1
  15. package/dist/lib/extract-module-bundle.d.ts +76 -2
  16. package/dist/lib/extract-module-bundle.js +219 -8
  17. package/dist/lib/license-key-files.d.ts +15 -0
  18. package/dist/lib/license-key-files.js +102 -0
  19. package/dist/lib/module-license-gate.d.ts +6 -1
  20. package/dist/lib/module-license-gate.js +6 -1
  21. package/dist/lib/pro-callout.d.ts +16 -10
  22. package/dist/lib/pro-callout.js +27 -4
  23. package/dist/license-set.d.ts +34 -0
  24. package/dist/license-set.js +194 -0
  25. package/dist/module-architecture.d.ts +20 -0
  26. package/dist/module-architecture.js +77 -19
  27. package/dist/modules/commerce/0.6.0.tar.gz +0 -0
  28. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  29. package/dist/modules/docs-blog/0.6.0.tar.gz +0 -0
  30. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  31. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  32. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  33. package/dist/modules/multi-tenant/0.6.0.tar.gz +0 -0
  34. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  35. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  36. package/dist/modules/scheduling/0.6.0.tar.gz +0 -0
  37. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  38. package/dist/modules/signal-collectors/0.6.0.tar.gz +0 -0
  39. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  40. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  41. package/dist/modules/workspace/0.6.0.tar.gz +0 -0
  42. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  43. package/dist/parse-args.d.ts +7 -0
  44. package/dist/parse-args.js +23 -1
  45. package/dist/programmatic.d.ts +46 -0
  46. package/dist/programmatic.js +144 -19
  47. package/dist/site-chrome.d.ts +18 -7
  48. package/dist/site-chrome.js +32 -14
  49. package/dist/site-roster.d.ts +127 -0
  50. package/dist/site-roster.js +494 -0
  51. package/dist/surfaces.d.ts +20 -7
  52. package/dist/surfaces.js +149 -28
  53. package/dist/sync-routes.d.ts +9 -0
  54. package/dist/sync-routes.js +2 -2
  55. package/dist/template-manifest.d.ts +58 -2
  56. package/dist/template-manifest.js +196 -69
  57. package/package.json +6 -4
  58. package/site-templates/_base/content/en/BookCall/book-call.mdx +53 -0
  59. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +66 -0
  60. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +68 -0
  61. package/site-templates/_base/content/en/Pricing/pricing.mdx +71 -62
  62. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +2 -3
  63. package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
  64. package/site-templates/_base/content/en/UseCase/first-use-case.mdx +23 -0
  65. package/site-templates/_base/content/en/UseCase/second-use-case.mdx +23 -0
  66. package/site-templates/_base/content/en/UseCase/third-use-case.mdx +23 -0
  67. package/site-templates/designs/minimalism/DESIGN.md +162 -0
  68. package/site-templates/designs/standard/DESIGN.md +162 -0
  69. package/site-templates/marketing-site/DESIGN.md +162 -0
  70. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +312 -57
  71. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +209 -90
  72. package/site-templates/marketing-site/ailk-template.json +1 -0
  73. package/site-templates/marketing-site-free/DESIGN.md +162 -0
  74. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +260 -66
  75. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +294 -114
  76. package/site-templates/marketing-site-free/ailk-template.json +3 -2
  77. package/site-templates/minimalism-site/DESIGN.md +162 -0
  78. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
  79. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +185 -51
  80. package/site-templates/minimalism-site/ailk-template.json +3 -2
  81. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +53 -0
  82. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
  83. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  84. package/site-templates/saas-product/DESIGN.md +162 -0
  85. package/site-templates/simple-service/DESIGN.md +162 -0
  86. package/site-templates/simple-service/TEMPLATE-MANIFEST.json +135 -26
  87. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +114 -59
  88. package/site-templates/simple-service/ailk-template.json +4 -3
  89. package/site-templates/simple-service/content/en/BookCall/book-call.mdx +53 -0
  90. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +1 -36
  91. package/site-templates/simple-service/content/en/PurchasePolicyPage/purchase-policy.mdx +124 -0
  92. package/templates/.claude/settings.json +15 -0
  93. package/templates/.claude/skills/README.md +8 -8
  94. package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
  95. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
  96. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
  97. package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
  98. package/templates/.claude/skills/add-page/references/page-types.md +111 -0
  99. package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
  100. package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
  101. package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
  102. package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
  103. package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
  104. package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
  105. package/templates/.claude/skills/fill-page/SKILL.md +180 -0
  106. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
  107. package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
  108. package/templates/.claude/skills/{provision-config → setup-deploy}/SKILL.md +8 -8
  109. package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +2 -2
  110. package/templates/.claude/skills/{provision-config → setup-deploy}/references/runbook-template.md +8 -8
  111. package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
  112. package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
  113. package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
  114. package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
  115. package/templates/.github/workflows/ci.yml +5 -0
  116. package/templates/CLAUDE.md +10 -5
  117. package/templates/DESIGN.md +162 -0
  118. package/templates/README.md +134 -38
  119. package/templates/apps/api/.env.example +2 -1
  120. package/templates/apps/api/package.json +1 -1
  121. package/templates/apps/api/src/config/__tests__/index.test.ts +37 -2
  122. package/templates/apps/api/src/config/index.ts +19 -6
  123. package/templates/apps/api/src/lib/license-key-store.ts +45 -0
  124. package/templates/apps/api/src/lib/site.ts +5 -3
  125. package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
  126. package/templates/apps/api/src/middleware/auth.ts +9 -0
  127. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
  128. package/templates/apps/api/src/routes/content/get-page.ts +86 -2
  129. package/templates/apps/api/src/server.ts +6 -0
  130. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
  131. package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
  132. package/templates/apps/mcp/package.json +2 -1
  133. package/templates/apps/mcp/src/index.ts +7 -0
  134. package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
  135. package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
  136. package/templates/apps/web/PRODUCT.md +86 -0
  137. package/templates/apps/web/__tests__/setup.ts +18 -0
  138. package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
  139. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
  140. package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
  141. package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
  142. package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
  143. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
  144. package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
  145. package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
  146. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
  147. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
  148. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
  149. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
  150. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +94 -33
  151. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +53 -23
  152. package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +96 -0
  153. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +84 -2
  154. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +5 -6
  155. package/templates/apps/web/app/[locale]/contact/page.tsx +25 -7
  156. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
  157. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
  158. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
  159. package/templates/apps/web/app/[locale]/glossary/page.tsx +50 -0
  160. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
  161. package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
  162. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
  163. package/templates/apps/web/app/[locale]/layout.tsx +113 -51
  164. package/templates/apps/web/app/[locale]/newsletter/page.tsx +50 -0
  165. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
  166. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
  167. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
  168. package/templates/apps/web/app/[locale]/{shipping → purchase-policy}/page.tsx +15 -10
  169. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
  170. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
  171. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
  172. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
  173. package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
  174. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
  175. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
  176. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
  177. package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +48 -0
  178. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
  179. package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
  180. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
  181. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
  182. package/templates/apps/web/app/error-fallback.tsx +17 -45
  183. package/templates/apps/web/app/not-found.tsx +14 -38
  184. package/templates/apps/web/app/og/route.tsx +6 -0
  185. package/templates/apps/web/eslint.config.mjs +3 -0
  186. package/templates/apps/web/instrumentation.ts +14 -0
  187. package/templates/apps/web/lib/__tests__/site-theme.test.ts +135 -20
  188. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
  189. package/templates/apps/web/lib/license-key-store.ts +52 -0
  190. package/templates/apps/web/lib/nav-config.ts +64 -12
  191. package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
  192. package/templates/apps/web/lib/site-brand.tsx +4 -8
  193. package/templates/apps/web/lib/site-chrome.ts +3 -3
  194. package/templates/apps/web/lib/site-identity.ts +134 -0
  195. package/templates/apps/web/lib/site-theme.ts +11 -0
  196. package/templates/apps/web/messages/en.json +52 -37
  197. package/templates/apps/web/middleware.ts +1 -1
  198. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  199. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  200. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  201. package/templates/apps/web/public/favicon-16x16.png +0 -0
  202. package/templates/apps/web/public/favicon-32x32.png +0 -0
  203. package/templates/apps/web/public/favicon.ico +0 -0
  204. package/templates/apps/web/public/favicon.svg +3 -3
  205. package/templates/apps/web/public/logomark.svg +6 -3
  206. package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
  207. package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
  208. package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
  209. package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
  210. package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
  211. package/templates/apps/web/public/logos/salessmyth.svg +4 -0
  212. package/templates/apps/web/public/site.webmanifest +4 -4
  213. package/templates/apps/web/public/wordmark-light.svg +4 -0
  214. package/templates/apps/web/public/wordmark.svg +3 -3
  215. package/templates/apps/web/security-headers.config.ts +5 -1
  216. package/templates/apps/web/src/lib/commerce-sections.ts +35 -3
  217. package/templates/content/_site.mdx +41 -3
  218. package/templates/content/en/AboutPage/about.mdx +150 -144
  219. package/templates/content/en/BlogList/blog.mdx +105 -0
  220. package/templates/content/en/ContactPage/contact.mdx +44 -85
  221. package/templates/content/en/FAQPage/faq.mdx +86 -57
  222. package/templates/content/en/HomePage/home.mdx +276 -217
  223. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +182 -0
  224. package/templates/content/en/SoftwareProduct/product.mdx +175 -0
  225. package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
  226. package/templates/database/CHANGELOG.md +14 -0
  227. package/templates/database/package.json +3 -2
  228. package/templates/package.json +3 -1
  229. package/templates/tools/lint-architecture.ts +315 -0
  230. package/templates/tools/tsconfig.json +14 -0
  231. package/versions.json +33 -33
  232. package/templates/.claude/skills/add-schema/SKILL.md +0 -277
  233. package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
  234. package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
  235. package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
  236. package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
  237. package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
  238. package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
  239. package/templates/apps/web/app/[locale]/cancellation/page.tsx +0 -44
  240. package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
  241. package/templates/apps/web/public/logo-dark.svg +0 -21
  242. package/templates/apps/web/public/logo-light.svg +0 -21
  243. package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
  244. package/templates/content/en/LandingPage/blog.mdx +0 -83
  245. package/templates/content/en/LandingPage/features.mdx +0 -103
  246. package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
  247. package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
  248. package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
@@ -1,174 +1,180 @@
1
1
  ---
2
2
  type: "AboutPage"
3
3
  slug: "about"
4
- title: "We want you to {ability they couldn't do before}"
5
- description: "We want you to {ability they couldn't do before}"
4
+ title: "{We want you to ability they couldn't do before}"
5
+ description: "{We want you to ability they couldn't do before}"
6
6
  sections:
7
7
  [
8
8
  {
9
9
  "id": "manifesto",
10
10
  "type": "content-block",
11
- "data": {
12
- "variant": "media-right",
13
- "eyebrow": "Manifesto",
14
- "headline": "We want you to {ability they couldn't do before}",
15
- "body": "Hey, I’m {your name}, the founder of {your company}.\n\nWrite a few sentences introducing the problems you solve. You can even ask a rhetorical question to get people thinking about their own personal experiences with a problem they might have encountered.\n\nThis is your chance to tell the backstory of why your product exists and explain the gap your product fills. Don’t be afraid to take a stance and plant your flag.\n\nWe believe that {you should be able to X without Y}.\n\nWe’ll help you:\n\nSolve this problem\n\nSolve another problem\n\nSolve this other problem\n\nIf that resonates with you, you're in the right place.\n\n- (your name)",
16
- "cta": {
17
- "label": "Sign Up",
18
- "href": "/sign-in"
11
+ "data":
12
+ {
13
+ "variant": "media-right",
14
+ "imagerySlot": true,
15
+ "eyebrow": "About",
16
+ "headline": "{We want you to ability they couldn't do before}",
17
+ "body": "{Hey, I’m your name, the founder of your company.}\n\n{A few sentences introducing the problems you solve. A rhetorical question can get people thinking about a problem they have run into themselves.}\n\n{The backstory of why your product exists and the gap it fills. Take a stance and plant your flag.}\n\n{We believe that you should be able to X without Y.}\n\nWe’ll help you:\n\n→ {A problem you solve}\n\n→ {Another problem you solve}\n\n→ {A third problem you solve}\n\nIf that resonates with you, you're in the right place.\n\n- {your name}",
18
+ "cta":
19
+ { "label": "Sign Up", "href": "/sign-up", "variant": "outline" },
20
+ "secondaryCta":
21
+ {
22
+ "label": "More about us",
23
+ "href": "/about",
24
+ "variant": "outline",
25
+ },
19
26
  },
20
- "secondaryCta": {
21
- "label": "More about us",
22
- "href": "/about",
23
- "variant": "outline"
24
- }
25
- }
26
27
  },
27
28
  {
28
29
  "id": "team",
29
30
  "type": "team",
30
- "data": {
31
- "headline": "Our team",
32
- "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
33
- "members": [
34
- {
35
- "name": "Anya Lind",
36
- "role": "Head of Growth",
37
- "bio": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique."
38
- },
39
- {
40
- "name": "Narciso Gerlach",
41
- "role": "Head of Sales",
42
- "bio": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique."
43
- },
44
- {
45
- "name": "Edythe Sanford",
46
- "role": "Head of Content",
47
- "bio": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique."
48
- },
49
- {
50
- "name": "Angeline Watsica",
51
- "role": "Head of Conversion",
52
- "bio": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique."
53
- },
54
- {
55
- "name": "Gerardo Ullrich",
56
- "role": "Head of Marketing",
57
- "bio": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique."
58
- }
59
- ]
60
- }
61
- },
62
- {
63
- "id": "logo-cloud",
64
- "type": "logoCloud",
65
- "data": {
66
- "headline": "Don’t just take our word for it",
67
- "logos": [
68
- {
69
- "name": "Placeholder logo",
70
- "src": "/logomark.svg"
71
- },
72
- {
73
- "name": "Placeholder logo",
74
- "src": "/logomark.svg"
75
- },
76
- {
77
- "name": "Placeholder logo",
78
- "src": "/logomark.svg"
79
- },
80
- {
81
- "name": "Placeholder logo",
82
- "src": "/logomark.svg"
83
- },
84
- {
85
- "name": "Placeholder logo",
86
- "src": "/logomark.svg"
87
- },
88
- {
89
- "name": "Placeholder logo",
90
- "src": "/logomark.svg"
91
- }
92
- ],
93
- "layout": "inline",
94
- "treatment": "monochrome"
95
- }
31
+ "data":
32
+ {
33
+ "variant": "with-side-images",
34
+ "eyebrow": "Tagline",
35
+ "headline": "Our team",
36
+ "description": "{One sentence about the people behind the product}",
37
+ "members":
38
+ [
39
+ {
40
+ "name": "{Team member name}",
41
+ "role": "{Their title}",
42
+ "bio": "{Two sentences about what they do here}",
43
+ "links":
44
+ [
45
+ { "type": "linkedin", "url": "#" },
46
+ { "type": "twitter", "url": "#" },
47
+ { "type": "website", "url": "#" },
48
+ ],
49
+ },
50
+ {
51
+ "name": "{Team member name}",
52
+ "role": "{Their title}",
53
+ "bio": "{Two sentences about what they do here}",
54
+ "links":
55
+ [
56
+ { "type": "linkedin", "url": "#" },
57
+ { "type": "twitter", "url": "#" },
58
+ { "type": "website", "url": "#" },
59
+ ],
60
+ },
61
+ {
62
+ "name": "{Team member name}",
63
+ "role": "{Their title}",
64
+ "bio": "{Two sentences about what they do here}",
65
+ "links":
66
+ [
67
+ { "type": "linkedin", "url": "#" },
68
+ { "type": "twitter", "url": "#" },
69
+ { "type": "website", "url": "#" },
70
+ ],
71
+ },
72
+ {
73
+ "name": "{Team member name}",
74
+ "role": "{Their title}",
75
+ "bio": "{Two sentences about what they do here}",
76
+ "links":
77
+ [
78
+ { "type": "linkedin", "url": "#" },
79
+ { "type": "twitter", "url": "#" },
80
+ { "type": "website", "url": "#" },
81
+ ],
82
+ },
83
+ {
84
+ "name": "{Team member name}",
85
+ "role": "{Their title}",
86
+ "bio": "{Two sentences about what they do here}",
87
+ "links":
88
+ [
89
+ { "type": "linkedin", "url": "#" },
90
+ { "type": "twitter", "url": "#" },
91
+ { "type": "website", "url": "#" },
92
+ ],
93
+ },
94
+ ],
95
+ },
96
96
  },
97
97
  {
98
98
  "id": "testimonial",
99
99
  "type": "testimonials",
100
- "data": {
101
- "variant": "featured",
102
- "items": [
103
- {
104
- "quote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.",
105
- "author": "John Smith",
106
- "role": "CEO, Google"
107
- }
108
- ]
109
- }
100
+ "data":
101
+ {
102
+ "variant": "quote",
103
+ "items":
104
+ [
105
+ {
106
+ "quote": "{A customer quote, in their own words, about the result they got}",
107
+ "author": "{Customer name}",
108
+ "role": "{Their title, their company}",
109
+ },
110
+ ],
111
+ },
110
112
  },
111
113
  {
112
114
  "id": "switch",
113
115
  "type": "cta",
114
- "data": {
115
- "variant": "box",
116
- "headline": "Switch to {your product} in {time amount} or less",
117
- "description": "You shouldn't have to {experience a painful problem}. With {your product}, you can finally {achieve a value outcome or get a big improvement}.",
118
- "chips": [
119
- "No credit card required",
120
- "Cancel any time",
121
- "Live chat support"
122
- ],
123
- "primaryCta": {
124
- "label": "{Primary CTA}",
125
- "href": "/contact"
126
- },
127
- "secondaryCta": {
128
- "label": "{Secondary CTA}",
129
- "href": "/pricing",
130
- "variant": "outline"
116
+ "data":
117
+ {
118
+ "variant": "box",
119
+ "imagerySlot": true,
120
+ "headline": "{Switch to your product in time amount or less}",
121
+ "description": "{You shouldn't have to experience a painful problem. With your product, you can finally achieve a value outcome or get a big improvement.}",
122
+ "checklist":
123
+ ["No credit card required", "Cancel any time", "Live chat support"],
124
+ "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
125
+ "secondaryCta":
126
+ {
127
+ "label": "{Secondary CTA}",
128
+ "href": "/pricing",
129
+ "variant": "outline",
130
+ },
131
+ "closingLine": "{Social Proof goes here}",
131
132
  },
132
- "closingLine": "{Social Proof goes here}"
133
- }
134
133
  },
135
134
  {
136
135
  "id": "faq",
137
136
  "type": "faq",
138
- "data": {
139
- "headline": "FAQs",
140
- "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
141
- "supportLink": {
142
- "label": "Contact",
143
- "href": "/contact"
137
+ "data":
138
+ {
139
+ "headline": "FAQs",
140
+ "description": "{One sentence that invites visitors to ask what this list does not answer}",
141
+ "actions":
142
+ [
143
+ {
144
+ "kind": "button",
145
+ "label": "Contact",
146
+ "href": "/contact",
147
+ "variant": "outline",
148
+ },
149
+ ],
150
+ "presentation": "accordion",
151
+ "initialOpen": "none",
152
+ "items":
153
+ [
154
+ {
155
+ "question": "{A question your customers actually ask}",
156
+ "answer": "{Answer the question in two or three plain sentences}",
157
+ },
158
+ {
159
+ "question": "{A question your customers actually ask}",
160
+ "answer": "{Answer the question in two or three plain sentences}",
161
+ },
162
+ {
163
+ "question": "{A question your customers actually ask}",
164
+ "answer": "{Answer the question in two or three plain sentences}",
165
+ },
166
+ {
167
+ "question": "{A question your customers actually ask}",
168
+ "answer": "{Answer the question in two or three plain sentences}",
169
+ },
170
+ {
171
+ "question": "{A question your customers actually ask}",
172
+ "answer": "{Answer the question in two or three plain sentences}",
173
+ },
174
+ ],
144
175
  },
145
- "presentation": "accordion",
146
- "initialOpen": "first",
147
- "items": [
148
- {
149
- "question": "Vel odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa?",
150
- "answer": "Vel odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa."
151
- },
152
- {
153
- "question": "Dolorem consectetur quia maxime sunt ut sint. Fuga optio dolorem animi voluptatem laudantium error. Quis accusamus deleniti rer?",
154
- "answer": "Vel odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa."
155
- },
156
- {
157
- "question": "Totam nihil esse. Itaque optio temporibus adipisci. Rerum nisi aperiam aliquid doloremque aliquam?",
158
- "answer": "Vel odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa."
159
- },
160
- {
161
- "question": "Delectus minus officiis et. Perspiciatis illum nisi vitae. Sed consequuntur animi corrupti distinctio ipsam accusamus?",
162
- "answer": "Vel odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa."
163
- },
164
- {
165
- "question": "Aperiam perferendis voluptatem est sit enim sed eaque perspiciatis enim. Est explicabo ea explicabo et et dignissimos aliquid?",
166
- "answer": "Vel odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa."
167
- }
168
- ]
169
- }
170
- }
176
+ },
171
177
  ]
172
178
  ---
173
179
 
174
- {/* Rendered from frontmatter `sections[]`. Placeholder copy, verbatim from the reference — replace the manifesto and the team before you launch. */}
180
+ {/* Rendered from frontmatter `sections[]`. Placeholder copy — replace every {brace}, including the manifesto and the team, before you launch. */}
@@ -0,0 +1,105 @@
1
+ ---
2
+ type: "BlogList"
3
+ slug: "blog"
4
+ title: "{Resources for customer profile}"
5
+ description: "{One sentence that says what this page covers}"
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "variant": "centered",
14
+ "gapBelow": "tight",
15
+ "eyebrow": "Blog",
16
+ "headline": "{Resources for customer profile}",
17
+ "subheadline": "{One sentence on what readers will learn here}",
18
+ },
19
+ },
20
+ {
21
+ "id": "posts",
22
+ "type": "blog-list",
23
+ "data":
24
+ {
25
+ "variant": "grid",
26
+ "posts":
27
+ [
28
+ {
29
+ "title": "{Post 1 title: the reader's problem, the promise of the post}",
30
+ "slug": "post-1",
31
+ "excerpt": "{Two sentences on what this post covers and what the reader takes away}",
32
+ "publishedAt": "2026-01-01",
33
+ "readingTime": "5 min",
34
+ },
35
+ {
36
+ "title": "{Post 2 title: the reader's problem, the promise of the post}",
37
+ "slug": "post-2",
38
+ "excerpt": "{Two sentences on what this post covers and what the reader takes away}",
39
+ "publishedAt": "2026-01-02",
40
+ "readingTime": "5 min",
41
+ },
42
+ {
43
+ "title": "{Post 3 title: the reader's problem, the promise of the post}",
44
+ "slug": "post-3",
45
+ "excerpt": "{Two sentences on what this post covers and what the reader takes away}",
46
+ "publishedAt": "2026-01-03",
47
+ "readingTime": "10 min",
48
+ },
49
+ {
50
+ "title": "{Post 4 title: the reader's problem, the promise of the post}",
51
+ "slug": "post-4",
52
+ "excerpt": "{Two sentences on what this post covers and what the reader takes away}",
53
+ "publishedAt": "2026-01-04",
54
+ "readingTime": "3 min",
55
+ },
56
+ {
57
+ "title": "{Post 5 title: the reader's problem, the promise of the post}",
58
+ "slug": "post-5",
59
+ "excerpt": "{Two sentences on what this post covers and what the reader takes away}",
60
+ "publishedAt": "2026-01-05",
61
+ "readingTime": "5 min",
62
+ },
63
+ ],
64
+ },
65
+ },
66
+ {
67
+ "id": "logo-cloud",
68
+ "type": "logoCloud",
69
+ "data":
70
+ {
71
+ "headline": "Don’t just take our word for it",
72
+ "headlineStyle": "label",
73
+ "logos":
74
+ [
75
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
76
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
77
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
78
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
79
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
80
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
81
+ ],
82
+ "layout": "inline",
83
+ "treatment": "monochrome",
84
+ },
85
+ },
86
+ {
87
+ "id": "testimonial",
88
+ "type": "testimonials",
89
+ "data":
90
+ {
91
+ "variant": "quote",
92
+ "items":
93
+ [
94
+ {
95
+ "quote": "{A customer quote, in their own words, about the result they got}",
96
+ "author": "{Customer name}",
97
+ "role": "{Their title, their company}",
98
+ },
99
+ ],
100
+ },
101
+ },
102
+ ]
103
+ ---
104
+
105
+ {/* The Free blog teaser (one static page, rendered by the generic `[slug]` route). With the Pro docs-blog module installed its own `blog/` route directory takes precedence and this file is inert. Placeholder copy — replace before you launch. */}
@@ -2,104 +2,63 @@
2
2
  type: "ContactPage"
3
3
  slug: "contact"
4
4
  title: "Contact {{COMPANY_NAME}}"
5
- description: "Find out if {your product} is a good fit for you in just {time amount}."
5
+ description: "{Find out if your product is a good fit for you in just time amount.}"
6
6
  sections:
7
7
  [
8
8
  {
9
9
  "id": "hero",
10
10
  "type": "hero",
11
- "data": {
12
- "variant": "split",
13
- "eyebrow": "Book a Demo",
14
- "headline": "Ready to {achieve a valuable outcome}?",
15
- "subheadline": "Find out if {your product} is a good fit for you in just {time amount}.",
16
- "checklist": [
17
- "Use these bullet points to describe what to expect on the call",
18
- "Alleviate any fears or hesitations visitors might have before scheduling",
19
- "Frame the meeting around what they get out of it instead of what you get out of it"
20
- ]
21
- }
22
- },
23
- {
24
- "id": "contact-form",
25
- "type": "contact-form",
26
- "data": {
27
- "variant": "card",
28
- "fields": [
29
- {
30
- "name": "name",
31
- "label": "Name",
32
- "type": "text",
33
- "required": true
34
- },
35
- {
36
- "name": "email",
37
- "label": "Email",
38
- "type": "email",
39
- "required": true
40
- },
41
- {
42
- "name": "message",
43
- "label": "Message",
44
- "type": "textarea",
45
- "required": true
46
- }
47
- ],
48
- "consentText": "I accept the Terms",
49
- "successMessage": "Thank you! Your submission has been received!",
50
- "action": "/v1/leads/submit"
51
- }
11
+ "data":
12
+ {
13
+ "variant": "split",
14
+ "eyebrow": "Book a Demo",
15
+ "headline": "{Ready to achieve a valuable outcome?}",
16
+ "subheadline": "{Find out if your product is a good fit for you in just time amount.}",
17
+ "checklist":
18
+ [
19
+ "{What to expect on the call}",
20
+ "{A fear or hesitation this call removes}",
21
+ "{What the visitor gets out of the call}",
22
+ ],
23
+ },
52
24
  },
53
25
  {
54
26
  "id": "logo-cloud",
55
27
  "type": "logoCloud",
56
- "data": {
57
- "headline": "Don’t just take our word for it",
58
- "logos": [
59
- {
60
- "name": "Placeholder logo",
61
- "src": "/logomark.svg"
62
- },
63
- {
64
- "name": "Placeholder logo",
65
- "src": "/logomark.svg"
66
- },
67
- {
68
- "name": "Placeholder logo",
69
- "src": "/logomark.svg"
70
- },
71
- {
72
- "name": "Placeholder logo",
73
- "src": "/logomark.svg"
74
- },
75
- {
76
- "name": "Placeholder logo",
77
- "src": "/logomark.svg"
78
- },
79
- {
80
- "name": "Placeholder logo",
81
- "src": "/logomark.svg"
82
- }
83
- ],
84
- "layout": "inline",
85
- "treatment": "monochrome"
86
- }
28
+ "data":
29
+ {
30
+ "headline": "Don’t just take our word for it",
31
+ "headlineStyle": "label",
32
+ "logos":
33
+ [
34
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
35
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
36
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
37
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
38
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
39
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
40
+ ],
41
+ "layout": "inline",
42
+ "treatment": "monochrome",
43
+ },
87
44
  },
88
45
  {
89
46
  "id": "testimonial",
90
47
  "type": "testimonials",
91
- "data": {
92
- "variant": "featured",
93
- "items": [
94
- {
95
- "quote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.",
96
- "author": "John Smith",
97
- "role": "CEO, Google"
98
- }
99
- ]
100
- }
101
- }
48
+ "data":
49
+ {
50
+ "variant": "quote",
51
+ "items":
52
+ [
53
+ {
54
+ "quote": "{A customer quote, in their own words, about the result they got}",
55
+ "author": "{Customer name}",
56
+ "role": "{Their title, their company}",
57
+ },
58
+ ],
59
+ },
60
+ },
102
61
  ]
103
62
  ---
104
63
 
105
- {/* Rendered from frontmatter `sections[]`. The form posts to the site's own API (`/v1/leads/submit`) and confirms inline. Placeholder copy — replace before you launch. */}
64
+ {/* Rendered from frontmatter `sections[]`. The page's one contact surface — the guided intake, with its fallback form — is mounted by the /contact route itself and posts to the site's own API (`/v1/leads/submit`). Placeholder copy — replace before you launch. */}