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.
Files changed (324) hide show
  1. package/README.md +87 -14
  2. package/component-catalog.json +735 -95
  3. package/component-catalog.md +13 -7
  4. package/dist/add-module-core.d.ts +22 -0
  5. package/dist/add-module-core.js +50 -0
  6. package/dist/add-module.d.ts +89 -0
  7. package/dist/add-module.js +334 -0
  8. package/dist/category-profile.d.ts +126 -0
  9. package/dist/category-profile.js +262 -0
  10. package/dist/cli.js +89 -29
  11. package/dist/index.d.ts +4 -2
  12. package/dist/index.js +6 -1
  13. package/dist/lib/extract-module-bundle.d.ts +56 -1
  14. package/dist/lib/extract-module-bundle.js +170 -14
  15. package/dist/lib/license-key-files.d.ts +15 -0
  16. package/dist/lib/license-key-files.js +102 -0
  17. package/dist/lib/module-license-gate.d.ts +79 -0
  18. package/dist/lib/module-license-gate.js +160 -12
  19. package/dist/lib/module-tier.d.ts +45 -16
  20. package/dist/lib/module-tier.js +76 -0
  21. package/dist/lib/pro-callout.d.ts +16 -10
  22. package/dist/lib/pro-callout.js +34 -3
  23. package/dist/license-set.d.ts +34 -0
  24. package/dist/license-set.js +194 -0
  25. package/dist/module-architecture.d.ts +20 -0
  26. package/dist/module-architecture.js +77 -19
  27. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  28. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  29. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  30. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  31. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  32. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  33. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  34. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  35. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  36. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  37. package/dist/parse-args.d.ts +85 -10
  38. package/dist/parse-args.js +227 -15
  39. package/dist/programmatic.d.ts +81 -5
  40. package/dist/programmatic.js +291 -32
  41. package/dist/site-chrome.d.ts +18 -7
  42. package/dist/site-chrome.js +32 -14
  43. package/dist/site-roster.d.ts +127 -0
  44. package/dist/site-roster.js +499 -0
  45. package/dist/starter-grid.d.ts +216 -0
  46. package/dist/starter-grid.js +449 -0
  47. package/dist/surfaces.d.ts +20 -7
  48. package/dist/surfaces.js +204 -24
  49. package/dist/sync-routes.d.ts +9 -0
  50. package/dist/sync-routes.js +2 -2
  51. package/dist/template-manifest.d.ts +94 -19
  52. package/dist/template-manifest.js +170 -289
  53. package/dist/template-names.d.ts +14 -12
  54. package/dist/template-names.js +13 -17
  55. package/package.json +6 -4
  56. package/site-templates/_base/content/en/BookCall/book-call.mdx +52 -0
  57. package/site-templates/_base/content/en/Feature/feature-1.mdx +69 -0
  58. package/site-templates/_base/content/en/Feature/feature-2.mdx +69 -0
  59. package/site-templates/_base/content/en/Feature/feature-3.mdx +69 -0
  60. package/site-templates/_base/content/en/FeaturesList/features.mdx +91 -0
  61. package/site-templates/_base/content/en/GlossaryList/glossary.mdx +65 -0
  62. package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +67 -0
  63. package/site-templates/_base/content/en/PortfolioItem/sample-four.mdx +105 -0
  64. package/site-templates/_base/content/en/PortfolioItem/sample-one.mdx +34 -0
  65. package/site-templates/_base/content/en/PortfolioItem/sample-three.mdx +94 -0
  66. package/site-templates/_base/content/en/PortfolioItem/sample-two.mdx +45 -0
  67. package/site-templates/_base/content/en/PortfolioList/portfolio.mdx +169 -0
  68. package/site-templates/_base/content/en/Pricing/pricing.mdx +71 -62
  69. package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +17 -3
  70. package/site-templates/_base/content/en/TermsPage/terms.mdx +2 -3
  71. package/site-templates/_base/content/en/UseCase/persona-1.mdx +69 -0
  72. package/site-templates/_base/content/en/UseCase/persona-2.mdx +69 -0
  73. package/site-templates/_base/content/en/UseCase/persona-3.mdx +69 -0
  74. package/site-templates/designs/minimalism/DESIGN.md +162 -0
  75. package/site-templates/designs/standard/DESIGN.md +167 -0
  76. package/site-templates/marketing-site/DESIGN.md +59 -40
  77. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +376 -57
  78. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +230 -90
  79. package/site-templates/marketing-site/ailk-template.json +1 -0
  80. package/site-templates/marketing-site-free/DESIGN.md +59 -40
  81. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +323 -63
  82. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +323 -113
  83. package/site-templates/marketing-site-free/ailk-template.json +3 -2
  84. package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +59 -0
  85. package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +199 -0
  86. package/site-templates/minimalism-site/DESIGN.md +54 -40
  87. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +246 -19
  88. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +173 -51
  89. package/site-templates/minimalism-site/ailk-template.json +3 -2
  90. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +52 -0
  91. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +3 -37
  92. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  93. package/site-templates/saas-product/DESIGN.md +59 -40
  94. package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
  95. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +369 -0
  96. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +302 -0
  97. package/site-templates/shapes/local-business-service/ailk-template.json +10 -0
  98. package/site-templates/{simple-service → shapes/local-business-service}/content/en/AboutPage/about.mdx +4 -4
  99. package/site-templates/shapes/local-business-service/content/en/HomePage/home.mdx +70 -0
  100. package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  101. package/site-templates/shapes/local-business-service/content/en/PortfolioList/portfolio.mdx +171 -0
  102. package/site-templates/shapes/local-business-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  103. package/site-templates/shapes/local-business-service/content/en/Service/first-job.mdx +39 -0
  104. package/site-templates/shapes/local-business-service/content/en/Service/second-job.mdx +39 -0
  105. package/site-templates/shapes/local-business-service/content/en/Service/third-job.mdx +39 -0
  106. package/site-templates/shapes/local-business-service/content/en/ServicesList/services.mdx +61 -0
  107. package/site-templates/shapes/local-business-service/provenance.json +4 -0
  108. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +362 -0
  109. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +300 -0
  110. package/site-templates/shapes/organization-service/ailk-template.json +10 -0
  111. package/site-templates/shapes/organization-service/content/en/AboutPage/about.mdx +38 -0
  112. package/site-templates/shapes/organization-service/content/en/HomePage/home.mdx +85 -0
  113. package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  114. package/site-templates/shapes/organization-service/content/en/PortfolioList/portfolio.mdx +171 -0
  115. package/site-templates/shapes/organization-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  116. package/site-templates/shapes/organization-service/content/en/Service/first-engagement.mdx +38 -0
  117. package/site-templates/shapes/organization-service/content/en/Service/second-engagement.mdx +38 -0
  118. package/site-templates/shapes/organization-service/content/en/Service/third-engagement.mdx +38 -0
  119. package/site-templates/shapes/organization-service/content/en/ServicesList/services.mdx +72 -0
  120. package/site-templates/shapes/organization-service/provenance.json +4 -0
  121. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +369 -0
  122. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +299 -0
  123. package/site-templates/shapes/person-service/ailk-template.json +10 -0
  124. package/site-templates/shapes/person-service/content/_site.mdx +85 -0
  125. package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +39 -0
  126. package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +97 -0
  127. package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
  128. package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +169 -0
  129. package/site-templates/shapes/person-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
  130. package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +38 -0
  131. package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +38 -0
  132. package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +38 -0
  133. package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx +16 -16
  134. package/site-templates/shapes/person-service/provenance.json +4 -0
  135. package/templates/.claude/settings.json +15 -0
  136. package/templates/.claude/skills/README.md +10 -9
  137. package/templates/.claude/skills/{scaffold-auth → add-auth}/SKILL.md +7 -7
  138. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/env-vars.md +2 -2
  139. package/templates/.claude/skills/{scaffold-auth → add-auth}/references/oauth-app-setup.md +3 -3
  140. package/templates/.claude/skills/{scaffold-page → add-page}/SKILL.md +76 -62
  141. package/templates/.claude/skills/add-page/references/page-types.md +115 -0
  142. package/templates/.claude/skills/{scaffold-page → add-page}/templates/content.mdx.tmpl +4 -4
  143. package/templates/.claude/skills/{scaffold-page → add-page}/templates/route.tsx.tmpl +1 -1
  144. package/templates/.claude/skills/{audit-site → check-site}/SKILL.md +16 -17
  145. package/templates/.claude/skills/{audit-site → check-site}/references/common-errors.md +3 -3
  146. package/templates/.claude/skills/{audit-site → check-site}/references/findings-glossary.md +16 -14
  147. package/templates/.claude/skills/{audit-site → check-site}/references/severity-levels.md +1 -1
  148. package/templates/.claude/skills/fill-page/SKILL.md +180 -0
  149. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +80 -0
  150. package/templates/.claude/skills/fill-page/references/section-sources.md +41 -0
  151. package/templates/.claude/skills/setup-database/SKILL.md +156 -0
  152. package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +154 -0
  153. package/templates/.claude/skills/{provision-config → setup-deploy}/SKILL.md +73 -41
  154. package/templates/.claude/skills/{provision-config → setup-deploy}/references/env-vars-template.md +21 -30
  155. package/templates/.claude/skills/setup-deploy/references/runbook-template.md +204 -0
  156. package/templates/.claude/skills/{provision-config → setup-deploy}/references/vercel-json-template.md +1 -1
  157. package/templates/.claude/skills/upgrade-plan/SKILL.md +117 -0
  158. package/templates/.claude/skills/upgrade-plan/references/options.md +24 -0
  159. package/templates/.claude/skills/upgrade-plan/scripts/upgrade-plan.ts +527 -0
  160. package/templates/.github/workflows/ci.yml +5 -0
  161. package/templates/CLAUDE.md +8 -2
  162. package/templates/DESIGN.md +56 -44
  163. package/templates/README.md +116 -46
  164. package/templates/apps/api/.env.example +2 -1
  165. package/templates/apps/api/CLAUDE.md +3 -2
  166. package/templates/apps/api/package.json +1 -1
  167. package/templates/apps/api/src/config/__tests__/index.test.ts +146 -10
  168. package/templates/apps/api/src/config/index.ts +46 -14
  169. package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +30 -0
  170. package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +96 -0
  171. package/templates/apps/api/src/lib/lead-capture-store.ts +12 -0
  172. package/templates/apps/api/src/lib/lead-delivery.ts +52 -0
  173. package/templates/apps/api/src/lib/license-key-store.ts +45 -0
  174. package/templates/apps/api/src/lib/site.ts +5 -3
  175. package/templates/apps/api/src/middleware/__tests__/auth.database-not-configured.test.ts +97 -0
  176. package/templates/apps/api/src/middleware/auth.ts +9 -0
  177. package/templates/apps/api/src/openapi/spec.ts +63 -12
  178. package/templates/apps/api/src/routes/content/__tests__/get-page.test.ts +127 -5
  179. package/templates/apps/api/src/routes/content/get-page.ts +86 -2
  180. package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +88 -0
  181. package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +100 -0
  182. package/templates/apps/api/src/routes/leads/index.ts +46 -1
  183. package/templates/apps/api/src/server.ts +13 -0
  184. package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +194 -0
  185. package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +124 -0
  186. package/templates/apps/api/src/services/lead-routing.ts +140 -30
  187. package/templates/apps/api/src/services/leads-inbox.ts +48 -11
  188. package/templates/apps/mcp/__tests__/audit-single-page.test.ts +75 -1
  189. package/templates/apps/mcp/__tests__/lib/audit-single-page-readiness-scan.test.ts +57 -9
  190. package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
  191. package/templates/apps/mcp/package.json +2 -1
  192. package/templates/apps/mcp/src/index.ts +7 -0
  193. package/templates/apps/mcp/src/lib/audit-single-page.ts +36 -10
  194. package/templates/apps/mcp/src/lib/license-key-store.ts +45 -0
  195. package/templates/apps/mcp/src/tools/create_project.ts +21 -6
  196. package/templates/apps/web/__tests__/setup.ts +18 -0
  197. package/templates/apps/web/app/[locale]/(auth)/forgot-password/forgot-password-card.tsx +10 -2
  198. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +2 -2
  199. package/templates/apps/web/app/[locale]/(auth)/reset-password/reset-password-card.tsx +10 -4
  200. package/templates/apps/web/app/[locale]/(auth)/sign-in/sign-in-card.tsx +22 -14
  201. package/templates/apps/web/app/[locale]/(auth)/sign-up/sign-up-card.tsx +26 -18
  202. package/templates/apps/web/app/[locale]/(authed)/account/page.tsx +12 -4
  203. package/templates/apps/web/app/[locale]/[slug]/__tests__/page.test.tsx +35 -4
  204. package/templates/apps/web/app/[locale]/[slug]/page.tsx +49 -9
  205. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +50 -0
  206. package/templates/apps/web/app/[locale]/careers/__tests__/page-renderer-migration.test.tsx +3 -3
  207. package/templates/apps/web/app/[locale]/case-studies/__tests__/page-renderer-migration.test.tsx +3 -3
  208. package/templates/apps/web/app/[locale]/clients/__tests__/page-renderer-migration.test.tsx +3 -4
  209. package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +67 -29
  210. package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +94 -11
  211. package/templates/apps/web/app/[locale]/contact/__tests__/contact-form-text.test.ts +32 -0
  212. package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +129 -0
  213. package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +228 -86
  214. package/templates/apps/web/app/[locale]/contact/contact-form-text.ts +50 -0
  215. package/templates/apps/web/app/[locale]/contact/contact.actions.ts +73 -20
  216. package/templates/apps/web/app/[locale]/contact/page.tsx +115 -7
  217. package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
  218. package/templates/apps/web/app/[locale]/courses/__tests__/page-renderer-migration.test.tsx +3 -3
  219. package/templates/apps/web/app/[locale]/downloads/__tests__/page-renderer-migration.test.tsx +3 -4
  220. package/templates/apps/web/app/[locale]/events/__tests__/page-renderer-migration.test.tsx +4 -5
  221. package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +64 -0
  222. package/templates/apps/web/app/[locale]/features/page.tsx +52 -0
  223. package/templates/apps/web/app/[locale]/glossary/page.tsx +50 -0
  224. package/templates/apps/web/app/[locale]/how-to/__tests__/page-renderer-migration.test.tsx +1 -1
  225. package/templates/apps/web/app/[locale]/how-to/page.tsx +25 -15
  226. package/templates/apps/web/app/[locale]/integrations/__tests__/page-renderer-migration.test.tsx +3 -3
  227. package/templates/apps/web/app/[locale]/layout.tsx +146 -52
  228. package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +75 -0
  229. package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +163 -0
  230. package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +66 -0
  231. package/templates/apps/web/app/[locale]/newsletter/page.tsx +142 -0
  232. package/templates/apps/web/app/[locale]/partners/__tests__/page-renderer-migration.test.tsx +3 -3
  233. package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
  234. package/templates/apps/web/app/[locale]/portfolio/page.tsx +49 -0
  235. package/templates/apps/web/app/[locale]/products/__tests__/page-renderer-migration.test.tsx +3 -3
  236. package/templates/apps/web/app/[locale]/projects/__tests__/page-renderer-migration.test.tsx +4 -5
  237. package/templates/apps/web/app/[locale]/{cancellation → purchase-policy}/page.tsx +15 -10
  238. package/templates/apps/web/app/[locale]/resources/__tests__/page-renderer-migration.test.tsx +4 -5
  239. package/templates/apps/web/app/[locale]/services/__tests__/page-renderer-migration.test.tsx +3 -3
  240. package/templates/apps/web/app/[locale]/software/[slug]/page.tsx +14 -1
  241. package/templates/apps/web/app/[locale]/software/__tests__/page-renderer-migration.test.tsx +1 -1
  242. package/templates/apps/web/app/[locale]/software/page.tsx +25 -15
  243. package/templates/apps/web/app/[locale]/tech-articles/__tests__/page-renderer-migration.test.tsx +1 -1
  244. package/templates/apps/web/app/[locale]/tech-articles/page.tsx +25 -15
  245. package/templates/apps/web/app/[locale]/testimonials/__tests__/page-renderer-migration.test.tsx +3 -4
  246. package/templates/apps/web/app/[locale]/use-cases/[slug]/page.tsx +63 -0
  247. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +3 -4
  248. package/templates/apps/web/app/[locale]/use-cases/page.tsx +15 -2
  249. package/templates/apps/web/app/[locale]/whitepapers/__tests__/page-renderer-migration.test.tsx +1 -1
  250. package/templates/apps/web/app/[locale]/whitepapers/page.tsx +25 -15
  251. package/templates/apps/web/app/error-fallback.tsx +17 -45
  252. package/templates/apps/web/app/not-found.tsx +14 -38
  253. package/templates/apps/web/app/og/route.tsx +6 -0
  254. package/templates/apps/web/eslint.config.mjs +3 -0
  255. package/templates/apps/web/instrumentation.ts +14 -0
  256. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +38 -0
  257. package/templates/apps/web/lib/license-key-store.ts +52 -0
  258. package/templates/apps/web/lib/nav-config.ts +82 -18
  259. package/templates/apps/web/lib/prisma-for-auth.ts +9 -6
  260. package/templates/apps/web/lib/site-brand.tsx +1 -1
  261. package/templates/apps/web/lib/site-chrome.ts +3 -3
  262. package/templates/apps/web/lib/site-identity.ts +148 -0
  263. package/templates/apps/web/lib/site-theme.ts +11 -0
  264. package/templates/apps/web/messages/en.json +78 -37
  265. package/templates/apps/web/public/android-chrome-192x192.png +0 -0
  266. package/templates/apps/web/public/android-chrome-512x512.png +0 -0
  267. package/templates/apps/web/public/apple-touch-icon.png +0 -0
  268. package/templates/apps/web/public/favicon-16x16.png +0 -0
  269. package/templates/apps/web/public/favicon-32x32.png +0 -0
  270. package/templates/apps/web/public/favicon.ico +0 -0
  271. package/templates/apps/web/public/favicon.svg +3 -3
  272. package/templates/apps/web/public/logomark.svg +6 -3
  273. package/templates/apps/web/public/logos/ai-launch-kit-light.svg +4 -0
  274. package/templates/apps/web/public/logos/ai-launch-kit.svg +4 -0
  275. package/templates/apps/web/public/logos/atomic-agent-light.svg +4 -0
  276. package/templates/apps/web/public/logos/atomic-agent.svg +4 -0
  277. package/templates/apps/web/public/logos/salessmyth-light.svg +4 -0
  278. package/templates/apps/web/public/logos/salessmyth.svg +4 -0
  279. package/templates/apps/web/public/site.webmanifest +4 -4
  280. package/templates/apps/web/public/wordmark-light.svg +4 -0
  281. package/templates/apps/web/public/wordmark.svg +3 -3
  282. package/templates/apps/web/security-headers.config.ts +5 -1
  283. package/templates/content/_site.mdx +25 -0
  284. package/templates/content/en/AboutPage/about.mdx +150 -144
  285. package/templates/content/en/BlogList/blog.mdx +126 -0
  286. package/templates/content/en/ContactPage/contact.mdx +21 -92
  287. package/templates/content/en/FAQPage/faq.mdx +86 -57
  288. package/templates/content/en/HomePage/home.mdx +268 -217
  289. package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +181 -0
  290. package/templates/content/en/UseCasesList/use-cases.mdx +170 -0
  291. package/templates/database/CHANGELOG.md +14 -0
  292. package/templates/database/package.json +1 -1
  293. package/templates/package.json +3 -1
  294. package/templates/tools/lint-architecture.ts +315 -0
  295. package/templates/tools/tsconfig.json +14 -0
  296. package/versions.json +33 -33
  297. package/site-templates/simple-service/DESIGN.md +0 -148
  298. package/site-templates/simple-service/TEMPLATE-MANIFEST.json +0 -240
  299. package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -278
  300. package/site-templates/simple-service/ailk-template.json +0 -10
  301. package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -67
  302. package/site-templates/simple-service/content/en/FAQPage/faq.mdx +0 -56
  303. package/site-templates/simple-service/content/en/HomePage/home.mdx +0 -85
  304. package/site-templates/simple-service/content/en/Service/landscape-design.mdx +0 -40
  305. package/site-templates/simple-service/content/en/Service/lawn-maintenance.mdx +0 -40
  306. package/site-templates/simple-service/content/en/Service/seasonal-cleanup.mdx +0 -40
  307. package/site-templates/simple-service/provenance.json +0 -4
  308. package/templates/.claude/skills/add-schema/SKILL.md +0 -277
  309. package/templates/.claude/skills/add-schema/references/conflict-handling.md +0 -200
  310. package/templates/.claude/skills/add-schema/references/file-finding.md +0 -123
  311. package/templates/.claude/skills/add-schema/references/schema-types.md +0 -234
  312. package/templates/.claude/skills/provision-config/references/runbook-template.md +0 -248
  313. package/templates/.claude/skills/scaffold-page/references/page-types.md +0 -169
  314. package/templates/.claude/skills/suggest-site-pages/SKILL.md +0 -242
  315. package/templates/.claude/skills/suggest-site-pages/references/categories.md +0 -287
  316. package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -150
  317. package/templates/apps/web/app/[locale]/returns/page.tsx +0 -44
  318. package/templates/apps/web/app/[locale]/shipping/page.tsx +0 -44
  319. package/templates/content/en/CancellationPolicyPage/cancellation.mdx +0 -108
  320. package/templates/content/en/LandingPage/blog.mdx +0 -83
  321. package/templates/content/en/LandingPage/features.mdx +0 -103
  322. package/templates/content/en/LandingPage/how-it-works.mdx +0 -143
  323. package/templates/content/en/ReturnsPolicyPage/returns.mdx +0 -108
  324. package/templates/content/en/ShippingPolicyPage/shipping.mdx +0 -108
