create-ailk 0.8.0 → 0.10.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 (238) hide show
  1. package/README.md +71 -3
  2. package/component-catalog.json +279 -45
  3. package/dist/add-module.d.ts +20 -0
  4. package/dist/add-module.js +43 -7
  5. package/dist/add-route.d.ts +56 -0
  6. package/dist/add-route.js +286 -0
  7. package/dist/apply-design-md.d.ts +7 -0
  8. package/dist/apply-design-md.js +50 -0
  9. package/dist/apply-design.d.ts +64 -0
  10. package/dist/apply-design.js +273 -0
  11. package/dist/claude-md.d.ts +111 -0
  12. package/dist/claude-md.js +334 -0
  13. package/dist/cli.js +104 -5
  14. package/dist/derive-architecture.js +41 -36
  15. package/dist/design-compile.d.ts +71 -0
  16. package/dist/design-compile.js +98 -0
  17. package/dist/design-package.d.ts +83 -0
  18. package/dist/design-package.js +468 -0
  19. package/dist/design-presets.d.ts +86 -0
  20. package/dist/design-presets.js +642 -0
  21. package/dist/design-scaffold.d.ts +76 -0
  22. package/dist/design-scaffold.js +220 -0
  23. package/dist/index.d.ts +2 -1
  24. package/dist/index.js +4 -1
  25. package/dist/legacy-nav-renderers.d.ts +45 -0
  26. package/dist/legacy-nav-renderers.js +545 -0
  27. package/dist/lib/auth-secret-file.d.ts +19 -0
  28. package/dist/lib/auth-secret-file.js +112 -0
  29. package/dist/lib/design-checks.d.ts +78 -0
  30. package/dist/lib/design-checks.js +174 -0
  31. package/dist/lib/license-key-files.d.ts +9 -0
  32. package/dist/lib/license-key-files.js +2 -2
  33. package/dist/lib/module-license-gate.d.ts +48 -32
  34. package/dist/lib/module-license-gate.js +117 -8
  35. package/dist/lib/render-verdict.d.ts +52 -0
  36. package/dist/lib/render-verdict.js +77 -0
  37. package/dist/lib/scaffold-render-sweep.d.ts +105 -0
  38. package/dist/lib/scaffold-render-sweep.js +236 -0
  39. package/dist/module-architecture.d.ts +19 -16
  40. package/dist/module-architecture.js +67 -23
  41. package/dist/parse-args.d.ts +12 -2
  42. package/dist/parse-args.js +74 -13
  43. package/dist/programmatic.d.ts +30 -6
  44. package/dist/programmatic.js +216 -19
  45. package/dist/site-chrome.d.ts +19 -9
  46. package/dist/site-chrome.js +23 -13
  47. package/dist/site-manifest.d.ts +25 -0
  48. package/dist/site-manifest.js +254 -0
  49. package/dist/site-roster.d.ts +41 -0
  50. package/dist/site-roster.js +141 -8
  51. package/dist/starter-grid.d.ts +16 -63
  52. package/dist/starter-grid.js +102 -84
  53. package/dist/surfaces.d.ts +41 -9
  54. package/dist/surfaces.js +200 -83
  55. package/dist/template-manifest.d.ts +30 -13
  56. package/dist/template-manifest.js +53 -28
  57. package/package.json +6 -3
  58. package/release-scope.json +25 -0
  59. package/site-templates/_base/content/en/UseCase/persona-1.mdx +7 -6
  60. package/site-templates/_base/content/en/UseCase/persona-2.mdx +7 -6
  61. package/site-templates/_base/content/en/UseCase/persona-3.mdx +7 -6
  62. package/site-templates/designs/minimalism/DESIGN.md +98 -6
  63. package/site-templates/designs/minimalism/sample/README.md +48 -0
  64. package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +1 -1
  65. package/site-templates/designs/standard/DESIGN.md +98 -6
  66. package/site-templates/marketing-site/DESIGN.md +98 -6
  67. package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +60 -27
  68. package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +50 -30
  69. package/site-templates/marketing-site-free/DESIGN.md +98 -6
  70. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +60 -24
  71. package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +44 -27
  72. package/site-templates/marketing-site-free/ailk-template.json +1 -1
  73. package/site-templates/saas-product/DESIGN.md +98 -6
  74. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +127 -18
  75. package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +74 -20
  76. package/site-templates/shapes/local-business-service/ailk-template.json +1 -1
  77. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +127 -18
  78. package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +74 -20
  79. package/site-templates/shapes/organization-service/ailk-template.json +1 -1
  80. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +127 -18
  81. package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +75 -21
  82. package/site-templates/shapes/person-service/ailk-template.json +1 -1
  83. package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +1 -1
  84. package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +2 -2
  85. package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +4 -2
  86. package/site-templates/shapes/person-service/content/en/ServicesList/services.mdx +1 -1
  87. package/templates/.claude/agents/web.md +10 -8
  88. package/templates/.claude/rules/architecture.md +17 -7
  89. package/templates/.claude/skills/README.md +3 -2
  90. package/templates/.claude/skills/add-auth/SKILL.md +142 -90
  91. package/templates/.claude/skills/add-auth/references/env-vars.md +32 -17
  92. package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +17 -8
  93. package/templates/.claude/skills/add-page/SKILL.md +241 -238
  94. package/templates/.claude/skills/add-page/references/page-types.md +94 -86
  95. package/templates/.claude/skills/add-page/scripts/site-pages.mjs +87 -0
  96. package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +99 -0
  97. package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +8 -18
  98. package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +43 -0
  99. package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +52 -0
  100. package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +38 -0
  101. package/templates/.claude/skills/check-site/SKILL.md +51 -18
  102. package/templates/.claude/skills/check-site/references/common-errors.md +12 -9
  103. package/templates/.claude/skills/check-site/references/findings-glossary.md +4 -4
  104. package/templates/.claude/skills/check-site/references/severity-levels.md +3 -3
  105. package/templates/.claude/skills/fill-page/SKILL.md +26 -7
  106. package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +1 -1
  107. package/templates/.claude/skills/setup-deploy/SKILL.md +75 -38
  108. package/templates/.claude/skills/update-page/SKILL.md +117 -0
  109. package/templates/.claude/skills/update-page/scripts/update-page.ts +640 -0
  110. package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +31 -0
  111. package/templates/.claude/skills/upgrade-plan/SKILL.md +12 -8
  112. package/templates/.env.example +23 -2
  113. package/templates/.github/workflows/ci.yml +4 -0
  114. package/templates/.prettierignore +1 -0
  115. package/templates/CLAUDE.md +146 -103
  116. package/templates/DESIGN.md +98 -6
  117. package/templates/README.md +50 -38
  118. package/templates/apps/api/.env.example +2 -1
  119. package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +2 -0
  120. package/templates/apps/api/src/__tests__/server.test.ts +116 -0
  121. package/templates/apps/api/src/lib/stripe.ts +9 -0
  122. package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +140 -0
  123. package/templates/apps/api/src/middleware/auth.ts +54 -0
  124. package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +5 -2
  125. package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +628 -0
  126. package/templates/apps/api/src/routes/checkout/sessions.ts +222 -24
  127. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -1
  128. package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +5 -1
  129. package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +521 -20
  130. package/templates/apps/api/src/routes/webhooks/stripe.ts +124 -32
  131. package/templates/apps/api/src/server.ts +28 -0
  132. package/templates/apps/api/src/services/__tests__/revalidation.test.ts +90 -15
  133. package/templates/apps/api/src/services/checkout-buyer.ts +72 -0
  134. package/templates/apps/api/src/services/revalidation.ts +60 -15
  135. package/templates/apps/mcp/__tests__/tools/create_project.test.ts +30 -24
  136. package/templates/apps/mcp/src/tools/purchase.ts +4 -2
  137. package/templates/apps/web/.env.example +13 -0
  138. package/templates/apps/web/CLAUDE.md +22 -28
  139. package/templates/apps/web/app/[locale]/(auth)/layout.tsx +1 -1
  140. package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +24 -0
  141. package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +17 -6
  142. package/templates/apps/web/app/[locale]/[slug]/[detail]/__tests__/page.test.tsx +110 -0
  143. package/templates/apps/web/app/[locale]/[slug]/[detail]/page.tsx +60 -0
  144. package/templates/apps/web/app/[locale]/[slug]/page.tsx +1 -1
  145. package/templates/apps/web/app/[locale]/alternatives/__tests__/page.test.tsx +161 -0
  146. package/templates/apps/web/app/[locale]/alternatives/page.tsx +104 -0
  147. package/templates/apps/web/app/[locale]/{use-cases → for}/[slug]/page.tsx +4 -3
  148. package/templates/apps/web/app/[locale]/for/__tests__/page-renderer-migration.test.tsx +73 -0
  149. package/templates/apps/web/app/[locale]/{use-cases → for}/page.tsx +8 -7
  150. package/templates/apps/web/app/[locale]/glossary/page.tsx +1 -1
  151. package/templates/apps/web/app/[locale]/layout.tsx +35 -19
  152. package/templates/apps/web/app/[locale]/newsletter/page.tsx +1 -1
  153. package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +1 -1
  154. package/templates/apps/web/app/[locale]/portfolio/page.tsx +1 -1
  155. package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +112 -0
  156. package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +70 -0
  157. package/templates/apps/web/app/api/revalidate/__tests__/route.test.ts +236 -44
  158. package/templates/apps/web/app/api/revalidate/route.ts +78 -36
  159. package/templates/apps/web/lib/__tests__/site-brand.test.ts +79 -0
  160. package/templates/apps/web/lib/__tests__/site-theme.test.ts +104 -11
  161. package/templates/apps/web/lib/__tests__/structured-data.test.tsx +21 -4
  162. package/templates/apps/web/lib/locale-guard.ts +18 -0
  163. package/templates/apps/web/lib/meet-placeholder.ts +5 -0
  164. package/templates/apps/web/lib/nav-config.ts +14 -13
  165. package/templates/apps/web/lib/site-brand.tsx +13 -9
  166. package/templates/apps/web/lib/site-logo.tsx +36 -0
  167. package/templates/apps/web/lib/site-theme.ts +46 -26
  168. package/templates/apps/web/messages/en.json +23 -9
  169. package/templates/apps/web/middleware.ts +28 -4
  170. package/templates/content/en/BookCall/book-a-call.mdx +80 -0
  171. package/templates/content/en/BookCall/onsite-estimate.mdx +56 -0
  172. package/templates/content/en/BookCall/onsite-service.mdx +56 -0
  173. package/templates/content/en/BookCall/start-project.mdx +56 -0
  174. package/templates/content/en/ContactPage/contact.mdx +40 -1
  175. package/templates/content/en/HomePage/home.mdx +2 -6
  176. package/templates/content/en/LandingPage/meet.mdx +59 -0
  177. package/templates/content/en/UseCasesList/{use-cases.mdx → for.mdx} +19 -18
  178. package/templates/database/CHANGELOG.md +7 -0
  179. package/templates/database/package.json +1 -1
  180. package/templates/package.json +4 -1
  181. package/templates/tools/check-claude-md.ts +128 -0
  182. package/versions.json +33 -33
  183. package/dist/modules/commerce/0.6.0.tar.gz +0 -0
  184. package/dist/modules/commerce/0.6.1.tar.gz +0 -0
  185. package/dist/modules/docs-blog/0.6.0.tar.gz +0 -0
  186. package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
  187. package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
  188. package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
  189. package/dist/modules/multi-tenant/0.6.0.tar.gz +0 -0
  190. package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
  191. package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
  192. package/dist/modules/scheduling/0.6.0.tar.gz +0 -0
  193. package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
  194. package/dist/modules/signal-collectors/0.6.0.tar.gz +0 -0
  195. package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
  196. package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
  197. package/dist/modules/workspace/0.6.0.tar.gz +0 -0
  198. package/dist/modules/workspace/0.6.1.tar.gz +0 -0
  199. package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -52
  200. package/site-templates/minimalism-site/DESIGN.md +0 -162
  201. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +0 -506
  202. package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +0 -458
  203. package/site-templates/minimalism-site/ailk-template.json +0 -23
  204. package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +0 -110
  205. package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -52
  206. package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +0 -34
  207. package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +0 -57
  208. package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +0 -77
  209. package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +0 -73
  210. package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -123
  211. package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +0 -52
  212. package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +0 -52
  213. package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +0 -52
  214. package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +0 -52
  215. package/site-templates/minimalism-site/content/en/Service/first-engagement.mdx +0 -38
  216. package/site-templates/minimalism-site/content/en/Service/second-engagement.mdx +0 -38
  217. package/site-templates/minimalism-site/content/en/Service/third-engagement.mdx +0 -38
  218. package/site-templates/minimalism-site/content/en/ServicesList/services.mdx +0 -73
  219. package/site-templates/minimalism-site/flows/referral.flow.json +0 -71
  220. package/site-templates/minimalism-site/provenance.json +0 -4
  221. package/templates/.claude/skills/add-page/templates/route.tsx.tmpl +0 -28
  222. package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +0 -175
  223. package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-31.552Z-fallback-1789916251590-037e9005.json +0 -8
  224. package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.840Z-fallback-1789916253842-b52659e9.json +0 -12
  225. package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.844Z-fallback-1789916253845-6b266f8c.json +0 -12
  226. package/templates/apps/web/app/[locale]/book-a-call/page.tsx +0 -50
  227. package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +0 -72
  228. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-1.svg +0 -0
  229. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-2.svg +0 -0
  230. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-3.svg +0 -0
  231. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-4.svg +0 -0
  232. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-5.svg +0 -0
  233. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-6.svg +0 -0
  234. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/hero-backdrop.svg +0 -0
  235. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-1.svg +0 -0
  236. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-2.svg +0 -0
  237. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-3.svg +0 -0
  238. /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/wordmark-placeholder.svg +0 -0
