create-ailk 0.6.1 → 0.8.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 +87 -14
- package/component-catalog.json +735 -95
- package/component-catalog.md +13 -7
- package/dist/add-module-core.d.ts +22 -0
- package/dist/add-module-core.js +50 -0
- package/dist/add-module.d.ts +89 -0
- package/dist/add-module.js +334 -0
- package/dist/category-profile.d.ts +126 -0
- package/dist/category-profile.js +262 -0
- package/dist/cli.js +89 -29
- package/dist/index.d.ts +4 -2
- package/dist/index.js +6 -1
- package/dist/lib/extract-module-bundle.d.ts +56 -1
- package/dist/lib/extract-module-bundle.js +170 -14
- package/dist/lib/license-key-files.d.ts +15 -0
- package/dist/lib/license-key-files.js +102 -0
- package/dist/lib/module-license-gate.d.ts +79 -0
- package/dist/lib/module-license-gate.js +160 -12
- package/dist/lib/module-tier.d.ts +45 -16
- package/dist/lib/module-tier.js +76 -0
- package/dist/lib/pro-callout.d.ts +16 -10
- package/dist/lib/pro-callout.js +34 -3
- package/dist/license-set.d.ts +34 -0
- package/dist/license-set.js +194 -0
- package/dist/module-architecture.d.ts +20 -0
- package/dist/module-architecture.js +77 -19
- package/dist/modules/commerce/0.6.1.tar.gz +0 -0
- package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
- package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
- package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
- package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
- package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
- package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
- package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
- package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
- package/dist/modules/workspace/0.6.1.tar.gz +0 -0
- package/dist/parse-args.d.ts +85 -10
- package/dist/parse-args.js +227 -15
- package/dist/programmatic.d.ts +81 -5
- package/dist/programmatic.js +291 -32
- package/dist/site-chrome.d.ts +18 -7
- package/dist/site-chrome.js +32 -14
- package/dist/site-roster.d.ts +127 -0
- package/dist/site-roster.js +499 -0
- package/dist/starter-grid.d.ts +216 -0
- package/dist/starter-grid.js +449 -0
- package/dist/surfaces.d.ts +20 -7
- package/dist/surfaces.js +204 -24
- package/dist/sync-routes.d.ts +9 -0
- package/dist/sync-routes.js +2 -2
- package/dist/template-manifest.d.ts +94 -19
- package/dist/template-manifest.js +170 -289
- package/dist/template-names.d.ts +14 -12
- package/dist/template-names.js +13 -17
- package/package.json +6 -4
- package/site-templates/_base/content/en/BookCall/book-call.mdx +52 -0
- package/site-templates/_base/content/en/Feature/feature-1.mdx +69 -0
- package/site-templates/_base/content/en/Feature/feature-2.mdx +69 -0
- package/site-templates/_base/content/en/Feature/feature-3.mdx +69 -0
- package/site-templates/_base/content/en/FeaturesList/features.mdx +91 -0
- package/site-templates/_base/content/en/GlossaryList/glossary.mdx +65 -0
- package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +67 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-four.mdx +105 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-one.mdx +34 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-three.mdx +94 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-two.mdx +45 -0
- package/site-templates/_base/content/en/PortfolioList/portfolio.mdx +169 -0
- package/site-templates/_base/content/en/Pricing/pricing.mdx +71 -62
- package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +17 -3
- package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
- package/site-templates/_base/content/en/UseCase/persona-1.mdx +69 -0
- package/site-templates/_base/content/en/UseCase/persona-2.mdx +69 -0
- package/site-templates/_base/content/en/UseCase/persona-3.mdx +69 -0
- package/site-templates/designs/minimalism/DESIGN.md +162 -0
- package/site-templates/designs/standard/DESIGN.md +167 -0
- package/site-templates/marketing-site/DESIGN.md +59 -40
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +376 -57
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +230 -90
- package/site-templates/marketing-site/ailk-template.json +1 -0
- package/site-templates/marketing-site-free/DESIGN.md +59 -40
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +323 -63
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +323 -113
- package/site-templates/marketing-site-free/ailk-template.json +3 -2
- package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +199 -0
- package/site-templates/minimalism-site/DESIGN.md +54 -40
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +173 -51
- package/site-templates/minimalism-site/ailk-template.json +3 -2
- package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +52 -0
- package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
- package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- package/site-templates/saas-product/DESIGN.md +59 -40
- package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +369 -0
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +302 -0
- package/site-templates/shapes/local-business-service/ailk-template.json +10 -0
- package/site-templates/{simple-service → shapes/local-business-service}/content/en/AboutPage/about.mdx +4 -4
- package/site-templates/shapes/local-business-service/content/en/HomePage/home.mdx +70 -0
- package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/local-business-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/shapes/local-business-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- package/site-templates/shapes/local-business-service/content/en/Service/first-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/Service/second-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/Service/third-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/ServicesList/services.mdx +61 -0
- package/site-templates/shapes/local-business-service/provenance.json +4 -0
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +362 -0
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +300 -0
- package/site-templates/shapes/organization-service/ailk-template.json +10 -0
- package/site-templates/shapes/organization-service/content/en/AboutPage/about.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/HomePage/home.mdx +85 -0
- package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/organization-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/shapes/organization-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- package/site-templates/shapes/organization-service/content/en/Service/first-engagement.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/Service/second-engagement.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/Service/third-engagement.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/ServicesList/services.mdx +72 -0
- package/site-templates/shapes/organization-service/provenance.json +4 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +369 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +299 -0
- package/site-templates/shapes/person-service/ailk-template.json +10 -0
- package/site-templates/shapes/person-service/content/_site.mdx +85 -0
- package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +39 -0
- package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +97 -0
- package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +169 -0
- package/site-templates/shapes/person-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +38 -0
- package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +38 -0
- package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +38 -0
- package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx +16 -16
- package/site-templates/shapes/person-service/provenance.json +4 -0
- package/templates/.claude/settings.json +15 -0
- package/templates/.claude/skills/README.md +10 -9
- package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
- package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
- package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
- package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
- package/templates/.claude/skills/add-page/references/page-types.md +115 -0
- package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
- package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
- package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
- package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
- package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
- package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
- package/templates/.claude/skills/fill-page/SKILL.md +180 -0
- package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
- package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
- package/templates/.claude/skills/setup-database/SKILL.md +156 -0
- package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +154 -0
- package/templates/.claude/skills/{provision-config → setup-deploy}/SKILL.md +73 -41
- package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +21 -30
- package/templates/.claude/skills/setup-deploy/references/runbook-template.md +204 -0
- package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
- package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
- package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
- package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
- package/templates/.github/workflows/ci.yml +5 -0
- package/templates/CLAUDE.md +8 -2
- package/templates/DESIGN.md +56 -44
- package/templates/README.md +116 -46
- package/templates/apps/api/.env.example +2 -1
- package/templates/apps/api/CLAUDE.md +3 -2
- package/templates/apps/api/package.json +1 -1
- package/templates/apps/api/src/config/__tests__/index.test.ts +146 -10
- package/templates/apps/api/src/config/index.ts +46 -14
- package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +30 -0
- package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +96 -0
- package/templates/apps/api/src/lib/lead-capture-store.ts +12 -0
- package/templates/apps/api/src/lib/lead-delivery.ts +52 -0
- package/templates/apps/api/src/lib/license-key-store.ts +45 -0
- package/templates/apps/api/src/lib/site.ts +5 -3
- package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
- package/templates/apps/api/src/middleware/auth.ts +9 -0
- package/templates/apps/api/src/openapi/spec.ts +63 -12
- package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
- package/templates/apps/api/src/routes/content/get-page.ts +86 -2
- package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +88 -0
- package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +100 -0
- package/templates/apps/api/src/routes/leads/index.ts +46 -1
- package/templates/apps/api/src/server.ts +13 -0
- package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +194 -0
- package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +124 -0
- package/templates/apps/api/src/services/lead-routing.ts +140 -30
- package/templates/apps/api/src/services/leads-inbox.ts +48 -11
- package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
- package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
- package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
- package/templates/apps/mcp/package.json +2 -1
- package/templates/apps/mcp/src/index.ts +7 -0
- package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
- package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
- package/templates/apps/mcp/src/tools/create_project.ts +21 -6
- package/templates/apps/web/__tests__/setup.ts +18 -0
- package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
- package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
- package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
- package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
- package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
- package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
- package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
- package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
- package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
- package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +67 -29
- package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +94 -11
- package/templates/apps/web/app/[locale]/contact/__tests__/contact-form-text.test.ts +32 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +129 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +228 -86
- package/templates/apps/web/app/[locale]/contact/contact-form-text.ts +50 -0
- package/templates/apps/web/app/[locale]/contact/contact.actions.ts +73 -20
- package/templates/apps/web/app/[locale]/contact/page.tsx +115 -7
- package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
- package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
- package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +64 -0
- package/templates/apps/web/app/[locale]/features/page.tsx +52 -0
- package/templates/apps/web/app/[locale]/glossary/page.tsx +50 -0
- package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
- package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/layout.tsx +146 -52
- package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +75 -0
- package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +163 -0
- package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +66 -0
- package/templates/apps/web/app/[locale]/newsletter/page.tsx +142 -0
- package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
- package/templates/apps/web/app/[locale]/portfolio/page.tsx +49 -0
- package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
- package/templates/apps/web/app/[locale]/{cancellation → purchase-policy}/page.tsx +15 -10
- package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
- package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
- package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
- package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
- package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
- package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +63 -0
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
- package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
- package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
- package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
- package/templates/apps/web/app/error-fallback.tsx +17 -45
- package/templates/apps/web/app/not-found.tsx +14 -38
- package/templates/apps/web/app/og/route.tsx +6 -0
- package/templates/apps/web/eslint.config.mjs +3 -0
- package/templates/apps/web/instrumentation.ts +14 -0
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
- package/templates/apps/web/lib/license-key-store.ts +52 -0
- package/templates/apps/web/lib/nav-config.ts +82 -18
- package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
- package/templates/apps/web/lib/site-brand.tsx +1 -1
- package/templates/apps/web/lib/site-chrome.ts +3 -3
- package/templates/apps/web/lib/site-identity.ts +148 -0
- package/templates/apps/web/lib/site-theme.ts +11 -0
- package/templates/apps/web/messages/en.json +78 -37
- package/templates/apps/web/public/android-chrome-192x192.png +0 -0
- package/templates/apps/web/public/android-chrome-512x512.png +0 -0
- package/templates/apps/web/public/apple-touch-icon.png +0 -0
- package/templates/apps/web/public/favicon-16x16.png +0 -0
- package/templates/apps/web/public/favicon-32x32.png +0 -0
- package/templates/apps/web/public/favicon.ico +0 -0
- package/templates/apps/web/public/favicon.svg +3 -3
- package/templates/apps/web/public/logomark.svg +6 -3
- package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
- package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
- package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
- package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
- package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
- package/templates/apps/web/public/logos/salessmyth.svg +4 -0
- package/templates/apps/web/public/site.webmanifest +4 -4
- package/templates/apps/web/public/wordmark-light.svg +4 -0
- package/templates/apps/web/public/wordmark.svg +3 -3
- package/templates/apps/web/security-headers.config.ts +5 -1
- package/templates/content/_site.mdx +25 -0
- package/templates/content/en/AboutPage/about.mdx +150 -144
- package/templates/content/en/BlogList/blog.mdx +126 -0
- package/templates/content/en/ContactPage/contact.mdx +21 -92
- package/templates/content/en/FAQPage/faq.mdx +86 -57
- package/templates/content/en/HomePage/home.mdx +268 -217
- package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +181 -0
- package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
- package/templates/database/CHANGELOG.md +14 -0
- package/templates/database/package.json +1 -1
- package/templates/package.json +3 -1
- package/templates/tools/lint-architecture.ts +315 -0
- package/templates/tools/tsconfig.json +14 -0
- package/versions.json +33 -33
- package/site-templates/simple-service/DESIGN.md +0 -148
- package/site-templates/simple-service/TEMPLATE-MANIFEST.json +0 -240
- package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -278
- package/site-templates/simple-service/ailk-template.json +0 -10
- package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -67
- package/site-templates/simple-service/content/en/FAQPage/faq.mdx +0 -56
- package/site-templates/simple-service/content/en/HomePage/home.mdx +0 -85
- package/site-templates/simple-service/content/en/Service/landscape-design.mdx +0 -40
- package/site-templates/simple-service/content/en/Service/lawn-maintenance.mdx +0 -40
- package/site-templates/simple-service/content/en/Service/seasonal-cleanup.mdx +0 -40
- package/site-templates/simple-service/provenance.json +0 -4
- package/templates/.claude/skills/add-schema/SKILL.md +0 -277
- package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
- package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
- package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
- package/templates/.claude/skills/provision-config/references/runbook-template.md +0 -248
- package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
- package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
- package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
- package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -150
- package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
- package/templates/apps/web/app/[locale]/shipping/page.tsx +0 -44
- package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
- package/templates/content/en/LandingPage/blog.mdx +0 -83
- package/templates/content/en/LandingPage/features.mdx +0 -103
- package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
- package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
- package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "BookCall"
|
|
3
|
+
slug: "book-call"
|
|
4
|
+
title: "{Book a call: what a visitor gets from it}"
|
|
5
|
+
description: "{One sentence on who the call is for and what they leave with}"
|
|
6
|
+
schema:
|
|
7
|
+
mainEntity:
|
|
8
|
+
"@type": "Offer"
|
|
9
|
+
name: "{Your call name}"
|
|
10
|
+
price: 0
|
|
11
|
+
priceCurrency: "USD"
|
|
12
|
+
sections:
|
|
13
|
+
[
|
|
14
|
+
{
|
|
15
|
+
"id": "hero",
|
|
16
|
+
"type": "hero",
|
|
17
|
+
"data":
|
|
18
|
+
{
|
|
19
|
+
"eyebrow": "Book a call",
|
|
20
|
+
"headline": "{Book a call: what a visitor gets from it}",
|
|
21
|
+
"subheadline": "{One sentence on who the call is for and what they leave with}",
|
|
22
|
+
"primaryCta": { "label": "Get in touch", "href": "/contact" },
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "what-happens-on-the-call",
|
|
27
|
+
"type": "items",
|
|
28
|
+
"data":
|
|
29
|
+
{
|
|
30
|
+
"headline": "What happens on the call?",
|
|
31
|
+
"columns": 3,
|
|
32
|
+
"items":
|
|
33
|
+
[
|
|
34
|
+
{
|
|
35
|
+
"title": "{The first thing you cover}",
|
|
36
|
+
"description": "{One or two sentences on what the visitor learns or decides here}",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"title": "{The second thing you cover}",
|
|
40
|
+
"description": "{One or two sentences on what the visitor learns or decides here}",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "{The next step you agree}",
|
|
44
|
+
"description": "{One or two sentences on what happens after the call}",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
]
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
{/* Rendered from frontmatter `sections[]` by the /book-a-call route. The call to action sends visitors to your contact page; a template that carries the scheduling module overrides this file to point it at the /meet booker. The `schema:` Offer is the page's JSON-LD main entity — a free call. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "Feature"
|
|
3
|
+
slug: "feature-1"
|
|
4
|
+
title: "{Feature 1: what it lets the customer do}"
|
|
5
|
+
description: "{One sentence on the result this feature gives and who needs it}"
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "hero",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"eyebrow": "Features",
|
|
14
|
+
"headline": "{Feature 1: what it lets the customer do}",
|
|
15
|
+
"subheadline": "{One sentence on the result this feature gives and who needs it}",
|
|
16
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
|
+
"secondaryCta":
|
|
18
|
+
{
|
|
19
|
+
"label": "{Secondary CTA}",
|
|
20
|
+
"href": "/pricing",
|
|
21
|
+
"variant": "outline",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "detail",
|
|
27
|
+
"type": "feature",
|
|
28
|
+
"data":
|
|
29
|
+
{
|
|
30
|
+
"headline": "{How feature 1 works}",
|
|
31
|
+
"description": "{Two or three sentences on how it works and what changes for the reader}",
|
|
32
|
+
"features":
|
|
33
|
+
[
|
|
34
|
+
{
|
|
35
|
+
"title": "{First point}",
|
|
36
|
+
"description": "{One sentence that makes the point concrete}",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"title": "{Second point}",
|
|
40
|
+
"description": "{One sentence that makes the point concrete}",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "{Third point}",
|
|
44
|
+
"description": "{One sentence that makes the point concrete}",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "cta",
|
|
51
|
+
"type": "cta",
|
|
52
|
+
"data":
|
|
53
|
+
{
|
|
54
|
+
"variant": "box",
|
|
55
|
+
"headline": "{See feature 1 on your own data}",
|
|
56
|
+
"description": "{One sentence on what happens when they get in touch}",
|
|
57
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
58
|
+
"secondaryCta":
|
|
59
|
+
{
|
|
60
|
+
"label": "{Secondary CTA}",
|
|
61
|
+
"href": "/pricing",
|
|
62
|
+
"variant": "outline",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
]
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
{/* Rendered from frontmatter `sections[]`. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "Feature"
|
|
3
|
+
slug: "feature-2"
|
|
4
|
+
title: "{Feature 2: what it lets the customer do}"
|
|
5
|
+
description: "{One sentence on the result this feature gives and who needs it}"
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "hero",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"eyebrow": "Features",
|
|
14
|
+
"headline": "{Feature 2: what it lets the customer do}",
|
|
15
|
+
"subheadline": "{One sentence on the result this feature gives and who needs it}",
|
|
16
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
|
+
"secondaryCta":
|
|
18
|
+
{
|
|
19
|
+
"label": "{Secondary CTA}",
|
|
20
|
+
"href": "/pricing",
|
|
21
|
+
"variant": "outline",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "detail",
|
|
27
|
+
"type": "feature",
|
|
28
|
+
"data":
|
|
29
|
+
{
|
|
30
|
+
"headline": "{How feature 2 works}",
|
|
31
|
+
"description": "{Two or three sentences on how it works and what changes for the reader}",
|
|
32
|
+
"features":
|
|
33
|
+
[
|
|
34
|
+
{
|
|
35
|
+
"title": "{First point}",
|
|
36
|
+
"description": "{One sentence that makes the point concrete}",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"title": "{Second point}",
|
|
40
|
+
"description": "{One sentence that makes the point concrete}",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "{Third point}",
|
|
44
|
+
"description": "{One sentence that makes the point concrete}",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "cta",
|
|
51
|
+
"type": "cta",
|
|
52
|
+
"data":
|
|
53
|
+
{
|
|
54
|
+
"variant": "box",
|
|
55
|
+
"headline": "{See feature 2 on your own data}",
|
|
56
|
+
"description": "{One sentence on what happens when they get in touch}",
|
|
57
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
58
|
+
"secondaryCta":
|
|
59
|
+
{
|
|
60
|
+
"label": "{Secondary CTA}",
|
|
61
|
+
"href": "/pricing",
|
|
62
|
+
"variant": "outline",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
]
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
{/* Rendered from frontmatter `sections[]`. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "Feature"
|
|
3
|
+
slug: "feature-3"
|
|
4
|
+
title: "{Feature 3: what it lets the customer do}"
|
|
5
|
+
description: "{One sentence on the result this feature gives and who needs it}"
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "hero",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"eyebrow": "Features",
|
|
14
|
+
"headline": "{Feature 3: what it lets the customer do}",
|
|
15
|
+
"subheadline": "{One sentence on the result this feature gives and who needs it}",
|
|
16
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
|
+
"secondaryCta":
|
|
18
|
+
{
|
|
19
|
+
"label": "{Secondary CTA}",
|
|
20
|
+
"href": "/pricing",
|
|
21
|
+
"variant": "outline",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "detail",
|
|
27
|
+
"type": "feature",
|
|
28
|
+
"data":
|
|
29
|
+
{
|
|
30
|
+
"headline": "{How feature 3 works}",
|
|
31
|
+
"description": "{Two or three sentences on how it works and what changes for the reader}",
|
|
32
|
+
"features":
|
|
33
|
+
[
|
|
34
|
+
{
|
|
35
|
+
"title": "{First point}",
|
|
36
|
+
"description": "{One sentence that makes the point concrete}",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"title": "{Second point}",
|
|
40
|
+
"description": "{One sentence that makes the point concrete}",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "{Third point}",
|
|
44
|
+
"description": "{One sentence that makes the point concrete}",
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "cta",
|
|
51
|
+
"type": "cta",
|
|
52
|
+
"data":
|
|
53
|
+
{
|
|
54
|
+
"variant": "box",
|
|
55
|
+
"headline": "{See feature 3 on your own data}",
|
|
56
|
+
"description": "{One sentence on what happens when they get in touch}",
|
|
57
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
58
|
+
"secondaryCta":
|
|
59
|
+
{
|
|
60
|
+
"label": "{Secondary CTA}",
|
|
61
|
+
"href": "/pricing",
|
|
62
|
+
"variant": "outline",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
]
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
{/* Rendered from frontmatter `sections[]`. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "FeaturesList"
|
|
3
|
+
slug: "features"
|
|
4
|
+
title: "{Features: what your product does}"
|
|
5
|
+
description: "{One sentence on the capabilities your product gives customers}"
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "hero",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"eyebrow": "Features",
|
|
14
|
+
"headline": "{Features: what your product does}",
|
|
15
|
+
"subheadline": "{One sentence on the capabilities your product gives customers}",
|
|
16
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
|
+
"secondaryCta":
|
|
18
|
+
{
|
|
19
|
+
"label": "{Secondary CTA}",
|
|
20
|
+
"href": "/pricing",
|
|
21
|
+
"variant": "outline",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "list",
|
|
27
|
+
"type": "items",
|
|
28
|
+
"data":
|
|
29
|
+
{
|
|
30
|
+
"headline": "{Everything your product does for the customer}",
|
|
31
|
+
"description": "{One sentence that helps a visitor find the feature they came for}",
|
|
32
|
+
"columns": 3,
|
|
33
|
+
"items":
|
|
34
|
+
[
|
|
35
|
+
{
|
|
36
|
+
"title": "{Feature 1: what it lets the customer do}",
|
|
37
|
+
"description": "{One sentence on the result this feature gives and who needs it}",
|
|
38
|
+
"link":
|
|
39
|
+
{
|
|
40
|
+
"label": "Read about the feature",
|
|
41
|
+
"href": "/features/feature-1",
|
|
42
|
+
"variant": "link",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"title": "{Feature 2: what it lets the customer do}",
|
|
47
|
+
"description": "{One sentence on the result this feature gives and who needs it}",
|
|
48
|
+
"link":
|
|
49
|
+
{
|
|
50
|
+
"label": "Read about the feature",
|
|
51
|
+
"href": "/features/feature-2",
|
|
52
|
+
"variant": "link",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"title": "{Feature 3: what it lets the customer do}",
|
|
57
|
+
"description": "{One sentence on the result this feature gives and who needs it}",
|
|
58
|
+
"link":
|
|
59
|
+
{
|
|
60
|
+
"label": "Read about the feature",
|
|
61
|
+
"href": "/features/feature-3",
|
|
62
|
+
"variant": "link",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "cta",
|
|
70
|
+
"type": "cta",
|
|
71
|
+
"data":
|
|
72
|
+
{
|
|
73
|
+
"variant": "box",
|
|
74
|
+
"headline": "{Switch to your product in time amount or less}",
|
|
75
|
+
"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.}",
|
|
76
|
+
"checklist":
|
|
77
|
+
["No credit card required", "Cancel any time", "Live chat support"],
|
|
78
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
79
|
+
"secondaryCta":
|
|
80
|
+
{
|
|
81
|
+
"label": "{Secondary CTA}",
|
|
82
|
+
"href": "/pricing",
|
|
83
|
+
"variant": "outline",
|
|
84
|
+
},
|
|
85
|
+
"closingLine": "{Social Proof goes here}",
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
]
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
{/* Rendered from frontmatter `sections[]`. The three cards link the detail pages, and their titles become the page's JSON-LD ItemList, so keep each card's title equal to its page's title. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "GlossaryList"
|
|
3
|
+
slug: "glossary"
|
|
4
|
+
title: "{Glossary: the terms your customers look up}"
|
|
5
|
+
description: "{One sentence on the subject these terms cover and who they help}"
|
|
6
|
+
sections:
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
"id": "hero",
|
|
10
|
+
"type": "hero",
|
|
11
|
+
"data":
|
|
12
|
+
{
|
|
13
|
+
"eyebrow": "Glossary",
|
|
14
|
+
"headline": "{Glossary: the terms your customers look up}",
|
|
15
|
+
"subheadline": "{One sentence on the subject these terms cover and who they help}",
|
|
16
|
+
"primaryCta": { "label": "{Primary CTA}", "href": "/contact" },
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "glossary-index",
|
|
21
|
+
"type": "glossary-index",
|
|
22
|
+
"data":
|
|
23
|
+
{
|
|
24
|
+
"headline": "{Terms, A to Z}",
|
|
25
|
+
"description": "{One sentence on how to use this list}",
|
|
26
|
+
"variant": "columns",
|
|
27
|
+
"terms":
|
|
28
|
+
[
|
|
29
|
+
{
|
|
30
|
+
"term": "{Term 1}",
|
|
31
|
+
"slug": "term-1",
|
|
32
|
+
"definition": "{One plain sentence that defines this term the way your customers would say it}",
|
|
33
|
+
"letter": "T",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"term": "{Term 2}",
|
|
37
|
+
"slug": "term-2",
|
|
38
|
+
"definition": "{One plain sentence that defines this term the way your customers would say it}",
|
|
39
|
+
"letter": "T",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"term": "{Term 3}",
|
|
43
|
+
"slug": "term-3",
|
|
44
|
+
"definition": "{One plain sentence that defines this term the way your customers would say it}",
|
|
45
|
+
"letter": "T",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"term": "{Term 4}",
|
|
49
|
+
"slug": "term-4",
|
|
50
|
+
"definition": "{One plain sentence that defines this term the way your customers would say it}",
|
|
51
|
+
"letter": "T",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"term": "{Term 5}",
|
|
55
|
+
"slug": "term-5",
|
|
56
|
+
"definition": "{One plain sentence that defines this term the way your customers would say it}",
|
|
57
|
+
"letter": "T",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
]
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
{/* Rendered from frontmatter `sections[]` by the /glossary route. Each `glossary-index` term becomes a DefinedTerm in the page's JSON-LD DefinedTermSet, so write the definition an agent should quote. Placeholder copy — replace every {brace} with your own words, and add or remove terms, before you launch. */}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "NewsletterSignup"
|
|
3
|
+
slug: "newsletter"
|
|
4
|
+
title: "{Newsletter: what subscribers get and how often}"
|
|
5
|
+
description: "{One sentence on what this newsletter covers and who it is for}"
|
|
6
|
+
schema:
|
|
7
|
+
mainEntity:
|
|
8
|
+
"@type": "Offer"
|
|
9
|
+
name: "{Your newsletter name}"
|
|
10
|
+
price: 0
|
|
11
|
+
priceCurrency: "USD"
|
|
12
|
+
sections:
|
|
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
|
+
{
|
|
26
|
+
"id": "signup",
|
|
27
|
+
"type": "newsletter",
|
|
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
|
+
},
|
|
63
|
+
},
|
|
64
|
+
]
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
{/* Rendered from frontmatter `sections[]` by the /newsletter route. The form posts the address to lead capture (`/v1/leads/subscribe`), which records a subscriber and sends no verification email. The `schema:` Offer is the page's JSON-LD main entity — a free subscription. Placeholder copy — replace every {brace} with your own words before you launch. */}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "PortfolioItem"
|
|
3
|
+
slug: "sample-four"
|
|
4
|
+
title: "{Example four}: before and after"
|
|
5
|
+
description: "{One line on what changed and why it mattered}"
|
|
6
|
+
publishedAt: "2026-01-01"
|
|
7
|
+
sections:
|
|
8
|
+
[
|
|
9
|
+
{
|
|
10
|
+
"id": "compare",
|
|
11
|
+
"type": "before-after",
|
|
12
|
+
"data":
|
|
13
|
+
{
|
|
14
|
+
"header":
|
|
15
|
+
{
|
|
16
|
+
"headline": "{Example four}: before and after",
|
|
17
|
+
"tagline": "{One line on what changed and why it mattered}",
|
|
18
|
+
},
|
|
19
|
+
"pager":
|
|
20
|
+
{
|
|
21
|
+
"prev":
|
|
22
|
+
{
|
|
23
|
+
"label": "{Example three}",
|
|
24
|
+
"href": "/portfolio/sample-three",
|
|
25
|
+
},
|
|
26
|
+
"next":
|
|
27
|
+
{ "label": "{Example one}", "href": "/portfolio/sample-one" },
|
|
28
|
+
},
|
|
29
|
+
"before":
|
|
30
|
+
{
|
|
31
|
+
"label": "Before",
|
|
32
|
+
"icon": "x-circle",
|
|
33
|
+
"rows":
|
|
34
|
+
[
|
|
35
|
+
{
|
|
36
|
+
"title": "{Content}",
|
|
37
|
+
"body": "{One or two sentences on the before content \u2014 what it says and how it reads}",
|
|
38
|
+
"icon": "file-text",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"title": "{Structure}",
|
|
42
|
+
"body": "{One or two sentences on how the before is organized}",
|
|
43
|
+
"icon": "list",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"title": "{Examples}",
|
|
47
|
+
"body": "{One or two sentences on the proof the before offers}",
|
|
48
|
+
"icon": "link",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"title": "{Conclusion}",
|
|
52
|
+
"body": "{One or two sentences on where the before leaves the reader}",
|
|
53
|
+
"icon": "more-horizontal",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
"verdict": "{One sentence: why the before fell short}",
|
|
57
|
+
},
|
|
58
|
+
"after":
|
|
59
|
+
{
|
|
60
|
+
"label": "After",
|
|
61
|
+
"icon": "check-circle",
|
|
62
|
+
"rows":
|
|
63
|
+
[
|
|
64
|
+
{
|
|
65
|
+
"title": "{Content}",
|
|
66
|
+
"body": "{One or two sentences on the after content \u2014 what it says and how it reads \u2014 with the **strongest phrase in bold**}",
|
|
67
|
+
"icon": "target",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"title": "{Structure}",
|
|
71
|
+
"body": "{One or two sentences on how the after is organized \u2014 with the **strongest phrase in bold**}",
|
|
72
|
+
"icon": "list",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"title": "{Examples}",
|
|
76
|
+
"body": "{One or two sentences on the proof the after offers \u2014 with the **strongest phrase in bold**}",
|
|
77
|
+
"icon": "star",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"title": "{Conclusion}",
|
|
81
|
+
"body": "{One or two sentences on where the after leaves the reader \u2014 with the **strongest phrase in bold**}",
|
|
82
|
+
"icon": "user",
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
"verdict": "{One sentence: what the after achieves}",
|
|
86
|
+
},
|
|
87
|
+
"catalyst":
|
|
88
|
+
{
|
|
89
|
+
"title": "{What changed it}",
|
|
90
|
+
"subtitle": "{The method, in a few words}",
|
|
91
|
+
"steps":
|
|
92
|
+
[
|
|
93
|
+
{ "label": "{Step one}", "marker": "1" },
|
|
94
|
+
{ "label": "{Step two}", "marker": "2" },
|
|
95
|
+
{ "label": "{Step three}", "marker": "3" },
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
"takeaway":
|
|
99
|
+
{
|
|
100
|
+
"body": "{The one thing a reader should remember \u2014 with the **part that matters most in bold**.}",
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
]
|
|
105
|
+
---
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "PortfolioItem"
|
|
3
|
+
slug: "sample-one"
|
|
4
|
+
title: "{Example one}: before and after"
|
|
5
|
+
description: "{One line on what changed and why it mattered}"
|
|
6
|
+
publishedAt: "2026-01-01"
|
|
7
|
+
sections:
|
|
8
|
+
[
|
|
9
|
+
{
|
|
10
|
+
"id": "compare",
|
|
11
|
+
"type": "before-after",
|
|
12
|
+
"data":
|
|
13
|
+
{
|
|
14
|
+
"header":
|
|
15
|
+
{
|
|
16
|
+
"headline": "{Example one}: before and after",
|
|
17
|
+
"tagline": "{One line on what changed and why it mattered}",
|
|
18
|
+
},
|
|
19
|
+
"pager":
|
|
20
|
+
{
|
|
21
|
+
"prev":
|
|
22
|
+
{
|
|
23
|
+
"label": "{Example four}",
|
|
24
|
+
"href": "/portfolio/sample-four",
|
|
25
|
+
},
|
|
26
|
+
"next":
|
|
27
|
+
{ "label": "{Example two}", "href": "/portfolio/sample-two" },
|
|
28
|
+
},
|
|
29
|
+
"before": { "label": "Before", "icon": "x-circle" },
|
|
30
|
+
"after": { "label": "After", "icon": "check-circle" },
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
]
|
|
34
|
+
---
|