@@ -9,7 +9,7 @@
9
9
  "importPath": "@working-theory/ui/sections",
10
10
  "rootBarrel": "@working-theory/ui",
11
11
  "sourceRoot": "packages/ui/src/sections",
12
- "count": 54
12
+ "count": 55
13
13
  },
14
14
  {
15
15
  "name": "blocks",
@@ -17,7 +17,7 @@
17
17
  "importPath": "@working-theory/ui/blocks",
18
18
  "rootBarrel": "@working-theory/ui",
19
19
  "sourceRoot": "packages/ui/src/blocks",
20
- "count": 95
20
+ "count": 99
21
21
  },
22
22
  {
23
23
  "name": "chrome",
@@ -188,6 +188,17 @@
188
188
  "descriptionGrade": "strong",
189
189
  "sectionType": "awards"
190
190
  },
191
+ {
192
+ "name": "BeforeAfter",
193
+ "tier": "sections",
194
+ "sourcePath": "packages/ui/src/sections/BeforeAfter.tsx",
195
+ "importPath": "@working-theory/ui/sections",
196
+ "exported": true,
197
+ "description": "A before/after comparison — use on a case-study or portfolio page to show what a client had and what they have now: two labeled panels behind a Side-by-side / Before / After selector, each body an image or rows of content, with an optional catalyst column between them and a key-takeaway box below.",
198
+ "descriptionSource": "registry",
199
+ "descriptionGrade": "strong",
200
+ "sectionType": "before-after"
201
+ },
191
202
  {
192
203
  "name": "BentoGrid",
193
204
  "tier": "sections",
@@ -958,6 +969,17 @@
958
969
  "descriptionGrade": "strong",
959
970
  "sectionType": null
960
971
  },