package/README.md CHANGED
@@ -52,9 +52,9 @@ pnpm create ailk@latest my-site --shape organization-service --license <key>
52
52
 
53
53
  `--design minimalism` picks the other look and needs a Pro or Pro Plus key;
54
54
  `standard` (the default) needs none. `--template <alias>` scaffolds one of the
55
- four named aliases (`marketing-site-free`, `marketing-site`, `saas-product`,
56
- `minimalism-site`) — each fixes a shape, a design and its own module list — and
57
- cannot be combined with `--shape` or `--design`.
55
+ three named aliases (`marketing-site-free`, `marketing-site`, `saas-product`) —
56
+ each fixes a shape, a design and its own module list — and cannot be combined
57
+ with `--shape` or `--design`.
58
58
 
59
59
  ### Add a purchased module to an existing site
60
60
 
@@ -94,6 +94,45 @@ result of the roster check (`Page roster check: clean`). Running it again
94
94
  changes nothing and reports nothing to add.
95
95
  Run `pnpm install` afterwards.
96
96
 
97
+ ### Apply a design to an existing site
98
+
99
+ A site that already exists can wear a different design with one command. Name
100
+ a shipped design, or point at a directory holding a `DESIGN.md`:
101
+
102
+ ```bash
103
+ # in an already-scaffolded repo (default target: cwd)
104
+ create-ailk apply-design minimalism
105
+ # a design package on disk, applied to a repo named explicitly
106
+ create-ailk apply-design ./designs/acme --target ./my-site
107
+ ```
108
+
109
+ It changes how the site **looks**, never what it **is**. It writes only:
110
+
111
+ - the `theme:` block of `content/_site.mdx` — every other key, the `brand:`
112
+ block included, and the body stay byte-for-byte;
113
+ - the generated `apps/web/lib/site-chrome.ts` — the design's layout, under any
114
+ knob the site's own template sets (so a template's announcement banner
115
+ stays on);
116
+ - the look fields of sections the site's pages already place, from the
117
+ design's `sections:` presets;
118
+ - the `design`, `layout` and `theme` record in `.ailk-site-manifest.json`.
119
+
120
+ It never adds, removes or renames a route or page, never touches a content
121
+ field, and leaves every page's structured data unchanged. It prints the files
122
+ it changed; running it again changes nothing. A site whose roster is the older
123
+ root `TEMPLATE-MANIFEST.json` gets the look but no record, and the report says
124
+ so.
125
+
126
+ A design other than `standard` needs a Pro or Pro Plus key. The key is read
127
+ from the site's own `ailk.key` (put one there with
128
+ `create-ailk license set <key>`), else from `AILK_LICENSE_KEY`. A malformed
129
+ package, a preset the validator refuses or a missing key is refused before
130
+ anything is written, naming the field or the licence level.
131
+
132
+ A preset **sets** the look fields it names and never unsets one: a field it
133
+ does not name keeps whatever value the page has, including one a previous
134
+ design set.
135
+
97
136
  ### Sync `architecture.yaml` after adding a module
