create-ailk 0.4.0 → 0.5.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 (146) hide show
  1. package/component-catalog.json +11939 -0
  2. package/component-catalog.md +176 -64
  3. package/dist/cli.js +29 -1
  4. package/dist/derive-architecture.js +5 -2
  5. package/dist/lib/extract-module-bundle.d.ts +50 -2
  6. package/dist/lib/extract-module-bundle.js +223 -15
  7. package/dist/lib/fetch-guard.d.ts +28 -0
  8. package/dist/lib/fetch-guard.js +101 -0
  9. package/dist/lib/fetch-module.js +4 -0
  10. package/dist/lib/fetch-template.js +4 -0
  11. package/dist/module-architecture.d.ts +59 -8
  12. package/dist/module-architecture.js +334 -115
  13. package/dist/parse-args.js +6 -2
  14. package/dist/programmatic.d.ts +10 -0
  15. package/dist/programmatic.js +134 -19
  16. package/dist/site-chrome.d.ts +80 -0
  17. package/dist/site-chrome.js +135 -0
  18. package/dist/surfaces.d.ts +21 -6
  19. package/dist/surfaces.js +107 -32
  20. package/dist/template-manifest.d.ts +55 -3
  21. package/dist/template-manifest.js +181 -12
  22. package/dist/template-names.d.ts +1 -1
  23. package/dist/template-names.js +1 -0
  24. package/package.json +9 -2
  25. package/site-templates/_base/ailk-template.json +6 -0
  26. package/site-templates/_base/content/en/Pricing/pricing.mdx +169 -0
  27. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +331 -0
  28. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +393 -0
  29. package/site-templates/marketing-site/ailk-template.json +11 -0
  30. package/site-templates/marketing-site/content/en/blog/05-this-vc-morning-routine-will-make-you-super-annoying.mdx +36 -0
  31. package/site-templates/marketing-site/provenance.json +4 -0
  32. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +288 -0
  33. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +285 -0
  34. package/site-templates/marketing-site-free/ailk-template.json +2 -1
  35. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +271 -0
  36. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +324 -0
  37. package/site-templates/minimalism-site/ailk-template.json +21 -0
  38. package/site-templates/minimalism-site/assets/avatar-placeholder-1.svg +7 -0
  39. package/site-templates/minimalism-site/assets/avatar-placeholder-2.svg +7 -0
  40. package/site-templates/minimalism-site/assets/avatar-placeholder-3.svg +7 -0
  41. package/site-templates/minimalism-site/assets/avatar-placeholder-4.svg +7 -0
  42. package/site-templates/minimalism-site/assets/avatar-placeholder-5.svg +7 -0
  43. package/site-templates/minimalism-site/assets/avatar-placeholder-6.svg +7 -0
  44. package/site-templates/minimalism-site/assets/hero-backdrop.svg +17 -0
  45. package/site-templates/minimalism-site/assets/logo-placeholder-1.svg +6 -0
  46. package/site-templates/minimalism-site/assets/logo-placeholder-2.svg +6 -0
  47. package/site-templates/minimalism-site/assets/logo-placeholder-3.svg +6 -0
  48. package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +110 -0
  49. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +68 -0
  50. package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +57 -0
  51. package/site-templates/minimalism-site/content/en/HomePage/home.mdx +214 -0
  52. package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +77 -0
  53. package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +73 -0
  54. package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +52 -0
  55. package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +52 -0
  56. package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +52 -0
  57. package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +52 -0
  58. package/site-templates/minimalism-site/content/en/Service/first-engagement.mdx +38 -0
  59. package/site-templates/minimalism-site/content/en/Service/second-engagement.mdx +38 -0
  60. package/site-templates/minimalism-site/content/en/Service/third-engagement.mdx +38 -0
  61. package/site-templates/minimalism-site/content/en/ServicesList/services.mdx +73 -0
  62. package/site-templates/minimalism-site/flows/referral.flow.json +71 -0
  63. package/site-templates/minimalism-site/provenance.json +4 -0
  64. package/site-templates/saas-product/TEMPLATE-MANIFEST.md +61 -0
  65. package/site-templates/saas-product/ailk-template.json +16 -0
  66. package/site-templates/saas-product/provenance.json +10 -0
  67. package/templates/.claude/skills/README.md +16 -25
  68. package/templates/.env.example +32 -7
  69. package/templates/.github/workflows/ci.yml +48 -0
  70. package/templates/README.md +3 -1
  71. package/templates/apps/api/CLAUDE.md +4 -1
  72. package/templates/apps/api/eslint.config.mjs +69 -0
  73. package/templates/apps/api/package.json +6 -2
  74. package/templates/apps/api/src/__tests__/module-exclusion.test.ts +6 -2
  75. package/templates/apps/api/src/__tests__/review-surface-registration.test.ts +167 -0
  76. package/templates/apps/api/src/__tests__/workspace-module-registration.test.ts +8 -1
  77. package/templates/apps/api/src/lib/__mocks__/prisma.ts +3 -0
  78. package/templates/apps/api/src/middleware/__tests__/default-tenant.test.ts +339 -0
  79. package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +108 -0
  80. package/templates/apps/api/src/middleware/default-tenant.ts +136 -0
  81. package/templates/apps/api/src/routes/leads/__tests__/list.test.ts +171 -0
  82. package/templates/apps/api/src/routes/leads/list.ts +104 -0
  83. package/templates/apps/api/src/server.ts +82 -6
  84. package/templates/apps/api/src/services/__tests__/lead-promotion.test.ts +408 -0
  85. package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +329 -0
  86. package/templates/apps/api/src/services/default-tenant.ts +261 -0
  87. package/templates/apps/api/src/services/lead-promotion.ts +161 -0
  88. package/templates/apps/api/src/services/leads-inbox.ts +263 -0
  89. package/templates/apps/api/src/services/owner-workspaces.ts +132 -0
  90. package/templates/apps/mcp/CLAUDE.md +1 -1
  91. package/templates/apps/mcp/__tests__/parity.test.ts +2 -2
  92. package/templates/apps/mcp/__tests__/tools/{scaffold.test.ts → create_project.test.ts} +23 -23
  93. package/templates/apps/mcp/eslint.config.mjs +69 -0
  94. package/templates/apps/mcp/package.json +6 -2
  95. package/templates/apps/mcp/src/server.ts +2 -2
  96. package/templates/apps/mcp/src/tools/{scaffold.ts → create_project.ts} +3 -3
  97. package/templates/apps/mcp/src/tools/index.ts +2 -2
  98. package/templates/apps/web/.env.example +3 -3
  99. package/templates/apps/web/CLAUDE.md +2 -0
  100. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +4 -6
  101. package/templates/apps/web/app/[locale]/(authed)/layout.tsx +1 -1
  102. package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +181 -0
  103. package/templates/apps/web/app/[locale]/(authed)/leads/components/LeadsTable.tsx +137 -0
  104. package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +111 -0
  105. package/templates/apps/web/app/[locale]/(authed)/sign-in-gate.tsx +1 -1
  106. package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +111 -0
  107. package/templates/apps/web/app/[locale]/[slug]/page.tsx +65 -0
  108. package/templates/apps/web/app/[locale]/flows/[slug]/FlowStepperClient.tsx +1 -1
  109. package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.permalink.test.tsx +1 -1
  110. package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.test.tsx +6 -5
  111. package/templates/apps/web/app/[locale]/flows/[slug]/flow.actions.ts +1 -1
  112. package/templates/apps/web/app/[locale]/layout.tsx +214 -17
  113. package/templates/apps/web/components/google-analytics.tsx +18 -1
  114. package/templates/apps/web/eslint.config.mjs +69 -0
  115. package/templates/apps/web/jest.config.cjs +7 -15
  116. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +32 -5
  117. package/templates/apps/web/lib/nav-config.ts +27 -7
  118. package/templates/apps/web/lib/server-api.ts +1 -1
  119. package/templates/apps/web/lib/site-chrome.ts +29 -0
  120. package/templates/apps/web/lib/telemetry-scrub.ts +46 -0
  121. package/templates/apps/web/messages/en.json +29 -2
  122. package/templates/apps/web/next.config.mjs +20 -0
  123. package/templates/apps/web/package.json +6 -2
  124. package/templates/apps/web/sentry.client.config.ts +131 -0
  125. package/templates/apps/web/sentry.edge.config.ts +72 -0
  126. package/templates/apps/web/sentry.server.config.ts +72 -0
  127. package/templates/apps/web/src/lib/routes.ts +13 -18
  128. package/templates/brand_assets/README.md +24 -0
  129. package/templates/content/en/AboutPage/about.mdx +160 -15
  130. package/templates/content/en/ContactPage/contact.mdx +90 -13
  131. package/templates/content/en/FAQPage/faq.mdx +62 -22
  132. package/templates/content/en/HomePage/home.mdx +244 -20
  133. package/templates/content/en/LandingPage/blog.mdx +83 -0
  134. package/templates/content/en/LandingPage/features.mdx +103 -0
  135. package/templates/content/en/LandingPage/how-it-works.mdx +143 -0
  136. package/templates/database/CHANGELOG.md +7 -0
  137. package/templates/database/__tests__/seed.test.ts +1 -1
  138. package/templates/database/eslint.config.mjs +69 -0
  139. package/templates/database/package.json +7 -3
  140. package/templates/database/seed.ts +1 -1
  141. package/templates/package.json +1 -14
  142. package/versions.json +52 -0
  143. package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +0 -103
  144. /package/site-templates/{marketing-site-free → _base}/content/en/PrivacyPage/privacy.mdx +0 -0
  145. /package/site-templates/{marketing-site-free → _base}/content/en/TermsPage/terms.mdx +0 -0
  146. /package/templates/apps/web/{src/components → components}/SiteNav.tsx +0 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "_base",