972
+ {
973
+ "name": "ConsentSettingsButton",
974
+ "tier": "blocks",
975
+ "sourcePath": "packages/ui/src/blocks/ConsentSettingsButton.tsx",
976
+ "importPath": "@working-theory/ui/blocks",
977
+ "exported": false,
978
+ "description": "Footer \"Cookie settings\" control. Lets a visitor who already accepted/declined change their mind later, from the footer, without reloading the page. Lives at the BLOCKS tier (not chrome) so `FooterBottomBar` (a block) can render it without an upward import; `BannerConsentIsland` (chrome) imports the exported event constant DOWNWARD, per the component tier hierarchy.",
979
+ "descriptionSource": "doc-comment",
980
+ "descriptionGrade": "strong",
981
+ "sectionType": null
982
+ },
961
983
  {
962
984
  "name": "ConsentStatement",
963
985
  "tier": "blocks",
@@ -980,6 +1002,17 @@
980
1002
  "descriptionGrade": "strong",
981
1003
  "sectionType": null
982
1004
  },
1005
+ {
1006
+ "name": "ContactFallback",
1007
+ "tier": "blocks",
1008
+ "sourcePath": "packages/ui/src/blocks/ContactFallback.tsx",
1009
+ "importPath": "@working-theory/ui/blocks",
1010
+ "exported": true,
1011
+ "description": "The contact email in place of a contact form. Shown when a site cannot take messages through its form: in production with neither a database nor an email key, the page renders this instead, and `LeadCaptureForm`'s `unavailable` state renders this same markup when a submit is refused — so the two fallbacks are one component.",
1012
+ "descriptionSource": "doc-comment",
1013
+ "descriptionGrade": "strong",
1014
+ "sectionType": null
1015
+ },
983
1016
  {
984
1017
  "name": "ContactFormFields",
985
1018
  "tier": "blocks",
@@ -1156,6 +1189,17 @@
1156
1189
  "descriptionGrade": "strong",
1157
1190
  "sectionType": null
1158
1191
  },