98
137
 
99
138
  `add-module` above regenerates `architecture.yaml` itself. To regenerate it by
@@ -114,6 +153,35 @@ no install. Because `deriveArchitecture` is byte-deterministic, the synced file
114
153
  is identical to a fresh scaffold's for the same module set — the idempotency
115
154
  the deferred-sync signal contract depends on.
116
155
 
156
+ ### Keep `CLAUDE.md` aligned with the template
157
+
158
+ A scaffold's root `CLAUDE.md` is a run of AI Launch Kit sections, each between
159
+ `<!-- ailk:template id="…" sha256="…" -->` and `<!-- /ailk:template id="…" -->`,
160
+ followed by a **Site notes** section that starts at `<!-- ailk:site -->` and is
161
+ the site owner's alone. Each begin marker records the SHA-256 of its section,
162
+ so the scaffold's own check needs no network:
163
+
164
+ ```bash
165
+ # in the scaffold — fails naming any template section edited by hand
166
+ pnpm claude-md:check # also runs inside `pnpm preflight` and CI
167
+ ```
168
+
169
+ To pull a newer template's sections into an existing site:
170
+
171
+ ```bash
172
+ # in an already-scaffolded repo (default target: cwd)
173
+ pnpm create ailk@latest --sync-claude-md
174
+ # or point at the repo explicitly
175
+ pnpm create ailk@latest --sync-claude-md ./my-site
176
+ ```
177
+
178
+ It rewrites only the template sections of `CLAUDE.md` and writes no other
179
+ file; Site notes, and anything between sections (such as a pasted CloudParity
180
+ block, which goes just above `<!-- ailk:site -->`), are kept byte for byte. A
181
+ `CLAUDE.md` from before these markers is replaced only when it is an unedited
182
+ published template; an edited one is refused with the steps to move your
183
+ notes across.
184
+
117
185
  ### Sync template routes into an existing site
