@bettercms-ai/kit 0.1.1 → 2.0.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 (1100) hide show
  1. package/README.md +22 -16
  2. package/dist/_virtual/_rolldown/runtime.js +13 -0
  3. package/dist/adapters/dock-values.d.ts +28 -0
  4. package/dist/adapters/dock-values.js +41 -0
  5. package/dist/adapters/dock-values.js.map +1 -0
  6. package/dist/adapters/icons.d.ts +15 -0
  7. package/dist/adapters/icons.js +27 -0
  8. package/dist/adapters/icons.js.map +1 -0
  9. package/dist/adapters/lossy.d.ts +326 -0
  10. package/dist/adapters/lossy.js +414 -0
  11. package/dist/adapters/lossy.js.map +1 -0
  12. package/dist/adapters/prod-types.d.ts +546 -0
  13. package/dist/adapters/prod-types.js +714 -0
  14. package/dist/adapters/prod-types.js.map +1 -0
  15. package/dist/adapters/schema.d.ts +154 -0
  16. package/dist/adapters/schema.js +3020 -0
  17. package/dist/adapters/schema.js.map +1 -0
  18. package/dist/adapters/values.d.ts +221 -0
  19. package/dist/adapters/values.js +623 -0
  20. package/dist/adapters/values.js.map +1 -0
  21. package/dist/brand/logo.d.ts +17 -0
  22. package/dist/brand/logo.js +96 -0
  23. package/dist/brand/logo.js.map +1 -0
  24. package/dist/context.d.ts +359 -0
  25. package/dist/context.js +217 -0
  26. package/dist/context.js.map +1 -0
  27. package/dist/controls/button.d.ts +72 -0
  28. package/dist/controls/button.js +578 -0
  29. package/dist/controls/button.js.map +1 -0
  30. package/dist/controls/c1.d.ts +11 -0
  31. package/dist/controls/c1.js +24 -0
  32. package/dist/controls/c1.js.map +1 -0
  33. package/dist/controls/c2.d.ts +10 -0
  34. package/dist/controls/c2.js +19 -0
  35. package/dist/controls/c2.js.map +1 -0
  36. package/dist/controls/choice.d.ts +44 -0
  37. package/dist/controls/choice.js +463 -0
  38. package/dist/controls/choice.js.map +1 -0
  39. package/dist/controls/code-register.d.ts +1 -0
  40. package/dist/controls/code-register.js +8 -0
  41. package/dist/controls/code-register.js.map +1 -0
  42. package/dist/controls/code.d.ts +42 -0
  43. package/dist/controls/code.js +397 -0
  44. package/dist/controls/code.js.map +1 -0
  45. package/dist/controls/color.d.ts +5 -0
  46. package/dist/controls/color.js +130 -0
  47. package/dist/controls/color.js.map +1 -0
  48. package/dist/controls/component-services.d.ts +156 -0
  49. package/dist/controls/component-services.js +7 -0
  50. package/dist/controls/component-services.js.map +1 -0
  51. package/dist/controls/date-register.d.ts +1 -0
  52. package/dist/controls/date-register.js +9 -0
  53. package/dist/controls/date-register.js.map +1 -0
  54. package/dist/controls/date-zone.d.ts +104 -0
  55. package/dist/controls/date-zone.js +278 -0
  56. package/dist/controls/date-zone.js.map +1 -0
  57. package/dist/controls/date.d.ts +7 -0
  58. package/dist/controls/date.js +466 -0
  59. package/dist/controls/date.js.map +1 -0
  60. package/dist/controls/form-picker-register.d.ts +1 -0
  61. package/dist/controls/form-picker-register.js +19 -0
  62. package/dist/controls/form-picker-register.js.map +1 -0
  63. package/dist/controls/form-picker.d.ts +43 -0
  64. package/dist/controls/form-picker.js +85 -0
  65. package/dist/controls/form-picker.js.map +1 -0
  66. package/dist/controls/icon-register.d.ts +1 -0
  67. package/dist/controls/icon-register.js +8 -0
  68. package/dist/controls/icon-register.js.map +1 -0
  69. package/dist/controls/icon.d.ts +40 -0
  70. package/dist/controls/icon.js +360 -0
  71. package/dist/controls/icon.js.map +1 -0
  72. package/dist/controls/index.d.ts +5 -0
  73. package/dist/controls/index.js +38 -0
  74. package/dist/controls/index.js.map +1 -0
  75. package/dist/controls/json-register.d.ts +1 -0
  76. package/dist/controls/json-register.js +8 -0
  77. package/dist/controls/json-register.js.map +1 -0
  78. package/dist/controls/json.d.ts +2 -0
  79. package/dist/controls/json.js +82 -0
  80. package/dist/controls/json.js.map +1 -0
  81. package/dist/controls/link.d.ts +260 -0
  82. package/dist/controls/link.js +1186 -0
  83. package/dist/controls/link.js.map +1 -0
  84. package/dist/controls/location-register.d.ts +1 -0
  85. package/dist/controls/location-register.js +8 -0
  86. package/dist/controls/location-register.js.map +1 -0
  87. package/dist/controls/location.d.ts +16 -0
  88. package/dist/controls/location.js +221 -0
  89. package/dist/controls/location.js.map +1 -0
  90. package/dist/controls/media-register.d.ts +1 -0
  91. package/dist/controls/media-register.js +12 -0
  92. package/dist/controls/media-register.js.map +1 -0
  93. package/dist/controls/media-services.d.ts +46 -0
  94. package/dist/controls/media-services.js +0 -0
  95. package/dist/controls/media.d.ts +104 -0
  96. package/dist/controls/media.js +1396 -0
  97. package/dist/controls/media.js.map +1 -0
  98. package/dist/controls/number.d.ts +22 -0
  99. package/dist/controls/number.js +196 -0
  100. package/dist/controls/number.js.map +1 -0
  101. package/dist/controls/reference-register.d.ts +1 -0
  102. package/dist/controls/reference-register.js +10 -0
  103. package/dist/controls/reference-register.js.map +1 -0
  104. package/dist/controls/reference-services.d.ts +58 -0
  105. package/dist/controls/reference-services.js +0 -0
  106. package/dist/controls/reference.d.ts +23 -0
  107. package/dist/controls/reference.js +777 -0
  108. package/dist/controls/reference.js.map +1 -0
  109. package/dist/controls/rich-text/blocks.d.ts +49 -0
  110. package/dist/controls/rich-text/blocks.js +1859 -0
  111. package/dist/controls/rich-text/blocks.js.map +1 -0
  112. package/dist/controls/rich-text/catalog.d.ts +101 -0
  113. package/dist/controls/rich-text/catalog.js +623 -0
  114. package/dist/controls/rich-text/catalog.js.map +1 -0
  115. package/dist/controls/rich-text/codec.d.ts +64 -0
  116. package/dist/controls/rich-text/codec.js +34 -0
  117. package/dist/controls/rich-text/codec.js.map +1 -0
  118. package/dist/controls/rich-text/component-card.d.ts +14 -0
  119. package/dist/controls/rich-text/component-card.js +1024 -0
  120. package/dist/controls/rich-text/component-card.js.map +1 -0
  121. package/dist/controls/rich-text/component-panel.d.ts +47 -0
  122. package/dist/controls/rich-text/component-panel.js +141 -0
  123. package/dist/controls/rich-text/component-panel.js.map +1 -0
  124. package/dist/controls/rich-text/control.d.ts +20 -0
  125. package/dist/controls/rich-text/control.js +296 -0
  126. package/dist/controls/rich-text/control.js.map +1 -0
  127. package/dist/controls/rich-text/dom.d.ts +233 -0
  128. package/dist/controls/rich-text/dom.js +1019 -0
  129. package/dist/controls/rich-text/dom.js.map +1 -0
  130. package/dist/controls/rich-text/editor.d.ts +57 -0
  131. package/dist/controls/rich-text/editor.js +1630 -0
  132. package/dist/controls/rich-text/editor.js.map +1 -0
  133. package/dist/controls/rich-text/floating.d.ts +28 -0
  134. package/dist/controls/rich-text/floating.js +154 -0
  135. package/dist/controls/rich-text/floating.js.map +1 -0
  136. package/dist/controls/rich-text/index.d.ts +1 -0
  137. package/dist/controls/rich-text/index.js +12 -0
  138. package/dist/controls/rich-text/index.js.map +1 -0
  139. package/dist/controls/rich-text/link-form.d.ts +13 -0
  140. package/dist/controls/rich-text/link-form.js +147 -0
  141. package/dist/controls/rich-text/link-form.js.map +1 -0
  142. package/dist/controls/rich-text/markdown.d.ts +6 -0
  143. package/dist/controls/rich-text/markdown.js +181 -0
  144. package/dist/controls/rich-text/markdown.js.map +1 -0
  145. package/dist/controls/rich-text/ops.d.ts +35 -0
  146. package/dist/controls/rich-text/ops.js +316 -0
  147. package/dist/controls/rich-text/ops.js.map +1 -0
  148. package/dist/controls/rich-text/plain.d.ts +17 -0
  149. package/dist/controls/rich-text/plain.js +44 -0
  150. package/dist/controls/rich-text/plain.js.map +1 -0
  151. package/dist/controls/rich-text/toolbar.d.ts +89 -0
  152. package/dist/controls/rich-text/toolbar.js +343 -0
  153. package/dist/controls/rich-text/toolbar.js.map +1 -0
  154. package/dist/controls/scale.d.ts +56 -0
  155. package/dist/controls/scale.js +563 -0
  156. package/dist/controls/scale.js.map +1 -0
  157. package/dist/controls/slot-register.d.ts +1 -0
  158. package/dist/controls/slot-register.js +16 -0
  159. package/dist/controls/slot-register.js.map +1 -0
  160. package/dist/controls/slot-services.d.ts +122 -0
  161. package/dist/controls/slot-services.js +155 -0
  162. package/dist/controls/slot-services.js.map +1 -0
  163. package/dist/controls/slot.d.ts +33 -0
  164. package/dist/controls/slot.js +366 -0
  165. package/dist/controls/slot.js.map +1 -0
  166. package/dist/controls/table/index.d.ts +1 -0
  167. package/dist/controls/table/index.js +12 -0
  168. package/dist/controls/table/index.js.map +1 -0
  169. package/dist/controls/table/prod.d.ts +21 -0
  170. package/dist/controls/table/prod.js +79 -0
  171. package/dist/controls/table/prod.js.map +1 -0
  172. package/dist/controls/table/refs.d.ts +50 -0
  173. package/dist/controls/table/refs.js +79 -0
  174. package/dist/controls/table/refs.js.map +1 -0
  175. package/dist/controls/table/stored.d.ts +15 -0
  176. package/dist/controls/table/stored.js +44 -0
  177. package/dist/controls/table/stored.js.map +1 -0
  178. package/dist/controls/table/table-editor.d.ts +103 -0
  179. package/dist/controls/table/table-editor.js +2725 -0
  180. package/dist/controls/table/table-editor.js.map +1 -0
  181. package/dist/controls/table/table-link.d.ts +24 -0
  182. package/dist/controls/table/table-link.js +180 -0
  183. package/dist/controls/table/table-link.js.map +1 -0
  184. package/dist/controls/table/table.d.ts +9 -0
  185. package/dist/controls/table/table.js +103 -0
  186. package/dist/controls/table/table.js.map +1 -0
  187. package/dist/controls/text.d.ts +17 -0
  188. package/dist/controls/text.js +322 -0
  189. package/dist/controls/text.js.map +1 -0
  190. package/dist/controls/unknown-value.d.ts +17 -0
  191. package/dist/controls/unknown-value.js +66 -0
  192. package/dist/controls/unknown-value.js.map +1 -0
  193. package/dist/core/core.d.ts +63 -0
  194. package/dist/core/core.js +171 -0
  195. package/dist/core/core.js.map +1 -0
  196. package/dist/core/facets.d.ts +347 -0
  197. package/dist/core/facets.js +334 -0
  198. package/dist/core/facets.js.map +1 -0
  199. package/dist/core/index.d.ts +3 -0
  200. package/dist/core/index.js +3 -0
  201. package/dist/engine/array.d.ts +101 -0
  202. package/dist/engine/array.js +906 -0
  203. package/dist/engine/array.js.map +1 -0
  204. package/dist/engine/bits.d.ts +24 -0
  205. package/dist/engine/bits.js +60 -0
  206. package/dist/engine/bits.js.map +1 -0
  207. package/dist/engine/breadcrumb.d.ts +45 -0
  208. package/dist/engine/breadcrumb.js +63 -0
  209. package/dist/engine/breadcrumb.js.map +1 -0
  210. package/dist/engine/expand.d.ts +66 -0
  211. package/dist/engine/expand.js +153 -0
  212. package/dist/engine/expand.js.map +1 -0
  213. package/dist/engine/field-list.d.ts +20 -0
  214. package/dist/engine/field-list.js +19 -0
  215. package/dist/engine/field-list.js.map +1 -0
  216. package/dist/engine/field-shell.d.ts +49 -0
  217. package/dist/engine/field-shell.js +988 -0
  218. package/dist/engine/field-shell.js.map +1 -0
  219. package/dist/engine/frame.d.ts +122 -0
  220. package/dist/engine/frame.js +601 -0
  221. package/dist/engine/frame.js.map +1 -0
  222. package/dist/engine/group-summary.d.ts +5 -0
  223. package/dist/engine/group-summary.js +70 -0
  224. package/dist/engine/group-summary.js.map +1 -0
  225. package/dist/engine/grouping.d.ts +238 -0
  226. package/dist/engine/grouping.js +996 -0
  227. package/dist/engine/grouping.js.map +1 -0
  228. package/dist/engine/item-list.d.ts +99 -0
  229. package/dist/engine/item-list.js +725 -0
  230. package/dist/engine/item-list.js.map +1 -0
  231. package/dist/engine/kit-field.d.ts +72 -0
  232. package/dist/engine/kit-field.js +558 -0
  233. package/dist/engine/kit-field.js.map +1 -0
  234. package/dist/engine/schema-form.d.ts +116 -0
  235. package/dist/engine/schema-form.js +462 -0
  236. package/dist/engine/schema-form.js.map +1 -0
  237. package/dist/engine/slot.d.ts +13 -0
  238. package/dist/engine/slot.js +216 -0
  239. package/dist/engine/slot.js.map +1 -0
  240. package/dist/index.d.ts +45 -3139
  241. package/dist/index.js +47 -2036
  242. package/dist/index.js.map +1 -0
  243. package/dist/kit.css +75 -0
  244. package/dist/lib/cn.d.ts +4 -0
  245. package/dist/lib/cn.js +56 -0
  246. package/dist/lib/cn.js.map +1 -0
  247. package/dist/lib/columns.d.ts +14 -0
  248. package/dist/lib/columns.js +30 -0
  249. package/dist/lib/columns.js.map +1 -0
  250. package/dist/lib/frames.d.ts +36 -0
  251. package/dist/lib/frames.js +214 -0
  252. package/dist/lib/frames.js.map +1 -0
  253. package/dist/lib/icon-image.d.ts +10 -0
  254. package/dist/lib/icon-image.js +8 -0
  255. package/dist/lib/icon-image.js.map +1 -0
  256. package/dist/lib/icons.d.ts +16 -0
  257. package/dist/lib/icons.js +173 -0
  258. package/dist/lib/icons.js.map +1 -0
  259. package/dist/lib/input-modality.d.ts +11 -0
  260. package/dist/lib/input-modality.js +47 -0
  261. package/dist/lib/input-modality.js.map +1 -0
  262. package/dist/lib/key-event.d.ts +11 -0
  263. package/dist/lib/key-event.js +16 -0
  264. package/dist/lib/key-event.js.map +1 -0
  265. package/dist/lib/path.d.ts +29 -0
  266. package/dist/lib/path.js +66 -0
  267. package/dist/lib/path.js.map +1 -0
  268. package/dist/lib/schema.d.ts +80 -0
  269. package/dist/lib/schema.js +384 -0
  270. package/dist/lib/schema.js.map +1 -0
  271. package/dist/lib/utils.d.ts +7 -0
  272. package/dist/lib/utils.js +37 -0
  273. package/dist/lib/utils.js.map +1 -0
  274. package/dist/lib/validate.d.ts +30 -0
  275. package/dist/lib/validate.js +224 -0
  276. package/dist/lib/validate.js.map +1 -0
  277. package/dist/library/analysis.d.ts +23 -0
  278. package/dist/library/analysis.js +160 -0
  279. package/dist/library/analysis.js.map +1 -0
  280. package/dist/library/catalog.d.ts +57 -0
  281. package/dist/library/catalog.js +307 -0
  282. package/dist/library/catalog.js.map +1 -0
  283. package/dist/library/coreNotes.d.ts +8 -0
  284. package/dist/library/coreNotes.js +111 -0
  285. package/dist/library/coreNotes.js.map +1 -0
  286. package/dist/library/coverage.d.ts +40 -0
  287. package/dist/library/coverage.js +59 -0
  288. package/dist/library/coverage.js.map +1 -0
  289. package/dist/library/entries/advanced.entries.d.ts +2 -0
  290. package/dist/library/entries/advanced.entries.js +6579 -0
  291. package/dist/library/entries/advanced.entries.js.map +1 -0
  292. package/dist/library/entries/commerce.entries.d.ts +2 -0
  293. package/dist/library/entries/commerce.entries.js +4140 -0
  294. package/dist/library/entries/commerce.entries.js.map +1 -0
  295. package/dist/library/entries/company.entries.d.ts +2 -0
  296. package/dist/library/entries/company.entries.js +2731 -0
  297. package/dist/library/entries/company.entries.js.map +1 -0
  298. package/dist/library/entries/conversion.entries.d.ts +2 -0
  299. package/dist/library/entries/conversion.entries.js +3707 -0
  300. package/dist/library/entries/conversion.entries.js.map +1 -0
  301. package/dist/library/entries/data.entries.d.ts +7 -0
  302. package/dist/library/entries/data.entries.js +4613 -0
  303. package/dist/library/entries/data.entries.js.map +1 -0
  304. package/dist/library/entries/events.entries.d.ts +2 -0
  305. package/dist/library/entries/events.entries.js +3428 -0
  306. package/dist/library/entries/events.entries.js.map +1 -0
  307. package/dist/library/entries/features.entries.d.ts +2 -0
  308. package/dist/library/entries/features.entries.js +3157 -0
  309. package/dist/library/entries/features.entries.js.map +1 -0
  310. package/dist/library/entries/heroes.entries.d.ts +2 -0
  311. package/dist/library/entries/heroes.entries.js +3401 -0
  312. package/dist/library/entries/heroes.entries.js.map +1 -0
  313. package/dist/library/entries/index.d.ts +3 -0
  314. package/dist/library/entries/index.js +35 -0
  315. package/dist/library/entries/index.js.map +1 -0
  316. package/dist/library/entries/listings.entries.d.ts +2 -0
  317. package/dist/library/entries/listings.entries.js +2976 -0
  318. package/dist/library/entries/listings.entries.js.map +1 -0
  319. package/dist/library/entries/longform.entries.d.ts +2 -0
  320. package/dist/library/entries/longform.entries.js +4227 -0
  321. package/dist/library/entries/longform.entries.js.map +1 -0
  322. package/dist/library/entries/media.entries.d.ts +2 -0
  323. package/dist/library/entries/media.entries.js +2781 -0
  324. package/dist/library/entries/media.entries.js.map +1 -0
  325. package/dist/library/entries/navigation.entries.d.ts +2 -0
  326. package/dist/library/entries/navigation.entries.js +4011 -0
  327. package/dist/library/entries/navigation.entries.js.map +1 -0
  328. package/dist/library/entries/pricing.entries.d.ts +2 -0
  329. package/dist/library/entries/pricing.entries.js +2383 -0
  330. package/dist/library/entries/pricing.entries.js.map +1 -0
  331. package/dist/library/entries/social-proof.entries.d.ts +2 -0
  332. package/dist/library/entries/social-proof.entries.js +2297 -0
  333. package/dist/library/entries/social-proof.entries.js.map +1 -0
  334. package/dist/library/examples/bento.d.ts +92 -0
  335. package/dist/library/examples/bento.js +201 -0
  336. package/dist/library/examples/bento.js.map +1 -0
  337. package/dist/library/examples/blocks.d.ts +14 -0
  338. package/dist/library/examples/blocks.js +313 -0
  339. package/dist/library/examples/blocks.js.map +1 -0
  340. package/dist/library/examples/faq.d.ts +28 -0
  341. package/dist/library/examples/faq.js +230 -0
  342. package/dist/library/examples/faq.js.map +1 -0
  343. package/dist/library/examples/hero.d.ts +43 -0
  344. package/dist/library/examples/hero.js +222 -0
  345. package/dist/library/examples/hero.js.map +1 -0
  346. package/dist/library/examples/index.d.ts +36 -0
  347. package/dist/library/examples/index.js +109 -0
  348. package/dist/library/examples/index.js.map +1 -0
  349. package/dist/library/examples/journalStory.d.ts +93 -0
  350. package/dist/library/examples/journalStory.js +338 -0
  351. package/dist/library/examples/journalStory.js.map +1 -0
  352. package/dist/library/examples/megaMenu.d.ts +134 -0
  353. package/dist/library/examples/megaMenu.js +442 -0
  354. package/dist/library/examples/megaMenu.js.map +1 -0
  355. package/dist/library/examples/pricing.d.ts +103 -0
  356. package/dist/library/examples/pricing.js +479 -0
  357. package/dist/library/examples/pricing.js.map +1 -0
  358. package/dist/library/examples/tabs.d.ts +87 -0
  359. package/dist/library/examples/tabs.js +180 -0
  360. package/dist/library/examples/tabs.js.map +1 -0
  361. package/dist/library/export.d.ts +42 -0
  362. package/dist/library/export.js +80 -0
  363. package/dist/library/export.js.map +1 -0
  364. package/dist/library/index.d.ts +13 -0
  365. package/dist/library/index.js +6 -0
  366. package/dist/library/kit-catalog.json +1510 -0
  367. package/dist/library/types.d.ts +42 -0
  368. package/dist/library/types.js +0 -0
  369. package/dist/schema/adapters.d.ts +28 -0
  370. package/dist/schema/adapters.js +492 -0
  371. package/dist/schema/adapters.js.map +1 -0
  372. package/dist/schema/help.d.ts +27 -0
  373. package/dist/schema/help.js +56 -0
  374. package/dist/schema/help.js.map +1 -0
  375. package/dist/schema/scale.d.ts +69 -0
  376. package/dist/schema/scale.js +250 -0
  377. package/dist/schema/scale.js.map +1 -0
  378. package/dist/schema/sources.d.ts +103 -0
  379. package/dist/schema/sources.js +65 -0
  380. package/dist/schema/sources.js.map +1 -0
  381. package/dist/schema/table.d.ts +319 -0
  382. package/dist/schema/table.js +1199 -0
  383. package/dist/schema/table.js.map +1 -0
  384. package/dist/schema/types.d.ts +297 -0
  385. package/dist/schema/types.js +14 -0
  386. package/dist/schema/types.js.map +1 -0
  387. package/dist/styles.css +2 -0
  388. package/dist/table/table-view.d.ts +14 -0
  389. package/dist/table/table-view.js +140 -0
  390. package/dist/table/table-view.js.map +1 -0
  391. package/dist/table/table.css +73 -0
  392. package/dist/testing/corpus.d.ts +63 -0
  393. package/dist/testing/corpus.js +129 -0
  394. package/dist/testing/corpus.js.map +1 -0
  395. package/dist/testing/test-form.d.ts +11 -0
  396. package/dist/testing/test-form.js +38 -0
  397. package/dist/testing/test-form.js.map +1 -0
  398. package/dist/theme.css +345 -0
  399. package/dist/theme.d.ts +20 -1504
  400. package/dist/theme.js +43 -4126
  401. package/dist/theme.js.map +1 -0
  402. package/dist/tokens.css +542 -0
  403. package/dist/types.d.ts +17 -0
  404. package/dist/types.js +0 -0
  405. package/dist/ui/action-tray.d.ts +54 -0
  406. package/dist/ui/action-tray.js +154 -0
  407. package/dist/ui/action-tray.js.map +1 -0
  408. package/dist/ui/autocomplete.d.ts +30 -0
  409. package/dist/ui/autocomplete.js +139 -0
  410. package/dist/ui/autocomplete.js.map +1 -0
  411. package/dist/ui/button.d.ts +57 -0
  412. package/dist/ui/button.js +201 -0
  413. package/dist/ui/button.js.map +1 -0
  414. package/dist/ui/choice-switch.d.ts +36 -0
  415. package/dist/ui/choice-switch.js +57 -0
  416. package/dist/ui/choice-switch.js.map +1 -0
  417. package/dist/ui/controls.d.ts +83 -0
  418. package/dist/ui/controls.js +331 -0
  419. package/dist/ui/controls.js.map +1 -0
  420. package/dist/ui/display.d.ts +163 -0
  421. package/dist/ui/display.js +455 -0
  422. package/dist/ui/display.js.map +1 -0
  423. package/dist/ui/expanded-editor-modal.d.ts +26 -0
  424. package/dist/ui/expanded-editor-modal.js +140 -0
  425. package/dist/ui/expanded-editor-modal.js.map +1 -0
  426. package/dist/ui/field-context.d.ts +12 -0
  427. package/dist/ui/field-context.js +23 -0
  428. package/dist/ui/field-context.js.map +1 -0
  429. package/dist/ui/floating-panel.d.ts +152 -0
  430. package/dist/ui/floating-panel.js +928 -0
  431. package/dist/ui/floating-panel.js.map +1 -0
  432. package/dist/ui/index.d.ts +16 -0
  433. package/dist/ui/index.js +18 -0
  434. package/dist/ui/input.d.ts +78 -0
  435. package/dist/ui/input.js +250 -0
  436. package/dist/ui/input.js.map +1 -0
  437. package/dist/ui/mode-bar.d.ts +31 -0
  438. package/dist/ui/mode-bar.js +65 -0
  439. package/dist/ui/mode-bar.js.map +1 -0
  440. package/dist/ui/overlay.d.ts +195 -0
  441. package/dist/ui/overlay.js +697 -0
  442. package/dist/ui/overlay.js.map +1 -0
  443. package/dist/ui/path-crumbs.d.ts +90 -0
  444. package/dist/ui/path-crumbs.js +566 -0
  445. package/dist/ui/path-crumbs.js.map +1 -0
  446. package/dist/ui/presence.d.ts +16 -0
  447. package/dist/ui/presence.js +65 -0
  448. package/dist/ui/presence.js.map +1 -0
  449. package/dist/ui/select.d.ts +66 -0
  450. package/dist/ui/select.js +407 -0
  451. package/dist/ui/select.js.map +1 -0
  452. package/dist/ui/shortcut-hint.d.ts +14 -0
  453. package/dist/ui/shortcut-hint.js +35 -0
  454. package/dist/ui/shortcut-hint.js.map +1 -0
  455. package/dist/ui/spinner.d.ts +24 -0
  456. package/dist/ui/spinner.js +42 -0
  457. package/dist/ui/spinner.js.map +1 -0
  458. package/dist/ui/split-button.d.ts +32 -0
  459. package/dist/ui/split-button.js +60 -0
  460. package/dist/ui/split-button.js.map +1 -0
  461. package/dist/ui/surfaces.d.ts +23 -0
  462. package/dist/ui/surfaces.js +26 -0
  463. package/dist/ui/surfaces.js.map +1 -0
  464. package/dist/ui/tab.d.ts +38 -0
  465. package/dist/ui/tab.js +87 -0
  466. package/dist/ui/tab.js.map +1 -0
  467. package/dist/ui/toast.d.ts +20 -0
  468. package/dist/ui/toast.js +115 -0
  469. package/dist/ui/toast.js.map +1 -0
  470. package/dist/ui/tooltip-root.d.ts +13 -0
  471. package/dist/ui/tooltip-root.js +77 -0
  472. package/dist/ui/tooltip-root.js.map +1 -0
  473. package/dist/ui/variants.d.ts +15 -0
  474. package/dist/ui/variants.js +14 -0
  475. package/dist/ui/variants.js.map +1 -0
  476. package/package.json +76 -50
  477. package/LICENSE +0 -21
  478. package/dist/_chunks-cjs/_visual-editing.js +0 -5898
  479. package/dist/_chunks-cjs/refractor.js +0 -22
  480. package/dist/_chunks-es/_visual-editing.mjs +0 -5904
  481. package/dist/_chunks-es/refractor.mjs +0 -25
  482. package/dist/_color.d.mts +0 -119
  483. package/dist/_color.d.ts +0 -119
  484. package/dist/_color.js +0 -1412
  485. package/dist/_color.mjs +0 -1411
  486. package/dist/_visual-editing.d.mts +0 -1126
  487. package/dist/_visual-editing.d.ts +0 -1126
  488. package/dist/_visual-editing.js +0 -30
  489. package/dist/_visual-editing.mjs +0 -30
  490. package/dist/index.d.mts +0 -3140
  491. package/dist/index.mjs +0 -2044
  492. package/dist/theme.d.mts +0 -1506
  493. package/dist/theme.mjs +0 -4126
  494. package/exports/_visual-editing.ts +0 -31
  495. package/exports/index.ts +0 -1
  496. package/exports/theme.ts +0 -1
  497. package/src/color/index.d.mts +0 -119
  498. package/src/color/index.mjs +0 -1411
  499. package/src/core/__workshop__/constants.ts +0 -293
  500. package/src/core/_compat.ts +0 -264
  501. package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
  502. package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
  503. package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
  504. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
  505. package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
  506. package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
  507. package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
  508. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
  509. package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
  510. package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
  511. package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
  512. package/src/core/components/autocomplete/autocomplete.tsx +0 -767
  513. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -45
  514. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  515. package/src/core/components/autocomplete/constants.ts +0 -28
  516. package/src/core/components/autocomplete/index.ts +0 -2
  517. package/src/core/components/autocomplete/types.ts +0 -108
  518. package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
  519. package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
  520. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
  521. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -51
  522. package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -133
  523. package/src/core/components/breadcrumbs/index.ts +0 -1
  524. package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
  525. package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
  526. package/src/core/components/dialog/__workshop__/index.ts +0 -19
  527. package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
  528. package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
  529. package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
  530. package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
  531. package/src/core/components/dialog/__workshop__/position.tsx +0 -30
  532. package/src/core/components/dialog/__workshop__/props.tsx +0 -75
  533. package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
  534. package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
  535. package/src/core/components/dialog/dialog.tsx +0 -430
  536. package/src/core/components/dialog/dialogContext.ts +0 -20
  537. package/src/core/components/dialog/dialogProvider.tsx +0 -35
  538. package/src/core/components/dialog/index.ts +0 -4
  539. package/src/core/components/dialog/styles.ts +0 -77
  540. package/src/core/components/dialog/useDialog.ts +0 -11
  541. package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
  542. package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
  543. package/src/core/components/hotkeys/hotkeys.test.tsx +0 -42
  544. package/src/core/components/hotkeys/hotkeys.tsx +0 -66
  545. package/src/core/components/hotkeys/index.ts +0 -1
  546. package/src/core/components/index.ts +0 -9
  547. package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
  548. package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
  549. package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
  550. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
  551. package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
  552. package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
  553. package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
  554. package/src/core/components/menu/__workshop__/groups.tsx +0 -156
  555. package/src/core/components/menu/__workshop__/index.ts +0 -89
  556. package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
  557. package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -58
  558. package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
  559. package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
  560. package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
  561. package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
  562. package/src/core/components/menu/__workshop__/tones.tsx +0 -25
  563. package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
  564. package/src/core/components/menu/helpers.ts +0 -82
  565. package/src/core/components/menu/index.ts +0 -5
  566. package/src/core/components/menu/menu.spacing.test.tsx +0 -63
  567. package/src/core/components/menu/menu.test.tsx +0 -125
  568. package/src/core/components/menu/menu.tsx +0 -178
  569. package/src/core/components/menu/menuButton.tsx +0 -268
  570. package/src/core/components/menu/menuContext.ts +0 -18
  571. package/src/core/components/menu/menuDivider.ts +0 -23
  572. package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -63
  573. package/src/core/components/menu/menuGroup.tsx +0 -233
  574. package/src/core/components/menu/menuItem.spacing.test.tsx +0 -59
  575. package/src/core/components/menu/menuItem.tsx +0 -197
  576. package/src/core/components/menu/useMenu.ts +0 -21
  577. package/src/core/components/menu/useMenuController.ts +0 -231
  578. package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
  579. package/src/core/components/skeleton/__workshop__/index.ts +0 -11
  580. package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
  581. package/src/core/components/skeleton/index.ts +0 -2
  582. package/src/core/components/skeleton/skeleton.tsx +0 -57
  583. package/src/core/components/skeleton/styles.ts +0 -50
  584. package/src/core/components/skeleton/textSkeleton.tsx +0 -122
  585. package/src/core/components/tab/__workshop__/example.tsx +0 -79
  586. package/src/core/components/tab/__workshop__/index.ts +0 -14
  587. package/src/core/components/tab/index.ts +0 -3
  588. package/src/core/components/tab/tab.tsx +0 -101
  589. package/src/core/components/tab/tabList.test.tsx +0 -48
  590. package/src/core/components/tab/tabList.tsx +0 -70
  591. package/src/core/components/tab/tabPanel.tsx +0 -39
  592. package/src/core/components/toast/__workshop__/hook.tsx +0 -71
  593. package/src/core/components/toast/__workshop__/index.ts +0 -19
  594. package/src/core/components/toast/__workshop__/toast.tsx +0 -26
  595. package/src/core/components/toast/index.ts +0 -4
  596. package/src/core/components/toast/styles.ts +0 -77
  597. package/src/core/components/toast/toast.test.tsx +0 -101
  598. package/src/core/components/toast/toast.tsx +0 -198
  599. package/src/core/components/toast/toastContext.ts +0 -7
  600. package/src/core/components/toast/toastLayer.tsx +0 -51
  601. package/src/core/components/toast/toastProvider.tsx +0 -113
  602. package/src/core/components/toast/toastState.ts +0 -6
  603. package/src/core/components/toast/types.ts +0 -26
  604. package/src/core/components/toast/useToast.ts +0 -25
  605. package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
  606. package/src/core/components/tree/__workshop__/basic.tsx +0 -105
  607. package/src/core/components/tree/__workshop__/index.ts +0 -21
  608. package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
  609. package/src/core/components/tree/helpers.ts +0 -105
  610. package/src/core/components/tree/index.ts +0 -4
  611. package/src/core/components/tree/style.ts +0 -105
  612. package/src/core/components/tree/tree.test.tsx +0 -55
  613. package/src/core/components/tree/tree.tsx +0 -240
  614. package/src/core/components/tree/treeContext.ts +0 -10
  615. package/src/core/components/tree/treeGroup.tsx +0 -28
  616. package/src/core/components/tree/treeItem.test.tsx +0 -65
  617. package/src/core/components/tree/treeItem.tsx +0 -224
  618. package/src/core/components/tree/types.ts +0 -25
  619. package/src/core/components/tree/useTree.ts +0 -17
  620. package/src/core/constants.ts +0 -79
  621. package/src/core/helpers/animation.ts +0 -27
  622. package/src/core/helpers/element.ts +0 -55
  623. package/src/core/helpers/focus.ts +0 -100
  624. package/src/core/helpers/index.ts +0 -4
  625. package/src/core/helpers/scroll.ts +0 -15
  626. package/src/core/hooks/index.ts +0 -12
  627. package/src/core/hooks/useArrayProp.ts +0 -17
  628. package/src/core/hooks/useClickOutside.test.tsx +0 -482
  629. package/src/core/hooks/useClickOutside.ts +0 -118
  630. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -115
  631. package/src/core/hooks/useClickOutsideEvent.ts +0 -73
  632. package/src/core/hooks/useCustomValidity.ts +0 -13
  633. package/src/core/hooks/useDelayed.test.ts +0 -88
  634. package/src/core/hooks/useDelayedState.ts +0 -36
  635. package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
  636. package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
  637. package/src/core/hooks/useElementRect/index.ts +0 -1
  638. package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
  639. package/src/core/hooks/useElementSize.ts +0 -19
  640. package/src/core/hooks/useForwardedRef.ts +0 -19
  641. package/src/core/hooks/useGlobalKeyDown.ts +0 -24
  642. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  643. package/src/core/hooks/useMatchMedia.ts +0 -28
  644. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
  645. package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
  646. package/src/core/hooks/useMediaIndex/index.ts +0 -1
  647. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -36
  648. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
  649. package/src/core/hooks/useMounted.ts +0 -15
  650. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
  651. package/src/core/hooks/usePrefersDark.test.tsx +0 -19
  652. package/src/core/hooks/usePrefersDark.ts +0 -16
  653. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  654. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -19
  655. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  656. package/src/core/index.ts +0 -10
  657. package/src/core/lib/createGlobalScopedContext.ts +0 -36
  658. package/src/core/lib/globalScope.ts +0 -19
  659. package/src/core/lib/isRecord.ts +0 -3
  660. package/src/core/middleware/origin.ts +0 -47
  661. package/src/core/observers/elementSizeObserver.ts +0 -116
  662. package/src/core/observers/index.ts +0 -2
  663. package/src/core/observers/resizeObserver.ts +0 -9
  664. package/src/core/primitives/_selectable/index.ts +0 -1
  665. package/src/core/primitives/_selectable/selectable.tsx +0 -15
  666. package/src/core/primitives/_selectable/style.ts +0 -115
  667. package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
  668. package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
  669. package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
  670. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
  671. package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
  672. package/src/core/primitives/avatar/avatar.tsx +0 -200
  673. package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
  674. package/src/core/primitives/avatar/avatarStack.tsx +0 -100
  675. package/src/core/primitives/avatar/index.ts +0 -4
  676. package/src/core/primitives/avatar/styles.ts +0 -167
  677. package/src/core/primitives/avatar/types.ts +0 -17
  678. package/src/core/primitives/badge/__workshop__/index.ts +0 -19
  679. package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
  680. package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
  681. package/src/core/primitives/badge/badge.test.tsx +0 -16
  682. package/src/core/primitives/badge/badge.tsx +0 -70
  683. package/src/core/primitives/badge/index.ts +0 -1
  684. package/src/core/primitives/badge/styles.ts +0 -20
  685. package/src/core/primitives/badge/types.ts +0 -8
  686. package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
  687. package/src/core/primitives/box/__workshop__/index.ts +0 -24
  688. package/src/core/primitives/box/__workshop__/props.tsx +0 -20
  689. package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
  690. package/src/core/primitives/box/box.test.tsx +0 -142
  691. package/src/core/primitives/box/box.tsx +0 -154
  692. package/src/core/primitives/box/index.ts +0 -1
  693. package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
  694. package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
  695. package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
  696. package/src/core/primitives/button/__workshop__/index.ts +0 -59
  697. package/src/core/primitives/button/__workshop__/labelUploadButton.tsx +0 -36
  698. package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
  699. package/src/core/primitives/button/__workshop__/props.tsx +0 -55
  700. package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
  701. package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
  702. package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
  703. package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
  704. package/src/core/primitives/button/button.test.tsx +0 -82
  705. package/src/core/primitives/button/button.tsx +0 -210
  706. package/src/core/primitives/button/index.ts +0 -1
  707. package/src/core/primitives/button/styles.ts +0 -117
  708. package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
  709. package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
  710. package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
  711. package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
  712. package/src/core/primitives/card/__workshop__/index.ts +0 -18
  713. package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
  714. package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
  715. package/src/core/primitives/card/__workshop__/props.tsx +0 -53
  716. package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
  717. package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
  718. package/src/core/primitives/card/card.tsx +0 -128
  719. package/src/core/primitives/card/index.ts +0 -2
  720. package/src/core/primitives/card/styles.ts +0 -147
  721. package/src/core/primitives/card/types.ts +0 -11
  722. package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
  723. package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
  724. package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
  725. package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
  726. package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
  727. package/src/core/primitives/checkbox/checkbox.tsx +0 -73
  728. package/src/core/primitives/checkbox/index.ts +0 -1
  729. package/src/core/primitives/checkbox/styles.ts +0 -128
  730. package/src/core/primitives/code/__workshop__/index.ts +0 -19
  731. package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
  732. package/src/core/primitives/code/__workshop__/props.tsx +0 -21
  733. package/src/core/primitives/code/code.tsx +0 -55
  734. package/src/core/primitives/code/index.ts +0 -1
  735. package/src/core/primitives/code/refractor.tsx +0 -20
  736. package/src/core/primitives/code/styles.ts +0 -77
  737. package/src/core/primitives/container/__workshop__/example.tsx +0 -20
  738. package/src/core/primitives/container/__workshop__/index.ts +0 -8
  739. package/src/core/primitives/container/container.tsx +0 -54
  740. package/src/core/primitives/container/index.ts +0 -2
  741. package/src/core/primitives/container/styles.ts +0 -23
  742. package/src/core/primitives/container/types.ts +0 -6
  743. package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
  744. package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
  745. package/src/core/primitives/flex/__workshop__/index.ts +0 -11
  746. package/src/core/primitives/flex/flex.tsx +0 -64
  747. package/src/core/primitives/flex/index.ts +0 -1
  748. package/src/core/primitives/grid/__workshop__/index.ts +0 -10
  749. package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
  750. package/src/core/primitives/grid/grid.test.tsx +0 -80
  751. package/src/core/primitives/grid/grid.tsx +0 -74
  752. package/src/core/primitives/grid/index.ts +0 -1
  753. package/src/core/primitives/heading/__workshop__/index.ts +0 -19
  754. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
  755. package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
  756. package/src/core/primitives/heading/heading.tsx +0 -88
  757. package/src/core/primitives/heading/index.ts +0 -1
  758. package/src/core/primitives/heading/styles.ts +0 -64
  759. package/src/core/primitives/heading/types.ts +0 -7
  760. package/src/core/primitives/index.ts +0 -27
  761. package/src/core/primitives/inline/__workshop__/index.ts +0 -8
  762. package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
  763. package/src/core/primitives/inline/index.ts +0 -1
  764. package/src/core/primitives/inline/inline.test.tsx +0 -51
  765. package/src/core/primitives/inline/inline.tsx +0 -63
  766. package/src/core/primitives/inline/styles.ts +0 -32
  767. package/src/core/primitives/inline/types.ts +0 -6
  768. package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
  769. package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
  770. package/src/core/primitives/kbd/index.ts +0 -1
  771. package/src/core/primitives/kbd/kbd.tsx +0 -69
  772. package/src/core/primitives/label/__workshop__/index.ts +0 -19
  773. package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
  774. package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
  775. package/src/core/primitives/label/index.ts +0 -1
  776. package/src/core/primitives/label/label.tsx +0 -87
  777. package/src/core/primitives/label/styles.ts +0 -45
  778. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
  779. package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  780. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
  781. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  782. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
  783. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
  784. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
  785. package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
  786. package/src/core/primitives/popover/__workshop__/index.ts +0 -49
  787. package/src/core/primitives/popover/constants.ts +0 -22
  788. package/src/core/primitives/popover/floating-ui/size.ts +0 -99
  789. package/src/core/primitives/popover/helpers.ts +0 -31
  790. package/src/core/primitives/popover/index.ts +0 -2
  791. package/src/core/primitives/popover/popover.tsx +0 -511
  792. package/src/core/primitives/popover/popoverCard.tsx +0 -166
  793. package/src/core/primitives/popover/types.ts +0 -7
  794. package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
  795. package/src/core/primitives/radio/__workshop__/index.ts +0 -11
  796. package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
  797. package/src/core/primitives/radio/index.ts +0 -1
  798. package/src/core/primitives/radio/radio.tsx +0 -51
  799. package/src/core/primitives/radio/styles.ts +0 -117
  800. package/src/core/primitives/select/__workshop__/index.ts +0 -11
  801. package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
  802. package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
  803. package/src/core/primitives/select/index.ts +0 -1
  804. package/src/core/primitives/select/select.test.tsx +0 -52
  805. package/src/core/primitives/select/select.tsx +0 -94
  806. package/src/core/primitives/select/styles.ts +0 -166
  807. package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
  808. package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
  809. package/src/core/primitives/spinner/index.ts +0 -1
  810. package/src/core/primitives/spinner/spinner.tsx +0 -46
  811. package/src/core/primitives/stack/__workshop__/index.ts +0 -14
  812. package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
  813. package/src/core/primitives/stack/index.ts +0 -1
  814. package/src/core/primitives/stack/stack.test.tsx +0 -57
  815. package/src/core/primitives/stack/stack.tsx +0 -57
  816. package/src/core/primitives/stack/styles.ts +0 -32
  817. package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
  818. package/src/core/primitives/switch/__workshop__/index.ts +0 -11
  819. package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
  820. package/src/core/primitives/switch/index.ts +0 -1
  821. package/src/core/primitives/switch/styles.ts +0 -173
  822. package/src/core/primitives/switch/switch.tsx +0 -68
  823. package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
  824. package/src/core/primitives/text/__workshop__/example.tsx +0 -39
  825. package/src/core/primitives/text/__workshop__/index.ts +0 -24
  826. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
  827. package/src/core/primitives/text/index.ts +0 -1
  828. package/src/core/primitives/text/styles.ts +0 -74
  829. package/src/core/primitives/text/text.tsx +0 -89
  830. package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
  831. package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
  832. package/src/core/primitives/textArea/index.ts +0 -1
  833. package/src/core/primitives/textArea/textArea.tsx +0 -120
  834. package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
  835. package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
  836. package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
  837. package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
  838. package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
  839. package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
  840. package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
  841. package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
  842. package/src/core/primitives/textInput/index.ts +0 -1
  843. package/src/core/primitives/textInput/textInput.test.tsx +0 -48
  844. package/src/core/primitives/textInput/textInput.tsx +0 -395
  845. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
  846. package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
  847. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
  848. package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
  849. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
  850. package/src/core/primitives/tooltip/constants.ts +0 -23
  851. package/src/core/primitives/tooltip/index.ts +0 -2
  852. package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
  853. package/src/core/primitives/tooltip/tooltip.tsx +0 -495
  854. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -109
  855. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  856. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
  857. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
  858. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
  859. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  860. package/src/core/primitives/types.ts +0 -179
  861. package/src/core/styles/border/borderStyle.ts +0 -56
  862. package/src/core/styles/border/index.ts +0 -2
  863. package/src/core/styles/border/types.ts +0 -10
  864. package/src/core/styles/box/boxStyle.ts +0 -69
  865. package/src/core/styles/box/index.ts +0 -2
  866. package/src/core/styles/box/types.ts +0 -11
  867. package/src/core/styles/card/_cardColorStyle.ts +0 -108
  868. package/src/core/styles/card/index.ts +0 -1
  869. package/src/core/styles/flex/flexItemStyle.ts +0 -27
  870. package/src/core/styles/flex/flexStyle.ts +0 -70
  871. package/src/core/styles/flex/index.ts +0 -3
  872. package/src/core/styles/flex/types.ts +0 -25
  873. package/src/core/styles/focusRing/index.ts +0 -25
  874. package/src/core/styles/font/codeFontStyle.ts +0 -13
  875. package/src/core/styles/font/headingFontStyle.ts +0 -13
  876. package/src/core/styles/font/index.ts +0 -6
  877. package/src/core/styles/font/labelFontStyle.ts +0 -13
  878. package/src/core/styles/font/responsiveFont.ts +0 -103
  879. package/src/core/styles/font/textAlignStyle.ts +0 -19
  880. package/src/core/styles/font/textFontStyle.ts +0 -13
  881. package/src/core/styles/font/types.ts +0 -35
  882. package/src/core/styles/grid/gridItemStyle.ts +0 -82
  883. package/src/core/styles/grid/gridStyle.ts +0 -108
  884. package/src/core/styles/grid/index.ts +0 -3
  885. package/src/core/styles/grid/types.ts +0 -37
  886. package/src/core/styles/helpers.ts +0 -72
  887. package/src/core/styles/index.ts +0 -5
  888. package/src/core/styles/input/index.ts +0 -2
  889. package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
  890. package/src/core/styles/input/textInputStyle.ts +0 -263
  891. package/src/core/styles/internal.ts +0 -12
  892. package/src/core/styles/margin/index.ts +0 -2
  893. package/src/core/styles/margin/marginStyle.ts +0 -21
  894. package/src/core/styles/margin/marginsStyle.test.ts +0 -33
  895. package/src/core/styles/margin/types.ts +0 -9
  896. package/src/core/styles/padding/index.ts +0 -2
  897. package/src/core/styles/padding/paddingStyle.test.ts +0 -33
  898. package/src/core/styles/padding/paddingStyle.ts +0 -21
  899. package/src/core/styles/padding/types.ts +0 -12
  900. package/src/core/styles/radius/index.ts +0 -2
  901. package/src/core/styles/radius/radiusStyle.ts +0 -23
  902. package/src/core/styles/radius/types.ts +0 -8
  903. package/src/core/styles/shadow/index.ts +0 -2
  904. package/src/core/styles/shadow/shadowStyle.ts +0 -29
  905. package/src/core/styles/shadow/types.ts +0 -6
  906. package/src/core/styles/types.ts +0 -8
  907. package/src/core/theme/__workshop__/build/Root.tsx +0 -367
  908. package/src/core/theme/__workshop__/build/helpers.ts +0 -46
  909. package/src/core/theme/__workshop__/build/story.tsx +0 -465
  910. package/src/core/theme/__workshop__/canvas.tsx +0 -352
  911. package/src/core/theme/__workshop__/color.tsx +0 -62
  912. package/src/core/theme/__workshop__/debug/story.tsx +0 -408
  913. package/src/core/theme/__workshop__/index.ts +0 -39
  914. package/src/core/theme/__workshop__/layer.tsx +0 -78
  915. package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
  916. package/src/core/theme/index.ts +0 -5
  917. package/src/core/theme/theme.test.tsx +0 -73
  918. package/src/core/theme/themeColorProvider.tsx +0 -29
  919. package/src/core/theme/themeContext.ts +0 -10
  920. package/src/core/theme/themeProvider.tsx +0 -62
  921. package/src/core/theme/types.ts +0 -12
  922. package/src/core/theme/useRootTheme.ts +0 -17
  923. package/src/core/theme/useTheme.ts +0 -16
  924. package/src/core/types/avatar.ts +0 -14
  925. package/src/core/types/badge.ts +0 -12
  926. package/src/core/types/box.ts +0 -19
  927. package/src/core/types/button.ts +0 -21
  928. package/src/core/types/card.ts +0 -6
  929. package/src/core/types/component.ts +0 -32
  930. package/src/core/types/dialog.ts +0 -4
  931. package/src/core/types/flex.ts +0 -30
  932. package/src/core/types/grid.ts +0 -14
  933. package/src/core/types/gridItem.ts +0 -29
  934. package/src/core/types/index.ts +0 -15
  935. package/src/core/types/placement.ts +0 -18
  936. package/src/core/types/popover.ts +0 -4
  937. package/src/core/types/radius.ts +0 -4
  938. package/src/core/types/selectable.ts +0 -6
  939. package/src/core/types/text.ts +0 -4
  940. package/src/core/utils/arrow/arrow.tsx +0 -123
  941. package/src/core/utils/arrow/cmds.ts +0 -91
  942. package/src/core/utils/arrow/index.ts +0 -1
  943. package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
  944. package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
  945. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -100
  946. package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
  947. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
  948. package/src/core/utils/boundaryElement/index.ts +0 -3
  949. package/src/core/utils/boundaryElement/types.ts +0 -7
  950. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
  951. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -21
  952. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  953. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
  954. package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
  955. package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
  956. package/src/core/utils/elementQuery/helpers.ts +0 -27
  957. package/src/core/utils/elementQuery/index.ts +0 -1
  958. package/src/core/utils/errorBoundary.tsx +0 -48
  959. package/src/core/utils/getElementRef.ts +0 -26
  960. package/src/core/utils/index.ts +0 -9
  961. package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
  962. package/src/core/utils/layer/__workshop__/index.ts +0 -24
  963. package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
  964. package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
  965. package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
  966. package/src/core/utils/layer/getLayerContext.test.ts +0 -30
  967. package/src/core/utils/layer/getLayerContext.ts +0 -21
  968. package/src/core/utils/layer/index.ts +0 -4
  969. package/src/core/utils/layer/layer.test.tsx +0 -108
  970. package/src/core/utils/layer/layer.tsx +0 -98
  971. package/src/core/utils/layer/layerContext.ts +0 -7
  972. package/src/core/utils/layer/layerProvider.tsx +0 -111
  973. package/src/core/utils/layer/types.ts +0 -9
  974. package/src/core/utils/layer/useLayer.ts +0 -26
  975. package/src/core/utils/portal/__workshop__/index.ts +0 -14
  976. package/src/core/utils/portal/__workshop__/named.tsx +0 -63
  977. package/src/core/utils/portal/index.ts +0 -4
  978. package/src/core/utils/portal/portal.test.tsx +0 -103
  979. package/src/core/utils/portal/portal.ts +0 -32
  980. package/src/core/utils/portal/portalContext.ts +0 -31
  981. package/src/core/utils/portal/portalProvider.tsx +0 -47
  982. package/src/core/utils/portal/types.ts +0 -9
  983. package/src/core/utils/portal/usePortal.ts +0 -25
  984. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  985. package/src/core/utils/srOnly/index.ts +0 -1
  986. package/src/core/utils/srOnly/srOnly.tsx +0 -36
  987. package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
  988. package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
  989. package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
  990. package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
  991. package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
  992. package/src/core/utils/virtualList/index.ts +0 -1
  993. package/src/core/utils/virtualList/virtualList.tsx +0 -200
  994. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
  995. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
  996. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -22
  997. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -55
  998. package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -60
  999. package/src/theme/build/_deprecated/color/color.test.ts +0 -63
  1000. package/src/theme/build/_deprecated/color/defaults.ts +0 -390
  1001. package/src/theme/build/_deprecated/color/factory.ts +0 -142
  1002. package/src/theme/build/_deprecated/color/index.ts +0 -1
  1003. package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -81
  1004. package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -54
  1005. package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -20
  1006. package/src/theme/build/buildColorTheme.test.ts +0 -183
  1007. package/src/theme/build/buildColorTheme.ts +0 -499
  1008. package/src/theme/build/buildTheme.test.ts +0 -87
  1009. package/src/theme/build/buildTheme.ts +0 -36
  1010. package/src/theme/build/colorToken/colorToken.ts +0 -19
  1011. package/src/theme/build/colorToken/compileColorToken.ts +0 -21
  1012. package/src/theme/build/colorToken/index.ts +0 -2
  1013. package/src/theme/build/colorToken/types.ts +0 -6
  1014. package/src/theme/build/index.ts +0 -3
  1015. package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
  1016. package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
  1017. package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
  1018. package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
  1019. package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -68
  1020. package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
  1021. package/src/theme/build/lib/color-fns/convert.ts +0 -150
  1022. package/src/theme/build/lib/color-fns/index.ts +0 -6
  1023. package/src/theme/build/lib/color-fns/parse.ts +0 -60
  1024. package/src/theme/build/lib/color-fns/rgba.ts +0 -10
  1025. package/src/theme/build/lib/color-fns/types.ts +0 -28
  1026. package/src/theme/build/lib/isRecord.ts +0 -3
  1027. package/src/theme/build/lib/lazy.ts +0 -30
  1028. package/src/theme/build/lib/utils.ts +0 -19
  1029. package/src/theme/build/merge.ts +0 -26
  1030. package/src/theme/build/mixThemeColor.test.ts +0 -21
  1031. package/src/theme/build/mixThemeColor.ts +0 -53
  1032. package/src/theme/build/renderColorTheme.ts +0 -532
  1033. package/src/theme/build/renderColorValue.ts +0 -85
  1034. package/src/theme/build/resolveColorTokens.ts +0 -268
  1035. package/src/theme/build/theme.test.ts +0 -27
  1036. package/src/theme/config/helpers.ts +0 -55
  1037. package/src/theme/config/index.ts +0 -4
  1038. package/src/theme/config/system.ts +0 -115
  1039. package/src/theme/config/tokens/color/index.ts +0 -1
  1040. package/src/theme/config/tokens/color/types.ts +0 -133
  1041. package/src/theme/config/tokens/index.ts +0 -4
  1042. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
  1043. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  1044. package/src/theme/config/tokens/parseTokenValue.test.ts +0 -42
  1045. package/src/theme/config/tokens/parseTokenValue.ts +0 -133
  1046. package/src/theme/config/tokens/types.ts +0 -53
  1047. package/src/theme/config/types.ts +0 -46
  1048. package/src/theme/defaults/colorPalette.ts +0 -5
  1049. package/src/theme/defaults/colorTokens.ts +0 -648
  1050. package/src/theme/defaults/config.ts +0 -84
  1051. package/src/theme/defaults/fonts.ts +0 -227
  1052. package/src/theme/getScopedTheme.ts +0 -98
  1053. package/src/theme/index.ts +0 -5
  1054. package/src/theme/system/avatar.ts +0 -14
  1055. package/src/theme/system/color/_constants.ts +0 -45
  1056. package/src/theme/system/color/_helpers.ts +0 -24
  1057. package/src/theme/system/color/_system.ts +0 -40
  1058. package/src/theme/system/color/avatar.ts +0 -15
  1059. package/src/theme/system/color/badge.ts +0 -16
  1060. package/src/theme/system/color/button.ts +0 -17
  1061. package/src/theme/system/color/color.ts +0 -34
  1062. package/src/theme/system/color/index.ts +0 -13
  1063. package/src/theme/system/color/input.ts +0 -25
  1064. package/src/theme/system/color/kbd.ts +0 -8
  1065. package/src/theme/system/color/selectable.ts +0 -12
  1066. package/src/theme/system/color/shadow.ts +0 -7
  1067. package/src/theme/system/color/state.ts +0 -43
  1068. package/src/theme/system/color/syntax.ts +0 -41
  1069. package/src/theme/system/css.ts +0 -14
  1070. package/src/theme/system/focusRing.ts +0 -7
  1071. package/src/theme/system/font.ts +0 -52
  1072. package/src/theme/system/index.ts +0 -11
  1073. package/src/theme/system/input.ts +0 -33
  1074. package/src/theme/system/layer.ts +0 -8
  1075. package/src/theme/system/shadow.ts +0 -19
  1076. package/src/theme/system/styles.ts +0 -13
  1077. package/src/theme/system/theme.ts +0 -138
  1078. package/src/theme/system/v0/avatar.ts +0 -10
  1079. package/src/theme/system/v0/color/_generic.ts +0 -35
  1080. package/src/theme/system/v0/color/_system.ts +0 -17
  1081. package/src/theme/system/v0/color/base.ts +0 -21
  1082. package/src/theme/system/v0/color/button.ts +0 -42
  1083. package/src/theme/system/v0/color/card.ts +0 -19
  1084. package/src/theme/system/v0/color/color.ts +0 -40
  1085. package/src/theme/system/v0/color/index.ts +0 -11
  1086. package/src/theme/system/v0/color/input.ts +0 -34
  1087. package/src/theme/system/v0/color/muted.ts +0 -26
  1088. package/src/theme/system/v0/color/selectable.ts +0 -31
  1089. package/src/theme/system/v0/color/solid.ts +0 -26
  1090. package/src/theme/system/v0/color/spot.ts +0 -13
  1091. package/src/theme/system/v0/index.ts +0 -3
  1092. package/src/theme/system/v0/input.ts +0 -23
  1093. package/src/theme/versioning/getTheme_v2.ts +0 -57
  1094. package/src/theme/versioning/index.ts +0 -5
  1095. package/src/theme/versioning/is_v0.ts +0 -6
  1096. package/src/theme/versioning/is_v2.ts +0 -6
  1097. package/src/theme/versioning/themeColor_v0_v2.ts +0 -243
  1098. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
  1099. package/src/theme/versioning/v0_v2.ts +0 -94
  1100. package/src/theme/versioning/v2_v0.ts +0 -135
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.entries.js","names":[],"sources":["../../../src/library/entries/conversion.entries.ts"],"sourcesContent":["/**\n * KIT LIBRARY · Conversion & forms — CTA bands, sign-ups, lead capture, multi-step and booking, waitlists, contact,\n * quizzes, popups and trust rows. House position used by every entry here:\n * - Forms are first-class forms (Growth › Forms): fields, validation, notifications, spam rules and\n * submissions live there ONCE. A section REFERENCES a form and only decides presentation (copy, layout, steps,\n * success state). The one exception is the multi-step entry's \"Built here\" path, kept to show the inline shape.\n * - Visitor-side logic (show this question if…) is DATA on the item (`showIf`), never schema `hidden` — schema\n * conditions decide which fields an EDITOR sees; `showIf` decides what a VISITOR sees.\n */\nimport type { FieldSchema } from \"../../schema/types\";\nimport type { KitEntry } from \"../types\";\n\nconst img = (seed: string, w = 1200, h = 900, alt = \"\") => ({ url: `https://picsum.photos/seed/${seed}/${w}/${h}`, alt, name: `${seed}.jpg`, width: w, height: h });\n\nconst themeField: FieldSchema = {\n name: \"theme\",\n title: \"Theme\",\n type: \"select\",\n group: \"design\",\n layout: \"segmented\",\n initialValue: \"light\",\n options: [{ value: \"light\", label: \"Light\" }, { value: \"dark\", label: \"Dark\" }, { value: \"brand\", label: \"Brand\" }],\n};\n\nconst formRef = (description = \"Fields, notifications and submissions are managed in Forms.\"): FieldSchema => ({\n name: \"form\",\n title: \"Form\",\n type: \"reference\",\n reference: { to: [\"form\"] },\n validation: { required: true },\n description,\n});\n\n/** The visitor-side condition used by quiz questions and multi-step fields. */\nconst showIf: FieldSchema = {\n name: \"showIf\",\n title: \"Only show if\",\n type: \"object\",\n icon: \"git-branch\",\n openMode: \"popover\",\n description: \"Leave empty to always show it.\",\n fields: [\n { name: \"field\", title: \"Answer to\", type: \"string\", validation: { max: 32 }, description: \"The key of an earlier question or field.\" },\n {\n name: \"operator\",\n title: \"Condition\",\n type: \"select\",\n initialValue: \"equals\",\n options: [\n { value: \"equals\", label: \"Is\" },\n { value: \"not\", label: \"Is not\" },\n { value: \"answered\", label: \"Has any answer\" },\n ],\n },\n { name: \"value\", title: \"Value\", type: \"string\", hidden: { field: \"operator\", equals: [\"equals\", \"not\"] }, validation: { max: 48 }, description: \"The answer's key, e.g. self-pay.\" },\n ],\n};\n\nexport const ENTRIES: KitEntry[] = [\n /* ───────────────────────────── 1 · CTA band ───────────────────────────── */\n {\n id: \"conversion-cta-band\",\n label: \"CTA band\",\n proves: \"Variants that swap layout without losing content · two button units · background as a conditional design cluster (color vs photo + overlay)\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"centered\",\n tags: [\"variants\", \"conditional\", \"media-heavy\"],\n schema: {\n name: \"callToAction\",\n title: \"Call to action band\",\n kind: \"block\",\n icon: \"click\",\n category: \"Conversion & forms\",\n description: \"A full-width band with one message and one or two buttons\",\n variants: [\n { id: \"centered\", name: \"Centered\" },\n { id: \"split\", name: \"Split with image\", description: \"Text left, photo right\" },\n { id: \"inline\", name: \"Inline\", description: \"Text and buttons on one row\" },\n ],\n preview: { title: \"heading\", subtitle: \"body\", media: \"image\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"design\", title: \"Design\" },\n ],\n fields: [\n { name: \"eyebrow\", title: \"Eyebrow\", type: \"string\", validation: { max: 32 } },\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, max: 80, recommendedMax: 50 }, ai: true, localized: true },\n { name: \"body\", title: \"Body\", type: \"text\", rows: 2, validation: { recommendedMax: 140 }, ai: true, localized: true, description: \"Hidden on phones in the Inline layout.\" },\n { name: \"primaryButton\", title: \"Primary button\", type: \"button\", validation: { required: true } },\n { name: \"secondaryButton\", title: \"Secondary button\", type: \"button\" },\n { name: \"image\", title: \"Image\", type: \"image\", description: \"Split layout only.\" },\n {\n name: \"background\",\n title: \"Background\",\n type: \"select\",\n group: \"design\",\n layout: \"segmented\",\n initialValue: \"color\",\n options: [{ value: \"color\", label: \"Color\" }, { value: \"photo\", label: \"Photo\" }],\n },\n { name: \"color\", title: \"Background color\", type: \"color\", group: \"design\", hidden: { field: \"background\", equals: \"color\" } },\n { name: \"photo\", title: \"Background photo\", type: \"image\", group: \"design\", hidden: { field: \"background\", equals: \"photo\" }, description: \"At least 2000px wide.\" },\n { name: \"overlay\", title: \"Darken photo\", type: \"number\", group: \"design\", layout: \"slider\", hidden: { field: \"background\", equals: \"photo\" }, numeric: { min: 0, max: 80, step: 5, unit: \"%\" } },\n themeField,\n ],\n },\n value: {\n _variant: \"split\",\n eyebrow: \"Lifetime warranty\",\n heading: \"Cook on it for 60 days. Keep it for life.\",\n body: \"If it isn't the best pan you own, send it back — seasoning and all.\",\n primaryButton: { label: \"Shop cookware\", href: \"/products\", type: \"page\", title: \"Shop\", style: \"primary\", arrow: true },\n secondaryButton: { label: \"Read the warranty\", href: \"/warranty\", type: \"page\", style: \"outline\" },\n image: img(\"caldera-cta-skillet-eggs\", 1400, 1050, \"Eggs frying in a cast iron skillet on a camp stove at sunrise\"),\n background: \"photo\",\n color: \"#1E1B18\",\n photo: img(\"caldera-cta-campfire-wide\", 2400, 1000, \"A campfire at dusk with a pine forest behind\"),\n overlay: 45,\n theme: \"dark\",\n },\n notes: {\n why:\n \"The CTA band is the most-reused section on any site, so the schema optimises for swapping: three variants share one content shape, and fields one layout doesn't use (image on Centered) are kept rather than deleted so switching back loses nothing. Buttons are button units (label + link + style). Background is design, modelled as a conditional cluster — a color, or a photo with an overlay slider whose help gives the readable range.\",\n sanity:\n \"`callToAction` object with `layout: string` (Sanity has no variants — a select field plus `hidden: ({parent}) => parent.layout !== 'split'` on image), `primaryButton/secondaryButton: object{label, link}` (no native button unit), `background: object{type, color, image, overlay}`.\",\n htmlSignals: [\n \"a full-width section with high-contrast background, one heading, at most one sentence and 1–2 buttons\",\n \"placed just before the footer or between long sections\",\n \"a background-image with a semi-transparent overlay (::before with rgba/opacity or bg-black/40)\",\n \"no form inputs (otherwise it's a newsletter or lead form)\",\n ],\n mcp:\n \"Heading/eyebrow/body text → fields; each <a>/<button> styled as a button → primaryButton/secondaryButton units (style from class: solid → primary, bordered → outline). Pick the variant from layout: centered text → centered, a sibling <img> column → split (+ image), flex row with buttons at the end → inline. Background image → background:'photo' + photo + overlay from the overlay opacity; solid color → map to the nearest brand token.\",\n pitfalls: [\n \"Fields can't be conditioned on the variant (gap) — `image` is always visible and its help explains why.\",\n \"Hard-coded hex colors break dark mode and brand updates; map to tokens.\",\n ],\n },\n },\n\n /* ───────────────────────────── 2 · Newsletter with consent ───────────────────────────── */\n {\n id: \"conversion-newsletter-consent\",\n label: \"Newsletter sign-up with consent\",\n proves: \"The simple inline form: visible label + placeholder + submit label · interest checkboxes that tag subscribers · consent mode (checkbox vs notice) · success with an optional code\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"form\",\n tags: [\"form\", \"references\", \"conditional\", \"validation\", \"a11y\", \"repeater\"],\n schema: {\n name: \"newsletter\",\n title: \"Newsletter sign-up\",\n kind: \"block\",\n icon: \"mail\",\n category: \"Conversion & forms\",\n description: \"An email field, a promise and a clear consent line\",\n variants: [\n { id: \"inline\", name: \"Inline\", description: \"Field and button on one row\" },\n { id: \"card\", name: \"Card\", description: \"Stacked, with an image\" },\n ],\n preview: { title: \"heading\", subtitle: \"body\", icon: \"mail\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"form\", title: \"Form & consent\" },\n { name: \"success\", title: \"After sign-up\" },\n ],\n fields: [\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 48 }, ai: true },\n { name: \"body\", title: \"Body\", type: \"text\", rows: 2, validation: { recommendedMax: 140 }, ai: true },\n { name: \"image\", title: \"Image\", type: \"image\", description: \"Card layout only.\" },\n formRef(\"Sign-ups go to this form's list. Pick the one connected to your email tool.\"),\n { name: \"emailLabel\", title: \"Field label\", type: \"string\", group: \"form\", validation: { required: true, max: 32 }, initialValue: \"Email address\", description: \"Read by screen readers. The Inline layout hides it.\" },\n { name: \"placeholder\", title: \"Placeholder\", type: \"string\", group: \"form\", validation: { max: 40 }, placeholder: \"you@example.com\" },\n { name: \"submitLabel\", title: \"Button label\", type: \"string\", group: \"form\", validation: { required: true, max: 20 }, placeholder: \"Subscribe\" },\n {\n name: \"interests\",\n title: \"Interests\",\n type: \"array\",\n group: \"form\",\n itemNoun: \"interest\",\n openMode: \"inline\",\n validation: { max: 5 },\n description: \"Each one adds a tag to the subscriber.\",\n of: [\n {\n name: \"interest\",\n title: \"Interest\",\n type: \"object\",\n icon: \"tag\",\n preview: { title: \"label\", subtitle: \"tag\", fallback: \"Untitled interest\" },\n fields: [\n { name: \"label\", title: \"Label\", type: \"string\", validation: { required: true, max: 32 } },\n { name: \"tag\", title: \"Tag\", type: \"string\", validation: { required: true, pattern: \"^[a-z0-9-]+$\", patternMessage: \"Use lowercase letters, numbers and hyphens, like camp-kitchen.\" }, description: \"Exactly as named in your email tool.\" },\n ],\n },\n ],\n },\n {\n name: \"consent\",\n title: \"Consent\",\n type: \"select\",\n group: \"form\",\n layout: \"radio\",\n initialValue: \"checkbox\",\n options: [\n { value: \"checkbox\", label: \"Unticked checkbox\", description: \"Required for the EU, UK and Canada\" },\n { value: \"notice\", label: \"A notice under the button\", description: \"Signing up is the consent\" },\n ],\n },\n { name: \"consentText\", title: \"Consent wording\", type: \"richtext\", group: \"form\", validation: { required: true } },\n { name: \"successMessage\", title: \"Thank-you message\", type: \"string\", group: \"success\", validation: { required: true, max: 120 }, placeholder: \"You're in. Check your inbox to confirm.\" },\n { name: \"welcomeCode\", title: \"Welcome code\", type: \"string\", group: \"success\", validation: { pattern: \"^[A-Z0-9]{3,20}$\", patternMessage: \"Use capital letters and numbers, like SAVE20.\" }, description: \"Must exist in Shopify.\" },\n ],\n },\n value: {\n _variant: \"inline\",\n heading: \"Recipes from the fire, once a month\",\n body: \"One campfire recipe, one care tip and first word on new gear. No daily emails, ever.\",\n image: img(\"caldera-newsletter-paella\", 1200, 900, \"A paella pan over a fire with friends reaching in with spoons\"),\n form: \"form_newsletter\",\n emailLabel: \"Email address\",\n placeholder: \"you@example.com\",\n submitLabel: \"Subscribe\",\n interests: [\n { _key: \"i1\", label: \"Recipes\", tag: \"recipes\" },\n { _key: \"i2\", label: \"New gear\", tag: \"launches\" },\n { _key: \"i3\", label: \"Restocks\", tag: \"restocks\" },\n ],\n consent: \"checkbox\",\n consentText: \"<p>Yes, email me the monthly letter. Unsubscribe in one click. See our <a href=\\\"/privacy\\\">privacy policy</a>.</p>\",\n successMessage: \"You're in. Check your inbox to confirm your email.\",\n welcomeCode: \"FIRSTFIRE10\",\n },\n notes: {\n why:\n \"The newsletter is the 'simple inline form' case: the visitor sees one email field, but submissions still go to a form (the reference), so double opt-in, list sync and suppression live in one place. The section owns only presentation: a REQUIRED visible label (a placeholder is not a label — WCAG 3.3.2), the placeholder, the submit label (a string, not a button unit, because submit isn't a link), optional interest checkboxes that map to subscriber tags, and the consent mode — an unticked checkbox or a notice — with rich-text wording so the privacy link is a real link.\",\n sanity:\n \"`newsletter` object with `formId: string` or `list: reference to emailList`, `emailLabel`, `submitLabel`, `interests: array<object{label, tag}>`, `consent: string`, `consentText: portableText`. Sanity has no forms; submissions go to Klaviyo/Mailchimp via the frontend.\",\n htmlSignals: [\n \"a <form> with exactly one type=email input (maybe a first-name input) and one submit button\",\n \"copy like 'Subscribe', 'Join the list', 'Get the newsletter', 'No spam'\",\n \"a consent checkbox or a small line mentioning privacy/unsubscribe\",\n \"action URLs or scripts from Klaviyo, Mailchimp (list-manage.com), ConvertKit, Beehiiv\",\n ],\n mcp:\n \"Match the form to an existing form in Forms by its action/list id; otherwise create one with an email field (and first name if present) and reference it. Visible <label> → emailLabel (if only a placeholder exists, generate 'Email address' and flag it); button text → submitLabel; checkbox groups → interests with tags from their value attributes. A consent checkbox → consent:'checkbox' + its label as consentText; a fine-print line → 'notice'. Never inline the list id into the section.\",\n pitfalls: [\n \"Placeholder-only fields fail accessibility; emailLabel is required for that reason.\",\n \"A pre-ticked consent box is not valid consent under GDPR — the option says 'Unticked'.\",\n \"Submit is a string, not `type: button`: our button unit is label + LINK, and a submit action has no link (gap: action buttons).\",\n ],\n },\n },\n\n /* ───────────────────────────── 3 · Lead capture with success state ───────────────────────────── */\n {\n id: \"conversion-lead-capture\",\n label: \"Lead capture form + success state\",\n proves: \"Form reference + section-level presentation · success: message / redirect / file download as a conditional trio · hidden attribution fields with tokens\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"form\",\n tags: [\"form\", \"references\", \"conditional\", \"repeater\", \"validation\", \"rich-text\"],\n schema: {\n name: \"leadForm\",\n title: \"Lead form\",\n kind: \"block\",\n icon: \"forms\",\n category: \"Conversion & forms\",\n description: \"A pitch beside a form, with what happens after they send it\",\n variants: [\n { id: \"form-right\", name: \"Form on the right\" },\n { id: \"form-below\", name: \"Form below the text\" },\n ],\n preview: { title: \"heading\", subtitle: \"form\", icon: \"forms\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"form\", title: \"Form\" },\n { name: \"success\", title: \"After sending\" },\n ],\n fields: [\n { name: \"eyebrow\", title: \"Eyebrow\", type: \"string\", validation: { max: 32 } },\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 56 }, ai: true },\n { name: \"body\", title: \"Body\", type: \"richtext\", ai: true },\n {\n name: \"points\",\n title: \"Reasons to apply\",\n type: \"array\",\n itemNoun: \"reason\",\n openMode: \"inline\",\n validation: { max: 4 },\n of: [\n {\n name: \"point\",\n title: \"Reason\",\n type: \"object\",\n icon: \"check\",\n preview: { title: \"label\", fallback: \"Untitled reason\" },\n fields: [\n { name: \"icon\", title: \"Icon\", type: \"icon\" },\n { name: \"label\", title: \"Label\", type: \"string\", validation: { required: true, max: 56 } },\n ],\n },\n ],\n },\n { ...formRef(), group: \"form\" },\n { name: \"submitLabel\", title: \"Button label\", type: \"string\", group: \"form\", validation: { max: 24 }, description: \"Overrides the form's own label here only.\" },\n {\n name: \"hiddenFields\",\n title: \"Hidden fields\",\n type: \"array\",\n group: \"form\",\n itemNoun: \"hidden field\",\n openMode: \"inline\",\n advanced: true,\n validation: { max: 6 },\n description: \"Not shown. Sent with every submission from this page.\",\n helpMore: \"Tokens: {{utm_source}}, {{utm_campaign}}, {{page_url}}, {{referrer}}.\",\n of: [\n {\n name: \"hiddenField\",\n title: \"Hidden field\",\n type: \"object\",\n icon: \"eye-off\",\n preview: { title: \"name\", subtitle: \"value\", fallback: \"Untitled hidden field\" },\n fields: [\n { name: \"name\", title: \"Field key\", type: \"string\", validation: { required: true, pattern: \"^[a-z_]+$\", patternMessage: \"Use lowercase letters and underscores, like analytics_storage.\" } },\n { name: \"value\", title: \"Value\", type: \"string\", validation: { required: true, max: 80 } },\n ],\n },\n ],\n },\n {\n name: \"onSuccess\",\n title: \"Then\",\n type: \"select\",\n group: \"success\",\n layout: \"cards\",\n initialValue: \"message\",\n options: [\n { value: \"message\", label: \"Show a message\", icon: \"message-check\" },\n { value: \"redirect\", label: \"Go to a page\", icon: \"arrow-right\", description: \"Best for tracking conversions\" },\n { value: \"download\", label: \"Start a download\", icon: \"download\" },\n ],\n },\n { name: \"successMessage\", title: \"Message\", type: \"richtext\", group: \"success\", hidden: { field: \"onSuccess\", equals: [\"message\", \"download\"] }, validation: { required: true } },\n { name: \"redirect\", title: \"Page\", type: \"link\", group: \"success\", hidden: { field: \"onSuccess\", equals: \"redirect\" }, validation: { required: true } },\n { name: \"file\", title: \"File\", type: \"file\", group: \"success\", hidden: { field: \"onSuccess\", equals: \"download\" }, validation: { required: true }, description: \"A PDF under 10 MB. The link is also emailed to them.\" },\n { name: \"privacyNote\", title: \"Privacy note\", type: \"richtext\", group: \"form\" },\n ],\n },\n value: {\n _variant: \"form-right\",\n eyebrow: \"Wholesale\",\n heading: \"Stock Caldera in your store\",\n body: \"<p>We partner with independent outfitters, kitchen shops and guiding companies. Tell us about your store and a member of our wholesale team will reply within two business days.</p>\",\n points: [\n { _key: \"lp1\", icon: \"truck\", label: \"Free freight on orders over $2,000\" },\n { _key: \"lp2\", icon: \"calendar-dollar\", label: \"Net-30 terms from your second order\" },\n { _key: \"lp3\", icon: \"photo\", label: \"Shelf talkers and a product photo library\" },\n ],\n form: \"form_wholesale\",\n submitLabel: \"Apply for wholesale\",\n hiddenFields: [\n { _key: \"hf1\", name: \"lead_source\", value: \"{{utm_source}}\" },\n { _key: \"hf2\", name: \"landing_page\", value: \"{{page_url}}\" },\n ],\n onSuccess: \"download\",\n successMessage: \"<p>Thanks — we've got it. Your wholesale line sheet is downloading, and Maya from our wholesale team will email you within two business days.</p>\",\n redirect: { type: \"page\", href: \"/wholesale/thanks\", title: \"Wholesale thanks\" },\n file: { url: \"https://cdn.bettercms.site/caldera/caldera-wholesale-line-sheet-2026.pdf\", name: \"caldera-wholesale-line-sheet-2026.pdf\" },\n privacyNote: \"<p>We only use your details to review your application. <a href=\\\"/privacy\\\">Privacy policy</a>.</p>\",\n },\n notes: {\n why:\n \"The FORM (fields, validation, notifications, CRM sync, spam protection) is a form in Forms referenced here; everything the section adds is presentation and context: the pitch, the reasons, an optional submit-label override for this placement, hidden attribution fields with submit-time tokens, and the success state. Success is a conditional trio — message, redirect (best for analytics) or download (message + file) — because those are the three things marketers actually choose between. Hidden fields are advanced: most editors never need them.\",\n sanity:\n \"Sanity has no form type; teams model `leadForm` with `formId: string` (HubSpot/Typeform/Formspark id) or a `form` document type of their own with `fields: array<object>`, plus `success: object{type, message: portableText, redirect: reference|url, file: file}` with `hidden` callbacks.\",\n htmlSignals: [\n \"a two-column section: persuasive copy + bullets on one side, a multi-field <form> on the other\",\n \"form fields beyond email (company, phone, store type, message) and a submit button with an action verb\",\n \"<input type=hidden> fields named utm_*, lead_source, page_url\",\n \"a thank-you state in markup (hidden div), a redirect in the submit handler, or a gated PDF link\",\n \"HubSpot (hsforms), Marketo (mktoForm), Typeform or Formspree embeds/actions\",\n ],\n mcp:\n \"Extract the form's fields into a form in Forms (or match an existing one by field names) and reference it — never copy fields into the section. Copy and bullets → heading/body/points. Hidden inputs → hiddenFields, converting server-rendered values to tokens where they're clearly UTM/page values. Detect the success path: a hidden success div → message; window.location / redirect param → redirect; a PDF link revealed after submit → download.\",\n pitfalls: [\n \"A per-section copy of the fields forks submissions and notification rules.\",\n \"Redirect pages must exist and be noindexed natively — never add a robots field to the section.\",\n \"Token names in hidden fields are free strings; a typo silently sends an empty value.\",\n ],\n },\n },\n\n /* ───────────────────────────── 4 · Multi-step form ───────────────────────────── */\n {\n id: \"conversion-multi-step-form\",\n label: \"Multi-step form\",\n proves: \"form grouped into steps by field key OR steps › polymorphic fields › options built here · visitor-side showIf branching · progress UI\",\n category: \"Conversion & forms\",\n brand: \"Juniper Physio\",\n previewLayout: \"form\",\n tags: [\"form\", \"polymorphic-array\", \"deep-nesting\", \"conditional\", \"validation\", \"references\", \"a11y\"],\n schema: {\n name: \"multiStepForm\",\n title: \"Multi-step form\",\n kind: \"block\",\n icon: \"list-check\",\n category: \"Conversion & forms\",\n description: \"A long form split into short steps with a progress bar\",\n preview: { title: \"heading\", subtitle: \"source\", icon: \"list-numbers\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"steps\", title: \"Steps\" },\n { name: \"settings\", title: \"Settings\" },\n ],\n fields: [\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 48 } },\n { name: \"intro\", title: \"Intro\", type: \"text\", rows: 2, validation: { recommendedMax: 160 } },\n {\n name: \"source\",\n title: \"Fields come from\",\n type: \"select\",\n group: \"steps\",\n layout: \"cards\",\n initialValue: \"form\",\n options: [\n { value: \"form\", label: \"A form in Forms\", icon: \"forms\", description: \"Recommended: one set of fields everywhere\" },\n { value: \"inline\", label: \"Built here\", icon: \"pencil\", description: \"Only for a one-off form\" },\n ],\n },\n { ...formRef(\"Its fields are grouped into the steps below by key.\"), group: \"steps\", hidden: { field: \"source\", equals: \"form\" } },\n {\n name: \"formSteps\",\n title: \"Steps\",\n type: \"array\",\n group: \"steps\",\n itemNoun: \"step\",\n hidden: { field: \"source\", equals: \"form\" },\n validation: { min: 2, max: 6 },\n description: \"Fields not placed in a step go in the last one.\",\n of: [\n {\n name: \"formStep\",\n title: \"Step\",\n type: \"object\",\n icon: \"list-numbers\",\n preview: { title: \"title\", subtitle: \"fieldKeys\", fallback: \"Untitled step\" },\n fields: [\n { name: \"title\", title: \"Step title\", type: \"string\", validation: { required: true, max: 32 } },\n { name: \"description\", title: \"Description\", type: \"string\", validation: { max: 100 } },\n { name: \"fieldKeys\", title: \"Fields\", type: \"array\", itemNoun: \"field\", of: [{ name: \"fieldKey\", title: \"Field\", type: \"string\" }], validation: { min: 1 }, description: \"The form's field keys, in order, e.g. first_name.\" },\n ],\n },\n ],\n },\n {\n name: \"steps\",\n title: \"Steps\",\n type: \"array\",\n group: \"steps\",\n itemNoun: \"step\",\n hidden: { field: \"source\", equals: \"inline\" },\n validation: { min: 2, max: 6 },\n of: [\n {\n name: \"step\",\n title: \"Step\",\n type: \"object\",\n icon: \"list-numbers\",\n preview: { title: \"title\", subtitle: \"description\", fallback: \"Untitled step\" },\n fields: [\n { name: \"title\", title: \"Step title\", type: \"string\", validation: { required: true, max: 32 } },\n { name: \"description\", title: \"Description\", type: \"string\", validation: { max: 100 } },\n {\n name: \"fields\",\n title: \"Fields\",\n type: \"array\",\n itemNoun: \"field\",\n validation: { min: 1, max: 8 },\n of: [\n {\n name: \"textField\",\n title: \"Text\",\n type: \"object\",\n icon: \"forms\",\n preview: { title: \"label\", subtitle: \"key\", fallback: \"Untitled text field\" },\n fields: [\n { name: \"key\", title: \"Key\", type: \"string\", validation: { required: true, pattern: \"^[a-z_]+$\", patternMessage: \"Use lowercase letters and underscores, like analytics_storage.\" }, description: \"The column name in submissions.\" },\n { name: \"label\", title: \"Label\", type: \"string\", validation: { required: true, max: 60 } },\n { name: \"format\", title: \"Format\", type: \"select\", initialValue: \"text\", options: [{ value: \"text\", label: \"Text\" }, { value: \"email\", label: \"Email\" }, { value: \"phone\", label: \"Phone\" }, { value: \"date\", label: \"Date\" }, { value: \"long\", label: \"Paragraph\" }] },\n { name: \"isRequired\", title: \"Required\", type: \"boolean\" },\n showIf,\n ],\n },\n {\n name: \"choiceField\",\n title: \"Choice\",\n type: \"object\",\n icon: \"list-check\",\n preview: { title: \"label\", subtitle: \"key\", fallback: \"Untitled choice field\" },\n fields: [\n { name: \"key\", title: \"Key\", type: \"string\", validation: { required: true, pattern: \"^[a-z_]+$\", patternMessage: \"Use lowercase letters and underscores, like analytics_storage.\" } },\n { name: \"label\", title: \"Question\", type: \"string\", validation: { required: true, max: 80 } },\n { name: \"allowMultiple\", title: \"Allow several answers\", type: \"boolean\" },\n {\n name: \"options\",\n title: \"Answers\",\n type: \"array\",\n itemNoun: \"answer\",\n openMode: \"inline\",\n validation: { min: 2, max: 12 },\n of: [\n {\n name: \"choice\",\n title: \"Answer\",\n type: \"object\",\n icon: \"point\",\n preview: { title: \"label\", subtitle: \"value\", fallback: \"Untitled answer\" },\n fields: [\n { name: \"label\", title: \"Label\", type: \"string\", validation: { required: true, max: 48 } },\n { name: \"value\", title: \"Key\", type: \"string\", validation: { required: true, pattern: \"^[a-z0-9-]+$\", patternMessage: \"Use lowercase letters, numbers and hyphens, like camp-kitchen.\" } },\n ],\n },\n ],\n },\n { name: \"isRequired\", title: \"Required\", type: \"boolean\" },\n showIf,\n ],\n },\n {\n name: \"scaleField\",\n title: \"Scale\",\n type: \"object\",\n icon: \"adjustments-horizontal\",\n preview: { title: \"label\", subtitle: \"key\", fallback: \"Untitled scale field\" },\n fields: [\n { name: \"key\", title: \"Key\", type: \"string\", validation: { required: true, pattern: \"^[a-z_]+$\", patternMessage: \"Use lowercase letters and underscores, like analytics_storage.\" } },\n { name: \"label\", title: \"Question\", type: \"string\", validation: { required: true, max: 80 } },\n { name: \"min\", title: \"From\", type: \"number\", initialValue: 0 },\n { name: \"max\", title: \"To\", type: \"number\", initialValue: 10 },\n { name: \"minLabel\", title: \"Low end means\", type: \"string\", validation: { max: 24 }, placeholder: \"No pain\" },\n { name: \"maxLabel\", title: \"High end means\", type: \"string\", validation: { max: 24 }, placeholder: \"Worst pain imaginable\" },\n showIf,\n ],\n },\n {\n name: \"consentField\",\n title: \"Consent\",\n type: \"object\",\n icon: \"shield-check\",\n preview: { title: \"key\", fallback: \"Untitled consent field\" },\n fields: [\n { name: \"key\", title: \"Key\", type: \"string\", validation: { required: true, pattern: \"^[a-z_]+$\", patternMessage: \"Use lowercase letters and underscores, like analytics_storage.\" } },\n { name: \"text\", title: \"Wording\", type: \"richtext\", validation: { required: true } },\n { name: \"isRequired\", title: \"Must be ticked to send\", type: \"boolean\", initialValue: true },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n name: \"progress\",\n title: \"Progress\",\n type: \"select\",\n group: \"settings\",\n layout: \"segmented\",\n initialValue: \"steps\",\n options: [{ value: \"bar\", label: \"Bar\" }, { value: \"steps\", label: \"Step names\" }, { value: \"count\", label: \"Step 2 of 4\" }],\n },\n { name: \"useSaveProgress\", title: \"Remember answers\", type: \"boolean\", group: \"settings\", initialValue: true, description: \"Keeps answers on this device for 24 hours.\" },\n { name: \"submitLabel\", title: \"Last button label\", type: \"string\", group: \"settings\", validation: { required: true, max: 24 }, placeholder: \"Send\" },\n { name: \"successMessage\", title: \"Thank-you message\", type: \"richtext\", group: \"settings\", validation: { required: true } },\n ],\n },\n value: {\n heading: \"Book your first visit\",\n intro: \"Three short steps, about two minutes. Your physio reads this before you arrive, so the first session is all treatment.\",\n source: \"inline\",\n form: \"form_contact\",\n formSteps: [\n { _key: \"fs1\", title: \"About you\", fieldKeys: [\"name\", \"email\", \"phone\"] },\n { _key: \"fs2\", title: \"Your message\", fieldKeys: [\"topic\", \"message\"] },\n ],\n steps: [\n {\n _key: \"st1\",\n title: \"About you\",\n description: \"So we can confirm your appointment.\",\n fields: [\n { _key: \"f1\", _type: \"textField\", key: \"full_name\", label: \"Full name\", format: \"text\", isRequired: true },\n { _key: \"f2\", _type: \"textField\", key: \"email\", label: \"Email\", format: \"email\", isRequired: true },\n { _key: \"f3\", _type: \"textField\", key: \"phone\", label: \"Mobile number\", format: \"phone\", isRequired: true },\n { _key: \"f4\", _type: \"textField\", key: \"date_of_birth\", label: \"Date of birth\", format: \"date\", isRequired: true },\n ],\n },\n {\n _key: \"st2\",\n title: \"What brings you in\",\n fields: [\n {\n _key: \"f5\",\n _type: \"choiceField\",\n key: \"area\",\n label: \"Where does it hurt?\",\n allowMultiple: true,\n isRequired: true,\n options: [\n { _key: \"o1\", label: \"Neck\", value: \"neck\" },\n { _key: \"o2\", label: \"Shoulder\", value: \"shoulder\" },\n { _key: \"o3\", label: \"Lower back\", value: \"lower-back\" },\n { _key: \"o4\", label: \"Hip\", value: \"hip\" },\n { _key: \"o5\", label: \"Knee\", value: \"knee\" },\n { _key: \"o6\", label: \"Ankle or foot\", value: \"ankle-foot\" },\n ],\n },\n { _key: \"f6\", _type: \"scaleField\", key: \"pain_level\", label: \"How bad is it on a typical day?\", min: 0, max: 10, minLabel: \"No pain\", maxLabel: \"Worst pain imaginable\" },\n {\n _key: \"f7\",\n _type: \"choiceField\",\n key: \"had_surgery\",\n label: \"Have you had surgery for this?\",\n allowMultiple: false,\n isRequired: true,\n options: [\n { _key: \"o7\", label: \"Yes\", value: \"yes\" },\n { _key: \"o8\", label: \"No\", value: \"no\" },\n ],\n },\n { _key: \"f8\", _type: \"textField\", key: \"surgery_date\", label: \"When was the surgery?\", format: \"date\", isRequired: true, showIf: { field: \"had_surgery\", operator: \"equals\", value: \"yes\" } },\n ],\n },\n {\n _key: \"st3\",\n title: \"Paying for care\",\n fields: [\n {\n _key: \"f9\",\n _type: \"choiceField\",\n key: \"insurer\",\n label: \"How will you pay?\",\n allowMultiple: false,\n isRequired: true,\n options: [\n { _key: \"o9\", label: \"Aetna\", value: \"aetna\" },\n { _key: \"o10\", label: \"Blue Cross Blue Shield\", value: \"bcbs\" },\n { _key: \"o11\", label: \"UnitedHealthcare\", value: \"uhc\" },\n { _key: \"o12\", label: \"Self-pay\", value: \"self-pay\" },\n ],\n },\n { _key: \"f10\", _type: \"textField\", key: \"member_id\", label: \"Member ID\", format: \"text\", isRequired: true, showIf: { field: \"insurer\", operator: \"not\", value: \"self-pay\" } },\n { _key: \"f11\", _type: \"consentField\", key: \"privacy_consent\", text: \"<p>I've read the <a href=\\\"/privacy-practices\\\">Notice of Privacy Practices</a> and agree to Juniper Physio storing this information for my care.</p>\", isRequired: true },\n ],\n },\n ],\n progress: \"steps\",\n useSaveProgress: false,\n submitLabel: \"Request appointment\",\n successMessage: \"<p>Thanks — we'll text you within one business day with two appointment times to choose from.</p>\",\n },\n notes: {\n why:\n \"Two honest paths. The recommended one references a form in Forms and only GROUPS its fields into steps by key (presentation stays here, data stays in Forms). The 'Built here' path exists for one-off forms and shows the full inline shape: steps › fields (a polymorphic array of text | choice | scale | consent) › answers — 4 drill levels, each field type carrying only the settings it needs. Branching ('ask for the surgery date only if they had surgery') is visitor-side DATA in `showIf`, deliberately separate from schema `hidden`, which only controls what the editor sees. The sample is a clinic intake, so 'Remember answers' is off — health data shouldn't sit in a browser.\",\n sanity:\n \"Sanity's typical answer is a `form` document with `steps: array<object{title, fields: array<textField|choiceField|scaleField|consentField>}>` (polymorphic `of`) and conditional logic as data (`showIf: object{field, operator, value}`) evaluated in the frontend; submissions go elsewhere (Formspark, a serverless function).\",\n htmlSignals: [\n \"one <form> split into fieldsets/panels with Next/Back buttons and only one visible at a time\",\n \"a progress bar, step indicator (1 · 2 · 3) or 'Step 2 of 3'\",\n \"fields that appear when an earlier answer changes (data-show-if, x-show, conditional rendering)\",\n \"Typeform/Jotform/Tally-style one-question-per-screen layouts\",\n ],\n mcp:\n \"Prefer source:'form': create or match a form in Forms with ALL fields (flattened), then emit formSteps with each panel's field names as fieldKeys. Use source:'inline' only when asked for a one-off. Map inputs: text/email/tel/date/textarea → textField with format; radio/checkbox groups → choiceField (+ options with value keys); range inputs → scaleField; consent checkboxes → consentField. Translate show/hide scripts into showIf on the dependent field (equals / not / answered). Health, financial or ID fields → set saveProgress:false and flag the form for a compliance review.\",\n pitfalls: [\n \"Schema conditions can't read a parent's value (gap), so the two step arrays sit side by side at the root instead of one array whose items change shape.\",\n \"`showIf.field` is a string key, not a reference to an earlier field (gap: references within the same entry) — renaming a key breaks the branch silently.\",\n \"Inline-built forms fork submissions and notifications from the Forms area; keep them rare.\",\n \"Persisting answers in localStorage is a privacy risk for health data.\",\n ],\n },\n },\n\n /* ───────────────────────────── 5 · Booking / reservations ───────────────────────────── */\n {\n id: \"conversion-booking-embed\",\n label: \"Booking / reservations embed\",\n proves: \"Provider select → provider-specific ids (conditional) · experiences array with party-size range and deposits · large-party handoff\",\n category: \"Conversion & forms\",\n brand: \"Hearth & Ash\",\n previewLayout: \"split\",\n tags: [\"embed\", \"conditional\", \"repeater\", \"validation\", \"media-heavy\", \"rich-text\"],\n schema: {\n name: \"booking\",\n title: \"Booking\",\n kind: \"block\",\n icon: \"calendar-time\",\n category: \"Conversion & forms\",\n description: \"Reservations or appointments from your booking provider\",\n preview: { title: \"heading\", subtitle: \"provider\", icon: \"calendar-event\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"provider\", title: \"Booking provider\" },\n { name: \"experiences\", title: \"What can be booked\" },\n ],\n fields: [\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 48 } },\n { name: \"intro\", title: \"Intro\", type: \"text\", rows: 2, validation: { recommendedMax: 180 } },\n {\n name: \"provider\",\n title: \"Provider\",\n type: \"select\",\n group: \"provider\",\n validation: { required: true },\n options: [\n { value: \"resy\", label: \"Resy\" },\n { value: \"opentable\", label: \"OpenTable\" },\n { value: \"tock\", label: \"Tock\" },\n { value: \"calcom\", label: \"Cal.com\", description: \"For appointments and consultations\" },\n ],\n },\n { name: \"resyVenueId\", title: \"Resy venue ID\", type: \"number\", group: \"provider\", hidden: { field: \"provider\", equals: \"resy\" }, validation: { required: true }, description: \"The number in your Resy widget code, e.g. 58421.\" },\n { name: \"openTableRid\", title: \"OpenTable restaurant ID\", type: \"number\", group: \"provider\", hidden: { field: \"provider\", equals: \"opentable\" }, validation: { required: true }, description: \"The rid in your OpenTable widget code.\" },\n { name: \"tockSlug\", title: \"Tock page\", type: \"string\", group: \"provider\", hidden: { field: \"provider\", equals: \"tock\" }, validation: { required: true, pattern: \"^[a-z0-9-]+$\", patternMessage: \"Use the part after exploretock.com/, like caldera-kitchen.\" } },\n { name: \"calLink\", title: \"Cal.com link\", type: \"url\", group: \"provider\", hidden: { field: \"provider\", equals: \"calcom\" }, validation: { required: true, pattern: \"^https://cal\\\\.com/\", patternMessage: \"Use a cal.com link, like https://cal.com/caldera/demo.\" } },\n {\n name: \"display\",\n title: \"Shows as\",\n type: \"select\",\n group: \"provider\",\n layout: \"segmented\",\n initialValue: \"inline\",\n options: [{ value: \"inline\", label: \"Inline widget\" }, { value: \"button\", label: \"Button that opens it\" }],\n },\n {\n name: \"experiences\",\n title: \"Experiences\",\n type: \"array\",\n group: \"experiences\",\n itemNoun: \"experience\",\n validation: { max: 6 },\n of: [\n {\n name: \"experience\",\n title: \"Experience\",\n type: \"object\",\n icon: \"tools-kitchen-2\",\n preview: { title: \"name\", subtitle: \"duration\", media: \"image\", fallback: \"Untitled experience\" },\n fields: [\n { name: \"name\", title: \"Name\", type: \"string\", validation: { required: true, max: 40 } },\n { name: \"description\", title: \"Description\", type: \"text\", rows: 2, validation: { recommendedMax: 160 } },\n { name: \"image\", title: \"Image\", type: \"image\" },\n { name: \"duration\", title: \"Length\", type: \"number\", numeric: { min: 15, max: 360, step: 15, unit: \"min\" } },\n { name: \"partyMin\", title: \"Smallest party\", type: \"number\", numeric: { min: 1, max: 20, step: 1, unit: \"guests\" } },\n { name: \"partyMax\", title: \"Largest party\", type: \"number\", numeric: { min: 1, max: 40, step: 1, unit: \"guests\" } },\n { name: \"pricePerPerson\", title: \"Price per person\", type: \"number\", numeric: { unit: \"USD\", min: 0, step: 1 }, description: \"0 or empty for à la carte.\" },\n { name: \"hasDeposit\", title: \"Takes a deposit\", type: \"boolean\" },\n { name: \"bookingType\", title: \"Booking type ID\", type: \"string\", access: { edit: \"schema.manage\" }, lockReason: \"Matches the provider's booking type\", description: \"Opens the widget straight on this experience.\" },\n ],\n },\n ],\n },\n { name: \"largePartyFrom\", title: \"Large parties from\", type: \"number\", numeric: { min: 6, max: 40, step: 1, unit: \"guests\" }, description: \"Parties this size or bigger see the button below instead.\" },\n { name: \"largePartyButton\", title: \"Large party button\", type: \"button\", hidden: { field: \"largePartyFrom\", notEmpty: true } },\n { name: \"policy\", title: \"Booking policy\", type: \"richtext\" },\n { name: \"phone\", title: \"Phone\", type: \"link\" },\n ],\n },\n value: {\n heading: \"Reserve a table\",\n intro: \"Bookings open 30 days ahead at 10am. A few seats at the counter are always kept for walk-ins.\",\n provider: \"resy\",\n resyVenueId: 58421,\n display: \"inline\",\n experiences: [\n { _key: \"ex1\", name: \"Dining room\", description: \"The full à la carte menu from the wood-fired hearth.\", image: img(\"hearthash-dining-room\", 1200, 900, \"A candlelit dining room with an open wood fire at the back\"), duration: 120, partyMin: 1, partyMax: 6, hasDeposit: false, bookingType: \"resy-dining\" },\n { _key: \"ex2\", name: \"Chef's counter\", description: \"Nine courses cooked in front of you by Chef Amara Osei and the team.\", image: img(\"hearthash-chefs-counter\", 1200, 900, \"Chef plating a course at a counter facing the hearth\"), duration: 180, partyMin: 1, partyMax: 4, pricePerPerson: 165, hasDeposit: true, bookingType: \"resy-counter\" },\n ],\n largePartyFrom: 7,\n largePartyButton: { label: \"Plan a private dinner\", href: \"/private-dining\", type: \"page\", style: \"outline\" },\n policy: \"<p>Cancel up to 24 hours ahead at no charge. Chef's counter bookings take a $50 per person deposit, credited to your bill. Tell us about allergies when you book — the kitchen cooks without nuts on request.</p>\",\n phone: { type: \"phone\", href: \"tel:+15035550199\", phone: \"+1 503 555 0199\", label: \"(503) 555-0199\" },\n },\n notes: {\n why:\n \"Booking is an EMBED with content around it. The provider select drives exactly one conditional id field (Resy venue number, OpenTable rid, Tock slug, Cal.com link — each validated in its own format) so editors never paste raw script tags. Experiences are editorial cards (photo, length, party range, price, deposit) that open the widget on a developer-locked booking type. Large parties are handed off to a private-dining page above a threshold, which is how restaurants actually avoid six-top no-shows.\",\n sanity:\n \"`booking` object with `provider: string` and per-provider fields behind `hidden` callbacks, or an `embed` object with `code: text` (raw HTML — which Sanity editors then break). `experiences: array<object{name, image, duration, partyMin, partyMax, price}>`.\",\n htmlSignals: [\n \"scripts/iframes from widgets.resy.com, opentable.com/widget, exploretock.com, cal.com/embed, calendly.com\",\n \"a 'Reserve', 'Book a table' or 'Book an appointment' heading with a date/party-size picker\",\n \"cards for different seatings or services with durations and per-person prices\",\n \"cancellation/deposit policy text near the widget\",\n ],\n mcp:\n \"Identify the provider from the script/iframe host and extract ONLY the id (data-venue-id / rid / slug / cal link) — never store the script. Seating/service cards → experiences (price per person and party size parsed from copy). A 'larger parties' link → largePartyFrom + largePartyButton. Policy paragraphs → policy (rich text).\",\n pitfalls: [\n \"Storing the widget script as HTML makes it uneditable and a security risk; store ids only.\",\n \"partyMin ≤ partyMax is a cross-field rule the schema can't express (gap).\",\n \"Widget heights vary by provider; the renderer reserves space to avoid layout shift.\",\n ],\n },\n },\n\n /* ───────────────────────────── 6 · Waitlist with referral ───────────────────────────── */\n {\n id: \"conversion-waitlist-referral\",\n label: \"Waitlist with referral rewards\",\n proves: \"Reuses one form with a list tag · referral reward ladder · share channels + message token · an honest signup counter with a minimum\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"split\",\n tags: [\"form\", \"references\", \"conditional\", \"repeater\", \"validation\", \"media-heavy\"],\n schema: {\n name: \"waitlist\",\n title: \"Waitlist\",\n kind: \"block\",\n icon: \"user-plus\",\n category: \"Conversion & forms\",\n description: \"Join-the-list for a launch, with rewards for sharing\",\n preview: { title: \"heading\", subtitle: \"launch\", media: \"image\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"form\", title: \"Sign-up\" },\n { name: \"referral\", title: \"Referrals\" },\n ],\n fields: [\n { name: \"eyebrow\", title: \"Eyebrow\", type: \"string\", validation: { max: 32 } },\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 48 }, ai: true },\n { name: \"body\", title: \"Body\", type: \"text\", rows: 3, validation: { recommendedMax: 220 }, ai: true },\n { name: \"image\", title: \"Image\", type: \"image\", validation: { required: true } },\n { name: \"launch\", title: \"Launch window\", type: \"string\", validation: { max: 32 }, placeholder: \"Spring 2027\", description: \"Words, not a date, until the date is certain.\" },\n { ...formRef(\"Sign-ups join this form's list with the tag below.\"), group: \"form\" },\n { name: \"listTag\", title: \"List tag\", type: \"string\", group: \"form\", validation: { required: true, pattern: \"^[a-z0-9-]+$\", patternMessage: \"Use lowercase letters, numbers and hyphens, like camp-kitchen.\" }, description: \"Tags everyone who joins here.\" },\n { name: \"submitLabel\", title: \"Button label\", type: \"string\", group: \"form\", validation: { required: true, max: 24 }, placeholder: \"Join the waitlist\" },\n {\n name: \"showCounter\",\n title: \"Show how many have joined\",\n type: \"boolean\",\n group: \"form\",\n description: \"A live count from the form's submissions.\",\n },\n { name: \"counterMin\", title: \"Only once it passes\", type: \"number\", group: \"form\", hidden: { field: \"showCounter\", equals: true }, numeric: { min: 0, step: 50, unit: \"sign-ups\" }, description: \"Hides the count while it's below this.\" },\n { name: \"useReferrals\", title: \"Referral rewards\", type: \"boolean\", group: \"referral\" },\n {\n name: \"rewards\",\n title: \"Rewards\",\n type: \"array\",\n group: \"referral\",\n itemNoun: \"reward\",\n openMode: \"inline\",\n hidden: { field: \"useReferrals\", equals: true },\n validation: { min: 1, max: 4 },\n of: [\n {\n name: \"reward\",\n title: \"Reward\",\n type: \"object\",\n icon: \"gift\",\n preview: { title: \"reward\", subtitle: \"friends\", fallback: \"Untitled reward\" },\n fields: [\n { name: \"friends\", title: \"Friends who join\", type: \"number\", numeric: { min: 1, max: 50, step: 1 }, validation: { required: true } },\n { name: \"reward\", title: \"Reward\", type: \"string\", validation: { required: true, max: 48 } },\n ],\n },\n ],\n },\n {\n name: \"channels\",\n title: \"Share buttons\",\n type: \"multiselect\",\n group: \"referral\",\n layout: \"checkbox\",\n hidden: { field: \"useReferrals\", equals: true },\n options: [\n { value: \"copy\", label: \"Copy link\" },\n { value: \"email\", label: \"Email\" },\n { value: \"sms\", label: \"Text message\" },\n { value: \"whatsapp\", label: \"WhatsApp\" },\n { value: \"x\", label: \"X\" },\n ],\n },\n { name: \"shareMessage\", title: \"Share message\", type: \"text\", rows: 2, group: \"referral\", hidden: { field: \"useReferrals\", equals: true }, validation: { max: 200 }, description: \"{{link}} becomes their personal link.\" },\n { name: \"successMessage\", title: \"After joining\", type: \"richtext\", validation: { required: true }, description: \"{{position}} shows their place in line when referrals are on.\" },\n ],\n },\n value: {\n eyebrow: \"Coming spring 2027\",\n heading: \"The Ember Pizza Oven\",\n body: \"A cast iron pizza oven that sits on any fire ring and hits 900°F in twenty minutes. The first run is 1,500 ovens, and the waitlist gets first access and launch pricing.\",\n image: img(\"caldera-pizza-oven-teaser\", 1600, 1200, \"A cast iron dome oven glowing over a campfire with a blistered pizza inside\"),\n launch: \"Spring 2027\",\n form: \"form_newsletter\",\n listTag: \"ember-oven-waitlist\",\n submitLabel: \"Join the waitlist\",\n showCounter: true,\n counterMin: 500,\n useReferrals: true,\n rewards: [\n { _key: \"rw1\", friends: 1, reward: \"Move up 100 places\" },\n { _key: \"rw2\", friends: 3, reward: \"A free pizza peel ($45)\" },\n { _key: \"rw3\", friends: 10, reward: \"Your oven ships in the first week\" },\n ],\n channels: [\"copy\", \"email\", \"sms\", \"whatsapp\"],\n shareMessage: \"I'm on the list for Caldera's new pizza oven — 900°F over a campfire. Join with my link and we both move up: {{link}}\",\n successMessage: \"<p>You're number <strong>{{position}}</strong>. Share your link — every friend who joins moves you up.</p>\",\n },\n notes: {\n why:\n \"A waitlist is a sign-up with a GOAL. Instead of a new form per launch, it reuses the newsletter form and stamps a `listTag`, so launch emails go only to this list while consent and sync stay central. Referral rewards are a small inline ladder (friends → reward), share channels a multiselect, and the share message carries a {{link}} token. The counter is a toggle with a minimum, never a typed number — social proof that's live and true or not shown at all.\",\n sanity:\n \"`waitlist` object with `listTag: string`, `referral: object{enabled, rewards: array<object{friends, reward}>, channels: array<string>, shareMessage}`. Referral tracking itself would be an external tool (Viral Loops, Prefinery, GetWaitlist) referenced by id.\",\n htmlSignals: [\n \"'Join the waitlist', 'Get early access', 'Notify me' with an email form for a product not yet on sale\",\n \"a referral panel after signup: personal link, share buttons, 'You're #1,284 in line'\",\n \"a reward ladder ('Refer 3 friends to…')\",\n \"a 'n people have joined' counter\",\n \"scripts from Viral Loops, Prefinery, GetWaitlist, KickoffLabs\",\n ],\n mcp:\n \"Match the form to the existing newsletter/marketing form and set listTag from the list/segment/tag in the embed config (or slugify the product name). Never import a hard-coded 'n people joined' number — set counter:true and let the renderer count; if the count is a fake static number, flag it. Reward copy → rewards with friends parsed from the number.\",\n pitfalls: [\n \"One form per launch fragments consent records; tag the shared list instead.\",\n \"Static 'join 12,000 others' numbers are often invented; the schema doesn't allow typing one.\",\n \"{{position}} only makes sense with referrals on; the editor warns when it's used without them.\",\n ],\n },\n },\n\n /* ───────────────────────────── 7 · Contact section ───────────────────────────── */\n {\n id: \"conversion-contact-section\",\n label: \"Contact section\",\n proves: \"Channel cards with typed links (email / phone / chat / visit) · form reference · optional map pin + address · layout variants\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"split\",\n tags: [\"form\", \"references\", \"repeater\", \"conditional\", \"embed\", \"variants\", \"a11y\"],\n schema: {\n name: \"contactSection\",\n title: \"Contact\",\n kind: \"block\",\n icon: \"address-book\",\n category: \"Conversion & forms\",\n description: \"Ways to reach you, a form and where to find you\",\n variants: [\n { id: \"form-right\", name: \"Channels left, form right\" },\n { id: \"channels-only\", name: \"Channels only\" },\n { id: \"stacked\", name: \"Stacked\", description: \"Channels, then the form, then the map\" },\n ],\n preview: { title: \"heading\", subtitle: \"intro\", icon: \"address-book\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"channels\", title: \"Channels\" },\n { name: \"visit\", title: \"Visit us\" },\n ],\n fields: [\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 48 } },\n { name: \"intro\", title: \"Intro\", type: \"text\", rows: 2, validation: { recommendedMax: 160 } },\n {\n name: \"channels\",\n title: \"Channels\",\n type: \"array\",\n group: \"channels\",\n itemNoun: \"channel\",\n validation: { min: 1, max: 5 },\n of: [\n {\n name: \"channel\",\n title: \"Channel\",\n type: \"object\",\n icon: \"message-circle\",\n preview: { title: \"label\", subtitle: \"detail\", fallback: \"Untitled channel\" },\n fields: [\n {\n name: \"kind\",\n title: \"Type\",\n type: \"select\",\n layout: \"segmented\",\n initialValue: \"email\",\n options: [\n { value: \"email\", label: \"Email\", icon: \"mail\" },\n { value: \"phone\", label: \"Phone\", icon: \"phone\" },\n { value: \"chat\", label: \"Chat\", icon: \"message\" },\n { value: \"visit\", label: \"Visit\", icon: \"map-pin\" },\n ],\n },\n { name: \"label\", title: \"Label\", type: \"string\", validation: { required: true, max: 32 }, placeholder: \"Orders and returns\" },\n { name: \"link\", title: \"Link\", type: \"link\", validation: { required: true }, description: \"An email, phone number or page. #chat opens the chat widget.\" },\n { name: \"detail\", title: \"Detail\", type: \"string\", validation: { max: 60 } },\n { name: \"hours\", title: \"Hours\", type: \"string\", validation: { max: 48 }, placeholder: \"Mon–Fri, 8am–5pm PT\" },\n { name: \"replyTime\", title: \"Reply time\", type: \"string\", validation: { max: 32 }, placeholder: \"Within a day\" },\n ],\n },\n ],\n },\n { ...formRef(\"Edit its fields and who gets notified in Forms.\"), validation: {} },\n { name: \"showMap\", title: \"Show a map\", type: \"boolean\", group: \"visit\" },\n { name: \"location\", title: \"Map pin\", type: \"geopoint\", group: \"visit\", hidden: { field: \"showMap\", equals: true }, validation: { required: true } },\n { name: \"address\", title: \"Address\", type: \"text\", rows: 3, group: \"visit\", hidden: { field: \"showMap\", equals: true } },\n ],\n },\n value: {\n _variant: \"form-right\",\n heading: \"Talk to a person\",\n intro: \"Our customer team works from the Bend foundry. We answer every email ourselves, usually the same day.\",\n channels: [\n { _key: \"ch1\", kind: \"email\", label: \"Orders and returns\", link: { type: \"email\", href: \"mailto:help@caldera.com\", email: \"help@caldera.com\" }, detail: \"help@caldera.com\", hours: \"Mon–Fri, 8am–5pm PT\", replyTime: \"Within a day\" },\n { _key: \"ch2\", kind: \"phone\", label: \"Call the foundry\", link: { type: \"phone\", href: \"tel:+15415550182\", phone: \"+1 541 555 0182\" }, detail: \"(541) 555-0182\", hours: \"Mon–Fri, 9am–4pm PT\" },\n { _key: \"ch3\", kind: \"chat\", label: \"Chat with us\", link: { type: \"section\", href: \"#chat\" }, detail: \"Live on weekdays\", replyTime: \"A few minutes\" },\n { _key: \"ch4\", kind: \"email\", label: \"Wholesale\", link: { type: \"email\", href: \"mailto:wholesale@caldera.com\", email: \"wholesale@caldera.com\", subject: \"Wholesale enquiry\" }, detail: \"wholesale@caldera.com\" },\n ],\n form: \"form_contact\",\n showMap: true,\n location: { label: \"Caldera Foundry\", address: \"1020 NW Wall St, Bend, OR 97703\", lat: 44.0596, lng: -121.3133 },\n address: \"Caldera Foundry & Shop\\n1020 NW Wall St\\nBend, OR 97703\",\n },\n notes: {\n why:\n \"A contact section is a directory, a form and a place. Channels are an array of small objects with a typed `link` (email, phone, section, page — the link unit already knows mailto/tel), plus hours and an honest reply time. The form is a reference (topic routing and notifications belong to the form in Forms, not to this block, so no `topics` field here) and is optional for the channels-only layout. The map is an opt-in cluster: a geopoint for the pin and a written address, because a map alone is inaccessible.\",\n sanity:\n \"`contactSection` with `channels: array<object{kind, label, link: object(url|email|tel), detail, hours}>`, `form: reference` (or a formId), `location: geopoint`, `address: text`. A `siteSettings` singleton often holds the same email/phone; references to it avoid drift.\",\n htmlSignals: [\n \"mailto: and tel: links grouped with labels like 'Customer service', 'Press', 'Wholesale'\",\n \"a contact <form> with name/email/message (often a topic select)\",\n \"an embedded map iframe (google.com/maps/embed) or static map image with an address block\",\n \"opening hours and 'we reply within…' copy\",\n ],\n mcp:\n \"Each mailto:/tel:/chat trigger → one channel (kind from the scheme, label from the nearest heading, detail = visible text). The <form> → match/create a form in Forms and reference it; a topic <select> becomes a field ON that form (with routing set in Forms), not a section field. Map iframes → showMap:true, parse lat/lng from the embed URL (q= or !3d!4d) into location, and copy the address text.\",\n pitfalls: [\n \"Email addresses and phone numbers duplicated across header, footer and contact drift apart — prefer site settings + references (gap: global values referenced from sections).\",\n \"Address must be text as well as a pin; maps aren't accessible on their own.\",\n ],\n },\n },\n\n /* ───────────────────────────── 8 · Quiz / product finder ───────────────────────────── */\n {\n id: \"conversion-quiz-product-finder\",\n label: \"Quiz / product finder\",\n proves: \"Six drill levels: questions › answers › scores › product refs · visitor-side branching (showIf) · results mapped to products with a fallback · optional email gate\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"centered\",\n tags: [\"deep-nesting\", \"conditional\", \"references\", \"repeater\", \"validation\", \"form\", \"personalization\", \"media-heavy\", \"commerce\"],\n schema: {\n name: \"productQuiz\",\n title: \"Product finder quiz\",\n kind: \"block\",\n icon: \"zoom-question\",\n category: \"Conversion & forms\",\n description: \"A few questions that recommend the right product\",\n preview: { title: \"heading\", subtitle: \"intro\", media: \"image\" },\n groups: [\n { name: \"content\", title: \"Intro\", default: true },\n { name: \"questions\", title: \"Questions\" },\n { name: \"results\", title: \"Results\" },\n { name: \"capture\", title: \"Email\" },\n ],\n fields: [\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 48 }, ai: true },\n { name: \"intro\", title: \"Intro\", type: \"text\", rows: 2, validation: { recommendedMax: 160 } },\n { name: \"image\", title: \"Image\", type: \"image\" },\n { name: \"startLabel\", title: \"Start button label\", type: \"string\", validation: { required: true, max: 24 }, placeholder: \"Find my pan\" },\n {\n name: \"questions\",\n title: \"Questions\",\n type: \"array\",\n group: \"questions\",\n itemNoun: \"question\",\n validation: { min: 2, max: 8 },\n of: [\n {\n name: \"question\",\n title: \"Question\",\n type: \"object\",\n icon: \"help-circle\",\n preview: { title: \"question\", subtitle: \"key\", fallback: \"Untitled question\" },\n fields: [\n { name: \"key\", title: \"Key\", type: \"string\", validation: { required: true, pattern: \"^[a-z_]+$\", patternMessage: \"Use lowercase letters and underscores, like analytics_storage.\", unique: true }, description: \"Used by \\\"Only show if\\\" on later questions.\" },\n { name: \"question\", title: \"Question\", type: \"string\", validation: { required: true, max: 90 }, ai: true },\n { name: \"help\", title: \"Hint\", type: \"string\", validation: { max: 90 } },\n {\n name: \"style\",\n title: \"Answers look like\",\n type: \"select\",\n layout: \"segmented\",\n initialValue: \"buttons\",\n options: [{ value: \"buttons\", label: \"Buttons\" }, { value: \"images\", label: \"Picture cards\" }],\n },\n { name: \"allowMultiple\", title: \"Allow several answers\", type: \"boolean\" },\n {\n name: \"answers\",\n title: \"Answers\",\n type: \"array\",\n itemNoun: \"answer\",\n validation: { min: 2, max: 6 },\n of: [\n {\n name: \"answer\",\n title: \"Answer\",\n type: \"object\",\n icon: \"point\",\n preview: { title: \"label\", subtitle: \"key\", media: \"image\", fallback: \"Untitled answer\" },\n fields: [\n { name: \"key\", title: \"Key\", type: \"string\", validation: { required: true, pattern: \"^[a-z0-9-]+$\", patternMessage: \"Use lowercase letters, numbers and hyphens, like camp-kitchen.\" } },\n { name: \"label\", title: \"Label\", type: \"string\", validation: { required: true, max: 48 } },\n { name: \"image\", title: \"Image\", type: \"image\", description: \"Used when answers show as picture cards.\" },\n {\n name: \"scores\",\n title: \"Points\",\n type: \"array\",\n itemNoun: \"score\",\n openMode: \"inline\",\n validation: { max: 6 },\n description: \"The highest total wins.\",\n of: [\n {\n name: \"score\",\n title: \"Score\",\n type: \"object\",\n icon: \"plus-minus\",\n preview: { title: \"product\", subtitle: \"points\", fallback: \"Untitled score\" },\n fields: [\n { name: \"product\", title: \"Product\", type: \"reference\", reference: { to: [\"col_products\"] }, validation: { required: true } },\n { name: \"points\", title: \"Points\", type: \"number\", initialValue: 1, numeric: { min: -5, max: 5, step: 1 }, description: \"Negative points rule a product out.\" },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n showIf,\n ],\n },\n ],\n },\n { name: \"resultsHeading\", title: \"Results heading\", type: \"string\", group: \"results\", validation: { max: 48 }, placeholder: \"Your match\" },\n { name: \"showTop\", title: \"Products to show\", type: \"number\", group: \"results\", layout: \"slider\", initialValue: 1, numeric: { min: 1, max: 3, step: 1 } },\n {\n name: \"results\",\n title: \"Result copy\",\n type: \"array\",\n group: \"results\",\n itemNoun: \"result\",\n validation: { max: 12 },\n of: [\n {\n name: \"result\",\n title: \"Result\",\n type: \"object\",\n icon: \"award\",\n preview: { title: \"heading\", subtitle: \"product\", fallback: \"Untitled result\" },\n fields: [\n { name: \"product\", title: \"Product\", type: \"reference\", reference: { to: [\"col_products\"] }, validation: { required: true } },\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { max: 60 }, ai: true },\n { name: \"why\", title: \"Why it fits\", type: \"richtext\", ai: true },\n ],\n },\n ],\n },\n { name: \"fallback\", title: \"If nothing scores\", type: \"reference\", group: \"results\", reference: { to: [\"col_products\"] }, validation: { required: true }, description: \"Recommended when every product scores zero or less.\" },\n { name: \"retakeLabel\", title: \"Retake label\", type: \"string\", group: \"results\", validation: { max: 24 }, placeholder: \"Start over\" },\n { name: \"useEmailGate\", title: \"Ask for an email before results\", type: \"boolean\", group: \"capture\", description: \"Results are always shown, even if they skip.\" },\n { ...formRef(\"Answers are saved with the email on this form.\"), group: \"capture\", hidden: { field: \"useEmailGate\", equals: true } },\n { name: \"emailPrompt\", title: \"Prompt\", type: \"string\", group: \"capture\", hidden: { field: \"useEmailGate\", equals: true }, validation: { max: 90 }, placeholder: \"Want your results and a care guide by email?\" },\n ],\n },\n value: {\n heading: \"Find your first pan\",\n intro: \"Four quick questions about how you cook. We'll match you with one piece of Caldera that will earn its place.\",\n image: img(\"caldera-quiz-cooks\", 1600, 1000, \"Three Caldera pans laid out on a picnic table beside a lake\"),\n startLabel: \"Find my pan\",\n questions: [\n {\n _key: \"q1\",\n key: \"where\",\n question: \"Where do you cook most?\",\n style: \"images\",\n allowMultiple: false,\n answers: [\n { _key: \"a1\", key: \"home\", label: \"At home\", image: img(\"caldera-quiz-home\", 600, 600, \"A kitchen stove\"), scores: [{ _key: \"s1\", product: \"en_p3\", points: 2 }, { _key: \"s2\", product: \"en_p2\", points: 2 }] },\n { _key: \"a2\", key: \"campsite\", label: \"At the campsite\", image: img(\"caldera-quiz-camp\", 600, 600, \"A fire ring at a campsite\"), scores: [{ _key: \"s3\", product: \"en_p2\", points: 2 }, { _key: \"s4\", product: \"en_p1\", points: 1 }] },\n { _key: \"a3\", key: \"backcountry\", label: \"Miles from the car\", image: img(\"caldera-quiz-trail\", 600, 600, \"A backpack on a mountain trail\"), scores: [{ _key: \"s5\", product: \"en_p1\", points: 3 }, { _key: \"s6\", product: \"en_p4\", points: 2 }, { _key: \"s7\", product: \"en_p2\", points: -5 }] },\n ],\n },\n {\n _key: \"q2\",\n key: \"carry\",\n question: \"How far do you carry your kit?\",\n help: \"Cast iron is heavy. Be honest.\",\n style: \"buttons\",\n allowMultiple: false,\n showIf: { field: \"where\", operator: \"not\", value: \"home\" },\n answers: [\n { _key: \"a4\", key: \"car\", label: \"From the car to the fire\", scores: [{ _key: \"s8\", product: \"en_p2\", points: 1 }] },\n { _key: \"a5\", key: \"pack\", label: \"In my backpack\", scores: [{ _key: \"s9\", product: \"en_p1\", points: 2 }, { _key: \"s10\", product: \"en_p3\", points: -2 }] },\n ],\n },\n {\n _key: \"q3\",\n key: \"cook\",\n question: \"What do you want to cook?\",\n style: \"buttons\",\n allowMultiple: true,\n answers: [\n { _key: \"a6\", key: \"sear\", label: \"Steaks and smash burgers\", scores: [{ _key: \"s11\", product: \"en_p3\", points: 2 }, { _key: \"s12\", product: \"en_p1\", points: 1 }] },\n { _key: \"a7\", key: \"bake\", label: \"Bread and cobblers\", scores: [{ _key: \"s13\", product: \"en_p2\", points: 3 }] },\n { _key: \"a8\", key: \"brew\", label: \"Coffee and noodles\", scores: [{ _key: \"s14\", product: \"en_p4\", points: 3 }] },\n ],\n },\n ],\n resultsHeading: \"Your match\",\n showTop: 2,\n results: [\n { _key: \"r1\", product: \"en_p2\", heading: \"The Ember does it all at camp\", why: \"<p>Bake bread on coals, braise for eight, and flip the lid into a skillet for breakfast. Worth every pound of the carry from the car.</p>\" },\n { _key: \"r2\", product: \"en_p1\", heading: \"Light enough for the long trail\", why: \"<p>The Cable Fold weighs 1.1 kg and turns any fire ring into a grill. Pair it with the Trail Kettle.</p>\" },\n ],\n fallback: \"en_p3\",\n retakeLabel: \"Start over\",\n useEmailGate: true,\n form: \"form_newsletter\",\n emailPrompt: \"Want your results and a care guide by email?\",\n },\n notes: {\n why:\n \"The deepest conversion pattern: section › questions › question › answers › answer › scores › score (+ a product reference inside). Scoring beats decision trees for product finders because answers can push several products up or rule one out (negative points), and it survives adding a product without rewriting branches. Branching is still possible with a visitor-side `showIf` on a question. Results are COPY keyed by product (products without copy fall back to their tagline) plus a required fallback, so the quiz never ends empty. The email gate is optional and never blocks results.\",\n sanity:\n \"`productQuiz` document with `questions: array<object{key, question, answers: array<object{key, label, image, scores: array<object{product: reference to product, points: number}>}>, showIf: object}>` and `results: array<object{product: reference, heading, why: portableText}>`. Deep nesting works in Sanity but each level opens a modal-in-modal; BetterCMS drills with breadcrumbs.\",\n htmlSignals: [\n \"a 'Take the quiz' / 'Find your…' start screen, then one question per screen with large answer buttons or picture cards\",\n \"a progress indicator (Question 2 of 4) and Back button\",\n \"a results screen with 1–3 recommended products and 'why it suits you' copy\",\n \"scripts from Octane AI, RevenueHunt, Typeform, Jebbit, or a JSON config with questions/answers/weights\",\n ],\n mcp:\n \"If a quiz config is reachable (Octane/RevenueHunt JSON, inline script), map it directly: questions → questions with generated keys, answer weights/tags → scores with product references (resolve product handles to Products entries). If only markup is visible, import questions and answers and leave scores EMPTY for a merchandiser to fill — never guess weights. Result screens → results (copy per product). Email steps → useEmailGate + a Forms reference.\",\n pitfalls: [\n \"`showIf.field` and answer keys are strings, not references; renaming a key silently breaks branching (gap: references within the same entry, with rename-tracking).\",\n \"Picture-card images can't be shown/hidden by the PARENT question's style (gap: parent-scoped conditions), so the image field is always visible with an explaining hint.\",\n \"A gate that hides results until an email is given is a dark pattern; results always show.\",\n ],\n },\n },\n\n /* ───────────────────────────── 9 · Exit-intent / modal popup ───────────────────────────── */\n {\n id: \"conversion-exit-intent-popup\",\n label: \"Exit-intent popup\",\n proves: \"Trigger rules (exit / delay / scroll / click) with per-trigger inputs · page targeting · frequency capping · offer as code / form / link\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"form\",\n tags: [\"conditional\", \"personalization\", \"form\", \"references\", \"validation\", \"a11y\", \"media-heavy\"],\n schema: {\n name: \"popup\",\n title: \"Popup\",\n kind: \"global\",\n icon: \"app-window\",\n category: \"Conversion & forms\",\n description: \"A modal shown by a trigger, to the right people, not too often\",\n preview: { title: \"heading\", subtitle: \"trigger\", media: \"image\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"trigger\", title: \"When\" },\n { name: \"targeting\", title: \"Where and who\" },\n { name: \"design\", title: \"Design\" },\n ],\n fields: [\n { name: \"name\", title: \"Popup name\", type: \"string\", validation: { required: true, max: 48 }, description: \"Only your team sees this.\" },\n { name: \"image\", title: \"Image\", type: \"image\" },\n { name: \"heading\", title: \"Heading\", type: \"string\", validation: { required: true, recommendedMax: 40 }, ai: true },\n { name: \"body\", title: \"Body\", type: \"text\", rows: 2, validation: { recommendedMax: 140 }, ai: true },\n {\n name: \"offer\",\n title: \"Offer\",\n type: \"select\",\n layout: \"segmented\",\n initialValue: \"form\",\n options: [\n { value: \"form\", label: \"Email for a code\" },\n { value: \"code\", label: \"Show a code\" },\n { value: \"link\", label: \"A button\" },\n ],\n },\n { ...formRef(\"They get the code after signing up through this form.\"), hidden: { field: \"offer\", equals: \"form\" } },\n { name: \"code\", title: \"Discount code\", type: \"string\", hidden: { field: \"offer\", equals: [\"form\", \"code\"] }, validation: { required: true, pattern: \"^[A-Z0-9]{3,20}$\", patternMessage: \"Use capital letters and numbers, like SAVE20.\" }, description: \"Must exist in Shopify. With a form, it's shown after sign-up.\" },\n { name: \"button\", title: \"Button\", type: \"button\", hidden: { field: \"offer\", equals: \"link\" } },\n { name: \"declineLabel\", title: \"Close link text\", type: \"string\", validation: { required: true, max: 24 }, initialValue: \"No thanks\" },\n {\n name: \"trigger\",\n title: \"Show when\",\n type: \"select\",\n group: \"trigger\",\n layout: \"cards\",\n initialValue: \"exit\",\n options: [\n { value: \"exit\", label: \"They're about to leave\", icon: \"door-exit\", description: \"Mouse heads for the tab bar; on phones, a fast scroll up\" },\n { value: \"delay\", label: \"After some time\", icon: \"clock\" },\n { value: \"scroll\", label: \"After scrolling\", icon: \"arrow-down\" },\n { value: \"click\", label: \"They click something\", icon: \"click\" },\n ],\n },\n { name: \"delaySeconds\", title: \"After\", type: \"number\", group: \"trigger\", hidden: { field: \"trigger\", equals: \"delay\" }, numeric: { min: 5, max: 120, step: 5, unit: \"seconds\" }, validation: { required: true } },\n { name: \"scrollPercent\", title: \"After scrolling\", type: \"number\", group: \"trigger\", layout: \"slider\", hidden: { field: \"trigger\", equals: \"scroll\" }, numeric: { min: 10, max: 90, step: 10, unit: \"%\" }, validation: { required: true } },\n { name: \"clickSelector\", title: \"Opens from\", type: \"string\", group: \"trigger\", hidden: { field: \"trigger\", equals: \"click\" }, access: { view: \"schema.view\", edit: \"schema.manage\" }, lockReason: \"A CSS selector set by the developer\", validation: { required: true } },\n { name: \"includedPages\", title: \"Only on pages\", type: \"array\", itemNoun: \"path\", of: [{ name: \"path\", title: \"Path\", type: \"string\" }], group: \"targeting\", description: \"Paths like /products/*. Leave empty for every page.\" },\n { name: \"excludedPages\", title: \"Never on pages\", type: \"array\", itemNoun: \"path\", of: [{ name: \"path\", title: \"Path\", type: \"string\" }], group: \"targeting\", initialValue: [\"/cart\", \"/checkout/*\"], description: \"Paths like /checkout/*.\" },\n {\n name: \"audience\",\n title: \"Who sees it\",\n type: \"select\",\n group: \"targeting\",\n initialValue: \"not-subscribed\",\n options: [\n { value: \"everyone\", label: \"Everyone\" },\n { value: \"new\", label: \"First-time visitors\" },\n { value: \"not-subscribed\", label: \"People not on the list yet\" },\n { value: \"no-orders\", label: \"People who haven't ordered\" },\n ],\n },\n { name: \"devices\", title: \"Devices\", type: \"multiselect\", group: \"targeting\", layout: \"checkbox\", validation: { min: 1 }, options: [{ value: \"desktop\", label: \"Desktop\" }, { value: \"tablet\", label: \"Tablet\" }, { value: \"phone\", label: \"Phone\" }] },\n {\n name: \"frequency\",\n title: \"How often\",\n type: \"select\",\n group: \"targeting\",\n initialValue: \"days\",\n options: [\n { value: \"session\", label: \"Once per visit\" },\n { value: \"days\", label: \"Once every few days\" },\n { value: \"once\", label: \"Only once, ever\" },\n ],\n },\n { name: \"everyDays\", title: \"Every\", type: \"number\", group: \"targeting\", hidden: { field: \"frequency\", equals: \"days\" }, numeric: { min: 1, max: 90, step: 1, unit: \"days\" }, validation: { required: true } },\n { name: \"size\", title: \"Size\", type: \"select\", group: \"design\", layout: \"segmented\", initialValue: \"medium\", options: [{ value: \"small\", label: \"Corner card\" }, { value: \"medium\", label: \"Centered\" }, { value: \"full\", label: \"Full screen\" }], description: \"Full screen on phones can hurt search rankings.\" },\n themeField,\n ],\n },\n value: {\n name: \"First-order 10% exit popup\",\n image: img(\"caldera-popup-skillet\", 800, 1000, \"A cast iron skillet with cornbread fresh from the fire\"),\n heading: \"Before you go — 10% off\",\n body: \"Join the monthly letter and get 10% off your first order. One email a month, unsubscribe any time.\",\n offer: \"form\",\n form: \"form_newsletter\",\n code: \"FIRSTFIRE10\",\n declineLabel: \"No thanks\",\n trigger: \"exit\",\n delaySeconds: 30,\n includedPages: [\"/products/*\", \"/collections/*\"],\n excludedPages: [\"/cart\", \"/checkout/*\", \"/account/*\"],\n audience: \"not-subscribed\",\n devices: [\"desktop\", \"tablet\"],\n frequency: \"days\",\n everyDays: 14,\n size: \"medium\",\n theme: \"light\",\n },\n notes: {\n why:\n \"A popup isn't a page section — it's a site-wide GLOBAL with rules, so `kind: 'global'`. Three rule clusters, each a select with conditional inputs: the trigger (exit / delay / scroll / click — the click selector is developer-locked), targeting (included and excluded paths as string lists, audience, devices; checkout excluded by default), and frequency capping (per visit / every N days / once). The offer is a conditional trio — email-for-a-code (a Forms reference + the code revealed after sign-up), a bare code, or a button. The decline text is required and its help bans confirmshaming.\",\n sanity:\n \"`popup` document (not an object) with `trigger: string` + `delaySeconds/scrollPercent/clickSelector` behind `hidden` callbacks, `includedPages/excludedPages: array<string>`, `audience`, `devices: array<string>`, `frequency` + `everyDays`. Targeting/frequency evaluation happens in the frontend; many teams use a tool (Klaviyo, Privy, Justuno) and Sanity only stores the copy.\",\n htmlSignals: [\n \"a hidden role=dialog / aria-modal element with an overlay, revealed by a script on mouseleave/visibilitychange/scroll/timeout\",\n \"copy like 'Wait!', 'Before you go', 'Get 10% off your first order'\",\n \"an email input + a code reveal after submit\",\n \"a decline link ('No thanks') and a close button\",\n \"scripts from Klaviyo forms, Privy, Justuno, OptinMonster, Sumo\",\n ],\n mcp:\n \"Create ONE popup global per dialog. Read trigger settings from the script/app config (exitIntent, delay ms → seconds, scroll %) and targeting from its URL rules; frequency from cookie/localStorage expiry (days). Email forms → match the form in Forms and reference it. Confirmshaming decline copy should be imported as-is but flagged with a suggested neutral rewrite.\",\n pitfalls: [\n \"Full-screen popups on phones count as intrusive interstitials for Google; the size help says so.\",\n \"Never show on /checkout — it's in the default excludes.\",\n \"Focus must move into the dialog and return on close; that's the renderer's job, so there's no field for it.\",\n ],\n },\n },\n\n /* ───────────────────────────── 10 · Trust badges & guarantees ───────────────────────────── */\n {\n id: \"conversion-trust-badges\",\n label: \"Trust badges & guarantees row\",\n proves: \"Typed badges (guarantee / shipping / certification…) with logo only when certified · payment icons as a multiselect · a synced review score that can't be typed\",\n category: \"Conversion & forms\",\n brand: \"Caldera\",\n previewLayout: \"logos\",\n tags: [\"repeater\", \"a11y\", \"variants\", \"conditional\", \"validation\", \"media-heavy\"],\n schema: {\n name: \"trustRow\",\n title: \"Trust row\",\n kind: \"block\",\n icon: \"shield-check\",\n category: \"Conversion & forms\",\n description: \"Guarantees, shipping promises, certifications and how people pay\",\n variants: [\n { id: \"row\", name: \"Row\", description: \"Icons and short lines in one row\" },\n { id: \"cards\", name: \"Cards\", description: \"Each promise with a sentence\" },\n { id: \"compact\", name: \"Compact\", description: \"Under the buy button\" },\n ],\n preview: { title: \"badges.0.title\", subtitle: \"badges.1.title\", icon: \"shield-check\" },\n groups: [\n { name: \"content\", title: \"Content\", default: true },\n { name: \"design\", title: \"Design\" },\n ],\n fields: [\n {\n name: \"badges\",\n title: \"Badges\",\n type: \"array\",\n itemNoun: \"badge\",\n validation: { min: 2, max: 6 },\n of: [\n {\n name: \"badge\",\n title: \"Badge\",\n type: \"object\",\n icon: \"rosette\",\n preview: { title: \"title\", subtitle: \"detail\", media: \"logo\", fallback: \"Untitled badge\" },\n fields: [\n {\n name: \"kind\",\n title: \"Type\",\n type: \"select\",\n initialValue: \"guarantee\",\n options: [\n { value: \"guarantee\", label: \"Guarantee\" },\n { value: \"shipping\", label: \"Shipping\" },\n { value: \"returns\", label: \"Returns\" },\n { value: \"certification\", label: \"Certification\", description: \"B Corp, 1% for the Planet…\" },\n { value: \"origin\", label: \"Made in\" },\n ],\n },\n { name: \"icon\", title: \"Icon\", type: \"icon\", hidden: { field: \"kind\", equals: [\"guarantee\", \"shipping\", \"returns\", \"origin\"] } },\n { name: \"logo\", title: \"Certification logo\", type: \"image\", hidden: { field: \"kind\", equals: \"certification\" }, validation: { required: true } },\n { name: \"title\", title: \"Title\", type: \"string\", validation: { required: true, max: 28 } },\n { name: \"detail\", title: \"Detail\", type: \"string\", validation: { max: 80 }, description: \"Shown on the Cards layout and as a tooltip elsewhere.\" },\n { name: \"link\", title: \"Link\", type: \"link\" },\n ],\n },\n ],\n },\n {\n name: \"payments\",\n title: \"Payment icons\",\n type: \"multiselect\",\n layout: \"checkbox\",\n options: [\n { value: \"visa\", label: \"Visa\" },\n { value: \"mastercard\", label: \"Mastercard\" },\n { value: \"amex\", label: \"American Express\" },\n { value: \"apple-pay\", label: \"Apple Pay\" },\n { value: \"google-pay\", label: \"Google Pay\" },\n { value: \"shop-pay\", label: \"Shop Pay\" },\n { value: \"paypal\", label: \"PayPal\" },\n { value: \"afterpay\", label: \"Afterpay\" },\n ],\n },\n { name: \"showRating\", title: \"Show rating\", type: \"boolean\" },\n { name: \"ratingSource\", title: \"Reviews from\", type: \"select\", hidden: { field: \"showRating\", equals: true }, access: { edit: \"schema.manage\" }, lockReason: \"Connected in Settings › Integrations\", options: [{ value: \"okendo\", label: \"Okendo\" }, { value: \"judgeme\", label: \"Judge.me\" }, { value: \"google\", label: \"Google reviews\" }] },\n { name: \"alignment\", title: \"Alignment\", type: \"select\", group: \"design\", layout: \"segmented\", initialValue: \"center\", options: [{ value: \"left\", label: \"Left\" }, { value: \"center\", label: \"Center\" }] },\n { name: \"showDivider\", title: \"Lines above and below\", type: \"boolean\", group: \"design\" },\n ],\n },\n value: {\n _variant: \"row\",\n badges: [\n { _key: \"b1\", kind: \"guarantee\", icon: \"infinity\", title: \"Lifetime warranty\", detail: \"If it cracks or warps, we replace it. No receipt needed.\", link: { type: \"page\", href: \"/warranty\", title: \"Warranty\" } },\n { _key: \"b2\", kind: \"returns\", icon: \"arrow-back-up\", title: \"60-day returns\", detail: \"Even if you've cooked in it.\" },\n { _key: \"b3\", kind: \"shipping\", icon: \"truck\", title: \"Free shipping over $80\", detail: \"Contiguous US, plastic-free packaging.\" },\n { _key: \"b4\", kind: \"origin\", icon: \"map-pin\", title: \"Poured in Bend, Oregon\" },\n { _key: \"b5\", kind: \"certification\", logo: img(\"caldera-badge-one-percent\", 240, 240, \"1% for the Planet member\"), title: \"1% for the Planet\", detail: \"1% of every sale funds public-lands conservation.\", link: { type: \"url\", href: \"https://onepercentfortheplanet.org\", newTab: true } },\n ],\n payments: [\"visa\", \"mastercard\", \"amex\", \"apple-pay\", \"shop-pay\", \"paypal\"],\n showRating: true,\n ratingSource: \"okendo\",\n alignment: \"center\",\n showDivider: true,\n },\n notes: {\n why:\n \"Trust rows are claims, so the schema keeps them honest and accessible. Each badge is TYPED: guarantees, shipping, returns and origin use an icon, while certifications require the official logo (with alt text naming it) — the condition swaps icon for logo. Payment methods are a multiselect of known marks (the renderer owns the correct SVGs; nobody uploads a blurry Visa logo). The review score is a toggle that pulls a live number from the connected app — there is no field to type 4.9.\",\n sanity:\n \"`trustRow` object with `badges: array<object{kind, icon (sanity-plugin-icon-picker), logo: image, title, detail, link}>`, `payments: array<string>` with `options.list`, and `rating: reference to reviewsSummary` (synced) or numbers typed by hand — which is the problem this entry avoids.\",\n htmlSignals: [\n \"a row of 3–6 small icon + short text items near the buy button or above the footer ('Free shipping', '30-day returns', 'Lifetime warranty')\",\n \"payment brand SVGs (Visa, Mastercard, Amex, Apple Pay, Shop Pay, PayPal) in a list\",\n \"certification marks (B Corp, 1% for the Planet, Climate Neutral) as images\",\n \"a star rating with '4.9 from 2,400 reviews' text, often from a reviews widget\",\n ],\n mcp:\n \"Each icon+text item → badge (kind from keywords: ship → shipping, return/refund → returns, warranty/guarantee → guarantee, 'made in'/'poured in' → origin; known certification marks → certification with the image as logo). Payment SVGs → payments by brand (match file names/titles/aria-labels). A star rating from a reviews widget → showRating:true; never import the number. Text-only certifications without a logo stay 'certification' and are flagged for a logo.\",\n pitfalls: [\n \"Typed review numbers go stale and can mislead; only the live score is allowed.\",\n \"Payment icons for methods not enabled at checkout are a common trust-breaker.\",\n \"Icon-only badges need text; the title is required.\",\n ],\n },\n },\n];\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * KIT LIBRARY · Data & interactive — sections whose content is DATA (tables, series, formulas, markers) or that
3
+ * collect / react to visitor input. These are the entries that show where a page-builder schema stops and a data
4
+ * model (or code) starts. Every "SCHEMA GAP:" pitfall is a capability the schema language does not have yet.
5
+ */
6
+ import type { KitEntry } from "../types";
7
+ export declare const ENTRIES: KitEntry[];