1192
+ {
1193
+ "name": "LeadCaptureForm",
1194
+ "tier": "blocks",
1195
+ "sourcePath": "packages/ui/src/blocks/LeadCaptureForm.tsx",
1196
+ "importPath": "@working-theory/ui/blocks",
1197
+ "exported": true,
1198
+ "description": "The one contact form every template renders. Submits ONLY through the `action` prop — a Server Action the page binds — so there is no fetch, no URL and no browser-side JSON here.",
1199
+ "descriptionSource": "doc-comment",
1200
+ "descriptionGrade": "strong",
1201
+ "sectionType": null
1202
+ },
1159
1203
  {
1160
1204
  "name": "LinkCard",
1161
1205
  "tier": "blocks",
@@ -1398,6 +1442,17 @@
1398
1442
  "descriptionGrade": "strong",
1399
1443
  "sectionType": null
1400
1444
  },
1445
+ {
1446
+ "name": "PostCard",
1447
+ "tier": "blocks",
1448
+ "sourcePath": "packages/ui/src/blocks/PostCard.tsx",
1449
+ "importPath": "@working-theory/ui/blocks",
1450
+ "exported": true,
1451
+ "description": "Same props as PostRow, a vertical arrangement. A single linked blog-index card (cover · date · reading time · title · excerpt · \"Read more\"). Tier 3 block; composes MediaFigure + primitives. RSC default.",
1452
+ "descriptionSource": "doc-comment",
1453
+ "descriptionGrade": "weak",
1454
+ "sectionType": null
1455
+ },
1401
1456
  {
1402
1457
  "name": "PostRow",
1403
1458
  "tier": "blocks",
@@ -3650,6 +3705,13 @@
3650
3705
  "tight"
3651
3706
  ]
3652
3707
  },