118
186
 
119
187
  The template is copied once, at scaffold time. When a later release adds a
@@ -4686,7 +4686,19 @@
4686
4686
  "headline"
4687
4687
  ]
4688
4688
  },
4689
- "schemaError": null
4689
+ "schemaError": null,
4690
+ "look": [
4691
+ "variant",
4692
+ "size",
4693
+ "surface",
4694
+ "accentStyle",
4695
+ "eyebrowTone",
4696
+ "subtitleSize",
4697
+ "gapBelow",
4698
+ "measure",
4699
+ "ctaSize",
4700
+ "fill"
4701
+ ]
4690
4702
  },
4691
4703
  {
4692
4704
  "type": "feature",
@@ -4926,7 +4938,18 @@
4926
4938
  "features"
4927
4939
  ]
4928
4940
  },
4929
- "schemaError": null
4941
+ "schemaError": null,
4942
+ "look": [
4943
+ "variant",
4944
+ "cardShape",
4945
+ "itemStyle",
4946
+ "actionsPosition",
4947
+ "surface",
4948
+ "headlineSize",
4949
+ "numbered",
4950
+ "numberTone",
4951
+ "itemTitleSize"
4952
+ ]
4930
4953
  },
4931
4954
  {
4932
4955
  "type": "items",
@@ -4942,7 +4965,8 @@
4942
4965
  "default",
4943
4966
  "branded",
4944
4967
  "minimal",
4945
- "tile"
4968
+ "tile",
4969
+ "tiles"
4946
4970
  ]
