create-ailk 0.22.0 → 0.24.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.
- package/README.md +27 -14
- package/component-catalog.json +149 -5
- package/component-catalog.md +7 -6
- package/dist/add-module.js +17 -10
- package/dist/add-route.d.ts +55 -1
- package/dist/add-route.js +301 -13
- package/dist/cli.js +27 -10
- package/dist/derive-architecture.d.ts +7 -5
- package/dist/derive-architecture.js +26 -32
- package/dist/lib/design-checks.js +4 -2
- package/dist/lib/env-catalog.js +0 -4
- package/dist/lib/npm-auth.d.ts +9 -0
- package/dist/lib/npm-auth.js +48 -0
- package/dist/lib/scaffold-render-sweep.d.ts +36 -2
- package/dist/lib/scaffold-render-sweep.js +50 -8
- package/dist/module-architecture.js +115 -10
- package/dist/paid-sections.d.ts +21 -2
- package/dist/paid-sections.js +69 -7
- package/dist/seed-flows.d.ts +4 -1
- package/dist/seed-flows.js +50 -4
- package/dist/spoke-checkout.d.ts +38 -35
- package/dist/spoke-checkout.js +66 -229
- package/dist/starter-grid.d.ts +0 -3
- package/dist/starter-grid.js +24 -14
- package/dist/surfaces.js +33 -12
- package/dist/sync-routes.d.ts +68 -5
- package/dist/sync-routes.js +455 -29
- package/dist/template-record.d.ts +1 -1
- package/dist/template-record.js +3 -2
- package/dist/update.js +10 -0
- package/package.json +3 -3
- package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +4 -49
- package/site-templates/_base/content/en/Pricing/pricing.mdx +3 -21
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +23 -20
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +28 -14
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +15 -39
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +38 -34
- package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +6 -43
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +14 -31
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +26 -25
- package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx +6 -43
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +14 -31
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +26 -25
- package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx +6 -43
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +14 -31
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +26 -25
- package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +6 -43
- package/templates/.env.example +13 -7
- package/templates/.github/workflows/ci.yml +13 -0
- package/templates/CLAUDE.md +4 -2
- package/templates/README.md +1 -0
- package/templates/_gitignore +4 -0
- package/templates/apps/api/.env.example +34 -0
- package/templates/apps/api/CLAUDE.md +94 -19
- package/templates/apps/api/package.json +1 -0
- package/templates/apps/api/src/__tests__/factories/in-memory-prisma.ts +2 -0
- package/templates/apps/api/src/bin/stripe-connections-rekey.ts +45 -0
- package/templates/apps/api/src/config/__tests__/stripe-connection-key.test.ts +185 -0
- package/templates/apps/api/src/config/index.ts +109 -0
- package/templates/apps/api/src/lib/__mocks__/prisma.ts +7 -1
- package/templates/apps/api/src/lib/__tests__/flow-rename-race.db.test.ts +116 -0
- package/templates/apps/api/src/lib/__tests__/site.test.ts +16 -0
- package/templates/apps/api/src/lib/error-serializer.ts +74 -7
- package/templates/apps/api/src/lib/site.ts +4 -1
- package/templates/apps/api/src/lib/stripe.ts +77 -4
- package/templates/apps/api/src/lib/webhook-idempotency.ts +66 -2
- package/templates/apps/api/src/middleware/__tests__/rate-limit.test.ts +218 -0
- package/templates/apps/api/src/middleware/__tests__/write-budget.test.ts +174 -0
- package/templates/apps/api/src/middleware/rate-limit.ts +226 -4
- package/templates/apps/api/src/openapi/__tests__/openapi.test.ts +127 -0
- package/templates/apps/api/src/openapi/spec.ts +343 -7
- package/templates/apps/api/src/routes/billing/plan-checkout.ts +332 -0
- package/templates/apps/api/src/routes/checkout/__tests__/live-key.test.ts +11 -0
- package/templates/apps/api/src/routes/checkout/__tests__/offerings-authorization.test.ts +1426 -0
- package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +11 -0
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +49 -0
- package/templates/apps/api/src/routes/checkout/session.ts +57 -25
- package/templates/apps/api/src/routes/checkout/sessions.ts +232 -82
- package/templates/apps/api/src/routes/consent/__tests__/account.test.ts +5 -5
- package/templates/apps/api/src/routes/consent/__tests__/sign-up-rate-limit.test.ts +160 -0
- package/templates/apps/api/src/routes/consent/account.ts +4 -2
- package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +2 -2
- package/templates/apps/api/src/routes/content/__tests__/offerings.test.ts +731 -0
- package/templates/apps/api/src/routes/content/__tests__/pricing.test.ts +753 -0
- package/templates/apps/api/src/routes/content/__tests__/shown-offerings.test.ts +762 -0
- package/templates/apps/api/src/routes/content/get-page.ts +34 -119
- package/templates/apps/api/src/routes/content/index.ts +16 -2
- package/templates/apps/api/src/routes/content/list-pages.ts +15 -36
- package/templates/apps/api/src/routes/content/offerings.ts +184 -0
- package/templates/apps/api/src/routes/content/pricing.ts +176 -0
- package/templates/apps/api/src/routes/content/search.ts +16 -45
- package/templates/apps/api/src/routes/content/shown-offerings.ts +229 -0
- package/templates/apps/api/src/routes/leads/index.ts +377 -308
- package/templates/apps/api/src/routes/project-listings/__tests__/me.test.ts +20 -9
- package/templates/apps/api/src/routes/project-listings/__tests__/public.test.ts +17 -6
- package/templates/apps/api/src/routes/project-listings/__tests__/site-answers.test.ts +1 -1
- package/templates/apps/api/src/routes/webhooks/README.md +66 -0
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -0
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-offerings.test.ts +814 -0
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +80 -68
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-site-filter.test.ts +6 -5
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +8 -2
- package/templates/apps/api/src/routes/webhooks/index.ts +23 -0
- package/templates/apps/api/src/routes/webhooks/stripe-offerings.ts +384 -0
- package/templates/apps/api/src/routes/webhooks/stripe.ts +93 -17
- package/templates/apps/api/src/server.ts +165 -51
- package/templates/apps/api/src/services/__tests__/abandon-email.test.ts +121 -4
- package/templates/apps/api/src/services/__tests__/checkout-plan.test.ts +313 -0
- package/templates/apps/api/src/services/__tests__/deliverable-fulfillment.test.ts +61 -2
- package/templates/apps/api/src/services/__tests__/keyless-workspace-predicate.test.ts +234 -0
- package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +374 -44
- package/templates/apps/api/src/services/__tests__/person.test.ts +260 -1
- package/templates/apps/api/src/services/__tests__/plan-offerings.test.ts +450 -0
- package/templates/apps/api/src/services/__tests__/project-listings.counts.test.ts +202 -0
- package/templates/apps/api/src/services/__tests__/project-listings.fence.test.ts +15 -18
- package/templates/apps/api/src/services/abandon-email.ts +28 -5
- package/templates/apps/api/src/services/deliverable-fulfillment.ts +15 -12
- package/templates/apps/api/src/services/entitlements.ts +157 -1
- package/templates/apps/api/src/services/lead-routing.ts +113 -58
- package/templates/apps/api/src/services/offerings/__tests__/catalog.test.ts +348 -0
- package/templates/apps/api/src/services/offerings/__tests__/checkout-session-record.test.ts +268 -0
- package/templates/apps/api/src/services/offerings/__tests__/connection.test.ts +975 -0
- package/templates/apps/api/src/services/offerings/__tests__/fixtures.ts +416 -0
- package/templates/apps/api/src/services/offerings/__tests__/org-products.test.ts +400 -0
- package/templates/apps/api/src/services/offerings/__tests__/readers.test.ts +685 -0
- package/templates/apps/api/src/services/offerings/__tests__/source.test.ts +231 -0
- package/templates/apps/api/src/services/offerings/catalog.ts +318 -0
- package/templates/apps/api/src/services/offerings/checkout-authorization.ts +403 -0
- package/templates/apps/api/src/services/offerings/checkout-session-record.ts +192 -0
- package/templates/apps/api/src/services/offerings/connection.ts +1083 -0
- package/templates/apps/api/src/services/offerings/index.ts +614 -0
- package/templates/apps/api/src/services/offerings/source.ts +140 -0
- package/templates/apps/api/src/services/offerings/store.ts +150 -0
- package/templates/apps/api/src/services/person.ts +147 -9
- package/templates/apps/api/src/services/plan-offerings.ts +96 -30
- package/templates/apps/api/src/services/project-listings.ts +43 -31
- package/templates/apps/api/src/services/public-site-resolver.ts +19 -14
- package/templates/apps/mcp/CLAUDE.md +32 -18
- package/templates/apps/mcp/__tests__/app-entry.test.ts +2 -2
- package/templates/apps/mcp/__tests__/catalog-drift.test.ts +9 -4
- package/templates/apps/mcp/__tests__/get_offerings.test.ts +358 -0
- package/templates/apps/mcp/__tests__/get_pricing.test.ts +364 -0
- package/templates/apps/mcp/__tests__/http-transport.test.ts +95 -14
- package/templates/apps/mcp/__tests__/lib/content-adapter-parity.test.ts +8 -3
- package/templates/apps/mcp/__tests__/lib/content-adapter.test.ts +0 -25
- package/templates/apps/mcp/__tests__/lib/fail-closed-tools.test.ts +22 -7
- package/templates/apps/mcp/__tests__/list_pages.test.ts +84 -44
- package/templates/apps/mcp/__tests__/locale.test.ts +41 -56
- package/templates/apps/mcp/__tests__/module-exclusion.test.ts +2 -2
- package/templates/apps/mcp/__tests__/rate-limit-write.test.ts +189 -0
- package/templates/apps/mcp/__tests__/read_content.test.ts +115 -78
- package/templates/apps/mcp/__tests__/request_callback.test.ts +63 -128
- package/templates/apps/mcp/__tests__/search_content.test.ts +76 -61
- package/templates/apps/mcp/__tests__/server.test.ts +13 -11
- package/templates/apps/mcp/__tests__/start_purchase.test.ts +208 -12
- package/templates/apps/mcp/__tests__/submit_lead.test.ts +82 -167
- package/templates/apps/mcp/__tests__/subscribe_newsletter.test.ts +59 -130
- package/templates/apps/mcp/__tests__/tools/purchase.test.ts +11 -11
- package/templates/apps/mcp/package.json +1 -0
- package/templates/apps/mcp/src/abuse/index.ts +18 -11
- package/templates/apps/mcp/src/http-transport.ts +47 -9
- package/templates/apps/mcp/src/lib/content-adapter.ts +0 -26
- package/templates/apps/mcp/src/lib/empty-content-adapter.ts +5 -4
- package/templates/apps/mcp/src/lib/shown-offerings.ts +105 -0
- package/templates/apps/mcp/src/lib/site-config.ts +53 -0
- package/templates/apps/mcp/src/server.ts +5 -0
- package/templates/apps/mcp/src/tools/capture_lead.ts +30 -28
- package/templates/apps/mcp/src/tools/get_offerings.ts +47 -30
- package/templates/apps/mcp/src/tools/get_pricing.ts +40 -40
- package/templates/apps/mcp/src/tools/index.ts +22 -21
- package/templates/apps/mcp/src/tools/list_pages.ts +27 -33
- package/templates/apps/mcp/src/tools/purchase.ts +30 -2
- package/templates/apps/mcp/src/tools/read_content.ts +46 -40
- package/templates/apps/mcp/src/tools/request_callback.ts +21 -28
- package/templates/apps/mcp/src/tools/search_content.ts +20 -24
- package/templates/apps/mcp/src/tools/subscribe_newsletter.ts +23 -26
- package/templates/apps/mcp/src/workspace-server.ts +15 -0
- package/templates/apps/web/.env.example +10 -31
- package/templates/apps/web/CLAUDE.md +324 -42
- package/templates/apps/web/app/[locale]/(authed)/account/__tests__/agreements-prompt.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/(authed)/account/__tests__/layout.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/(authed)/account/__tests__/privacy.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/careers/[slug]/[action]/page.tsx +189 -0
- package/templates/apps/web/app/[locale]/careers/[slug]/apply.actions.ts +4 -2
- package/templates/apps/web/app/[locale]/careers/[slug]/job-application-form.ts +8 -3
- package/templates/apps/web/app/[locale]/careers/[slug]/page.tsx +22 -144
- package/templates/apps/web/app/[locale]/careers/__tests__/apply.actions.test.ts +9 -0
- package/templates/apps/web/app/[locale]/careers/__tests__/careers-hub.test.tsx +172 -0
- package/templates/apps/web/app/[locale]/careers/__tests__/careers-set.test.tsx +149 -0
- package/templates/apps/web/app/[locale]/careers/__tests__/job-application-form.test.ts +22 -24
- package/templates/apps/web/app/[locale]/careers/__tests__/job-apply-page.test.tsx +140 -66
- package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +57 -22
- package/templates/apps/web/app/[locale]/careers/page.tsx +129 -5
- package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/contact/__tests__/contact-magnet-page.test.tsx +119 -11
- package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +28 -5
- package/templates/apps/web/app/[locale]/contact/contact.actions.ts +20 -6
- package/templates/apps/web/app/[locale]/contact/intake-script.ts +1 -1
- package/templates/apps/web/app/[locale]/contact/page.tsx +99 -92
- package/templates/apps/web/app/[locale]/flows/[slug]/FlowStepperClient.tsx +237 -5
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.count.test.tsx +43 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.deliverable.test.tsx +200 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/FlowStepperClient.ending.test.tsx +197 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/magnet-page.test.tsx +430 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/__tests__/two-route-tool.test.tsx +21 -9
- package/templates/apps/web/app/[locale]/flows/[slug]/magnet-page.tsx +369 -0
- package/templates/apps/web/app/[locale]/flows/[slug]/page.tsx +12 -73
- package/templates/apps/web/app/[locale]/flows/[slug]/start/page.tsx +10 -31
- package/templates/apps/web/app/[locale]/layout.tsx +55 -4
- package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +174 -104
- package/templates/apps/web/app/[locale]/newsletter/page.tsx +95 -58
- package/templates/apps/web/app/[locale]/pricing/__tests__/__snapshots__/unconnected.test.tsx.snap +7 -0
- package/templates/apps/web/app/[locale]/pricing/__tests__/offerings.test.tsx +599 -0
- package/templates/apps/web/app/[locale]/pricing/__tests__/page.test.tsx +216 -0
- package/templates/apps/web/app/[locale]/pricing/__tests__/unconnected.test.tsx +236 -0
- package/templates/apps/web/app/[locale]/pricing/page.tsx +367 -6
- package/templates/apps/web/app/[locale]/team/__tests__/team-routes.test.tsx +4 -1
- package/templates/apps/web/app/[locale]/unsubscribe/__tests__/unsubscribe-rsc-boundary.test.tsx +17 -0
- package/templates/apps/web/app/[locale]/unsubscribe/__tests__/unsubscribe.test.tsx +62 -3
- package/templates/apps/web/app/[locale]/unsubscribe/page.tsx +70 -18
- package/templates/apps/web/app/[locale]/unsubscribe/unsubscribe-button.tsx +30 -9
- package/templates/apps/web/app/api/offerings/checkout/[lookupKey]/route.ts +316 -0
- package/templates/apps/web/app/api/offerings/checkout/__tests__/route.test.ts +810 -0
- package/templates/apps/web/lib/__tests__/auth-routes.test.ts +27 -1
- package/templates/apps/web/lib/__tests__/deck-page.test.ts +2 -1
- package/templates/apps/web/lib/__tests__/in-page-magnet.test.ts +265 -0
- package/templates/apps/web/lib/__tests__/magnet-routes.test.ts +64 -0
- package/templates/apps/web/lib/__tests__/newsletter.actions.test.ts +293 -0
- package/templates/apps/web/lib/__tests__/offerings-pricing.test.ts +601 -0
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +67 -8
- package/templates/apps/web/lib/auth-routes.ts +36 -2
- package/templates/apps/web/lib/checkout-config.ts +9 -20
- package/templates/apps/web/lib/deck-page.ts +1 -0
- package/templates/apps/web/lib/deliverable-grant.ts +18 -0
- package/templates/apps/web/lib/in-page-magnet.ts +416 -0
- package/templates/apps/web/lib/magnet-routes.ts +44 -0
- package/templates/apps/web/lib/modules.generated.ts +9 -0
- package/templates/apps/web/lib/newsletter.actions.ts +205 -0
- package/templates/apps/web/lib/offerings-pricing.ts +326 -0
- package/templates/apps/web/lib/posting-title.ts +17 -0
- package/templates/apps/web/lib/sign-up-agreements.ts +4 -2
- package/templates/apps/web/messages/en.json +49 -15
- package/templates/apps/web/middleware.ts +12 -2
- package/templates/apps/web/security-headers.config.ts +17 -0
- package/templates/content/en/BlogList/blog.mdx +4 -71
- package/templates/content/en/BookCall/book-a-call.mdx +1 -41
- package/templates/content/en/BookCall/onsite-estimate.mdx +1 -17
- package/templates/content/en/BookCall/onsite-service.mdx +1 -17
- package/templates/content/en/BookCall/start-project.mdx +1 -17
- package/templates/content/en/ContactPage/contact.mdx +6 -63
- package/templates/content/en/HomePage/home.mdx +3 -21
- package/templates/database/CHANGELOG.md +51 -0
- package/templates/database/__tests__/in-page-magnets-migration.test.ts +161 -0
- package/templates/database/__tests__/offerings-checkout-session.db.test.ts +270 -0
- package/templates/database/__tests__/offerings-migration.test.ts +197 -0
- package/templates/database/__tests__/offerings-shown-price-ids-migration.test.ts +86 -0
- package/templates/database/__tests__/offerings.db.test.ts +303 -0
- package/templates/database/__tests__/seed.test.ts +63 -1
- package/templates/database/__tests__/trial-magnet-migration.test.ts +186 -0
- package/templates/database/auth/schema.prisma +4 -0
- package/templates/database/config/schema.prisma +91 -0
- package/templates/database/migrations/20261020120000_offerings_data_model/migration.sql +146 -0
- package/templates/database/migrations/20261021120000_offerings_checkout_session/migration.sql +77 -0
- package/templates/database/migrations/20261022120000_in_page_magnets/migration.sql +45 -0
- package/templates/database/migrations/20261023120000_offerings_shown_price_ids/migration.sql +47 -0
- package/templates/database/migrations/20261024120000_organization_plan_checkout_session/migration.sql +16 -0
- package/templates/database/migrations/20261025120000_trial_magnet/migration.sql +28 -0
- package/templates/database/migrations/20261026120000_trial_magnet_proof_line/migration.sql +23 -0
- package/templates/database/package.json +1 -1
- package/templates/database/seed.ts +57 -2
- package/templates/tools/lint-architecture.ts +205 -1
- package/versions.json +35 -35
- package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +0 -199
- package/templates/apps/api/src/routes/content/slug.ts +0 -9
- package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +0 -93
- package/templates/apps/web/app/[locale]/downloads/page.tsx +0 -37
- package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +0 -139
- package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +0 -93
- package/templates/apps/web/app/api/checkout/[offering]/route.ts +0 -48
- package/templates/apps/web/app/api/checkout/__tests__/route.test.ts +0 -120
- package/templates/apps/web/app/api/checkout/__tests__/success-path.test.ts +0 -86
- package/templates/apps/web/app/api/webhooks/stripe/__tests__/route.test.ts +0 -92
- package/templates/apps/web/app/api/webhooks/stripe/route.ts +0 -31
- package/templates/apps/web/lib/__tests__/checkout.test.ts +0 -243
- package/templates/apps/web/lib/__tests__/meeting-slugs.test.ts +0 -120
- package/templates/apps/web/lib/checkout.ts +0 -93
- package/templates/apps/web/lib/meeting-slugs.ts +0 -63
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-ailk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Scaffolder for AI Launch Kit — `pnpm create ailk@latest <dir>` produces a starter repo consuming @working-theory/* from npm (per ADR 0007).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"tar": "^7.5.21"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@working-theory/schema": "0.
|
|
32
|
-
"@working-theory/templates": "0.
|
|
31
|
+
"@working-theory/schema": "0.45.0",
|
|
32
|
+
"@working-theory/templates": "0.45.0"
|
|
33
33
|
},
|
|
34
34
|
"repository": {
|
|
35
35
|
"type": "git",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "NewsletterSignup"
|
|
3
3
|
slug: "newsletter"
|
|
4
|
-
title: "
|
|
4
|
+
title: "Get the newsletter"
|
|
5
5
|
description: "{One sentence on what this newsletter covers and who it is for}"
|
|
6
6
|
schema:
|
|
7
7
|
mainEntity:
|
|
@@ -11,57 +11,12 @@ schema:
|
|
|
11
11
|
priceCurrency: "USD"
|
|
12
12
|
sections:
|
|
13
13
|
[
|
|
14
|
-
{
|
|
15
|
-
"id": "hero",
|
|
16
|
-
"type": "hero",
|
|
17
|
-
"data":
|
|
18
|
-
{
|
|
19
|
-
"eyebrow": "Newsletter",
|
|
20
|
-
"headline": "{Newsletter: what subscribers get and how often}",
|
|
21
|
-
"subheadline": "{One sentence on what this newsletter covers and who it is for}",
|
|
22
|
-
"primaryCta": { "label": "Subscribe", "href": "#signup" },
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
14
|
{
|
|
26
15
|
"id": "signup",
|
|
27
|
-
"type": "
|
|
28
|
-
"data":
|
|
29
|
-
{
|
|
30
|
-
"headline": "Subscribe",
|
|
31
|
-
"description": "{One sentence on what lands in the inbox}",
|
|
32
|
-
"action": "/v1/leads/subscribe",
|
|
33
|
-
"source": "newsletter",
|
|
34
|
-
"placeholder": "you@example.com",
|
|
35
|
-
"submitLabel": "Subscribe",
|
|
36
|
-
"consentText": "{One line on how you use the address, and that readers can unsubscribe any time}",
|
|
37
|
-
"pattern": "none",
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"id": "faq",
|
|
42
|
-
"type": "faq",
|
|
43
|
-
"data":
|
|
44
|
-
{
|
|
45
|
-
"headline": "FAQs",
|
|
46
|
-
"presentation": "expanded",
|
|
47
|
-
"items":
|
|
48
|
-
[
|
|
49
|
-
{
|
|
50
|
-
"question": "{How often will I hear from you?}",
|
|
51
|
-
"answer": "{Answer in one or two plain sentences}",
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"question": "{What will I get?}",
|
|
55
|
-
"answer": "{Answer in one or two plain sentences}",
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"question": "{Can I unsubscribe?}",
|
|
59
|
-
"answer": "{Answer in one or two plain sentences}",
|
|
60
|
-
},
|
|
61
|
-
],
|
|
62
|
-
},
|
|
16
|
+
"type": "contact-form",
|
|
17
|
+
"data": { "variant": "column", "fields": [] },
|
|
63
18
|
},
|
|
64
19
|
]
|
|
65
20
|
---
|
|
66
21
|
|
|
67
|
-
{/* Rendered from frontmatter `sections[]` by the /newsletter route. The
|
|
22
|
+
{/* Rendered from frontmatter `sections[]` by the /newsletter route. The page's one signup surface is the workspace's Newsletter magnet: its heading, sentence, field, consent, button and ending all come from the magnet, mounted by the route in this section's slot. To change the signup, change the magnet in Admin → Magnets. The `schema:` Offer is the page's JSON-LD main entity — a free subscription. Replace every {brace} with your own words before you launch. */}
|
|
@@ -67,27 +67,9 @@ sections:
|
|
|
67
67
|
"headlineStyle": "label",
|
|
68
68
|
"logos":
|
|
69
69
|
[
|
|
70
|
-
{
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"darkSrc": "/logos/salessmyth-light.svg",
|
|
74
|
-
"width": 1118,
|
|
75
|
-
"height": 147,
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"name": "AI Launch Kit",
|
|
79
|
-
"src": "/logos/ai-launch-kit.svg",
|
|
80
|
-
"darkSrc": "/logos/ai-launch-kit-light.svg",
|
|
81
|
-
"width": 1248,
|
|
82
|
-
"height": 144,
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"name": "Atomic Agent",
|
|
86
|
-
"src": "/logos/atomic-agent.svg",
|
|
87
|
-
"darkSrc": "/logos/atomic-agent-light.svg",
|
|
88
|
-
"width": 1320,
|
|
89
|
-
"height": 148,
|
|
90
|
-
},
|
|
70
|
+
{ "name": "Placeholder logo", "src": "/logomark.svg" },
|
|
71
|
+
{ "name": "Placeholder logo", "src": "/logomark.svg" },
|
|
72
|
+
{ "name": "Placeholder logo", "src": "/logomark.svg" },
|
|
91
73
|
],
|
|
92
74
|
"layout": "inline",
|
|
93
75
|
"treatment": "monochrome",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
],
|
|
18
18
|
"shape": "organization-product",
|
|
19
19
|
"design": "standard",
|
|
20
|
-
"generatedHash": "
|
|
20
|
+
"generatedHash": "f4a8f11aba42a071794585c4563015bd1c99cbe6917a36ee0629d37c6f5f476c",
|
|
21
21
|
"layout": {
|
|
22
22
|
"nav": "full",
|
|
23
23
|
"footer": "columns",
|
|
@@ -333,15 +333,8 @@
|
|
|
333
333
|
"chrome": "on",
|
|
334
334
|
"sections": [
|
|
335
335
|
{
|
|
336
|
-
"type": "
|
|
337
|
-
"component": "
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
"type": "items",
|
|
341
|
-
"component": "Items",
|
|
342
|
-
"options": {
|
|
343
|
-
"columns": 2
|
|
344
|
-
}
|
|
336
|
+
"type": "contact-form",
|
|
337
|
+
"component": "ContactForm"
|
|
345
338
|
}
|
|
346
339
|
]
|
|
347
340
|
},
|
|
@@ -372,19 +365,20 @@
|
|
|
372
365
|
"chrome": "on",
|
|
373
366
|
"sections": [
|
|
374
367
|
{
|
|
375
|
-
"type": "
|
|
376
|
-
"component": "
|
|
377
|
-
},
|
|
378
|
-
{
|
|
379
|
-
"type": "newsletter",
|
|
380
|
-
"component": "Newsletter"
|
|
381
|
-
},
|
|
382
|
-
{
|
|
383
|
-
"type": "faq",
|
|
384
|
-
"component": "FAQ"
|
|
368
|
+
"type": "contact-form",
|
|
369
|
+
"component": "ContactForm"
|
|
385
370
|
}
|
|
386
371
|
]
|
|
387
372
|
},
|
|
373
|
+
{
|
|
374
|
+
"route": "/unsubscribe",
|
|
375
|
+
"kind": "route",
|
|
376
|
+
"pageType": null,
|
|
377
|
+
"schema": null,
|
|
378
|
+
"shell": "MarketingShell",
|
|
379
|
+
"chrome": "on",
|
|
380
|
+
"sections": []
|
|
381
|
+
},
|
|
388
382
|
{
|
|
389
383
|
"route": "/sign-in",
|
|
390
384
|
"kind": "route",
|
|
@@ -697,6 +691,15 @@
|
|
|
697
691
|
"chrome": "on",
|
|
698
692
|
"sections": []
|
|
699
693
|
},
|
|
694
|
+
{
|
|
695
|
+
"route": "/private",
|
|
696
|
+
"kind": "route",
|
|
697
|
+
"pageType": null,
|
|
698
|
+
"schema": null,
|
|
699
|
+
"shell": "MarketingShell",
|
|
700
|
+
"chrome": "on",
|
|
701
|
+
"sections": []
|
|
702
|
+
},
|
|
700
703
|
{
|
|
701
704
|
"route": "/appointments",
|
|
702
705
|
"kind": "route",
|
|
@@ -177,10 +177,9 @@ _Detail route over `content/en/Feature/` — 3 seed pages: `feature-1.mdx`, `fea
|
|
|
177
177
|
|
|
178
178
|
<!-- generated:begin page=/contact -->
|
|
179
179
|
|
|
180
|
-
| # | Section
|
|
181
|
-
| --- |
|
|
182
|
-
| 1 | `
|
|
183
|
-
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
|
|
180
|
+
| # | Section | Component | Copy (first line) |
|
|
181
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
182
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
184
183
|
|
|
185
184
|
<!-- generated:end -->
|
|
186
185
|
|
|
@@ -197,14 +196,17 @@ _Detail route over `content/en/Feature/` — 3 seed pages: `feature-1.mdx`, `fea
|
|
|
197
196
|
|
|
198
197
|
<!-- generated:begin page=/newsletter -->
|
|
199
198
|
|
|
200
|
-
| # | Section
|
|
201
|
-
| --- |
|
|
202
|
-
| 1 | `
|
|
203
|
-
| 2 | `newsletter` | `Newsletter` | Subscribe |
|
|
204
|
-
| 3 | `faq` (expanded · items ×3) | `FAQ` | FAQs |
|
|
199
|
+
| # | Section | Component | Copy (first line) |
|
|
200
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
201
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
205
202
|
|
|
206
203
|
<!-- generated:end -->
|
|
207
204
|
|
|
205
|
+
<!-- generated:begin page=/unsubscribe -->
|
|
206
|
+
|
|
207
|
+
_Code route — no content, no sections._
|
|
208
|
+
<!-- generated:end -->
|
|
209
|
+
|
|
208
210
|
`/sign-in`:
|
|
209
211
|
|
|
210
212
|
<!-- generated:begin page=/sign-in -->
|
|
@@ -342,6 +344,16 @@ Target composition (deferred to **#5670**, same as `/meet` above):
|
|
|
342
344
|
_Code route — no content, no sections._
|
|
343
345
|
<!-- generated:end -->
|
|
344
346
|
|
|
347
|
+
### `/private` — the private meeting index · scheduling
|
|
348
|
+
|
|
349
|
+
The same booking frame as `/meet`, listing the workspace's private meetings
|
|
350
|
+
(#8843 D8); `noindex`, unlinked, no seed.
|
|
351
|
+
|
|
352
|
+
<!-- generated:begin page=/private -->
|
|
353
|
+
|
|
354
|
+
_Code route — no content, no sections._
|
|
355
|
+
<!-- generated:end -->
|
|
356
|
+
|
|
345
357
|
`/appointments`:
|
|
346
358
|
|
|
347
359
|
<!-- generated:begin page=/appointments -->
|
|
@@ -517,6 +529,7 @@ marketing-site:
|
|
|
517
529
|
- { route: "/contact", kind: page, content: ["content/en/ContactPage/contact.mdx"] }
|
|
518
530
|
- { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
|
|
519
531
|
- { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
|
|
532
|
+
- { route: "/unsubscribe", kind: route }
|
|
520
533
|
- { route: "/sign-in", kind: route }
|
|
521
534
|
- { route: "/sign-up", kind: route }
|
|
522
535
|
- { route: "/privacy", kind: page, content: ["content/en/PrivacyPage/privacy.mdx"] }
|
|
@@ -537,6 +550,7 @@ marketing-site:
|
|
|
537
550
|
- { route: "/meet", kind: route }
|
|
538
551
|
- { route: "/meet/[slug]", kind: route }
|
|
539
552
|
- { route: "/meet/confirmed", kind: route }
|
|
553
|
+
- { route: "/private", kind: route }
|
|
540
554
|
- { route: "/appointments", kind: route }
|
|
541
555
|
- { route: "/flows/[slug]", kind: route }
|
|
542
556
|
- { route: "/flows/[slug]/start", kind: route }
|
|
@@ -563,11 +577,11 @@ Every component the roster rows' seed content composes today (generated):
|
|
|
563
577
|
|
|
564
578
|
<!-- generated:begin inventory -->
|
|
565
579
|
|
|
566
|
-
| Tier | Used by this template
|
|
567
|
-
| -------- |
|
|
568
|
-
| Shell | `MarketingShell`
|
|
569
|
-
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`)
|
|
570
|
-
| Sections | `ContentBlock`, `CTA`, `DecisionSplit`, `DocumentChassis`, `FAQ`, `Feature`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `MediaBand`, `
|
|
580
|
+
| Tier | Used by this template |
|
|
581
|
+
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
582
|
+
| Shell | `MarketingShell` |
|
|
583
|
+
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`) |
|
|
584
|
+
| Sections | `ContactForm`, `ContentBlock`, `CTA`, `DecisionSplit`, `DocumentChassis`, `FAQ`, `Feature`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `MediaBand`, `Pricing`, `StairSteps`, `Team`, `Testimonials` |
|
|
571
585
|
|
|
572
586
|
<!-- generated:end -->
|
|
573
587
|
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"categories": ["accounting", "legal", "technology"],
|
|
5
5
|
"shape": "organization-product",
|
|
6
6
|
"design": "standard",
|
|
7
|
-
"generatedHash": "
|
|
7
|
+
"generatedHash": "69b9e9d31dba7bc9d556deb74bf88969c0be778e81cc96fa6966387d728317fa",
|
|
8
8
|
"layout": {
|
|
9
9
|
"nav": "full",
|
|
10
10
|
"footer": "columns",
|
|
11
|
-
"announcementBanner":
|
|
11
|
+
"announcementBanner": false,
|
|
12
12
|
"home": "default"
|
|
13
13
|
},
|
|
14
14
|
"theme": {
|
|
@@ -222,13 +222,6 @@
|
|
|
222
222
|
"shell": "MarketingShell",
|
|
223
223
|
"chrome": "on",
|
|
224
224
|
"sections": [
|
|
225
|
-
{
|
|
226
|
-
"type": "hero",
|
|
227
|
-
"component": "Hero",
|
|
228
|
-
"options": {
|
|
229
|
-
"gapBelow": "tight"
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
225
|
{
|
|
233
226
|
"type": "pricing",
|
|
234
227
|
"component": "Pricing",
|
|
@@ -327,15 +320,8 @@
|
|
|
327
320
|
"chrome": "on",
|
|
328
321
|
"sections": [
|
|
329
322
|
{
|
|
330
|
-
"type": "
|
|
331
|
-
"component": "
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
"type": "items",
|
|
335
|
-
"component": "Items",
|
|
336
|
-
"options": {
|
|
337
|
-
"columns": 2
|
|
338
|
-
}
|
|
323
|
+
"type": "contact-form",
|
|
324
|
+
"component": "ContactForm"
|
|
339
325
|
}
|
|
340
326
|
]
|
|
341
327
|
},
|
|
@@ -366,15 +352,20 @@
|
|
|
366
352
|
"chrome": "on",
|
|
367
353
|
"sections": [
|
|
368
354
|
{
|
|
369
|
-
"type": "
|
|
370
|
-
"component": "
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
"type": "faq",
|
|
374
|
-
"component": "FAQ"
|
|
355
|
+
"type": "contact-form",
|
|
356
|
+
"component": "ContactForm"
|
|
375
357
|
}
|
|
376
358
|
]
|
|
377
359
|
},
|
|
360
|
+
{
|
|
361
|
+
"route": "/unsubscribe",
|
|
362
|
+
"kind": "route",
|
|
363
|
+
"pageType": null,
|
|
364
|
+
"schema": null,
|
|
365
|
+
"shell": "MarketingShell",
|
|
366
|
+
"chrome": "on",
|
|
367
|
+
"sections": []
|
|
368
|
+
},
|
|
378
369
|
{
|
|
379
370
|
"route": "/sign-in",
|
|
380
371
|
"kind": "route",
|
|
@@ -476,10 +467,6 @@
|
|
|
476
467
|
"gapBelow": "tight"
|
|
477
468
|
}
|
|
478
469
|
},
|
|
479
|
-
{
|
|
480
|
-
"type": "blog-list",
|
|
481
|
-
"component": "BlogList"
|
|
482
|
-
},
|
|
483
470
|
{
|
|
484
471
|
"type": "logoCloud",
|
|
485
472
|
"component": "LogoCloud",
|
|
@@ -526,17 +513,6 @@
|
|
|
526
513
|
"type": "hero",
|
|
527
514
|
"component": "Hero"
|
|
528
515
|
},
|
|
529
|
-
{
|
|
530
|
-
"type": "cta",
|
|
531
|
-
"component": "CTA"
|
|
532
|
-
},
|
|
533
|
-
{
|
|
534
|
-
"type": "items",
|
|
535
|
-
"component": "Items",
|
|
536
|
-
"options": {
|
|
537
|
-
"columns": 3
|
|
538
|
-
}
|
|
539
|
-
},
|
|
540
516
|
{
|
|
541
517
|
"type": "content-block",
|
|
542
518
|
"component": "ContentBlock"
|
|
@@ -34,7 +34,7 @@ The template's `layout` block — resolved with `resolveSiteChrome`, defaults fi
|
|
|
34
34
|
| -------------------- | --------- |
|
|
35
35
|
| `nav` | `full` |
|
|
36
36
|
| `footer` | `columns` |
|
|
37
|
-
| `announcementBanner` | `
|
|
37
|
+
| `announcementBanner` | `false` |
|
|
38
38
|
| `home` | `default` |
|
|
39
39
|
|
|
40
40
|
<!-- generated:end -->
|
|
@@ -154,14 +154,13 @@ Reference: `screenshots/pricing.png`, `copy/pricing.txt`. The reference opens on
|
|
|
154
154
|
|
|
155
155
|
<!-- generated:begin page=/pricing -->
|
|
156
156
|
|
|
157
|
-
| # | Section
|
|
158
|
-
| --- |
|
|
159
|
-
| 1 | `
|
|
160
|
-
| 2 | `
|
|
161
|
-
| 3 | `
|
|
162
|
-
| 4 | `
|
|
163
|
-
| 5 | `
|
|
164
|
-
| 6 | `faq` (accordion · items ×5 · 1 CTA · initialOpen none) | `FAQ` | {FAQs} |
|
|
157
|
+
| # | Section | Component | Copy (first line) |
|
|
158
|
+
| --- | -------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
|
|
159
|
+
| 1 | `pricing` (three-tiers-with-toggle · cardLayout=centered · eyebrow "Pricing" · plans ×3 · billingToggle) | `Pricing` | {Pays for itself in tangible value or outcome} |
|
|
160
|
+
| 2 | `logoCloud` (layout=inline · logos ×3) | `LogoCloud` | Don’t just take our word for it |
|
|
161
|
+
| 3 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
162
|
+
| 4 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product in time amount or less} |
|
|
163
|
+
| 5 | `faq` (accordion · items ×5 · 1 CTA · initialOpen none) | `FAQ` | FAQs |
|
|
165
164
|
|
|
166
165
|
<!-- generated:end -->
|
|
167
166
|
|
|
@@ -201,10 +200,9 @@ Reference: `screenshots/contact.png`, `copy/contact.txt`. The reference is a spl
|
|
|
201
200
|
|
|
202
201
|
<!-- generated:begin page=/contact -->
|
|
203
202
|
|
|
204
|
-
| # | Section
|
|
205
|
-
| --- |
|
|
206
|
-
| 1 | `
|
|
207
|
-
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
|
|
203
|
+
| # | Section | Component | Copy (first line) |
|
|
204
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
205
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
208
206
|
|
|
209
207
|
<!-- generated:end -->
|
|
210
208
|
|
|
@@ -227,13 +225,21 @@ A base-layer seed every starter carries (#6658 D5). The form posts to lead captu
|
|
|
227
225
|
|
|
228
226
|
<!-- generated:begin page=/newsletter -->
|
|
229
227
|
|
|
230
|
-
| # | Section
|
|
231
|
-
| --- |
|
|
232
|
-
| 1 | `
|
|
233
|
-
| 2 | `faq` (expanded · items ×3) | `FAQ` | FAQs |
|
|
228
|
+
| # | Section | Component | Copy (first line) |
|
|
229
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
230
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
234
231
|
|
|
235
232
|
<!-- generated:end -->
|
|
236
233
|
|
|
234
|
+
### `/unsubscribe` — code route (the unsubscribe landing) · chrome on
|
|
235
|
+
|
|
236
|
+
The landing every signed unsubscribe link calls (#8438 D17) — a code route like `/sign-in`, copied into every scaffold and never gated, listed so the manifest is a complete install record (#8850 D1). No reference page.
|
|
237
|
+
|
|
238
|
+
<!-- generated:begin page=/unsubscribe -->
|
|
239
|
+
|
|
240
|
+
_Code route — no content, no sections._
|
|
241
|
+
<!-- generated:end -->
|
|
242
|
+
|
|
237
243
|
### `/meet` — LandingPage · schema `WebPage` · chrome on
|
|
238
244
|
|
|
239
245
|
An always-copied overlay seed (#6897 D3): a meeting-types hub, served by the generic `[slug]` route, listing the four `/meet/<slug>` tiles below through the same `items` `tiles` variant Contact uses. A template carrying the scheduling module serves its own `meet/` route directory instead, by Next.js static-segment precedence.
|
|
@@ -253,12 +259,10 @@ Four always-copied overlay seeds (#6897 D4/D5), served by the new `[slug]/[detai
|
|
|
253
259
|
|
|
254
260
|
<!-- generated:begin page=/meet/[slug] -->
|
|
255
261
|
|
|
256
|
-
| # | Section | Component | Copy (first line)
|
|
257
|
-
| --- | -------------------------------------- | -------------- |
|
|
258
|
-
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call
|
|
259
|
-
| 2 | `
|
|
260
|
-
| 3 | `items` (columns=3 · items ×3) | `Items` | What happens on the call? |
|
|
261
|
-
| 4 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
262
|
+
| # | Section | Component | Copy (first line) |
|
|
263
|
+
| --- | -------------------------------------- | -------------- | ----------------- |
|
|
264
|
+
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call |
|
|
265
|
+
| 2 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
262
266
|
|
|
263
267
|
<!-- generated:end -->
|
|
264
268
|
|
|
@@ -268,12 +272,11 @@ Reference: `screenshots/blog.png`, `copy/blog.txt` for the opener and the newsle
|
|
|
268
272
|
|
|
269
273
|
<!-- generated:begin page=/blog -->
|
|
270
274
|
|
|
271
|
-
| # | Section
|
|
272
|
-
| --- |
|
|
273
|
-
| 1 | `hero` (centered · gapBelow=tight · eyebrow "Blog"
|
|
274
|
-
| 2 | `
|
|
275
|
-
| 3 | `
|
|
276
|
-
| 4 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
275
|
+
| # | Section | Component | Copy (first line) |
|
|
276
|
+
| --- | --------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
|
|
277
|
+
| 1 | `hero` (centered · gapBelow=tight · eyebrow "Blog") | `Hero` | {Blog} |
|
|
278
|
+
| 2 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
|
|
279
|
+
| 3 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
277
280
|
|
|
278
281
|
<!-- generated:end -->
|
|
279
282
|
|
|
@@ -442,6 +445,7 @@ marketing-site-free:
|
|
|
442
445
|
- { route: "/contact", kind: page, content: ["content/en/ContactPage/contact.mdx"] }
|
|
443
446
|
- { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
|
|
444
447
|
- { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
|
|
448
|
+
- { route: "/unsubscribe", kind: route }
|
|
445
449
|
- { route: "/sign-in", kind: route }
|
|
446
450
|
- { route: "/sign-up", kind: route }
|
|
447
451
|
- { route: "/privacy", kind: page, content: ["content/en/PrivacyPage/privacy.mdx"] }
|
|
@@ -505,11 +509,11 @@ reversed (`docs/decisions/starter-roster-page-set.md` D4, D7).
|
|
|
505
509
|
|
|
506
510
|
<!-- generated:begin inventory -->
|
|
507
511
|
|
|
508
|
-
| Tier | Used by this template
|
|
509
|
-
| -------- |
|
|
510
|
-
| Shell | `MarketingShell`
|
|
511
|
-
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`)
|
|
512
|
-
| Sections | `
|
|
512
|
+
| Tier | Used by this template |
|
|
513
|
+
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
514
|
+
| Shell | `MarketingShell` |
|
|
515
|
+
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`) |
|
|
516
|
+
| Sections | `ContactForm`, `ContentBlock`, `CTA`, `DecisionSplit`, `DocumentChassis`, `FAQ`, `Feature`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `MediaBand`, `Pricing`, `Team`, `Testimonials` |
|
|
513
517
|
|
|
514
518
|
<!-- generated:end -->
|
|
515
519
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "NewsletterSignup"
|
|
3
3
|
slug: "newsletter"
|
|
4
|
-
title: "
|
|
5
|
-
description: "{
|
|
4
|
+
title: "Get the newsletter"
|
|
5
|
+
description: "{One sentence on what this newsletter covers and who it is for}"
|
|
6
6
|
schema:
|
|
7
7
|
mainEntity:
|
|
8
8
|
"@type": "Offer"
|
|
@@ -12,48 +12,11 @@ schema:
|
|
|
12
12
|
sections:
|
|
13
13
|
[
|
|
14
14
|
{
|
|
15
|
-
"id": "
|
|
16
|
-
"type": "
|
|
17
|
-
"data":
|
|
18
|
-
{
|
|
19
|
-
"eyebrow": "Newsletter",
|
|
20
|
-
"headline": "{Start a free newsletter with Substack}",
|
|
21
|
-
"subheadline": "{Or upgrade to Pro to capture every subscriber and build your own marketing database.}",
|
|
22
|
-
"primaryCta":
|
|
23
|
-
{ "label": "{Connect Substack}", "href": "https://substack.com" },
|
|
24
|
-
"secondaryCta":
|
|
25
|
-
{
|
|
26
|
-
"label": "{Upgrade to Pro}",
|
|
27
|
-
"href": "https://ailaunchkit.ai/pricing",
|
|
28
|
-
"variant": "outline",
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"id": "faq",
|
|
34
|
-
"type": "faq",
|
|
35
|
-
"data":
|
|
36
|
-
{
|
|
37
|
-
"headline": "FAQs",
|
|
38
|
-
"presentation": "expanded",
|
|
39
|
-
"items":
|
|
40
|
-
[
|
|
41
|
-
{
|
|
42
|
-
"question": "{How often will I hear from you?}",
|
|
43
|
-
"answer": "{Answer in one or two plain sentences}",
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"question": "{What will I get?}",
|
|
47
|
-
"answer": "{Answer in one or two plain sentences}",
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"question": "{Can I unsubscribe?}",
|
|
51
|
-
"answer": "{Answer in one or two plain sentences}",
|
|
52
|
-
},
|
|
53
|
-
],
|
|
54
|
-
},
|
|
15
|
+
"id": "signup",
|
|
16
|
+
"type": "contact-form",
|
|
17
|
+
"data": { "variant": "column", "fields": [] },
|
|
55
18
|
},
|
|
56
19
|
]
|
|
57
20
|
---
|
|
58
21
|
|
|
59
|
-
{/* Rendered from frontmatter `sections[]` by the /newsletter route. The
|
|
22
|
+
{/* Rendered from frontmatter `sections[]` by the /newsletter route. The page's one signup surface is the workspace's Newsletter magnet: its heading, sentence, field, consent, button and ending all come from the magnet, mounted by the route in this section's slot. To change the signup, change the magnet in Admin → Magnets. The `schema:` Offer is the page's JSON-LD main entity — a free subscription. Replace every {brace} with your own words before you launch. */}
|