3708
+ "measure": {
3709
+ "type": "string",
3710
+ "enum": [
3711
+ "full",
3712
+ "narrow"
3713
+ ]
3714
+ },
3653
3715
  "lightboxCta": {
3654
3716
  "type": "object",
3655
3717
  "properties": {
@@ -4640,7 +4702,8 @@
4640
4702
  "default",
4641
4703
  "mockup",
4642
4704
  "alternating",
4643
- "split-grid"
4705
+ "split-grid",
4706
+ "steps"
4644
4707
  ]
4645
4708
  },
4646
4709
  "eyebrow": {
@@ -4691,6 +4754,20 @@
4691
4754
  "landscape"
4692
4755
  ]
4693
4756
  },
4757
+ "itemStyle": {
4758
+ "type": "string",
4759
+ "enum": [
4760
+ "card",
4761
+ "plain"
4762
+ ]
4763
+ },
4764
+ "actionsPosition": {
4765
+ "type": "string",
4766
+ "enum": [
4767
+ "header",
4768
+ "below"
4769
+ ]
4770
+ },
4694
4771
  "features": {
4695
4772
  "type": "array",
4696
4773
  "items": {
@@ -4868,6 +4945,13 @@
4868
4945
  "tile"
4869
4946
  ]
4870
4947
  },
4948
+ "tileHover": {
4949
+ "type": "string",
4950
+ "enum": [
4951
+ "lift",
4952
+ "outline"
4953
+ ]
4954
+ },
4871
4955
  "eyebrow": {
4872
4956
  "type": "string"
4873
4957
  },
@@ -5043,6 +5127,9 @@
5043
5127
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5044
5128
  "type": "object",
5045
5129
  "properties": {
5130
+ "imagerySlot": {
5131
+ "type": "boolean"
5132
+ },
5046
5133
  "variant": {
5047
5134
  "type": "string",
5048
5135
  "enum": [
@@ -5936,7 +6023,8 @@
5936
6023
  "grid",
5937
6024
  "static",
5938
6025
  "featured",
5939
- "bylined"
6026
+ "bylined",
6027
+ "quote"
5940
6028
  ]
5941
6029
  },
5942
6030
  "headline": {
@@ -6159,6 +6247,28 @@
6159
6247
  "included-dots"
6160
6248
  ]
6161
6249
  },
6250
+ "cardLayout": {
6251
+ "type": "string",
6252
+ "enum": [
6253
+ "default",
6254
+ "centered"
6255
+ ]
6256
+ },
6257
+ "toggleStyle": {
6258
+ "type": "string",
6259
+ "enum": [
6260
+ "soft",
6261
+ "solid",
6262
+ "switch"
6263
+ ]
6264
+ },
6265
+ "gapAbove": {
6266
+ "type": "string",
6267
+ "enum": [
6268
+ "default",
6269
+ "tight"
6270
+ ]
6271
+ },
6162
6272
  "addonLayout": {
6163
6273
  "type": "string",
6164
6274
  "enum": [
@@ -6889,6 +6999,17 @@
6889
6999
  },
6890
7000
  "closingLine": {
6891
7001
  "type": "string"
7002
+ },
7003
+ "checklist": {
7004
+ "minItems": 1,
7005
+ "maxItems": 5,
7006
+ "type": "array",
7007
+ "items": {
7008
+ "type": "string"
7009
+ }
7010
+ },
7011
+ "imagerySlot": {
7012
+ "type": "boolean"
6892
7013
  }
6893
7014
  },