4947
4971
  },
4948
4972
  "tileHover": {
@@ -5117,7 +5141,16 @@
5117
5141
  "items"
5118
5142
  ]
5119
5143
  },
5120
- "schemaError": null
5144
+ "schemaError": null,
5145
+ "look": [
5146
+ "variant",
5147
+ "tileHover",
5148
+ "align",
5149
+ "columns",
5150
+ "separation",
5151
+ "gap",
5152
+ "surface"
5153
+ ]
5121
5154
  },
5122
5155
  {
5123
5156
  "type": "content-block",
@@ -5323,7 +5356,16 @@
5323
5356
  }
5324
5357
  }
5325
5358
  },
5326
- "schemaError": null
5359
+ "schemaError": null,
5360
+ "look": [
5361
+ "variant",
5362
+ "mediaPosition",
5363
+ "accentStyle",
5364
+ "glow",
5365
+ "surface",
5366
+ "align",
5367
+ "fill"
5368
+ ]
5327
5369
  },
5328
5370
  {
5329
5371
  "type": "video-section",
@@ -5478,7 +5520,13 @@
5478
5520
  "video"
5479
5521
  ]
5480
5522
  },
5481
- "schemaError": null
5523
+ "schemaError": null,
5524
+ "look": [
5525
+ "width",
5526
+ "surface",
5527
+ "headlineSize",
5528
+ "playBadge"
5529
+ ]
5482
5530
  },
5483
5531
  {
5484
5532
  "type": "faq",
@@ -5663,7 +5711,19 @@
5663
5711
  }
5664
5712
  }
5665
5713
  },
5666
- "schemaError": null
5714
+ "schemaError": null,
5715
+ "look": [
5716
+ "variant",
5717
+ "presentation",
5718
+ "initialOpen",
5719
+ "containerWidth",
5720
+ "density",
5721
+ "questionSize",
5722
+ "answerSize",
5723
+ "dividerTone",
5724
+ "surface",
5725
+ "headlineSize"
5726
+ ]
5667
5727
  },
5668
5728
  {
5669
5729
  "type": "objection",
@@ -5783,7 +5843,13 @@
5783
5843
  "items"
5784
5844
  ]
5785
5845
  },
5786
- "schemaError": null
5846
+ "schemaError": null,
5847
+ "look": [
5848
+ "variant",
5849
+ "density",
5850
+ "responseSize",
5851
+ "dividerTone"
5852
+ ]
5787
5853
  },
5788
5854
  {
5789
5855
  "type": "stats",
@@ -6007,7 +6073,17 @@
6007
6073
  "items"
6008
6074
  ]
6009
6075
  },
6010
- "schemaError": null
6076
+ "schemaError": null,
6077
+ "look": [
6078
+ "variant",
6079
+ "labelStep",
6080
+ "labelTone",
6081
+ "cardVariant",
6082
+ "separation",
6083
+ "gap",
6084
+ "surface",
6085
+ "headlineSize"
6086
+ ]
6011
6087
  },