3
+ "requires": [],
4
+ "$comment": "The BASE LAYER (#5618 D1) — not a template. Every declared template reaches this tree by `extends: \"_base\"`; scaffold() installs it through installBundleTree before any module bundle and before the template's own tree, only when --template is named. It carries the seed content every template brings itself and no module owns: /pricing, /privacy and /terms (spec 5462 D16). No installMap: every file here is unmapped and lands at its own path under the scaffold root's content/, so a template overrides a base page by shipping the same path. Never published as a registry bundle; the leading underscore is the skip signal for the bundle producer and the site-templates/ directory scans.",
5
+ "postInstall": "Base layer installed: seed copy for /pricing, /privacy and /terms is in content/en/ - replace the placeholder copy before you launch."
6
+ }
@@ -0,0 +1,169 @@
1
+ ---
2
+ type: "Pricing"
3
+ slug: "pricing"
4
+ title: "Pays for itself in {tangible value or outcome}"
5
+ description: "This is a great place to communicate any important details you want everyone to know about how your pricing works."
6
+ sections:
7
+ [
8
+ {
9
+ "id": "hero",
10
+ "type": "hero",
11
+ "data":
12
+ {
13
+ "eyebrow": "Pricing",
14
+ "headline": "Pays for itself in {tangible value or outcome}",
15
+ "subheadline": "This is a great place to communicate any important details you want everyone to know about how your pricing works.",
16
+ "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
17
+ "secondaryCta":
18
+ {
19
+ "label": "{Secondary CTA}",
20
+ "href": "/how-it-works",
21
+ "variant": "outline",
22
+ },
23
+ },
24
+ },
25
+ {
26
+ "id": "plans",
27
+ "type": "pricing",
28
+ "data":
29
+ {
30
+ "variant": "three-tiers-with-toggle",
31
+ "eyebrow": "Pricing",
32
+ "headline": "Pays for itself in {tangible value or outcome}",
33
+ "description": "This is a great place to communicate any important details you want everyone to know about how your pricing works.",
34
+ "billingToggle": true,
35
+ "plans":
36
+ [
37
+ {
38
+ "name": "Basic plan",
39
+ "price": { "monthly": "$19/mo", "annual": "$180/yr" },
40
+ "features":
41
+ [
42
+ "Feature text goes here",
43
+ "Feature text goes here",
44
+ "Feature text goes here",
45
+ ],
46
+ "cta": { "label": "{Primary CTA}", "href": "/contact" },
47
+ },
48
+ {
49
+ "name": "Business plan",
50
+ "price": { "monthly": "$29/mo", "annual": "$280/yr" },
51
+ "features":
52
+ [
53
+ "New feature text goes here",
54
+ "Feature text goes here",
55
+ "Feature text goes here",
56
+ "Feature text goes here",
57
+ ],
58
+ "cta": { "label": "{Primary CTA}", "href": "/contact" },
59
+ },
60
+ {
61
+ "name": "Enterprise plan",
62
+ "price": { "monthly": "$49/mo", "annual": "$480/yr" },
63
+ "features":
64
+ [
65
+ "New feature text goes here",
66
+ "Feature text goes here",
67
+ "Feature text goes here",
68
+ "Feature text goes here",
69
+ "Feature text goes here",
70
+ ],
71
+ "cta": { "label": "{Primary CTA}", "href": "/contact" },
72
+ },
73
+ ],
74
+ },
75
+ },
76
+ {
77
+ "id": "logo-cloud",
78
+ "type": "logoCloud",
79
+ "data":
80
+ {
81
+ "headline": "Don’t just take our word for it",
82
+ "logos":
83
+ [
84
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
85
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
86
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
87
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
88
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
89
+ { "name": "Placeholder logo", "src": "/logomark.svg" },
90
+ ],
91
+ "layout": "inline",
92
+ "treatment": "monochrome",
93
+ },
94
+ },
95
+ {
96
+ "id": "testimonial",
97
+ "type": "testimonials",
98
+ "data":
99
+ {
100
+ "variant": "featured",
101
+ "items":
102
+ [
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
+ },
110
+ },
111
+ {
112
+ "id": "switch",
113
+ "type": "cta",
114
+ "data":
115
+ {
116
+ "variant": "box",
117
+ "headline": "Switch to {your product} in {time amount} or less",
118
+ "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}.",
119
+ "chips":
120
+ ["No credit card required", "Cancel any time", "Live chat support"],
121
+ "primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
122
+ "secondaryCta":
123
+ {
124
+ "label": "{Secondary CTA}",
125
+ "href": "/pricing",
126
+ "variant": "outline",
127
+ },
128
+ "closingLine": "{Social Proof goes here}",
129
+ },
130
+ },
131
+ {
132
+ "id": "faq",
133
+ "type": "faq",
134
+ "data":
135
+ {
136
+ "headline": "FAQs",
137
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
138
+ "supportLink": { "label": "Contact", "href": "/contact" },
139
+ "presentation": "accordion",
140
+ "initialOpen": "first",
141
+ "items":
142
+ [
143
+ {
144
+ "question": "Vel odio odit voluptatum ut veritatis. Ex rerum aspernatur voluptas unde officia. Dolorem officiis laboriosa?",
145
+ "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.",
146
+ },
147
+ {
148
+ "question": "Dolorem consectetur quia maxime sunt ut sint. Fuga optio dolorem animi voluptatem laudantium error. Quis accusamus deleniti rer?",
149
+ "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.",
150
+ },
151
+ {
152
+ "question": "Totam nihil esse. Itaque optio temporibus adipisci. Rerum nisi aperiam aliquid doloremque aliquam?",
153
+ "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.",
154
+ },
155
+ {
156
+ "question": "Delectus minus officiis et. Perspiciatis illum nisi vitae. Sed consequuntur animi corrupti distinctio ipsam accusamus?",
157
+ "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.",
158
+ },
159
+ {
160
+ "question": "Aperiam perferendis voluptatem est sit enim sed eaque perspiciatis enim. Est explicabo ea explicabo et et dignissimos aliquid?",
161
+ "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.",
162
+ },
163
+ ],
164
+ },
165
+ },
166
+ ]
167
+ ---
168
+
169
+ {/* Rendered from frontmatter `sections[]`. Seed content — replace the plan names, prices and features above with your own before you launch. */}
@@ -0,0 +1,331 @@
1
+ {
2
+ "template": "marketing-site",
3
+ "requires": ["marketing", "docs-blog", "scheduling", "signal-collectors"],
4
+ "createAilkVersion": "0.5.0",
5
+ "generatedHash": "0d7192a6f912c43e2ae3d51dae5878a72cf01f50dd206e341b0c59cf46dbd40c",
6
+ "layout": {
7
+ "nav": "full",
8
+ "footer": "columns",
9
+ "announcementBanner": true,
10
+ "home": "default"
11
+ },
12
+ "rows": [
13
+ {
14
+ "route": "/",
15
+ "pageType": "HomePage",
16
+ "schema": "HomePage",
17
+ "shell": "MarketingShell",
18
+ "chrome": "on",
19
+ "sections": [
20
+ {
21
+ "type": "hero",
22
+ "component": "Hero"
23
+ },
24
+ {
25
+ "type": "logoCloud",
26
+ "component": "LogoCloud"
27
+ },
28
+ {
29
+ "type": "decision-split",
30
+ "component": "DecisionSplit"
31
+ },
32
+ {
33
+ "type": "feature",
34
+ "component": "Feature"
35
+ },
36
+ {
37
+ "type": "cta",
38
+ "component": "CTA"
39
+ },
40
+ {
41
+ "type": "stair-steps",
42
+ "component": "StairSteps"
43
+ },
44
+ {
45
+ "type": "cta",
46
+ "component": "CTA"
47
+ },
48
+ {
49
+ "type": "content-block",
50
+ "component": "ContentBlock"
51
+ },
52
+ {
53
+ "type": "video-section",
54
+ "component": "VideoSection"
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "route": "/how-it-works",
60
+ "pageType": "LandingPage",
61
+ "schema": "WebPage",
62
+ "shell": "MarketingShell",
63
+ "chrome": "on",
64
+ "sections": [
65
+ {
66
+ "type": "hero",
67
+ "component": "Hero"
68
+ },
69
+ {
70
+ "type": "feature",
71
+ "component": "Feature"
72
+ },
73
+ {
74
+ "type": "logoCloud",
75
+ "component": "LogoCloud"
76
+ },
77
+ {
78
+ "type": "testimonials",
79
+ "component": "Testimonials"
80
+ },
81
+ {
82
+ "type": "cta",
83
+ "component": "CTA"
84
+ },
85
+ {
86
+ "type": "faq",
87
+ "component": "FAQ"
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ "route": "/features",
93
+ "pageType": "LandingPage",
94
+ "schema": "WebPage",
95
+ "shell": "MarketingShell",
96
+ "chrome": "on",
97
+ "sections": [
98
+ {
99
+ "type": "feature",
100
+ "component": "Feature"
101
+ },
102
+ {
103
+ "type": "cta",
104
+ "component": "CTA"
105
+ },
106
+ {
107
+ "type": "cta",
108
+ "component": "CTA"
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "route": "/pricing",
114
+ "pageType": "Pricing",
115
+ "schema": "Pricing",
116
+ "shell": "MarketingShell",
117
+ "chrome": "on",
118
+ "sections": [
119
+ {
120
+ "type": "hero",
121
+ "component": "Hero"
122
+ },
123
+ {
124
+ "type": "pricing",
125
+ "component": "Pricing"
126
+ },
127
+ {
128
+ "type": "logoCloud",
129
+ "component": "LogoCloud"
130
+ },
131
+ {
132
+ "type": "testimonials",
133
+ "component": "Testimonials"
134
+ },
135
+ {
136
+ "type": "cta",
137
+ "component": "CTA"
138
+ },
139
+ {
140
+ "type": "faq",
141
+ "component": "FAQ"
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ "route": "/about",
147
+ "pageType": "AboutPage",
148
+ "schema": "AboutPage",
149
+ "shell": "MarketingShell",
150
+ "chrome": "on",
151
+ "sections": [
152
+ {
153
+ "type": "content-block",
154
+ "component": "ContentBlock"
155
+ },
156
+ {
157
+ "type": "team",
158
+ "component": "Team"
159
+ },
160
+ {
161
+ "type": "logoCloud",
162
+ "component": "LogoCloud"
163
+ },
164
+ {
165
+ "type": "testimonials",
166
+ "component": "Testimonials"
167
+ },
168
+ {
169
+ "type": "cta",
170
+ "component": "CTA"
171
+ },
172
+ {
173
+ "type": "faq",
174
+ "component": "FAQ"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "route": "/faq",
180
+ "pageType": "FAQPage",
181
+ "schema": "FAQPage",
182
+ "shell": "MarketingShell",
183
+ "chrome": "on",
184
+ "sections": [
185
+ {
186
+ "type": "hero",
187
+ "component": "Hero"
188
+ },
189
+ {
190
+ "type": "faq",
191
+ "component": "FAQ"
192
+ },
193
+ {
194
+ "type": "cta",
195
+ "component": "CTA"
196
+ }
197
+ ]
198
+ },
199
+ {
200
+ "route": "/contact",
201
+ "pageType": "ContactPage",
202
+ "schema": "ContactPage",
203
+ "shell": "MarketingShell",
204
+ "chrome": "on",
205
+ "sections": [
206
+ {
207
+ "type": "hero",
208
+ "component": "Hero"
209
+ },
210
+ {
211
+ "type": "contact-form",
212
+ "component": "ContactForm"
213
+ },
214
+ {
215
+ "type": "logoCloud",
216
+ "component": "LogoCloud"
217
+ },
218
+ {
219
+ "type": "testimonials",
220
+ "component": "Testimonials"
221
+ }
222
+ ]
223
+ },
224
+ {
225
+ "route": "/sign-in",
226
+ "pageType": null,
227
+ "schema": null,
228
+ "shell": "MarketingShell",
229
+ "chrome": "on",
230
+ "sections": []
231
+ },
232
+ {
233
+ "route": "/privacy",
234
+ "pageType": "PrivacyPage",
235
+ "schema": "PrivacyPage",
236
+ "shell": "MarketingShell",
237
+ "chrome": "on",
238
+ "sections": [
239
+ {
240
+ "type": "document-chassis",
241
+ "component": "DocumentChassis"
242
+ }
243
+ ]
244
+ },
245
+ {
246
+ "route": "/terms",
247
+ "pageType": "TermsPage",
248
+ "schema": "TermsPage",
249
+ "shell": "MarketingShell",
250
+ "chrome": "on",
251
+ "sections": [
252
+ {
253
+ "type": "document-chassis",
254
+ "component": "DocumentChassis"
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "route": "/blog",
260
+ "pageType": null,
261
+ "schema": null,
262
+ "shell": "MarketingShell",
263
+ "chrome": "on",
264
+ "sections": []
265
+ },
266
+ {
267
+ "route": "/docs",
268
+ "pageType": null,
269
+ "schema": null,
270
+ "shell": "MarketingShell",
271
+ "chrome": "on",
272
+ "sections": []
273
+ },
274
+ {
275
+ "route": "/meet",
276
+ "pageType": null,
277
+ "schema": null,
278
+ "shell": "MarketingShell",
279
+ "chrome": "on",
280
+ "sections": []
281
+ },
282
+ {
283
+ "route": "/meet/[slug]",
284
+ "pageType": null,
285
+ "schema": null,
286
+ "shell": "MarketingShell",
287
+ "chrome": "on",
288
+ "sections": []
289
+ },
290
+ {
291
+ "route": "/meet/confirmed",
292
+ "pageType": null,
293
+ "schema": null,
294
+ "shell": "MarketingShell",
295
+ "chrome": "on",
296
+ "sections": []
297
+ },
298
+ {
299
+ "route": "/flows/[slug]",
300
+ "pageType": null,
301
+ "schema": null,
302
+ "shell": "MarketingShell",
303
+ "chrome": "on",
304
+ "sections": []
305
+ },
306
+ {
307
+ "route": "/flows/[slug]/start",
308
+ "pageType": null,
309
+ "schema": null,
310
+ "shell": "MarketingShell",
311
+ "chrome": "on",
312
+ "sections": []
313
+ },
314
+ {
315
+ "route": "/flows/[slug]/results/[payload]",
316
+ "pageType": null,
317
+ "schema": null,
318
+ "shell": "MarketingShell",
319
+ "chrome": "on",
320
+ "sections": []
321
+ },
322
+ {
323
+ "route": "/reports/[slug]",
324
+ "pageType": null,
325
+ "schema": null,
326
+ "shell": "MarketingShell",
327
+ "chrome": "on",
328
+ "sections": []
329
+ }
330
+ ]
331
+ }