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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
],
|
|
12
12
|
"shape": "local-business-service",
|
|
13
13
|
"design": "standard",
|
|
14
|
-
"generatedHash": "
|
|
14
|
+
"generatedHash": "f9dc1b0efdca0ea907b523eccbd89d4e388d984671394280670af50d4d723190",
|
|
15
15
|
"layout": {
|
|
16
16
|
"nav": "full",
|
|
17
17
|
"footer": "columns",
|
|
@@ -196,15 +196,8 @@
|
|
|
196
196
|
"chrome": "on",
|
|
197
197
|
"sections": [
|
|
198
198
|
{
|
|
199
|
-
"type": "
|
|
200
|
-
"component": "
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
"type": "items",
|
|
204
|
-
"component": "Items",
|
|
205
|
-
"options": {
|
|
206
|
-
"columns": 2
|
|
207
|
-
}
|
|
199
|
+
"type": "contact-form",
|
|
200
|
+
"component": "ContactForm"
|
|
208
201
|
}
|
|
209
202
|
]
|
|
210
203
|
},
|
|
@@ -260,15 +253,20 @@
|
|
|
260
253
|
"chrome": "on",
|
|
261
254
|
"sections": [
|
|
262
255
|
{
|
|
263
|
-
"type": "
|
|
264
|
-
"component": "
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
"type": "faq",
|
|
268
|
-
"component": "FAQ"
|
|
256
|
+
"type": "contact-form",
|
|
257
|
+
"component": "ContactForm"
|
|
269
258
|
}
|
|
270
259
|
]
|
|
271
260
|
},
|
|
261
|
+
{
|
|
262
|
+
"route": "/unsubscribe",
|
|
263
|
+
"kind": "route",
|
|
264
|
+
"pageType": null,
|
|
265
|
+
"schema": null,
|
|
266
|
+
"shell": "MarketingShell",
|
|
267
|
+
"chrome": "on",
|
|
268
|
+
"sections": []
|
|
269
|
+
},
|
|
272
270
|
{
|
|
273
271
|
"route": "/sign-in",
|
|
274
272
|
"kind": "route",
|
|
@@ -370,10 +368,6 @@
|
|
|
370
368
|
"gapBelow": "tight"
|
|
371
369
|
}
|
|
372
370
|
},
|
|
373
|
-
{
|
|
374
|
-
"type": "blog-list",
|
|
375
|
-
"component": "BlogList"
|
|
376
|
-
},
|
|
377
371
|
{
|
|
378
372
|
"type": "logoCloud",
|
|
379
373
|
"component": "LogoCloud",
|
|
@@ -420,17 +414,6 @@
|
|
|
420
414
|
"type": "hero",
|
|
421
415
|
"component": "Hero"
|
|
422
416
|
},
|
|
423
|
-
{
|
|
424
|
-
"type": "cta",
|
|
425
|
-
"component": "CTA"
|
|
426
|
-
},
|
|
427
|
-
{
|
|
428
|
-
"type": "items",
|
|
429
|
-
"component": "Items",
|
|
430
|
-
"options": {
|
|
431
|
-
"columns": 3
|
|
432
|
-
}
|
|
433
|
-
},
|
|
434
417
|
{
|
|
435
418
|
"type": "content-block",
|
|
436
419
|
"component": "ContentBlock"
|
|
@@ -132,10 +132,9 @@ _Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `per
|
|
|
132
132
|
|
|
133
133
|
<!-- generated:begin page=/contact -->
|
|
134
134
|
|
|
135
|
-
| # | Section
|
|
136
|
-
| --- |
|
|
137
|
-
| 1 | `
|
|
138
|
-
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
|
|
135
|
+
| # | Section | Component | Copy (first line) |
|
|
136
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
137
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
139
138
|
|
|
140
139
|
<!-- generated:end -->
|
|
141
140
|
|
|
@@ -164,13 +163,17 @@ _Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `per
|
|
|
164
163
|
|
|
165
164
|
<!-- generated:begin page=/newsletter -->
|
|
166
165
|
|
|
167
|
-
| # | Section
|
|
168
|
-
| --- |
|
|
169
|
-
| 1 | `
|
|
170
|
-
| 2 | `faq` (expanded · items ×3) | `FAQ` | FAQs |
|
|
166
|
+
| # | Section | Component | Copy (first line) |
|
|
167
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
168
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
171
169
|
|
|
172
170
|
<!-- generated:end -->
|
|
173
171
|
|
|
172
|
+
<!-- generated:begin page=/unsubscribe -->
|
|
173
|
+
|
|
174
|
+
_Code route — no content, no sections._
|
|
175
|
+
<!-- generated:end -->
|
|
176
|
+
|
|
174
177
|
<!-- generated:begin page=/meet -->
|
|
175
178
|
|
|
176
179
|
| # | Section | Component | Copy (first line) |
|
|
@@ -182,12 +185,10 @@ _Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `per
|
|
|
182
185
|
|
|
183
186
|
<!-- generated:begin page=/meet/[slug] -->
|
|
184
187
|
|
|
185
|
-
| # | Section | Component | Copy (first line)
|
|
186
|
-
| --- | -------------------------------------- | -------------- |
|
|
187
|
-
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call
|
|
188
|
-
| 2 | `
|
|
189
|
-
| 3 | `items` (columns=3 · items ×3) | `Items` | What happens on the call? |
|
|
190
|
-
| 4 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
188
|
+
| # | Section | Component | Copy (first line) |
|
|
189
|
+
| --- | -------------------------------------- | -------------- | ----------------- |
|
|
190
|
+
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call |
|
|
191
|
+
| 2 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
191
192
|
|
|
192
193
|
<!-- generated:end -->
|
|
193
194
|
|
|
@@ -243,12 +244,11 @@ _Code route — no content, no sections._
|
|
|
243
244
|
|
|
244
245
|
<!-- generated:begin page=/blog -->
|
|
245
246
|
|
|
246
|
-
| # | Section
|
|
247
|
-
| --- |
|
|
248
|
-
| 1 | `hero` (centered · gapBelow=tight · eyebrow "Blog"
|
|
249
|
-
| 2 | `
|
|
250
|
-
| 3 | `
|
|
251
|
-
| 4 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
247
|
+
| # | Section | Component | Copy (first line) |
|
|
248
|
+
| --- | --------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
|
|
249
|
+
| 1 | `hero` (centered · gapBelow=tight · eyebrow "Blog") | `Hero` | {Blog} |
|
|
250
|
+
| 2 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
|
|
251
|
+
| 3 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
252
252
|
|
|
253
253
|
<!-- generated:end -->
|
|
254
254
|
|
|
@@ -344,6 +344,7 @@ local-business-service:
|
|
|
344
344
|
- { route: "/faq", kind: page, content: ["content/en/FAQPage/faq.mdx"] }
|
|
345
345
|
- { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
|
|
346
346
|
- { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
|
|
347
|
+
- { route: "/unsubscribe", kind: route }
|
|
347
348
|
- { route: "/sign-in", kind: route }
|
|
348
349
|
- { route: "/sign-up", kind: route }
|
|
349
350
|
- { route: "/purchase-policy", kind: page, content: ["content/en/PurchasePolicyPage/purchase-policy.mdx"] }
|
|
@@ -376,10 +377,10 @@ Every row is module-less: `requires` is `[marketing]` alone, so `mergeRoster` co
|
|
|
376
377
|
|
|
377
378
|
<!-- generated:begin inventory -->
|
|
378
379
|
|
|
379
|
-
| Tier | Used by this template
|
|
380
|
-
| -------- |
|
|
381
|
-
| Shell | `MarketingShell`
|
|
382
|
-
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`)
|
|
383
|
-
| Sections | `
|
|
380
|
+
| Tier | Used by this template |
|
|
381
|
+
| -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
382
|
+
| Shell | `MarketingShell` |
|
|
383
|
+
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`) |
|
|
384
|
+
| Sections | `ContactForm`, `ContentBlock`, `CTA`, `DocumentChassis`, `FAQ`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `Team`, `Testimonials` |
|
|
384
385
|
|
|
385
386
|
<!-- generated:end -->
|
package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx
CHANGED
|
@@ -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. */}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"categories": ["accounting", "legal", "real-estate"],
|
|
5
5
|
"shape": "organization-service",
|
|
6
6
|
"design": "standard",
|
|
7
|
-
"generatedHash": "
|
|
7
|
+
"generatedHash": "0da8ac867d5a28668e42f90a729af3e30522c0afa6d2629475a092679fffddf3",
|
|
8
8
|
"layout": {
|
|
9
9
|
"nav": "full",
|
|
10
10
|
"footer": "columns",
|
|
@@ -189,15 +189,8 @@
|
|
|
189
189
|
"chrome": "on",
|
|
190
190
|
"sections": [
|
|
191
191
|
{
|
|
192
|
-
"type": "
|
|
193
|
-
"component": "
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
"type": "items",
|
|
197
|
-
"component": "Items",
|
|
198
|
-
"options": {
|
|
199
|
-
"columns": 2
|
|
200
|
-
}
|
|
192
|
+
"type": "contact-form",
|
|
193
|
+
"component": "ContactForm"
|
|
201
194
|
}
|
|
202
195
|
]
|
|
203
196
|
},
|
|
@@ -253,15 +246,20 @@
|
|
|
253
246
|
"chrome": "on",
|
|
254
247
|
"sections": [
|
|
255
248
|
{
|
|
256
|
-
"type": "
|
|
257
|
-
"component": "
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
"type": "faq",
|
|
261
|
-
"component": "FAQ"
|
|
249
|
+
"type": "contact-form",
|
|
250
|
+
"component": "ContactForm"
|
|
262
251
|
}
|
|
263
252
|
]
|
|
264
253
|
},
|
|
254
|
+
{
|
|
255
|
+
"route": "/unsubscribe",
|
|
256
|
+
"kind": "route",
|
|
257
|
+
"pageType": null,
|
|
258
|
+
"schema": null,
|
|
259
|
+
"shell": "MarketingShell",
|
|
260
|
+
"chrome": "on",
|
|
261
|
+
"sections": []
|
|
262
|
+
},
|
|
265
263
|
{
|
|
266
264
|
"route": "/sign-in",
|
|
267
265
|
"kind": "route",
|
|
@@ -363,10 +361,6 @@
|
|
|
363
361
|
"gapBelow": "tight"
|
|
364
362
|
}
|
|
365
363
|
},
|
|
366
|
-
{
|
|
367
|
-
"type": "blog-list",
|
|
368
|
-
"component": "BlogList"
|
|
369
|
-
},
|
|
370
364
|
{
|
|
371
365
|
"type": "logoCloud",
|
|
372
366
|
"component": "LogoCloud",
|
|
@@ -413,17 +407,6 @@
|
|
|
413
407
|
"type": "hero",
|
|
414
408
|
"component": "Hero"
|
|
415
409
|
},
|
|
416
|
-
{
|
|
417
|
-
"type": "cta",
|
|
418
|
-
"component": "CTA"
|
|
419
|
-
},
|
|
420
|
-
{
|
|
421
|
-
"type": "items",
|
|
422
|
-
"component": "Items",
|
|
423
|
-
"options": {
|
|
424
|
-
"columns": 3
|
|
425
|
-
}
|
|
426
|
-
},
|
|
427
410
|
{
|
|
428
411
|
"type": "content-block",
|
|
429
412
|
"component": "ContentBlock"
|
|
@@ -131,10 +131,9 @@ _Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `per
|
|
|
131
131
|
|
|
132
132
|
<!-- generated:begin page=/contact -->
|
|
133
133
|
|
|
134
|
-
| # | Section
|
|
135
|
-
| --- |
|
|
136
|
-
| 1 | `
|
|
137
|
-
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
|
|
134
|
+
| # | Section | Component | Copy (first line) |
|
|
135
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
136
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
138
137
|
|
|
139
138
|
<!-- generated:end -->
|
|
140
139
|
|
|
@@ -163,13 +162,17 @@ _Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `per
|
|
|
163
162
|
|
|
164
163
|
<!-- generated:begin page=/newsletter -->
|
|
165
164
|
|
|
166
|
-
| # | Section
|
|
167
|
-
| --- |
|
|
168
|
-
| 1 | `
|
|
169
|
-
| 2 | `faq` (expanded · items ×3) | `FAQ` | FAQs |
|
|
165
|
+
| # | Section | Component | Copy (first line) |
|
|
166
|
+
| --- | ----------------------------------- | ------------- | ----------------- |
|
|
167
|
+
| 1 | `contact-form` (column · fields ×0) | `ContactForm` | |
|
|
170
168
|
|
|
171
169
|
<!-- generated:end -->
|
|
172
170
|
|
|
171
|
+
<!-- generated:begin page=/unsubscribe -->
|
|
172
|
+
|
|
173
|
+
_Code route — no content, no sections._
|
|
174
|
+
<!-- generated:end -->
|
|
175
|
+
|
|
173
176
|
<!-- generated:begin page=/meet -->
|
|
174
177
|
|
|
175
178
|
| # | Section | Component | Copy (first line) |
|
|
@@ -181,12 +184,10 @@ _Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `per
|
|
|
181
184
|
|
|
182
185
|
<!-- generated:begin page=/meet/[slug] -->
|
|
183
186
|
|
|
184
|
-
| # | Section | Component | Copy (first line)
|
|
185
|
-
| --- | -------------------------------------- | -------------- |
|
|
186
|
-
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call
|
|
187
|
-
| 2 | `
|
|
188
|
-
| 3 | `items` (columns=3 · items ×3) | `Items` | What happens on the call? |
|
|
189
|
-
| 4 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
187
|
+
| # | Section | Component | Copy (first line) |
|
|
188
|
+
| --- | -------------------------------------- | -------------- | ----------------- |
|
|
189
|
+
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call |
|
|
190
|
+
| 2 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
190
191
|
|
|
191
192
|
<!-- generated:end -->
|
|
192
193
|
|
|
@@ -242,12 +243,11 @@ _Code route — no content, no sections._
|
|
|
242
243
|
|
|
243
244
|
<!-- generated:begin page=/blog -->
|
|
244
245
|
|
|
245
|
-
| # | Section
|
|
246
|
-
| --- |
|
|
247
|
-
| 1 | `hero` (centered · gapBelow=tight · eyebrow "Blog"
|
|
248
|
-
| 2 | `
|
|
249
|
-
| 3 | `
|
|
250
|
-
| 4 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
246
|
+
| # | Section | Component | Copy (first line) |
|
|
247
|
+
| --- | --------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
|
|
248
|
+
| 1 | `hero` (centered · gapBelow=tight · eyebrow "Blog") | `Hero` | {Blog} |
|
|
249
|
+
| 2 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
|
|
250
|
+
| 3 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
251
251
|
|
|
252
252
|
<!-- generated:end -->
|
|
253
253
|
|
|
@@ -342,6 +342,7 @@ organization-service:
|
|
|
342
342
|
- { route: "/faq", kind: page, content: ["content/en/FAQPage/faq.mdx"] }
|
|
343
343
|
- { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
|
|
344
344
|
- { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
|
|
345
|
+
- { route: "/unsubscribe", kind: route }
|
|
345
346
|
- { route: "/sign-in", kind: route }
|
|
346
347
|
- { route: "/sign-up", kind: route }
|
|
347
348
|
- { route: "/privacy", kind: page, content: ["content/en/PrivacyPage/privacy.mdx"] }
|
|
@@ -374,10 +375,10 @@ Every row is module-less: `requires` is `[marketing]` alone, so `mergeRoster` co
|
|
|
374
375
|
|
|
375
376
|
<!-- generated:begin inventory -->
|
|
376
377
|
|
|
377
|
-
| Tier | Used by this template
|
|
378
|
-
| -------- |
|
|
379
|
-
| Shell | `MarketingShell`
|
|
380
|
-
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`)
|
|
381
|
-
| Sections | `
|
|
378
|
+
| Tier | Used by this template |
|
|
379
|
+
| -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
380
|
+
| Shell | `MarketingShell` |
|
|
381
|
+
| Chrome | `Nav`, `Footer`, `Banner` (+ `BannerConsentIsland`, `BannerDismissIsland`) |
|
|
382
|
+
| Sections | `ContactForm`, `ContentBlock`, `CTA`, `DocumentChassis`, `FAQ`, `GlossaryIndex`, `Hero`, `Items`, `LogoCloud`, `Team`, `Testimonials` |
|
|
382
383
|
|
|
383
384
|
<!-- generated:end -->
|
package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx
CHANGED
|
@@ -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. */}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"categories": ["consulting"],
|
|
5
5
|
"shape": "person-service",
|
|
6
6
|
"design": "standard",
|
|
7
|
-
"generatedHash": "
|
|
7
|
+
"generatedHash": "a9b961f2271fdf4a0313426df1083bdf0cae7544e83f2ab50cdee580c69d8d48",
|
|
8
8
|
"layout": {
|
|
9
9
|
"nav": "full",
|
|
10
10
|
"footer": "columns",
|
|
@@ -196,15 +196,8 @@
|
|
|
196
196
|
"chrome": "on",
|
|
197
197
|
"sections": [
|
|
198
198
|
{
|
|
199
|
-
"type": "
|
|
200
|
-
"component": "
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
"type": "items",
|
|
204
|
-
"component": "Items",
|
|
205
|
-
"options": {
|
|
206
|
-
"columns": 2
|
|
207
|
-
}
|
|
199
|
+
"type": "contact-form",
|
|
200
|
+
"component": "ContactForm"
|
|
208
201
|
}
|
|
209
202
|
]
|
|
210
203
|
},
|
|
@@ -260,15 +253,20 @@
|
|
|
260
253
|
"chrome": "on",
|
|
261
254
|
"sections": [
|
|
262
255
|
{
|
|
263
|
-
"type": "
|
|
264
|
-
"component": "
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
"type": "faq",
|
|
268
|
-
"component": "FAQ"
|
|
256
|
+
"type": "contact-form",
|
|
257
|
+
"component": "ContactForm"
|
|
269
258
|
}
|
|
270
259
|
]
|
|
271
260
|
},
|
|
261
|
+
{
|
|
262
|
+
"route": "/unsubscribe",
|
|
263
|
+
"kind": "route",
|
|
264
|
+
"pageType": null,
|
|
265
|
+
"schema": null,
|
|
266
|
+
"shell": "MarketingShell",
|
|
267
|
+
"chrome": "on",
|
|
268
|
+
"sections": []
|
|
269
|
+
},
|
|
272
270
|
{
|
|
273
271
|
"route": "/sign-in",
|
|
274
272
|
"kind": "route",
|
|
@@ -370,10 +368,6 @@
|
|
|
370
368
|
"gapBelow": "tight"
|
|
371
369
|
}
|
|
372
370
|
},
|
|
373
|
-
{
|
|
374
|
-
"type": "blog-list",
|
|
375
|
-
"component": "BlogList"
|
|
376
|
-
},
|
|
377
371
|
{
|
|
378
372
|
"type": "logoCloud",
|
|
379
373
|
"component": "LogoCloud",
|
|
@@ -420,17 +414,6 @@
|
|
|
420
414
|
"type": "hero",
|
|
421
415
|
"component": "Hero"
|
|
422
416
|
},
|
|
423
|
-
{
|
|
424
|
-
"type": "cta",
|
|
425
|
-
"component": "CTA"
|
|
426
|
-
},
|
|
427
|
-
{
|
|
428
|
-
"type": "items",
|
|
429
|
-
"component": "Items",
|
|
430
|
-
"options": {
|
|
431
|
-
"columns": 3
|
|
432
|
-
}
|
|
433
|
-
},
|
|
434
417
|
{
|
|
435
418
|
"type": "content-block",
|
|
436
419
|
"component": "ContentBlock"
|