6012
6088
  {
6013
6089
  "type": "testimonials",
@@ -6132,7 +6208,15 @@
6132
6208
  "items"
6133
6209
  ]
6134
6210
  },
6135
- "schemaError": null
6211
+ "schemaError": null,
6212
+ "look": [
6213
+ "variant",
6214
+ "separation",
6215
+ "gap",
6216
+ "avatarSize",
6217
+ "avatarShape",
6218
+ "surface"
6219
+ ]
6136
6220
  },
6137
6221
  {
6138
6222
  "type": "social-proof",
@@ -6230,7 +6314,12 @@
6230
6314
  "items"
6231
6315
  ]
6232
6316
  },
6233
- "schemaError": null
6317
+ "schemaError": null,
6318
+ "look": [
6319
+ "variant",
6320
+ "separation",
6321
+ "gap"
6322
+ ]
6234
6323
  },
6235
6324
  {
6236
6325
  "type": "pricing",
@@ -6869,7 +6958,21 @@
6869
6958
  "plans"
6870
6959
  ]
6871
6960
  },
6872
- "schemaError": null
6961
+ "schemaError": null,
6962
+ "look": [
6963
+ "featureListStyle",
6964
+ "cardLayout",
6965
+ "toggleStyle",
6966
+ "gapAbove",
6967
+ "addonLayout",
6968
+ "headlineSize",
6969
+ "variant",
6970
+ "separation",
6971
+ "gap",
6972
+ "surface",
6973
+ "bandSurface",
6974
+ "collapseFeaturesOnMobile"
6975
+ ]
6873
6976
  },
6874
6977
  {
6875
6978
  "type": "cta",
@@ -7017,7 +7120,11 @@
7017
7120
  "primaryCta"
7018
7121
  ]
7019
7122
  },
7020
- "schemaError": null
7123
+ "schemaError": null,
7124
+ "look": [
7125
+ "variant",
7126
+ "surface"
7127
+ ]
7021
7128
  },
7022
7129
  {
7023
7130
  "type": "logoCloud",
@@ -7147,7 +7254,14 @@
7147
7254
  "logos"
7148
7255
  ]
7149
7256
  },
7150
- "schemaError": null
7257
+ "schemaError": null,
7258
+ "look": [
7259
+ "headlineStyle",
7260
+ "layout",
7261
+ "treatment",
7262
+ "logoSize",
7263
+ "surface"
7264
+ ]
7151
7265
  },
7152
7266
  {
7153
7267
  "type": "gallery",
@@ -7253,7 +7367,10 @@
7253
7367
  "images"
7254
7368
  ]
7255
7369
  },
7256
- "schemaError": null
7370
+ "schemaError": null,
7371
+ "look": [
7372
+ "columns"
7373
+ ]
7257
7374
  },
7258
7375
  {
7259
7376
  "type": "media-band",
@@ -7312,7 +7429,11 @@
7312
7429
  }
7313
7430
  }
7314
7431
  },
7315
- "schemaError": null
7432
+ "schemaError": null,
7433
+ "look": [
7434
+ "aspect",
7435
+ "width"
7436
+ ]
7316
7437
  },
7317
7438
  {
7318
7439
  "type": "awards",
@@ -7437,7 +7558,10 @@
7437
7558
  "badges"
7438
7559
  ]
7439
7560
  },
7440
- "schemaError": null
7561
+ "schemaError": null,
7562
+ "look": [
7563
+ "surface"
7564
+ ]
7441
7565
  },
7442
7566
  {
7443
7567
  "type": "spotlight-panel",
@@ -7512,7 +7636,10 @@
7512
7636
  "headline"
7513
7637
  ]
7514
7638
  },
7515
- "schemaError": null
7639
+ "schemaError": null,
7640
+ "look": [
7641
+ "dimStrength"
7642
+ ]
7516
7643
  },
7517
7644
  {
7518
7645
  "type": "tabs",
@@ -7602,7 +7729,12 @@
7602
7729
  "tabs"
7603
7730
  ]
7604
7731
  },
7605
- "schemaError": null
7732
+ "schemaError": null,
7733
+ "look": [
7734
+ "alignment",
7735
+ "indicator",
7736
+ "tone"
7737
+ ]
7606
7738
  },
7607
7739
  {
7608
7740
  "type": "before-after",
@@ -8064,7 +8196,11 @@
8064
8196
  "after"
8065
8197
  ]
8066
8198
  },
8067
- "schemaError": null
8199
+ "schemaError": null,
8200
+ "look": [
8201
+ "defaultView",
8202
+ "lightbox"
8203
+ ]
8068
8204
  },