6894
7015
  "required": [
@@ -6909,6 +7030,13 @@
6909
7030
  "headline": {
6910
7031
  "type": "string"
6911
7032
  },
7033
+ "headlineStyle": {
7034
+ "type": "string",
7035
+ "enum": [
7036
+ "heading",
7037
+ "label"
7038
+ ]
7039
+ },
6912
7040
  "logos": {
6913
7041
  "type": "array",
6914
7042
  "items": {
@@ -7477,86 +7605,548 @@
7477
7605
  "schemaError": null
7478
7606
  },
7479
7607
  {
7480
- "type": "bento-grid",
7481
- "component": "BentoGrid",
7482
- "whenToUse": "A mixed-span mosaic of feature cards — use for a visually varied capability overview.",
7608
+ "type": "before-after",
7609
+ "component": "BeforeAfter",
7610
+ "whenToUse": "A before/after comparison — use on a case-study or portfolio page to show what a client had and what they have now: two labeled panels behind a Side-by-side / Before / After selector, each body an image or rows of content, with an optional catalyst column between them and a key-takeaway box below.",
7483
7611
  "schema": {
7484
7612
  "$schema": "https://json-schema.org/draft/2020-12/schema",
7485
7613
  "type": "object",
7486
7614
  "properties": {
7487
- "headline": {
7488
- "type": "string"
7489
- },
7490
- "description": {
7491
- "type": "string"
7492
- },
7493
- "gap": {
7494
- "type": "string",
7495
- "enum": [
7496
- "tight",
7497
- "normal",
7498
- "loose"
7499
- ]
7500
- },
7501
- "items": {
7502
- "type": "array",
7503
- "items": {
7504
- "type": "object",
7505
- "properties": {
7506
- "title": {
7507
- "type": "string"
7508
- },
7509
- "description": {
7510
- "type": "string"
7511
- },
7512
- "icon": {
7615
+ "header": {
7616
+ "type": "object",
7617
+ "properties": {
7618
+ "headline": {
7619
+ "type": "string"
7620
+ },
7621
+ "tagline": {
7622
+ "type": "string"
7623
+ },
7624
+ "tags": {
7625
+ "maxItems": 6,
7626
+ "type": "array",
7627
+ "items": {
7513
7628
  "type": "string"
7514
- },
7515
- "image": {
7516
- "type": "object",
7517
- "properties": {
7518
- "src": {
7519
- "type": "string"
7520
- },
7521
- "alt": {
7522
- "type": "string"
7523
- },
7524
- "width": {
7525
- "type": "number"
7526
- },
7527
- "height": {
7528
- "type": "number"
7529
- },
7530
- "blurDataURL": {
7531
- "type": "string"
7532
- }
7629
+ }
7630
+ },
7631
+ "logo": {
7632
+ "type": "object",
7633
+ "properties": {
7634
+ "src": {
7635
+ "type": "string"
7533
7636
  },
7534
- "required": [
7535
- "src",
7536
- "alt"
7537
- ]
7637
+ "alt": {
7638
+ "type": "string"
7639
+ },
7640
+ "width": {
7641
+ "type": "number"
7642
+ },
7643
+ "height": {
7644
+ "type": "number"
7645
+ },
7646
+ "blurDataURL": {
7647
+ "type": "string"
7648
+ }
7538
7649
  },
7539
- "span": {
7540
- "type": "string",
7541
- "enum": [
7542
- "default",
7543
- "wide",
7544
- "tall",
7545
- "large",
7546
- "full"
7547
- ]
7650
+ "required": [
7651
+ "src",
7652
+ "alt"
7653
+ ]
7654
+ }
7655
+ },
7656
+ "required": [
7657
+ "headline"
7658
+ ]
7659
+ },
7660
+ "pager": {
7661
+ "type": "object",
7662
+ "properties": {
7663
+ "prev": {
7664
+ "type": "object",
7665
+ "properties": {
7666
+ "label": {
7667
+ "type": "string"
7668
+ },
7669
+ "href": {
7670
+ "type": "string"
7671
+ },
7672
+ "variant": {
7673
+ "type": "string",
7674
+ "enum": [
7675
+ "default",
7676
+ "outline",
7677
+ "secondary",
7678
+ "ghost",
7679
+ "link",
7680
+ "gradient"
7681
+ ]
7682
+ },
7683
+ "external": {
7684
+ "type": "boolean"
7685
+ }
7548
7686
  },
7549
- "variant": {
7550
- "type": "string",
7551
- "enum": [
7552
- "default",
7553
- "outline",
7554
- "emphasis"
7555
- ]
7687
+ "required": [
7688
+ "label",
7689
+ "href"
7690
+ ]
7691
+ },
7692
+ "next": {
7693
+ "type": "object",
7694
+ "properties": {
7695
+ "label": {
7696
+ "type": "string"
7697
+ },
7698
+ "href": {
7699
+ "type": "string"
7700
+ },
7701
+ "variant": {
7702
+ "type": "string",
7703
+ "enum": [
7704
+ "default",
7705
+ "outline",
7706
+ "secondary",
7707
+ "ghost",
7708
+ "link",
7709
+ "gradient"
7710
+ ]
7711
+ },
7712
+ "external": {
7713
+ "type": "boolean"
7714
+ }
7556
7715
  },
7557
- "link": {
7558
- "type": "object",
7559
- "properties": {
7716
+ "required": [
7717
+ "label",
7718
+ "href"
7719
+ ]
7720
+ },
7721
+ "backTo": {
7722
+ "type": "object",
7723
+ "properties": {
7724
+ "label": {
7725
+ "type": "string"
7726
+ },
7727
+ "href": {
7728
+ "type": "string"
7729
+ },
7730
+ "variant": {
7731
+ "type": "string",
7732
+ "enum": [
7733
+ "default",
7734
+ "outline",
7735
+ "secondary",
7736
+ "ghost",
7737
+ "link",
7738
+ "gradient"
7739
+ ]
7740
+ },
7741
+ "external": {
7742
+ "type": "boolean"
7743
+ }
7744
+ },
7745
+ "required": [
7746
+ "label",
7747
+ "href"
7748
+ ]
7749
+ }
7750
+ }
7751
+ },
7752
+ "before": {
7753
+ "type": "object",
7754
+ "properties": {
7755
+ "label": {
7756
+ "type": "string"
7757
+ },
7758
+ "tone": {
7759
+ "type": "string",
7760
+ "enum": [
7761
+ "brand",
7762
+ "accent",
7763
+ "neutral",
7764
+ "success",
7765
+ "error",
7766
+ "warning",
7767
+ "info"
7768
+ ]
7769
+ },
7770
+ "icon": {
7771
+ "type": "string"
7772
+ },
7773
+ "align": {
7774
+ "type": "string",
7775
+ "enum": [
7776
+ "start",
7777
+ "center",
7778
+ "end"
7779
+ ]
7780
+ },
7781
+ "image": {
7782
+ "type": "object",
7783
+ "properties": {
7784
+ "src": {
7785
+ "type": "string"
7786
+ },
7787
+ "alt": {
7788
+ "type": "string"
7789
+ },
7790
+ "width": {
7791
+ "type": "number"
7792
+ },
7793
+ "height": {
7794
+ "type": "number"
7795
+ },
7796
+ "blurDataURL": {
7797
+ "type": "string"
7798
+ }
7799
+ },
7800
+ "required": [
7801
+ "src",
7802
+ "alt"
7803
+ ]
7804
+ },
7805
+ "rows": {
7806
+ "maxItems": 8,
7807
+ "type": "array",
7808
+ "items": {
7809
+ "type": "object",
7810
+ "properties": {
7811
+ "title": {
7812
+ "type": "string"
7813
+ },
7814
+ "body": {
7815
+ "type": "string"
7816
+ },
7817
+ "icon": {
7818
+ "type": "string"
7819
+ }
7820
+ },
7821
+ "required": [
7822
+ "title",
7823
+ "body"
7824
+ ]
7825
+ }
7826
+ },
7827
+ "verdict": {
7828
+ "type": "string"
7829
+ },
7830
+ "notes": {
7831
+ "type": "array",
7832
+ "items": {
7833
+ "type": "string"
7834
+ }
7835
+ }
7836
+ },
7837
+ "required": [
7838
+ "label"
7839
+ ]
7840
+ },
7841
+ "after": {
7842
+ "type": "object",
7843
+ "properties": {
7844
+ "label": {
7845
+ "type": "string"
7846
+ },
7847
+ "tone": {
7848
+ "type": "string",
7849
+ "enum": [
7850
+ "brand",
7851
+ "accent",
7852
+ "neutral",
7853
+ "success",
7854
+ "error",
7855
+ "warning",
7856
+ "info"
7857
+ ]
7858
+ },
7859
+ "icon": {
7860
+ "type": "string"
7861
+ },
7862
+ "align": {
7863
+ "type": "string",
7864
+ "enum": [
7865
+ "start",
7866
+ "center",
7867
+ "end"
7868
+ ]
7869
+ },
7870
+ "image": {
7871
+ "type": "object",
7872
+ "properties": {
7873
+ "src": {
7874
+ "type": "string"
7875
+ },
7876
+ "alt": {
7877
+ "type": "string"
7878
+ },
7879
+ "width": {
7880
+ "type": "number"
7881
+ },
7882
+ "height": {
7883
+ "type": "number"
7884
+ },
7885
+ "blurDataURL": {
7886
+ "type": "string"
7887
+ }
7888
+ },
7889
+ "required": [
7890
+ "src",
7891
+ "alt"
7892
+ ]
7893
+ },
7894
+ "rows": {
7895
+ "maxItems": 8,
7896
+ "type": "array",
7897
+ "items": {
7898
+ "type": "object",
7899
+ "properties": {
7900
+ "title": {
7901
+ "type": "string"
7902
+ },
7903
+ "body": {
7904
+ "type": "string"
7905
+ },
7906
+ "icon": {
7907
+ "type": "string"
7908
+ }
7909
+ },
7910
+ "required": [
7911
+ "title",
7912
+ "body"
7913
+ ]
7914
+ }
7915
+ },
7916
+ "verdict": {
7917
+ "type": "string"
7918
+ },
7919
+ "notes": {
7920
+ "type": "array",
7921
+ "items": {
7922
+ "type": "string"
7923
+ }
7924
+ }
7925
+ },
7926
+ "required": [
7927
+ "label"
7928
+ ]
7929
+ },
7930
+ "catalyst": {
7931
+ "type": "object",
7932
+ "properties": {
7933
+ "image": {
7934
+ "type": "object",
7935
+ "properties": {
7936
+ "src": {
7937
+ "type": "string"
7938
+ },
7939
+ "alt": {
7940
+ "type": "string"
7941
+ },
7942
+ "width": {
7943
+ "type": "number"
7944
+ },
7945
+ "height": {
7946
+ "type": "number"
7947
+ },
7948
+ "blurDataURL": {
7949
+ "type": "string"
7950
+ }
7951
+ },
7952
+ "required": [
7953
+ "src",
7954
+ "alt"
7955
+ ]
7956
+ },
7957
+ "title": {
7958
+ "type": "string"
7959
+ },
7960
+ "subtitle": {
7961
+ "type": "string"
7962
+ },
7963
+ "tone": {
7964
+ "type": "string",
7965
+ "enum": [
7966
+ "brand",
7967
+ "accent",
7968
+ "neutral",
7969
+ "success",
7970
+ "error",
7971
+ "warning",
7972
+ "info"
7973
+ ]
7974
+ },
7975
+ "arrow": {
7976
+ "type": "boolean"
7977
+ },
7978
+ "steps": {
7979
+ "maxItems": 8,
7980
+ "type": "array",
7981
+ "items": {
7982
+ "type": "object",
7983
+ "properties": {
7984
+ "label": {
7985
+ "type": "string"
7986
+ },
7987
+ "marker": {
7988
+ "type": "string",
7989
+ "maxLength": 2
7990
+ }
7991
+ },
7992
+ "required": [
7993
+ "label"
7994
+ ]
7995
+ }
7996
+ }
7997
+ },
7998
+ "required": [
7999
+ "title"
8000
+ ]
8001
+ },
8002
+ "takeaway": {
8003
+ "type": "object",
8004
+ "properties": {
8005
+ "label": {
8006
+ "type": "string"
8007
+ },
8008
+ "body": {
8009
+ "type": "string"
8010
+ },
8011
+ "icon": {
8012
+ "type": "string"
8013
+ },
8014
+ "tone": {
8015
+ "type": "string",
8016
+ "enum": [
8017
+ "brand",
8018
+ "accent",
8019
+ "neutral",
8020
+ "success",
8021
+ "error",
8022
+ "warning",
8023
+ "info"
8024
+ ]
8025
+ }
8026
+ },
8027
+ "required": [
8028
+ "body"
8029
+ ]
8030
+ },
8031
+ "defaultView": {
8032
+ "type": "string",
8033
+ "enum": [
8034
+ "side-by-side",
8035
+ "before",
8036
+ "after"
8037
+ ]
8038
+ },
8039
+ "viewLabels": {
8040
+ "type": "object",
8041
+ "properties": {
8042
+ "sideBySide": {
8043
+ "type": "string"
8044
+ },
8045
+ "before": {
8046
+ "type": "string"
8047
+ },
8048
+ "after": {
8049
+ "type": "string"
8050
+ }
8051
+ },
8052
+ "required": [
8053
+ "sideBySide",
8054
+ "before",
8055
+ "after"
8056
+ ]
8057
+ },
8058
+ "lightbox": {
8059
+ "type": "boolean"
8060
+ }
8061
+ },
8062
+ "required": [
8063
+ "before",
8064
+ "after"
8065
+ ]
8066
+ },
8067
+ "schemaError": null
8068
+ },
8069
+ {
8070
+ "type": "bento-grid",
8071
+ "component": "BentoGrid",
8072
+ "whenToUse": "A mixed-span mosaic of feature cards — use for a visually varied capability overview.",
8073
+ "schema": {
8074
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
8075
+ "type": "object",
8076
+ "properties": {
8077
+ "headline": {
8078
+ "type": "string"
8079
+ },
8080
+ "description": {
8081
+ "type": "string"
8082
+ },
8083
+ "gap": {
8084
+ "type": "string",
8085
+ "enum": [
8086
+ "tight",
8087
+ "normal",
8088
+ "loose"
8089
+ ]
8090
+ },
8091
+ "items": {
8092
+ "type": "array",
8093
+ "items": {
8094
+ "type": "object",
8095
+ "properties": {
8096
+ "title": {
8097
+ "type": "string"
8098
+ },
8099
+ "description": {
8100
+ "type": "string"
8101
+ },
8102
+ "icon": {
8103
+ "type": "string"
8104
+ },
8105
+ "image": {
8106
+ "type": "object",
8107
+ "properties": {
8108
+ "src": {
8109
+ "type": "string"
8110
+ },
8111
+ "alt": {
8112
+ "type": "string"
8113
+ },
8114
+ "width": {
8115
+ "type": "number"
8116
+ },
8117
+ "height": {
8118
+ "type": "number"
8119
+ },
8120
+ "blurDataURL": {
8121
+ "type": "string"
8122
+ }
8123
+ },
8124
+ "required": [
8125
+ "src",
8126
+ "alt"
8127
+ ]
8128
+ },
8129
+ "span": {
8130
+ "type": "string",
8131
+ "enum": [
8132
+ "default",
8133
+ "wide",
8134
+ "tall",
8135
+ "large",
8136
+ "full"
8137
+ ]
8138
+ },
8139
+ "variant": {
8140
+ "type": "string",
8141
+ "enum": [
8142
+ "default",
8143
+ "outline",
8144
+ "emphasis"
8145
+ ]
8146
+ },
8147
+ "link": {
8148
+ "type": "object",
8149
+ "properties": {
7560
8150
  "label": {
7561
8151
  "type": "string"
7562
8152
  },
@@ -7837,7 +8427,8 @@
7837
8427
  "type": "string",
7838
8428
  "enum": [
7839
8429
  "with-small-images",
7840
- "with-large-images"
8430
+ "with-large-images",
8431
+ "with-side-images"
7841
8432
  ]
7842
8433
  },
7843
8434
  "avatarSize": {
@@ -8148,8 +8739,7 @@
8148
8739
  }
8149
8740
  },
8150
8741
  "required": [
8151
- "fields",
8152
- "action"
8742
+ "fields"
8153
8743
  ]
8154
8744
  },
8155
8745
  "schemaError": null
@@ -8612,6 +9202,9 @@
8612
9202
  "slug": {
8613
9203
  "type": "string"
8614
9204
  },
9205
+ "href": {
9206
+ "type": "string"
9207
+ },
8615
9208
  "excerpt": {
8616
9209
  "type": "string"
8617
9210
  },
@@ -8713,6 +9306,13 @@
8713
9306
  "totalPages",
8714
9307
  "baseUrl"
8715
9308
  ]
9309
+ },
9310
+ "variant": {
9311
+ "type": "string",
9312
+ "enum": [
9313
+ "list",
9314
+ "grid"
9315
+ ]
8716
9316
  }
8717
9317
  },
8718
9318
  "required": [
@@ -8826,6 +9426,9 @@
8826
9426
  "slug": {
8827
9427
  "type": "string"
8828
9428
  },
9429
+ "href": {
9430
+ "type": "string"
9431
+ },
8829
9432
  "excerpt": {
8830
9433
  "type": "string"
8831
9434
  },
@@ -9539,6 +10142,12 @@
9539
10142
  "$schema": "https://json-schema.org/draft/2020-12/schema",
9540
10143
  "type": "object",
9541
10144
  "properties": {
10145
+ "eyebrow": {
10146
+ "type": "string"
10147
+ },
10148
+ "imagerySlot": {
10149
+ "type": "boolean"
10150
+ },
9542
10151
  "headline": {
9543
10152
  "type": "string"
9544
10153
  },
@@ -9995,6 +10604,16 @@
9995
10604
  "navGroupLabel": {
9996
10605
  "type": "string"
9997
10606
  },
10607
+ "layout": {
10608
+ "type": "string",
10609
+ "enum": [
10610
+ "rail",
10611
+ "article"
10612
+ ]
10613
+ },
10614
+ "updated": {
10615
+ "type": "string"
10616
+ },
9998
10617
  "stats": {
9999
10618
  "minItems": 2,
10000
10619
  "maxItems": 4,
@@ -11441,22 +12060,22 @@
11441
12060
  {
11442
12061
  "path": "typography.display.fontSize",
11443
12062
  "type": "string",
11444
- "value": "3.75rem"
12063
+ "value": "3.5rem"
11445
12064
  },
11446
12065
  {
11447
12066
  "path": "typography.display.lineHeight",
11448
12067
  "type": "string",
11449
- "value": "1"
12068
+ "value": "1.1"
11450
12069
  },
11451
12070
  {
11452
12071
  "path": "typography.display.fontWeight",
11453
12072
  "type": "string",
11454
- "value": "400"
12073
+ "value": "700"
11455
12074
  },
11456
12075
  {
11457
12076
  "path": "typography.display.letterSpacing",
11458
12077
  "type": "string",
11459
- "value": "-0.05em"
12078
+ "value": "0"
11460
12079
  },
11461
12080
  {
11462
12081
  "path": "typography.display-sm.fontSize",
@@ -11466,42 +12085,42 @@
11466
12085
  {
11467
12086
  "path": "typography.display-sm.lineHeight",
11468
12087
  "type": "string",
11469
- "value": "1.05"
12088
+ "value": "1.1"
11470
12089
  },
11471
12090
  {
11472
12091
  "path": "typography.display-sm.fontWeight",
11473
12092
  "type": "string",
11474
- "value": "400"
12093
+ "value": "700"
11475
12094
  },
11476
12095
  {
11477
12096
  "path": "typography.display-sm.letterSpacing",
11478
12097
  "type": "string",
11479
- "value": "-0.025em"
12098
+ "value": "0"
11480
12099
  },
11481
12100
  {
11482
12101
  "path": "typography.display-lg.fontSize",
11483
12102
  "type": "string",
11484
- "value": "6rem"
12103
+ "value": "3.5rem"
11485
12104
  },
11486
12105
  {
11487
12106
  "path": "typography.display-lg.lineHeight",
11488
12107
  "type": "string",
11489
- "value": "1"
12108
+ "value": "1.1"
11490
12109
  },
11491
12110
  {
11492
12111
  "path": "typography.display-lg.fontWeight",
11493
12112
  "type": "string",
11494
- "value": "400"
12113
+ "value": "700"
11495
12114
  },
11496
12115
  {
11497
12116
  "path": "typography.display-lg.letterSpacing",
11498
12117
  "type": "string",
11499
- "value": "-0.05em"
12118
+ "value": "0"
11500
12119
  },
11501
12120
  {
11502
12121
  "path": "typography.display-mobile.fontSize",
11503
12122
  "type": "string",
11504
- "value": "2rem"
12123
+ "value": "2.5rem"
11505
12124
  },
11506
12125
  {
11507
12126
  "path": "typography.display-mobile.lineHeight",
@@ -11511,12 +12130,12 @@
11511
12130
  {
11512
12131
  "path": "typography.display-mobile.fontWeight",
11513
12132
  "type": "string",
11514
- "value": "500"
12133
+ "value": "700"
11515
12134
  },
11516
12135
  {
11517
12136
  "path": "typography.display-mobile.letterSpacing",
11518
12137
  "type": "string",
11519
- "value": "-0.02em"
12138
+ "value": "0"
11520
12139
  },
11521
12140
  {
11522
12141
  "path": "typography.subhead-mobile.fontSize",
@@ -11591,7 +12210,7 @@
11591
12210
  {
11592
12211
  "path": "typography.heading-3.fontWeight",
11593
12212
  "type": "string",
11594
- "value": "600"
12213
+ "value": "700"
11595
12214
  },
11596
12215
  {
11597
12216
  "path": "typography.heading-3.letterSpacing",
@@ -11760,6 +12379,17 @@
11760
12379
  }
11761
12380
  ]
11762
12381
  },
12382
+ {
12383
+ "name": "typographyLg",
12384
+ "leafCount": 1,
12385
+ "leaves": [
12386
+ {
12387
+ "path": "typographyLg.heading-3.fontSize",
12388
+ "type": "string",
12389
+ "value": "2rem"
12390
+ }
12391
+ ]
12392
+ },
11763
12393
  {
11764
12394
  "name": "displayOpticalOffset",
11765
12395
  "leafCount": 1,
@@ -11887,7 +12517,7 @@
11887
12517
  },
11888
12518
  {
11889
12519
  "name": "spacing",
11890
- "leafCount": 12,
12520
+ "leafCount": 13,
11891
12521
  "leaves": [
11892
12522
  {
11893
12523
  "path": "spacing.controlX",
@@ -11914,6 +12544,11 @@
11914
12544
  "type": "string",
11915
12545
  "value": "4rem"
11916
12546
  },
12547
+ {
12548
+ "path": "spacing.sectionLg",
12549
+ "type": "string",
12550
+ "value": "7rem"
12551
+ },
11917
12552
  {
11918
12553
  "path": "spacing.sectionCompact",
11919
12554
  "type": "string",
@@ -12000,7 +12635,7 @@
12000
12635
  },
12001
12636
  {
12002
12637
  "name": "container",
12003
- "leafCount": 4,
12638
+ "leafCount": 5,
12004
12639
  "leaves": [
12005
12640
  {
12006
12641
  "path": "container.sm",
@@ -12021,6 +12656,11 @@
12021
12656
  "path": "container.xl",
12022
12657
  "type": "string",
12023
12658
  "value": "1280px"
12659
+ },
12660
+ {
12661
+ "path": "container.measure",
12662
+ "type": "string",
12663
+ "value": "36rem"
12024
12664
  }
12025
12665
  ]
12026
12666
  },