8069
8205
  {
8070
8206
  "type": "bento-grid",
@@ -8184,7 +8320,10 @@
8184
8320
  "items"
8185
8321
  ]
8186
8322
  },
8187
- "schemaError": null
8323
+ "schemaError": null,
8324
+ "look": [
8325
+ "gap"
8326
+ ]
8188
8327
  },
8189
8328
  {
8190
8329
  "type": "carousel",
@@ -8311,7 +8450,12 @@
8311
8450
  "items"
8312
8451
  ]
8313
8452
  },
8314
- "schemaError": null
8453
+ "schemaError": null,
8454
+ "look": [
8455
+ "autoplay",
8456
+ "interval",
8457
+ "controls"
8458
+ ]
8315
8459
  },
8316
8460
  {
8317
8461
  "type": "team",
@@ -8542,7 +8686,19 @@
8542
8686
  "members"
8543
8687
  ]
8544
8688
  },
8545
- "schemaError": null
8689
+ "schemaError": null,
8690
+ "look": [
8691
+ "variant",
8692
+ "avatarSize",
8693
+ "avatarShape",
8694
+ "carded",
8695
+ "largePhotos",
8696
+ "hoverReveal",
8697
+ "separation",
8698
+ "gap",
8699
+ "phoneColumns",
8700
+ "surface"
8701
+ ]
8546
8702
  },
8547
8703
  {
8548
8704
  "type": "contact-form",
@@ -8742,7 +8898,11 @@
8742
8898
  "fields"
8743
8899
  ]
8744
8900
  },
8745
- "schemaError": null
8901
+ "schemaError": null,
8902
+ "look": [
8903
+ "variant",
8904
+ "pattern"
8905
+ ]
8746
8906
  },
8747
8907
  {
8748
8908
  "type": "step-flow",
@@ -8934,7 +9094,10 @@
8934
9094
  "action"
8935
9095
  ]
8936
9096
  },
8937
- "schemaError": null
9097
+ "schemaError": null,
9098
+ "look": [
9099
+ "arrowIcon"
9100
+ ]
8938
9101
  },
8939
9102
  {
8940
9103
  "type": "contact-channels",
@@ -9002,7 +9165,10 @@
9002
9165
  "items"
9003
9166
  ]
9004
9167
  },
9005
- "schemaError": null
9168
+ "schemaError": null,
9169
+ "look": [
9170
+ "layout"
9171
+ ]
9006
9172
  },
9007
9173
  {
9008
9174
  "type": "newsletter",
@@ -9118,7 +9284,11 @@
9118
9284
  "action"
9119
9285
  ]
9120
9286
  },
9121
- "schemaError": null
9287
+ "schemaError": null,
9288
+ "look": [
9289
+ "pattern",
9290
+ "surface"
9291
+ ]
9122
9292
  },
9123
9293
  {
9124
9294
  "type": "glossary-index",
@@ -9172,7 +9342,10 @@
9172
9342
  "terms"
9173
9343
  ]
9174
9344
  },
9175
- "schemaError": null
9345
+ "schemaError": null,
9346
+ "look": [
9347
+ "variant"
9348
+ ]
9176
9349
  },
9177
9350
  {
9178
9351
  "type": "blog-list",
@@ -9319,7 +9492,10 @@
9319
9492
  "posts"
9320
9493
  ]
9321
9494
  },
9322
- "schemaError": null
9495
+ "schemaError": null,
9496
+ "look": [
9497
+ "variant"
9498
+ ]
9323
9499
  },
9324
9500
  {
9325
9501
  "type": "blog-post",
@@ -9548,7 +9724,10 @@
9548
9724
  "publishedAt"
9549
9725
  ]
9550
9726
  },
9551
- "schemaError": null
9727
+ "schemaError": null,
9728
+ "look": [
9729
+ "variant"
9730
+ ]
9552
9731
  },
9553
9732
  {
9554
9733
  "type": "separator",
@@ -9644,7 +9823,14 @@
9644
9823
  }
9645
9824
  }
9646
9825
  },
9647
- "schemaError": null
9826
+ "schemaError": null,
9827
+ "look": [
9828
+ "size",
9829
+ "rule",
9830
+ "shape",
9831
+ "upperSurface",
9832
+ "lowerSurface"
9833
+ ]
9648
9834
  },
9649
9835
  {
9650
9836
  "type": "comparison-table",
@@ -9867,7 +10053,13 @@
9867
10053
  "groups"
9868
10054
  ]
9869
10055
  },
9870
- "schemaError": null
10056
+ "schemaError": null,
10057
+ "look": [
10058
+ "separation",
10059
+ "variant",
10060
+ "headlineSize",
10061
+ "checkStyle"
10062
+ ]
9871
10063
  },
9872
10064
  {
9873
10065
  "type": "definition",
@@ -9946,7 +10138,12 @@
9946
10138
  "definition"
9947
10139
  ]
9948
10140
  },
9949
- "schemaError": null
10141
+ "schemaError": null,
10142
+ "look": [
10143
+ "variant",
10144
+ "definitionSize",
10145
+ "borderTone"
10146
+ ]
9950
10147
  },
9951
10148
  {
9952
10149
  "type": "payment-receipt",
@@ -10019,7 +10216,8 @@
10019
10216
  "statusLabel"
10020
10217
  ]
10021
10218
  },
10022
- "schemaError": null
10219
+ "schemaError": null,
10220
+ "look": []
10023
10221
  },
10024
10222
  {
10025
10223
  "type": "scheduler-embed",
@@ -10100,7 +10298,12 @@
10100
10298
  }
10101
10299
  }
10102
10300
  },
10103
- "schemaError": null
10301
+ "schemaError": null,
10302
+ "look": [
10303
+ "surface",
10304
+ "height",
10305
+ "layout"
10306
+ ]
10104
10307
  },
10105
10308
  {
10106
10309
  "type": "alert",
@@ -10132,7 +10335,8 @@
10132
10335
  "tone"
10133
10336
  ]
10134
10337
  },
10135
- "schemaError": null
10338
+ "schemaError": null,
10339
+ "look": []
10136
10340
  },
10137
10341
  {
10138
10342
  "type": "decision-split",
@@ -10308,7 +10512,11 @@
10308
10512
  "panels"
10309
10513
  ]
10310
10514
  },
10311
- "schemaError": null
10515
+ "schemaError": null,
10516
+ "look": [
10517
+ "surface",
10518
+ "headlineSize"
10519
+ ]
10312
10520
  },
10313
10521
  {
10314
10522
  "type": "auth-panel",
@@ -10409,7 +10617,8 @@
10409
10617
  }
10410
10618
  }
10411
10619
  },
10412
- "schemaError": null
10620
+ "schemaError": null,
10621
+ "look": []
10413
10622
  },
10414
10623
  {
10415
10624
  "type": "ask-ai",
@@ -10466,7 +10675,11 @@
10466
10675
  "promptText"
10467
10676
  ]
10468
10677
  },
10469
- "schemaError": null
10678
+ "schemaError": null,
10679
+ "look": [
10680
+ "variant",
10681
+ "surface"
10682
+ ]
10470
10683
  },
10471
10684
  {
10472
10685
  "type": "stair-steps",
@@ -10567,7 +10780,11 @@
10567
10780
  "tiles"
10568
10781
  ]
10569
10782
  },
10570
- "schemaError": null
10783
+ "schemaError": null,
10784
+ "look": [
10785
+ "direction",
10786
+ "headlineSize"
10787
+ ]
10571
10788
  },
10572
10789
  {
10573
10790
  "type": "document-chassis",
@@ -10801,7 +11018,12 @@
10801
11018
  "sections"
10802
11019
  ]
10803
11020
  },
10804
- "schemaError": null
11021
+ "schemaError": null,
11022
+ "look": [
11023
+ "accentStyle",
11024
+ "layout",
11025
+ "surface"
11026
+ ]
10805
11027
  },
10806
11028
  {
10807
11029
  "type": "document-viewer",
@@ -10892,7 +11114,10 @@
10892
11114
  "pages"
10893
11115
  ]
10894
11116
  },
10895
- "schemaError": null
11117
+ "schemaError": null,
11118
+ "look": [
11119
+ "surface"
11120
+ ]
10896
11121
  },
10897
11122
  {
10898
11123
  "type": "report-header",
@@ -10929,7 +11154,10 @@
10929
11154
  "title"
10930
11155
  ]
10931
11156
  },
10932
- "schemaError": null
11157
+ "schemaError": null,
11158
+ "look": [
11159
+ "tone"
11160
+ ]
10933
11161
  },
10934
11162
  {
10935
11163
  "type": "reports-list",
@@ -11029,7 +11257,12 @@
11029
11257
  "reports"
11030
11258
  ]
11031
11259
  },
11032
- "schemaError": null
11260
+ "schemaError": null,
11261
+ "look": [
11262
+ "variant",
11263
+ "tone",
11264
+ "surface"
11265
+ ]
11033
11266
  },
11034
11267
  {
11035
11268
  "type": "booker",
@@ -11066,7 +11299,8 @@
11066
11299
  "calLink"
11067
11300
  ]
11068
11301
  },
11069
- "schemaError": null
11302
+ "schemaError": null,
11303
+ "look": []
11070
11304
  }
11071
11305
  ],
11072
11306
  "sectionSchemaFailures": 0,