@bettercms-ai/kit 1.0.0 → 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 (587) hide show
  1. package/README.md +33 -0
  2. package/dist/adapters/dock-values.d.ts +28 -0
  3. package/dist/adapters/dock-values.js +41 -0
  4. package/dist/adapters/dock-values.js.map +1 -0
  5. package/{adapters → dist/adapters}/icons.js +2 -2
  6. package/dist/adapters/icons.js.map +1 -0
  7. package/{adapters → dist/adapters}/lossy.d.ts +90 -31
  8. package/dist/adapters/lossy.js +414 -0
  9. package/dist/adapters/lossy.js.map +1 -0
  10. package/{adapters → dist/adapters}/prod-types.d.ts +82 -4
  11. package/{adapters → dist/adapters}/prod-types.js +71 -3
  12. package/dist/adapters/prod-types.js.map +1 -0
  13. package/{adapters → dist/adapters}/schema.d.ts +40 -1
  14. package/{adapters → dist/adapters}/schema.js +996 -179
  15. package/dist/adapters/schema.js.map +1 -0
  16. package/{adapters → dist/adapters}/values.d.ts +26 -5
  17. package/{adapters → dist/adapters}/values.js +87 -17
  18. package/dist/adapters/values.js.map +1 -0
  19. package/dist/brand/logo.js +96 -0
  20. package/dist/brand/logo.js.map +1 -0
  21. package/{context.d.ts → dist/context.d.ts} +92 -2
  22. package/{context.js → dist/context.js} +5 -2
  23. package/dist/context.js.map +1 -0
  24. package/{controls → dist/controls}/button.d.ts +19 -5
  25. package/{controls → dist/controls}/button.js +125 -54
  26. package/dist/controls/button.js.map +1 -0
  27. package/{controls → dist/controls}/c1.js +1 -1
  28. package/dist/controls/c1.js.map +1 -0
  29. package/{controls → dist/controls}/c2.js +1 -1
  30. package/dist/controls/c2.js.map +1 -0
  31. package/{controls → dist/controls}/choice.d.ts +7 -2
  32. package/{controls → dist/controls}/choice.js +71 -18
  33. package/dist/controls/choice.js.map +1 -0
  34. package/{controls → dist/controls}/code-register.js +1 -1
  35. package/dist/controls/code-register.js.map +1 -0
  36. package/{controls → dist/controls}/code.js +10 -9
  37. package/dist/controls/code.js.map +1 -0
  38. package/{controls → dist/controls}/color.js +8 -8
  39. package/dist/controls/color.js.map +1 -0
  40. package/{controls → dist/controls}/component-services.d.ts +42 -0
  41. package/dist/controls/component-services.js +7 -0
  42. package/dist/controls/component-services.js.map +1 -0
  43. package/{controls → dist/controls}/date-register.js +1 -1
  44. package/dist/controls/date-register.js.map +1 -0
  45. package/{controls → dist/controls}/date-zone.js +8 -2
  46. package/dist/controls/date-zone.js.map +1 -0
  47. package/{controls → dist/controls}/date.js +32 -24
  48. package/dist/controls/date.js.map +1 -0
  49. package/{controls → dist/controls}/form-picker-register.js +1 -1
  50. package/dist/controls/form-picker-register.js.map +1 -0
  51. package/{controls → dist/controls}/form-picker.js +11 -9
  52. package/dist/controls/form-picker.js.map +1 -0
  53. package/{controls → dist/controls}/icon-register.js +1 -1
  54. package/dist/controls/icon-register.js.map +1 -0
  55. package/{controls → dist/controls}/icon.d.ts +4 -2
  56. package/{controls → dist/controls}/icon.js +32 -27
  57. package/dist/controls/icon.js.map +1 -0
  58. package/{controls → dist/controls}/index.d.ts +1 -1
  59. package/{controls → dist/controls}/index.js +4 -3
  60. package/dist/controls/index.js.map +1 -0
  61. package/{controls → dist/controls}/json-register.js +1 -1
  62. package/dist/controls/json-register.js.map +1 -0
  63. package/{controls → dist/controls}/json.js +13 -3
  64. package/dist/controls/json.js.map +1 -0
  65. package/{controls → dist/controls}/link.js +6 -6
  66. package/dist/controls/link.js.map +1 -0
  67. package/{controls → dist/controls}/location-register.js +1 -1
  68. package/dist/controls/location-register.js.map +1 -0
  69. package/{controls → dist/controls}/location.js +64 -40
  70. package/dist/controls/location.js.map +1 -0
  71. package/{controls → dist/controls}/media-register.js +1 -1
  72. package/dist/controls/media-register.js.map +1 -0
  73. package/{controls → dist/controls}/media-services.d.ts +6 -0
  74. package/dist/controls/media-services.js +0 -0
  75. package/{controls → dist/controls}/media.d.ts +35 -4
  76. package/{controls → dist/controls}/media.js +491 -171
  77. package/dist/controls/media.js.map +1 -0
  78. package/{controls → dist/controls}/number.js +10 -9
  79. package/dist/controls/number.js.map +1 -0
  80. package/{controls → dist/controls}/reference-register.js +1 -1
  81. package/dist/controls/reference-register.js.map +1 -0
  82. package/{controls → dist/controls}/reference-services.d.ts +4 -0
  83. package/dist/controls/reference-services.js +0 -0
  84. package/{controls → dist/controls}/reference.d.ts +1 -1
  85. package/{controls → dist/controls}/reference.js +93 -77
  86. package/dist/controls/reference.js.map +1 -0
  87. package/dist/controls/rich-text/blocks.d.ts +49 -0
  88. package/{controls → dist/controls}/rich-text/blocks.js +471 -144
  89. package/dist/controls/rich-text/blocks.js.map +1 -0
  90. package/{controls → dist/controls}/rich-text/catalog.d.ts +4 -1
  91. package/{controls → dist/controls}/rich-text/catalog.js +75 -65
  92. package/dist/controls/rich-text/catalog.js.map +1 -0
  93. package/{controls → dist/controls}/rich-text/codec.d.ts +9 -1
  94. package/{controls → dist/controls}/rich-text/codec.js +3 -1
  95. package/dist/controls/rich-text/codec.js.map +1 -0
  96. package/{controls → dist/controls}/rich-text/component-card.d.ts +1 -1
  97. package/{controls → dist/controls}/rich-text/component-card.js +417 -99
  98. package/dist/controls/rich-text/component-card.js.map +1 -0
  99. package/dist/controls/rich-text/component-panel.d.ts +47 -0
  100. package/dist/controls/rich-text/component-panel.js +141 -0
  101. package/dist/controls/rich-text/component-panel.js.map +1 -0
  102. package/{controls → dist/controls}/rich-text/control.d.ts +1 -2
  103. package/{controls → dist/controls}/rich-text/control.js +84 -42
  104. package/dist/controls/rich-text/control.js.map +1 -0
  105. package/{controls → dist/controls}/rich-text/dom.d.ts +52 -9
  106. package/{controls → dist/controls}/rich-text/dom.js +379 -50
  107. package/dist/controls/rich-text/dom.js.map +1 -0
  108. package/{controls → dist/controls}/rich-text/editor.d.ts +7 -0
  109. package/{controls → dist/controls}/rich-text/editor.js +148 -48
  110. package/dist/controls/rich-text/editor.js.map +1 -0
  111. package/{controls → dist/controls}/rich-text/floating.d.ts +6 -1
  112. package/{controls → dist/controls}/rich-text/floating.js +35 -18
  113. package/dist/controls/rich-text/floating.js.map +1 -0
  114. package/{controls → dist/controls}/rich-text/index.js +1 -1
  115. package/dist/controls/rich-text/index.js.map +1 -0
  116. package/dist/controls/rich-text/link-form.js +147 -0
  117. package/dist/controls/rich-text/link-form.js.map +1 -0
  118. package/{controls → dist/controls}/rich-text/markdown.js +4 -2
  119. package/dist/controls/rich-text/markdown.js.map +1 -0
  120. package/{controls → dist/controls}/rich-text/ops.js +17 -15
  121. package/dist/controls/rich-text/ops.js.map +1 -0
  122. package/dist/controls/rich-text/plain.d.ts +17 -0
  123. package/dist/controls/rich-text/plain.js +44 -0
  124. package/dist/controls/rich-text/plain.js.map +1 -0
  125. package/{controls → dist/controls}/rich-text/toolbar.d.ts +6 -2
  126. package/{controls → dist/controls}/rich-text/toolbar.js +12 -7
  127. package/dist/controls/rich-text/toolbar.js.map +1 -0
  128. package/{controls → dist/controls}/scale.js +5 -5
  129. package/dist/controls/scale.js.map +1 -0
  130. package/{controls → dist/controls}/slot-register.js +1 -1
  131. package/dist/controls/slot-register.js.map +1 -0
  132. package/{controls → dist/controls}/slot-services.d.ts +25 -0
  133. package/dist/controls/slot-services.js +155 -0
  134. package/dist/controls/slot-services.js.map +1 -0
  135. package/{controls → dist/controls}/slot.js +42 -24
  136. package/dist/controls/slot.js.map +1 -0
  137. package/{controls → dist/controls}/table/index.js +1 -1
  138. package/dist/controls/table/index.js.map +1 -0
  139. package/{controls → dist/controls}/table/prod.js +3 -3
  140. package/dist/controls/table/prod.js.map +1 -0
  141. package/{controls → dist/controls}/table/refs.js +13 -2
  142. package/dist/controls/table/refs.js.map +1 -0
  143. package/{controls → dist/controls}/table/stored.js +1 -1
  144. package/dist/controls/table/stored.js.map +1 -0
  145. package/{controls → dist/controls}/table/table-editor.js +51 -48
  146. package/dist/controls/table/table-editor.js.map +1 -0
  147. package/{controls → dist/controls}/table/table-link.js +3 -3
  148. package/dist/controls/table/table-link.js.map +1 -0
  149. package/{controls → dist/controls}/table/table.js +3 -3
  150. package/dist/controls/table/table.js.map +1 -0
  151. package/{controls → dist/controls}/text.d.ts +2 -2
  152. package/{controls → dist/controls}/text.js +78 -43
  153. package/dist/controls/text.js.map +1 -0
  154. package/dist/controls/unknown-value.d.ts +17 -0
  155. package/dist/controls/unknown-value.js +66 -0
  156. package/dist/controls/unknown-value.js.map +1 -0
  157. package/dist/core/core.d.ts +63 -0
  158. package/dist/core/core.js +171 -0
  159. package/dist/core/core.js.map +1 -0
  160. package/dist/core/facets.d.ts +347 -0
  161. package/dist/core/facets.js +334 -0
  162. package/dist/core/facets.js.map +1 -0
  163. package/dist/core/index.d.ts +3 -0
  164. package/dist/core/index.js +3 -0
  165. package/{engine → dist/engine}/array.js +34 -21
  166. package/dist/engine/array.js.map +1 -0
  167. package/{engine → dist/engine}/bits.js +1 -1
  168. package/dist/engine/bits.js.map +1 -0
  169. package/{engine → dist/engine}/breadcrumb.d.ts +3 -3
  170. package/{engine → dist/engine}/breadcrumb.js +12 -36
  171. package/dist/engine/breadcrumb.js.map +1 -0
  172. package/{engine → dist/engine}/expand.d.ts +2 -4
  173. package/{engine → dist/engine}/expand.js +5 -22
  174. package/dist/engine/expand.js.map +1 -0
  175. package/{engine → dist/engine}/field-list.js +1 -1
  176. package/dist/engine/field-list.js.map +1 -0
  177. package/{engine → dist/engine}/field-shell.js +249 -121
  178. package/dist/engine/field-shell.js.map +1 -0
  179. package/{engine → dist/engine}/frame.d.ts +3 -1
  180. package/{engine → dist/engine}/frame.js +16 -14
  181. package/dist/engine/frame.js.map +1 -0
  182. package/{engine → dist/engine}/group-summary.d.ts +2 -1
  183. package/{engine → dist/engine}/group-summary.js +7 -3
  184. package/dist/engine/group-summary.js.map +1 -0
  185. package/{engine → dist/engine}/grouping.d.ts +19 -5
  186. package/{engine → dist/engine}/grouping.js +193 -21
  187. package/dist/engine/grouping.js.map +1 -0
  188. package/{engine → dist/engine}/item-list.d.ts +11 -1
  189. package/{engine → dist/engine}/item-list.js +35 -13
  190. package/dist/engine/item-list.js.map +1 -0
  191. package/{engine → dist/engine}/kit-field.js +45 -10
  192. package/dist/engine/kit-field.js.map +1 -0
  193. package/{engine → dist/engine}/schema-form.d.ts +27 -2
  194. package/{engine → dist/engine}/schema-form.js +182 -40
  195. package/dist/engine/schema-form.js.map +1 -0
  196. package/{engine → dist/engine}/slot.js +5 -15
  197. package/dist/engine/slot.js.map +1 -0
  198. package/dist/index.js +47 -0
  199. package/dist/index.js.map +1 -0
  200. package/{kit.css → dist/kit.css} +19 -0
  201. package/{lib → dist/lib}/cn.js +7 -4
  202. package/dist/lib/cn.js.map +1 -0
  203. package/{lib → dist/lib}/columns.js +4 -1
  204. package/dist/lib/columns.js.map +1 -0
  205. package/{lib → dist/lib}/frames.js +2 -2
  206. package/dist/lib/frames.js.map +1 -0
  207. package/dist/lib/icon-image.d.ts +10 -0
  208. package/dist/lib/icon-image.js +8 -0
  209. package/dist/lib/icon-image.js.map +1 -0
  210. package/{lib → dist/lib}/icons.js +4 -3
  211. package/dist/lib/icons.js.map +1 -0
  212. package/dist/lib/input-modality.d.ts +11 -0
  213. package/dist/lib/input-modality.js +47 -0
  214. package/dist/lib/input-modality.js.map +1 -0
  215. package/dist/lib/key-event.d.ts +11 -0
  216. package/dist/lib/key-event.js +16 -0
  217. package/dist/lib/key-event.js.map +1 -0
  218. package/{lib → dist/lib}/path.js +4 -2
  219. package/dist/lib/path.js.map +1 -0
  220. package/{lib → dist/lib}/schema.d.ts +34 -3
  221. package/{lib → dist/lib}/schema.js +110 -13
  222. package/dist/lib/schema.js.map +1 -0
  223. package/{lib → dist/lib}/utils.js +1 -1
  224. package/dist/lib/utils.js.map +1 -0
  225. package/{lib → dist/lib}/validate.d.ts +11 -1
  226. package/{lib → dist/lib}/validate.js +85 -11
  227. package/dist/lib/validate.js.map +1 -0
  228. package/dist/library/analysis.d.ts +23 -0
  229. package/dist/library/analysis.js +160 -0
  230. package/dist/library/analysis.js.map +1 -0
  231. package/dist/library/catalog.d.ts +57 -0
  232. package/dist/library/catalog.js +307 -0
  233. package/dist/library/catalog.js.map +1 -0
  234. package/dist/library/coreNotes.d.ts +8 -0
  235. package/dist/library/coreNotes.js +111 -0
  236. package/dist/library/coreNotes.js.map +1 -0
  237. package/dist/library/coverage.d.ts +40 -0
  238. package/dist/library/coverage.js +59 -0
  239. package/dist/library/coverage.js.map +1 -0
  240. package/dist/library/entries/advanced.entries.d.ts +2 -0
  241. package/dist/library/entries/advanced.entries.js +6579 -0
  242. package/dist/library/entries/advanced.entries.js.map +1 -0
  243. package/dist/library/entries/commerce.entries.d.ts +2 -0
  244. package/dist/library/entries/commerce.entries.js +4140 -0
  245. package/dist/library/entries/commerce.entries.js.map +1 -0
  246. package/dist/library/entries/company.entries.d.ts +2 -0
  247. package/dist/library/entries/company.entries.js +2731 -0
  248. package/dist/library/entries/company.entries.js.map +1 -0
  249. package/dist/library/entries/conversion.entries.d.ts +2 -0
  250. package/dist/library/entries/conversion.entries.js +3707 -0
  251. package/dist/library/entries/conversion.entries.js.map +1 -0
  252. package/dist/library/entries/data.entries.d.ts +7 -0
  253. package/dist/library/entries/data.entries.js +4613 -0
  254. package/dist/library/entries/data.entries.js.map +1 -0
  255. package/dist/library/entries/events.entries.d.ts +2 -0
  256. package/dist/library/entries/events.entries.js +3428 -0
  257. package/dist/library/entries/events.entries.js.map +1 -0
  258. package/dist/library/entries/features.entries.d.ts +2 -0
  259. package/dist/library/entries/features.entries.js +3157 -0
  260. package/dist/library/entries/features.entries.js.map +1 -0
  261. package/dist/library/entries/heroes.entries.d.ts +2 -0
  262. package/dist/library/entries/heroes.entries.js +3401 -0
  263. package/dist/library/entries/heroes.entries.js.map +1 -0
  264. package/dist/library/entries/index.d.ts +3 -0
  265. package/dist/library/entries/index.js +35 -0
  266. package/dist/library/entries/index.js.map +1 -0
  267. package/dist/library/entries/listings.entries.d.ts +2 -0
  268. package/dist/library/entries/listings.entries.js +2976 -0
  269. package/dist/library/entries/listings.entries.js.map +1 -0
  270. package/dist/library/entries/longform.entries.d.ts +2 -0
  271. package/dist/library/entries/longform.entries.js +4227 -0
  272. package/dist/library/entries/longform.entries.js.map +1 -0
  273. package/dist/library/entries/media.entries.d.ts +2 -0
  274. package/dist/library/entries/media.entries.js +2781 -0
  275. package/dist/library/entries/media.entries.js.map +1 -0
  276. package/dist/library/entries/navigation.entries.d.ts +2 -0
  277. package/dist/library/entries/navigation.entries.js +4011 -0
  278. package/dist/library/entries/navigation.entries.js.map +1 -0
  279. package/dist/library/entries/pricing.entries.d.ts +2 -0
  280. package/dist/library/entries/pricing.entries.js +2383 -0
  281. package/dist/library/entries/pricing.entries.js.map +1 -0
  282. package/dist/library/entries/social-proof.entries.d.ts +2 -0
  283. package/dist/library/entries/social-proof.entries.js +2297 -0
  284. package/dist/library/entries/social-proof.entries.js.map +1 -0
  285. package/dist/library/examples/bento.d.ts +92 -0
  286. package/dist/library/examples/bento.js +201 -0
  287. package/dist/library/examples/bento.js.map +1 -0
  288. package/dist/library/examples/blocks.d.ts +14 -0
  289. package/dist/library/examples/blocks.js +313 -0
  290. package/dist/library/examples/blocks.js.map +1 -0
  291. package/dist/library/examples/faq.d.ts +28 -0
  292. package/dist/library/examples/faq.js +230 -0
  293. package/dist/library/examples/faq.js.map +1 -0
  294. package/dist/library/examples/hero.d.ts +43 -0
  295. package/dist/library/examples/hero.js +222 -0
  296. package/dist/library/examples/hero.js.map +1 -0
  297. package/dist/library/examples/index.d.ts +36 -0
  298. package/dist/library/examples/index.js +109 -0
  299. package/dist/library/examples/index.js.map +1 -0
  300. package/dist/library/examples/journalStory.d.ts +93 -0
  301. package/dist/library/examples/journalStory.js +338 -0
  302. package/dist/library/examples/journalStory.js.map +1 -0
  303. package/dist/library/examples/megaMenu.d.ts +134 -0
  304. package/dist/library/examples/megaMenu.js +442 -0
  305. package/dist/library/examples/megaMenu.js.map +1 -0
  306. package/dist/library/examples/pricing.d.ts +103 -0
  307. package/dist/library/examples/pricing.js +479 -0
  308. package/dist/library/examples/pricing.js.map +1 -0
  309. package/dist/library/examples/tabs.d.ts +87 -0
  310. package/dist/library/examples/tabs.js +180 -0
  311. package/dist/library/examples/tabs.js.map +1 -0
  312. package/dist/library/export.d.ts +42 -0
  313. package/dist/library/export.js +80 -0
  314. package/dist/library/export.js.map +1 -0
  315. package/dist/library/index.d.ts +13 -0
  316. package/dist/library/index.js +6 -0
  317. package/dist/library/kit-catalog.json +1510 -0
  318. package/dist/library/types.d.ts +42 -0
  319. package/dist/library/types.js +0 -0
  320. package/{schema → dist/schema}/adapters.js +1 -2
  321. package/dist/schema/adapters.js.map +1 -0
  322. package/{schema → dist/schema}/help.d.ts +2 -0
  323. package/{schema → dist/schema}/help.js +6 -4
  324. package/dist/schema/help.js.map +1 -0
  325. package/{schema → dist/schema}/scale.js +1 -1
  326. package/dist/schema/scale.js.map +1 -0
  327. package/{schema → dist/schema}/sources.js +1 -1
  328. package/dist/schema/sources.js.map +1 -0
  329. package/{schema → dist/schema}/table.js +11 -10
  330. package/dist/schema/table.js.map +1 -0
  331. package/{schema → dist/schema}/types.d.ts +29 -1
  332. package/{schema → dist/schema}/types.js +1 -1
  333. package/dist/schema/types.js.map +1 -0
  334. package/dist/styles.css +2 -0
  335. package/dist/table/table-view.d.ts +14 -0
  336. package/dist/table/table-view.js +140 -0
  337. package/dist/table/table-view.js.map +1 -0
  338. package/dist/table/table.css +73 -0
  339. package/dist/testing/corpus.d.ts +63 -0
  340. package/dist/testing/corpus.js +129 -0
  341. package/dist/testing/corpus.js.map +1 -0
  342. package/dist/testing/test-form.d.ts +11 -0
  343. package/dist/testing/test-form.js +38 -0
  344. package/dist/testing/test-form.js.map +1 -0
  345. package/dist/theme.css +345 -0
  346. package/dist/theme.d.ts +22 -0
  347. package/dist/theme.js +43 -0
  348. package/dist/theme.js.map +1 -0
  349. package/dist/tokens.css +542 -0
  350. package/dist/types.js +0 -0
  351. package/{ui → dist/ui}/action-tray.d.ts +1 -1
  352. package/{ui → dist/ui}/action-tray.js +20 -19
  353. package/dist/ui/action-tray.js.map +1 -0
  354. package/dist/ui/autocomplete.d.ts +30 -0
  355. package/dist/ui/autocomplete.js +139 -0
  356. package/dist/ui/autocomplete.js.map +1 -0
  357. package/{ui → dist/ui}/button.d.ts +3 -3
  358. package/{ui → dist/ui}/button.js +6 -7
  359. package/dist/ui/button.js.map +1 -0
  360. package/{ui → dist/ui}/choice-switch.js +1 -1
  361. package/dist/ui/choice-switch.js.map +1 -0
  362. package/{ui → dist/ui}/controls.js +51 -39
  363. package/dist/ui/controls.js.map +1 -0
  364. package/{ui → dist/ui}/display.d.ts +10 -3
  365. package/{ui → dist/ui}/display.js +57 -46
  366. package/dist/ui/display.js.map +1 -0
  367. package/{ui → dist/ui}/expanded-editor-modal.d.ts +2 -2
  368. package/{ui → dist/ui}/expanded-editor-modal.js +6 -6
  369. package/dist/ui/expanded-editor-modal.js.map +1 -0
  370. package/{ui → dist/ui}/field-context.js +1 -1
  371. package/dist/ui/field-context.js.map +1 -0
  372. package/{ui → dist/ui}/floating-panel.d.ts +1 -1
  373. package/{ui → dist/ui}/floating-panel.js +28 -12
  374. package/dist/ui/floating-panel.js.map +1 -0
  375. package/{ui → dist/ui}/index.d.ts +4 -0
  376. package/dist/ui/index.js +18 -0
  377. package/{ui → dist/ui}/input.d.ts +1 -1
  378. package/{ui → dist/ui}/input.js +9 -9
  379. package/dist/ui/input.js.map +1 -0
  380. package/{ui → dist/ui}/mode-bar.js +3 -3
  381. package/dist/ui/mode-bar.js.map +1 -0
  382. package/{ui → dist/ui}/overlay.d.ts +77 -5
  383. package/dist/ui/overlay.js +697 -0
  384. package/dist/ui/overlay.js.map +1 -0
  385. package/{ui → dist/ui}/path-crumbs.js +37 -3
  386. package/dist/ui/path-crumbs.js.map +1 -0
  387. package/{ui → dist/ui}/presence.js +2 -2
  388. package/dist/ui/presence.js.map +1 -0
  389. package/{ui → dist/ui}/select.js +89 -87
  390. package/dist/ui/select.js.map +1 -0
  391. package/{ui → dist/ui}/shortcut-hint.js +1 -1
  392. package/dist/ui/shortcut-hint.js.map +1 -0
  393. package/dist/ui/spinner.d.ts +24 -0
  394. package/dist/ui/spinner.js +42 -0
  395. package/dist/ui/spinner.js.map +1 -0
  396. package/dist/ui/split-button.d.ts +32 -0
  397. package/dist/ui/split-button.js +60 -0
  398. package/dist/ui/split-button.js.map +1 -0
  399. package/{ui → dist/ui}/surfaces.js +1 -1
  400. package/dist/ui/surfaces.js.map +1 -0
  401. package/dist/ui/tab.d.ts +38 -0
  402. package/dist/ui/tab.js +87 -0
  403. package/dist/ui/tab.js.map +1 -0
  404. package/dist/ui/toast.d.ts +20 -0
  405. package/dist/ui/toast.js +115 -0
  406. package/dist/ui/toast.js.map +1 -0
  407. package/{ui → dist/ui}/tooltip-root.d.ts +4 -3
  408. package/{ui → dist/ui}/tooltip-root.js +9 -8
  409. package/dist/ui/tooltip-root.js.map +1 -0
  410. package/{ui → dist/ui}/variants.js +1 -1
  411. package/dist/ui/variants.js.map +1 -0
  412. package/package.json +77 -23
  413. package/adapters/icons.js.map +0 -1
  414. package/adapters/lossy.js +0 -233
  415. package/adapters/lossy.js.map +0 -1
  416. package/adapters/prod-types.js.map +0 -1
  417. package/adapters/schema.js.map +0 -1
  418. package/adapters/values.js.map +0 -1
  419. package/brand/logo.js +0 -9
  420. package/brand/logo.js.map +0 -1
  421. package/context.js.map +0 -1
  422. package/controls/button.js.map +0 -1
  423. package/controls/c1.js.map +0 -1
  424. package/controls/c2.js.map +0 -1
  425. package/controls/choice.js.map +0 -1
  426. package/controls/code-register.js.map +0 -1
  427. package/controls/code.js.map +0 -1
  428. package/controls/color.js.map +0 -1
  429. package/controls/date-register.js.map +0 -1
  430. package/controls/date-zone.js.map +0 -1
  431. package/controls/date.js.map +0 -1
  432. package/controls/form-picker-register.js.map +0 -1
  433. package/controls/form-picker.js.map +0 -1
  434. package/controls/icon-register.js.map +0 -1
  435. package/controls/icon.js.map +0 -1
  436. package/controls/index.js.map +0 -1
  437. package/controls/json-register.js.map +0 -1
  438. package/controls/json.js.map +0 -1
  439. package/controls/link.js.map +0 -1
  440. package/controls/location-register.js.map +0 -1
  441. package/controls/location.js.map +0 -1
  442. package/controls/media-register.js.map +0 -1
  443. package/controls/media.js.map +0 -1
  444. package/controls/number.js.map +0 -1
  445. package/controls/reference-register.js.map +0 -1
  446. package/controls/reference.js.map +0 -1
  447. package/controls/rich-text/blocks.d.ts +0 -28
  448. package/controls/rich-text/blocks.js.map +0 -1
  449. package/controls/rich-text/catalog.js.map +0 -1
  450. package/controls/rich-text/codec.js.map +0 -1
  451. package/controls/rich-text/component-card.js.map +0 -1
  452. package/controls/rich-text/control.js.map +0 -1
  453. package/controls/rich-text/dom.js.map +0 -1
  454. package/controls/rich-text/editor.js.map +0 -1
  455. package/controls/rich-text/floating.js.map +0 -1
  456. package/controls/rich-text/index.js.map +0 -1
  457. package/controls/rich-text/link-form.js +0 -111
  458. package/controls/rich-text/link-form.js.map +0 -1
  459. package/controls/rich-text/markdown.js.map +0 -1
  460. package/controls/rich-text/ops.js.map +0 -1
  461. package/controls/rich-text/toolbar.js.map +0 -1
  462. package/controls/scale.js.map +0 -1
  463. package/controls/slot-register.js.map +0 -1
  464. package/controls/slot-services.js +0 -38
  465. package/controls/slot-services.js.map +0 -1
  466. package/controls/slot.js.map +0 -1
  467. package/controls/table/index.js.map +0 -1
  468. package/controls/table/prod.js.map +0 -1
  469. package/controls/table/refs.js.map +0 -1
  470. package/controls/table/stored.js.map +0 -1
  471. package/controls/table/table-editor.js.map +0 -1
  472. package/controls/table/table-link.js.map +0 -1
  473. package/controls/table/table.js.map +0 -1
  474. package/controls/text.js.map +0 -1
  475. package/engine/array.js.map +0 -1
  476. package/engine/bits.js.map +0 -1
  477. package/engine/breadcrumb.js.map +0 -1
  478. package/engine/expand.js.map +0 -1
  479. package/engine/field-list.js.map +0 -1
  480. package/engine/field-shell.js.map +0 -1
  481. package/engine/frame.js.map +0 -1
  482. package/engine/group-summary.js.map +0 -1
  483. package/engine/grouping.js.map +0 -1
  484. package/engine/item-list.js.map +0 -1
  485. package/engine/kit-field.js.map +0 -1
  486. package/engine/schema-form.js.map +0 -1
  487. package/engine/slot.js.map +0 -1
  488. package/index.js +0 -55
  489. package/index.js.map +0 -1
  490. package/lib/cn.js.map +0 -1
  491. package/lib/columns.js.map +0 -1
  492. package/lib/frames.js.map +0 -1
  493. package/lib/icons.js.map +0 -1
  494. package/lib/path.js.map +0 -1
  495. package/lib/schema.js.map +0 -1
  496. package/lib/utils.js.map +0 -1
  497. package/lib/validate.js.map +0 -1
  498. package/schema/adapters.js.map +0 -1
  499. package/schema/help.js.map +0 -1
  500. package/schema/scale.js.map +0 -1
  501. package/schema/sources.js.map +0 -1
  502. package/schema/table.js.map +0 -1
  503. package/schema/types.js.map +0 -1
  504. package/ui/action-tray.js.map +0 -1
  505. package/ui/button.js.map +0 -1
  506. package/ui/choice-switch.js.map +0 -1
  507. package/ui/controls.js.map +0 -1
  508. package/ui/display.js.map +0 -1
  509. package/ui/expanded-editor-modal.js.map +0 -1
  510. package/ui/field-context.js.map +0 -1
  511. package/ui/floating-panel.js.map +0 -1
  512. package/ui/index.js +0 -13
  513. package/ui/input.js.map +0 -1
  514. package/ui/mode-bar.js.map +0 -1
  515. package/ui/overlay.js +0 -378
  516. package/ui/overlay.js.map +0 -1
  517. package/ui/path-crumbs.js.map +0 -1
  518. package/ui/presence.js.map +0 -1
  519. package/ui/select.js.map +0 -1
  520. package/ui/shortcut-hint.js.map +0 -1
  521. package/ui/surfaces.js.map +0 -1
  522. package/ui/tooltip-root.js.map +0 -1
  523. package/ui/variants.js.map +0 -1
  524. /package/{_virtual → dist/_virtual}/_rolldown/runtime.js +0 -0
  525. /package/{adapters → dist/adapters}/icons.d.ts +0 -0
  526. /package/{brand → dist/brand}/logo.d.ts +0 -0
  527. /package/{controls → dist/controls}/c1.d.ts +0 -0
  528. /package/{controls → dist/controls}/c2.d.ts +0 -0
  529. /package/{controls → dist/controls}/code-register.d.ts +0 -0
  530. /package/{controls → dist/controls}/code.d.ts +0 -0
  531. /package/{controls → dist/controls}/color.d.ts +0 -0
  532. /package/{controls → dist/controls}/date-register.d.ts +0 -0
  533. /package/{controls → dist/controls}/date-zone.d.ts +0 -0
  534. /package/{controls → dist/controls}/date.d.ts +0 -0
  535. /package/{controls → dist/controls}/form-picker-register.d.ts +0 -0
  536. /package/{controls → dist/controls}/form-picker.d.ts +0 -0
  537. /package/{controls → dist/controls}/icon-register.d.ts +0 -0
  538. /package/{controls → dist/controls}/json-register.d.ts +0 -0
  539. /package/{controls → dist/controls}/json.d.ts +0 -0
  540. /package/{controls → dist/controls}/link.d.ts +0 -0
  541. /package/{controls → dist/controls}/location-register.d.ts +0 -0
  542. /package/{controls → dist/controls}/location.d.ts +0 -0
  543. /package/{controls → dist/controls}/media-register.d.ts +0 -0
  544. /package/{controls → dist/controls}/number.d.ts +0 -0
  545. /package/{controls → dist/controls}/reference-register.d.ts +0 -0
  546. /package/{controls → dist/controls}/rich-text/index.d.ts +0 -0
  547. /package/{controls → dist/controls}/rich-text/link-form.d.ts +0 -0
  548. /package/{controls → dist/controls}/rich-text/markdown.d.ts +0 -0
  549. /package/{controls → dist/controls}/rich-text/ops.d.ts +0 -0
  550. /package/{controls → dist/controls}/scale.d.ts +0 -0
  551. /package/{controls → dist/controls}/slot-register.d.ts +0 -0
  552. /package/{controls → dist/controls}/slot.d.ts +0 -0
  553. /package/{controls → dist/controls}/table/index.d.ts +0 -0
  554. /package/{controls → dist/controls}/table/prod.d.ts +0 -0
  555. /package/{controls → dist/controls}/table/refs.d.ts +0 -0
  556. /package/{controls → dist/controls}/table/stored.d.ts +0 -0
  557. /package/{controls → dist/controls}/table/table-editor.d.ts +0 -0
  558. /package/{controls → dist/controls}/table/table-link.d.ts +0 -0
  559. /package/{controls → dist/controls}/table/table.d.ts +0 -0
  560. /package/{engine → dist/engine}/array.d.ts +0 -0
  561. /package/{engine → dist/engine}/bits.d.ts +0 -0
  562. /package/{engine → dist/engine}/field-list.d.ts +0 -0
  563. /package/{engine → dist/engine}/field-shell.d.ts +0 -0
  564. /package/{engine → dist/engine}/kit-field.d.ts +0 -0
  565. /package/{engine → dist/engine}/slot.d.ts +0 -0
  566. /package/{index.d.ts → dist/index.d.ts} +0 -0
  567. /package/{lib → dist/lib}/cn.d.ts +0 -0
  568. /package/{lib → dist/lib}/columns.d.ts +0 -0
  569. /package/{lib → dist/lib}/frames.d.ts +0 -0
  570. /package/{lib → dist/lib}/icons.d.ts +0 -0
  571. /package/{lib → dist/lib}/path.d.ts +0 -0
  572. /package/{lib → dist/lib}/utils.d.ts +0 -0
  573. /package/{schema → dist/schema}/adapters.d.ts +0 -0
  574. /package/{schema → dist/schema}/scale.d.ts +0 -0
  575. /package/{schema → dist/schema}/sources.d.ts +0 -0
  576. /package/{schema → dist/schema}/table.d.ts +0 -0
  577. /package/{types.d.ts → dist/types.d.ts} +0 -0
  578. /package/{ui → dist/ui}/choice-switch.d.ts +0 -0
  579. /package/{ui → dist/ui}/controls.d.ts +0 -0
  580. /package/{ui → dist/ui}/field-context.d.ts +0 -0
  581. /package/{ui → dist/ui}/mode-bar.d.ts +0 -0
  582. /package/{ui → dist/ui}/path-crumbs.d.ts +0 -0
  583. /package/{ui → dist/ui}/presence.d.ts +0 -0
  584. /package/{ui → dist/ui}/select.d.ts +0 -0
  585. /package/{ui → dist/ui}/shortcut-hint.d.ts +0 -0
  586. /package/{ui → dist/ui}/surfaces.d.ts +0 -0
  587. /package/{ui → dist/ui}/variants.d.ts +0 -0
@@ -0,0 +1,334 @@
1
+ //#region src/core/facets.ts
2
+ /** Prod keys with no V2 concept (facet table §B.1): never written from V2, carried through a write from the stored definition. */
3
+ var OUT_OF_DOMAIN = {
4
+ "prop target": "a prop's binding: props[].target (+ stale, origin)",
5
+ "host config": "HOST_CONFIG_KEYS + SERVER_CONFIG_KEYS in a field's or prop's config (adapters/lossy.ts)"
6
+ };
7
+ var corpusFix = (props, fields, bound) => ({
8
+ row: "B corpus-fix",
9
+ carrier: "value",
10
+ props: [props],
11
+ fields: [fields],
12
+ bound,
13
+ status: "landed"
14
+ });
15
+ var FACETS = {
16
+ ai: {
17
+ row: "A1",
18
+ carrier: "value",
19
+ props: ["props[].ai"],
20
+ fields: ["fields[].ai"],
21
+ status: "pending:C3"
22
+ },
23
+ category: {
24
+ row: "A2",
25
+ carrier: "value",
26
+ props: ["components.category"],
27
+ fields: ["content_models.v2.category"],
28
+ bound: "CATEGORY_ORDER",
29
+ status: "pending:C3+C5"
30
+ },
31
+ variants: {
32
+ row: "A3",
33
+ carrier: "value",
34
+ props: ["component_variant_groups (+ components.variant_group_id, variant_input_mappings; order/icon/description → component_variant_groups.v2.variants)"],
35
+ fields: ["fields[_variant] select + showIf {field:_variant}; content_models.v2.variants{slug → {icon, description}}"],
36
+ status: "pending:C4"
37
+ },
38
+ "block icon": {
39
+ row: "A4",
40
+ carrier: "value",
41
+ props: ["components.icon"],
42
+ fields: ["content_models.icon"],
43
+ bound: "DOCK_ICON_NAMES",
44
+ status: "pending:C1-model-settings"
45
+ },
46
+ "document preview": {
47
+ row: "A5",
48
+ carrier: "value",
49
+ props: ["components.preview"],
50
+ fields: ["content_models.list_preview"],
51
+ status: "pending:C3"
52
+ },
53
+ "document preview path": {
54
+ row: "B catalog",
55
+ carrier: "value",
56
+ props: ["components.preview (path rule widened)"],
57
+ fields: [],
58
+ status: "pending:C3"
59
+ },
60
+ "kind:global": {
61
+ row: "A6",
62
+ carrier: "value",
63
+ props: ["components.v2.shape"],
64
+ fields: ["content_models.v2.shape"],
65
+ status: "pending:C5"
66
+ },
67
+ "kind:entry (props)": {
68
+ row: "A6",
69
+ carrier: "value",
70
+ props: ["components.v2.shape"],
71
+ fields: [],
72
+ status: "pending:C5",
73
+ foldedInto: "kind:global"
74
+ },
75
+ "kind:block (fields)": {
76
+ row: "A6",
77
+ carrier: "value",
78
+ props: [],
79
+ fields: ["content_models.v2.shape"],
80
+ status: "pending:C5",
81
+ foldedInto: "kind:global"
82
+ },
83
+ "kind:page": {
84
+ row: "A22",
85
+ carrier: "value",
86
+ props: [],
87
+ fields: ["content_models.v2.shape"],
88
+ status: "pending:C5",
89
+ foldedInto: "kind:global"
90
+ },
91
+ "kind:object": {
92
+ row: "A6",
93
+ carrier: "value",
94
+ props: [],
95
+ fields: ["content_models.v2.shape"],
96
+ status: "pending:C5",
97
+ foldedInto: "kind:global"
98
+ },
99
+ "groups>3": {
100
+ row: "A7",
101
+ carrier: "value",
102
+ props: ["components.tabs"],
103
+ fields: ["content_models.fieldsets[kind:tab]"],
104
+ bound: "TAB_MAX",
105
+ status: "pending:C3+C8"
106
+ },
107
+ "item openMode": {
108
+ row: "A8",
109
+ carrier: "value",
110
+ props: ["config.item.openMode (object item)", "config.itemTypes[i].openMode (polymorphic)"],
111
+ fields: ["ui.blocks[slug].openMode (modular)"],
112
+ status: "pending:C3"
113
+ },
114
+ "reference target": {
115
+ row: "A9",
116
+ carrier: "value",
117
+ props: ["config.targets"],
118
+ fields: ["config.targets"],
119
+ bound: "REF_TARGET_KINDS",
120
+ status: "landed"
121
+ },
122
+ "type:slot": {
123
+ row: "A10",
124
+ carrier: "value",
125
+ props: ["props[] type slot (config.allow)"],
126
+ fields: ["fields[] type slot (config.blockSlugs)"],
127
+ bound: "SLOT_BLOCK_SLUGS_REQUIRED",
128
+ status: "landed"
129
+ },
130
+ "block model field": {
131
+ row: "A11",
132
+ carrier: "value",
133
+ props: [],
134
+ fields: ["kind:'block' model fields[]"],
135
+ bound: "BLOCK_FIELD_TYPES",
136
+ status: "pending:G7"
137
+ },
138
+ "shopify reference": {
139
+ row: "A12",
140
+ carrier: "excluded",
141
+ props: [],
142
+ fields: [],
143
+ status: "landed"
144
+ },
145
+ "type:table": {
146
+ row: "A13",
147
+ carrier: "value",
148
+ props: ["props[] type table (config.mode data)"],
149
+ fields: ["fields[] type table"],
150
+ status: "landed"
151
+ },
152
+ "group (nested)": {
153
+ row: "A14",
154
+ carrier: "value",
155
+ props: ["ui.tab {id}"],
156
+ fields: ["ui.tab {id} (nested field)"],
157
+ bound: "TAB_MAX",
158
+ status: "landed"
159
+ },
160
+ "fieldset collision": {
161
+ row: "A15",
162
+ carrier: "value",
163
+ props: ["ui.group {id}"],
164
+ fields: ["fieldsetId"],
165
+ bound: "TAB_FIELDSET_ID_UNIQUE",
166
+ status: "landed"
167
+ },
168
+ "segmented fallback": {
169
+ row: "A16",
170
+ carrier: "value",
171
+ props: ["ui.control segmented"],
172
+ fields: ["ui.control segmented"],
173
+ bound: "SEGMENTED_MAX",
174
+ status: "pending:C3"
175
+ },
176
+ "fieldset (derived)": {
177
+ row: "A17",
178
+ carrier: "value",
179
+ props: ["ui.group (prop group)"],
180
+ fields: ["content_models.fieldsets"],
181
+ status: "landed"
182
+ },
183
+ "itemNoun (derived)": {
184
+ row: "A18",
185
+ carrier: "value",
186
+ props: ["ui.itemLabel"],
187
+ fields: ["ui.itemTitle"],
188
+ status: "landed"
189
+ },
190
+ "reference filter": {
191
+ row: "A19",
192
+ carrier: "value",
193
+ props: ["config.filter"],
194
+ fields: ["config.filter"],
195
+ bound: "REFERENCE_FILTER_MAX",
196
+ status: "landed"
197
+ },
198
+ condition: {
199
+ row: "A20",
200
+ carrier: "value",
201
+ props: ["showIf (+ scope)"],
202
+ fields: ["showIf (+ scope)"],
203
+ bound: "SHOW_IF_SCOPES",
204
+ status: "pending:C3"
205
+ },
206
+ openMode: {
207
+ row: "A21",
208
+ carrier: "value",
209
+ props: ["props[].openMode"],
210
+ fields: ["fields[].openMode"],
211
+ bound: "OPEN_MODE_TYPES",
212
+ status: "pending:C9"
213
+ },
214
+ "slot allow": {
215
+ row: "A23",
216
+ carrier: "value",
217
+ props: ["config.allow"],
218
+ fields: ["config.blockSlugs"],
219
+ bound: "SLOT_ALLOW",
220
+ status: "landed"
221
+ },
222
+ "type:polymorphic-array": {
223
+ row: "B structural",
224
+ carrier: "value",
225
+ props: ["props[] type table (config.mode types)"],
226
+ fields: ["fields[] type modular"],
227
+ status: "pending:C3"
228
+ },
229
+ "item chrome (types)": {
230
+ row: "B structural",
231
+ carrier: "value",
232
+ props: ["config.itemTypes[i] {icon, preview}"],
233
+ fields: ["ui.blocks[slug] {icon, preview}"],
234
+ status: "pending:C3"
235
+ },
236
+ "type:primitive-array": {
237
+ row: "B decided",
238
+ carrier: "value",
239
+ props: ["config.itemType (widened)"],
240
+ fields: ["config.itemType (widened)"],
241
+ status: "pending:C3"
242
+ },
243
+ "depth>10": {
244
+ row: "B decided",
245
+ carrier: "value",
246
+ props: ["nesting"],
247
+ fields: ["nesting"],
248
+ bound: "DEPTH_MAX",
249
+ status: "landed"
250
+ },
251
+ slotSettings: {
252
+ row: "B decided (BUILD)",
253
+ carrier: "value",
254
+ props: ["config.settings: FieldDef[]"],
255
+ fields: ["config.settings: FieldDef[]"],
256
+ bound: "SLOT_SETTINGS_MAX",
257
+ status: "pending:C3"
258
+ },
259
+ "block placement": {
260
+ row: "B catalog",
261
+ carrier: "value",
262
+ props: ["components.v2.placement"],
263
+ fields: ["content_models.v2.placement"],
264
+ status: "pending:C5"
265
+ },
266
+ "seeded instance": {
267
+ row: "B catalog",
268
+ carrier: "excluded",
269
+ props: [],
270
+ fields: [],
271
+ status: "landed"
272
+ },
273
+ "not applicable (props)": {
274
+ row: "B catalog",
275
+ carrier: "excluded",
276
+ props: [],
277
+ fields: [],
278
+ status: "landed"
279
+ },
280
+ "type name": corpusFix("components.slug", "content_models.slug", "SLUG_RE"),
281
+ "group name>40": corpusFix("components.tabs[].id", "content_models.fieldsets[].id", "TAB_NAME_MAX"),
282
+ "group title": corpusFix("components.tabs[].name", "content_models.fieldsets[].name", "TAB_TITLE"),
283
+ "group default": corpusFix("components.tabs[0]", "content_models.fieldsets[0]", "TAB_DEFAULT_FIRST"),
284
+ "group icon": corpusFix("components.tabs[].icon", "content_models.fieldsets[].icon", "DOCK_ICON_NAMES"),
285
+ "group name collision": corpusFix("components.tabs[].name", "content_models.fieldsets[].name", "TAB_NAME_UNIQUE"),
286
+ "prop tab limit": corpusFix("components.tabs", "content_models.fieldsets", "PROP_TAB_MAX"),
287
+ "fieldset spans groups": corpusFix("ui.group.tab", "fieldsets[].tab", "FIELDSET_ONE_TAB"),
288
+ "fieldset (props)": corpusFix("ui.group (first prop)", "content_models.fieldsets", "PROP_GROUP_DEFINED_ON_USE"),
289
+ "fieldset name>limit": corpusFix("ui.group.label", "content_models.fieldsets[].name", "FIELDSET_NAME_MAX"),
290
+ "duplicate name": corpusFix("props[].key", "fields[].key", "KEY_UNIQUE"),
291
+ "reserved name": {
292
+ row: "B corpus-fix",
293
+ carrier: "value",
294
+ props: [],
295
+ fields: ["fields[].key"],
296
+ bound: "KEY_RESERVED + KEY_FORMAT",
297
+ status: "landed"
298
+ },
299
+ rows: corpusFix("ui.rows", "ui.rows", "UI_ROWS_MAX"),
300
+ synced: corpusFix("ui.synced", "ui.synced", "SYNCED_FROM_MAX"),
301
+ valueShape: corpusFix("ui.valueShape", "ui.valueShape", "VALUE_SHAPE_TYPES"),
302
+ "default value": corpusFix("props[].defaultValue", "fields[].defaultValue", "VALUE_SCHEMAS"),
303
+ icon: corpusFix("ui.icon", "ui.icon", "DOCK_ICON_NAMES"),
304
+ layout: corpusFix("ui.control / ui.layout", "ui.control / ui.layout", "CONTROL_TYPES"),
305
+ "help>limit": corpusFix("helpText / placeholder / helpMore", "helpText / ui.placeholder / helpMore", "HELP_CAPS"),
306
+ "option icon": corpusFix("options[].icon", "options[].icon", "DOCK_ICON_NAMES"),
307
+ "option description": corpusFix("options[].description", "options[].description", "OPTION_DESCRIPTION_MAX"),
308
+ access: corpusFix("ui.access", "ui.access", "ACCESS_CAPS"),
309
+ timezone: corpusFix("config.timezone", "config.timezone", "TIMEZONE"),
310
+ "reference order": corpusFix("config.contentModelId|allowedModelSlugs, config.targets", "config.contentModelId|allowedModelSlugs, config.targets", "REFERENCE_TO_ORDER"),
311
+ "numeric unit": corpusFix("config.unit", "config.unit", "NUMBER_UNIT_MAX"),
312
+ "rating bounds": corpusFix("config.min/max/step (rating)", "config.min/max/step (rating)", "RATING_BOUNDS"),
313
+ "scale rules": corpusFix("config.scale", "config.scale", "SCALE_RULES"),
314
+ "validation.patternMessage": corpusFix("config.patternMessage", "config.patternMessage", "PATTERN_MESSAGE_MAX"),
315
+ "validation.pattern": corpusFix("config.pattern", "config.pattern", "PATTERN_MAX"),
316
+ "validation.length": corpusFix("config.minLength/maxLength", "config.minLength/maxLength", "LENGTH_TYPES"),
317
+ "validation.items": corpusFix("config.minItems/maxItems", "config.minItems/maxItems", "LIST_ITEMS_CAP"),
318
+ "validation.unique": corpusFix("props[].unique", "fields[].unique", "UNIQUE_TYPES"),
319
+ "validation.recommendedMax": corpusFix("props[].recommendedMax", "fields[].recommendedMax", "RECOMMENDED_MAX"),
320
+ "item identity": corpusFix("ui.itemName / ui.itemTitle", "ui.itemName / ui.itemTitle", "ITEM_NAME_RE"),
321
+ "item settings": corpusFix("config.item", "config.item", "ARRAY_ITEM_SETTINGS"),
322
+ itemNoun: corpusFix("ui.itemLabel", "ui.itemLabel", "ITEM_LABEL_MAX"),
323
+ "item icon": corpusFix("ui.icon (list)", "ui.icon (list)", "DOCK_ICON_NAMES"),
324
+ "preview icon": corpusFix("ui.preview.icon", "ui.preview.icon", "DOCK_ICON_NAMES"),
325
+ "preview path": corpusFix("ui.preview.{title,subtitle,media}", "ui.preview.{title,subtitle,media}", "PREVIEW_PATH"),
326
+ "unsupported key": corpusFix("—", "—", "V2_SCHEMA_KEYS")
327
+ };
328
+ var facetOf = (feature) => FACETS[feature];
329
+ /** The owner-signed exclusions: what may be lost by design (shopify until its pipeline, and two deliberate backend rules). */
330
+ var EXCLUDED = Object.keys(FACETS).filter((f) => FACETS[f].carrier === "excluded");
331
+ //#endregion
332
+ export { EXCLUDED, FACETS, OUT_OF_DOMAIN, facetOf };
333
+
334
+ //# sourceMappingURL=facets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facets.js","names":[],"sources":["../../src/core/facets.ts"],"sourcesContent":["/**\n * THE FACET TABLE (kit-facet-table.v3.md, G0b closed 2026-10-23): every V2 schema facet the adapter can name, with the\n * ONE prod key per lane that stores it. `satisfies Record<V2Facet, FacetRow>` makes it total: a feature added to\n * FEATURES or CATALOG (adapters/lossy.ts) without a row here fails tsc.\n *\n * Carriers are `value` (an explicit stored key) and `excluded` (owner-signed). A `bound` names the one shared constant\n * the V2 authoring rule and the prod zod rule both read: a value inside it is carried, one outside it is refused with\n * the facet's name. `status` is \"landed\" when the adapter carries the facet today, else the step that lands it.\n * Prod-only keys V2 has no concept of are not facets: OUT_OF_DOMAIN, preserved on every write (PBT P8).\n */\nimport type { CatalogFeature, LossyFeature } from \"../adapters/lossy\";\n\n/** Prod keys with no V2 concept (facet table §B.1): never written from V2, carried through a write from the stored definition. */\nexport const OUT_OF_DOMAIN = {\n \"prop target\": \"a prop's binding: props[].target (+ stale, origin)\",\n \"host config\": \"HOST_CONFIG_KEYS + SERVER_CONFIG_KEYS in a field's or prop's config (adapters/lossy.ts)\",\n} as const satisfies Partial<Record<CatalogFeature, string>>;\nexport type OutOfDomainFeature = keyof typeof OUT_OF_DOMAIN;\n\nexport type V2Facet = Exclude<LossyFeature | CatalogFeature, OutOfDomainFeature>;\n\nexport interface FacetRow {\n /** facet table v3: an A row number, or the B group */\n row: string;\n carrier: \"value\" | \"excluded\";\n /** the prod key(s) per lane, one per shape the facet takes; [] = the facet does not arise in that lane */\n props: readonly string[];\n fields: readonly string[];\n /** the shared constant: inside it the facet is carried, outside it the facet is refused by name */\n bound?: string;\n status: \"landed\" | `pending:${string}`;\n /** a facet stored at another facet's key (kind:page is the shape facet's value \"page\") */\n foldedInto?: V2Facet;\n}\n\nconst corpusFix = (props: string, fields: string, bound: string): FacetRow => ({ row: \"B corpus-fix\", carrier: \"value\", props: [props], fields: [fields], bound, status: \"landed\" });\n\nexport const FACETS = {\n /* ── A: hit by the corpus ── */\n ai: { row: \"A1\", carrier: \"value\", props: [\"props[].ai\"], fields: [\"fields[].ai\"], status: \"pending:C3\" },\n category: { row: \"A2\", carrier: \"value\", props: [\"components.category\"], fields: [\"content_models.v2.category\"], bound: \"CATEGORY_ORDER\", status: \"pending:C3+C5\" },\n variants: {\n row: \"A3\",\n carrier: \"value\",\n props: [\"component_variant_groups (+ components.variant_group_id, variant_input_mappings; order/icon/description → component_variant_groups.v2.variants)\"],\n fields: [\"fields[_variant] select + showIf {field:_variant}; content_models.v2.variants{slug → {icon, description}}\"],\n status: \"pending:C4\",\n },\n \"block icon\": { row: \"A4\", carrier: \"value\", props: [\"components.icon\"], fields: [\"content_models.icon\"], bound: \"DOCK_ICON_NAMES\", status: \"pending:C1-model-settings\" },\n \"document preview\": { row: \"A5\", carrier: \"value\", props: [\"components.preview\"], fields: [\"content_models.list_preview\"], status: \"pending:C3\" },\n \"document preview path\": { row: \"B catalog\", carrier: \"value\", props: [\"components.preview (path rule widened)\"], fields: [], status: \"pending:C3\" },\n \"kind:global\": { row: \"A6\", carrier: \"value\", props: [\"components.v2.shape\"], fields: [\"content_models.v2.shape\"], status: \"pending:C5\" },\n \"kind:entry (props)\": { row: \"A6\", carrier: \"value\", props: [\"components.v2.shape\"], fields: [], status: \"pending:C5\", foldedInto: \"kind:global\" },\n \"kind:block (fields)\": { row: \"A6\", carrier: \"value\", props: [], fields: [\"content_models.v2.shape\"], status: \"pending:C5\", foldedInto: \"kind:global\" },\n \"kind:page\": { row: \"A22\", carrier: \"value\", props: [], fields: [\"content_models.v2.shape\"], status: \"pending:C5\", foldedInto: \"kind:global\" },\n \"kind:object\": { row: \"A6\", carrier: \"value\", props: [], fields: [\"content_models.v2.shape\"], status: \"pending:C5\", foldedInto: \"kind:global\" },\n \"groups>3\": { row: \"A7\", carrier: \"value\", props: [\"components.tabs\"], fields: [\"content_models.fieldsets[kind:tab]\"], bound: \"TAB_MAX\", status: \"pending:C3+C8\" },\n \"item openMode\": {\n row: \"A8\",\n carrier: \"value\",\n props: [\"config.item.openMode (object item)\", \"config.itemTypes[i].openMode (polymorphic)\"],\n fields: [\"ui.blocks[slug].openMode (modular)\"],\n status: \"pending:C3\",\n },\n \"reference target\": { row: \"A9\", carrier: \"value\", props: [\"config.targets\"], fields: [\"config.targets\"], bound: \"REF_TARGET_KINDS\", status: \"landed\" },\n \"type:slot\": { row: \"A10\", carrier: \"value\", props: [\"props[] type slot (config.allow)\"], fields: [\"fields[] type slot (config.blockSlugs)\"], bound: \"SLOT_BLOCK_SLUGS_REQUIRED\", status: \"landed\" },\n \"block model field\": { row: \"A11\", carrier: \"value\", props: [], fields: [\"kind:'block' model fields[]\"], bound: \"BLOCK_FIELD_TYPES\", status: \"pending:G7\" },\n \"shopify reference\": { row: \"A12\", carrier: \"excluded\", props: [], fields: [], status: \"landed\" },\n \"type:table\": { row: \"A13\", carrier: \"value\", props: [\"props[] type table (config.mode data)\"], fields: [\"fields[] type table\"], status: \"landed\" },\n \"group (nested)\": { row: \"A14\", carrier: \"value\", props: [\"ui.tab {id}\"], fields: [\"ui.tab {id} (nested field)\"], bound: \"TAB_MAX\", status: \"landed\" },\n \"fieldset collision\": { row: \"A15\", carrier: \"value\", props: [\"ui.group {id}\"], fields: [\"fieldsetId\"], bound: \"TAB_FIELDSET_ID_UNIQUE\", status: \"landed\" },\n \"segmented fallback\": { row: \"A16\", carrier: \"value\", props: [\"ui.control segmented\"], fields: [\"ui.control segmented\"], bound: \"SEGMENTED_MAX\", status: \"pending:C3\" },\n \"fieldset (derived)\": { row: \"A17\", carrier: \"value\", props: [\"ui.group (prop group)\"], fields: [\"content_models.fieldsets\"], status: \"landed\" },\n \"itemNoun (derived)\": { row: \"A18\", carrier: \"value\", props: [\"ui.itemLabel\"], fields: [\"ui.itemTitle\"], status: \"landed\" },\n \"reference filter\": { row: \"A19\", carrier: \"value\", props: [\"config.filter\"], fields: [\"config.filter\"], bound: \"REFERENCE_FILTER_MAX\", status: \"landed\" },\n condition: { row: \"A20\", carrier: \"value\", props: [\"showIf (+ scope)\"], fields: [\"showIf (+ scope)\"], bound: \"SHOW_IF_SCOPES\", status: \"pending:C3\" },\n openMode: { row: \"A21\", carrier: \"value\", props: [\"props[].openMode\"], fields: [\"fields[].openMode\"], bound: \"OPEN_MODE_TYPES\", status: \"pending:C9\" },\n \"slot allow\": { row: \"A23\", carrier: \"value\", props: [\"config.allow\"], fields: [\"config.blockSlugs\"], bound: \"SLOT_ALLOW\", status: \"landed\" },\n\n /* ── B: in the code, not hit by the corpus ── */\n \"type:polymorphic-array\": { row: \"B structural\", carrier: \"value\", props: [\"props[] type table (config.mode types)\"], fields: [\"fields[] type modular\"], status: \"pending:C3\" },\n \"item chrome (types)\": { row: \"B structural\", carrier: \"value\", props: [\"config.itemTypes[i] {icon, preview}\"], fields: [\"ui.blocks[slug] {icon, preview}\"], status: \"pending:C3\" },\n \"type:primitive-array\": { row: \"B decided\", carrier: \"value\", props: [\"config.itemType (widened)\"], fields: [\"config.itemType (widened)\"], status: \"pending:C3\" },\n \"depth>10\": { row: \"B decided\", carrier: \"value\", props: [\"nesting\"], fields: [\"nesting\"], bound: \"DEPTH_MAX\", status: \"landed\" },\n slotSettings: { row: \"B decided (BUILD)\", carrier: \"value\", props: [\"config.settings: FieldDef[]\"], fields: [\"config.settings: FieldDef[]\"], bound: \"SLOT_SETTINGS_MAX\", status: \"pending:C3\" },\n \"block placement\": { row: \"B catalog\", carrier: \"value\", props: [\"components.v2.placement\"], fields: [\"content_models.v2.placement\"], status: \"pending:C5\" },\n \"seeded instance\": { row: \"B catalog\", carrier: \"excluded\", props: [], fields: [], status: \"landed\" },\n \"not applicable (props)\": { row: \"B catalog\", carrier: \"excluded\", props: [], fields: [], status: \"landed\" },\n \"type name\": corpusFix(\"components.slug\", \"content_models.slug\", \"SLUG_RE\"),\n \"group name>40\": corpusFix(\"components.tabs[].id\", \"content_models.fieldsets[].id\", \"TAB_NAME_MAX\"),\n \"group title\": corpusFix(\"components.tabs[].name\", \"content_models.fieldsets[].name\", \"TAB_TITLE\"),\n \"group default\": corpusFix(\"components.tabs[0]\", \"content_models.fieldsets[0]\", \"TAB_DEFAULT_FIRST\"),\n \"group icon\": corpusFix(\"components.tabs[].icon\", \"content_models.fieldsets[].icon\", \"DOCK_ICON_NAMES\"),\n \"group name collision\": corpusFix(\"components.tabs[].name\", \"content_models.fieldsets[].name\", \"TAB_NAME_UNIQUE\"),\n \"prop tab limit\": corpusFix(\"components.tabs\", \"content_models.fieldsets\", \"PROP_TAB_MAX\"),\n \"fieldset spans groups\": corpusFix(\"ui.group.tab\", \"fieldsets[].tab\", \"FIELDSET_ONE_TAB\"),\n \"fieldset (props)\": corpusFix(\"ui.group (first prop)\", \"content_models.fieldsets\", \"PROP_GROUP_DEFINED_ON_USE\"),\n \"fieldset name>limit\": corpusFix(\"ui.group.label\", \"content_models.fieldsets[].name\", \"FIELDSET_NAME_MAX\"),\n \"duplicate name\": corpusFix(\"props[].key\", \"fields[].key\", \"KEY_UNIQUE\"),\n \"reserved name\": { row: \"B corpus-fix\", carrier: \"value\", props: [], fields: [\"fields[].key\"], bound: \"KEY_RESERVED + KEY_FORMAT\", status: \"landed\" },\n rows: corpusFix(\"ui.rows\", \"ui.rows\", \"UI_ROWS_MAX\"),\n synced: corpusFix(\"ui.synced\", \"ui.synced\", \"SYNCED_FROM_MAX\"),\n valueShape: corpusFix(\"ui.valueShape\", \"ui.valueShape\", \"VALUE_SHAPE_TYPES\"),\n \"default value\": corpusFix(\"props[].defaultValue\", \"fields[].defaultValue\", \"VALUE_SCHEMAS\"),\n icon: corpusFix(\"ui.icon\", \"ui.icon\", \"DOCK_ICON_NAMES\"),\n layout: corpusFix(\"ui.control / ui.layout\", \"ui.control / ui.layout\", \"CONTROL_TYPES\"),\n \"help>limit\": corpusFix(\"helpText / placeholder / helpMore\", \"helpText / ui.placeholder / helpMore\", \"HELP_CAPS\"),\n \"option icon\": corpusFix(\"options[].icon\", \"options[].icon\", \"DOCK_ICON_NAMES\"),\n \"option description\": corpusFix(\"options[].description\", \"options[].description\", \"OPTION_DESCRIPTION_MAX\"),\n access: corpusFix(\"ui.access\", \"ui.access\", \"ACCESS_CAPS\"),\n timezone: corpusFix(\"config.timezone\", \"config.timezone\", \"TIMEZONE\"),\n \"reference order\": corpusFix(\"config.contentModelId|allowedModelSlugs, config.targets\", \"config.contentModelId|allowedModelSlugs, config.targets\", \"REFERENCE_TO_ORDER\"),\n \"numeric unit\": corpusFix(\"config.unit\", \"config.unit\", \"NUMBER_UNIT_MAX\"),\n \"rating bounds\": corpusFix(\"config.min/max/step (rating)\", \"config.min/max/step (rating)\", \"RATING_BOUNDS\"),\n \"scale rules\": corpusFix(\"config.scale\", \"config.scale\", \"SCALE_RULES\"),\n \"validation.patternMessage\": corpusFix(\"config.patternMessage\", \"config.patternMessage\", \"PATTERN_MESSAGE_MAX\"),\n \"validation.pattern\": corpusFix(\"config.pattern\", \"config.pattern\", \"PATTERN_MAX\"),\n \"validation.length\": corpusFix(\"config.minLength/maxLength\", \"config.minLength/maxLength\", \"LENGTH_TYPES\"),\n \"validation.items\": corpusFix(\"config.minItems/maxItems\", \"config.minItems/maxItems\", \"LIST_ITEMS_CAP\"),\n \"validation.unique\": corpusFix(\"props[].unique\", \"fields[].unique\", \"UNIQUE_TYPES\"),\n \"validation.recommendedMax\": corpusFix(\"props[].recommendedMax\", \"fields[].recommendedMax\", \"RECOMMENDED_MAX\"),\n \"item identity\": corpusFix(\"ui.itemName / ui.itemTitle\", \"ui.itemName / ui.itemTitle\", \"ITEM_NAME_RE\"),\n \"item settings\": corpusFix(\"config.item\", \"config.item\", \"ARRAY_ITEM_SETTINGS\"),\n itemNoun: corpusFix(\"ui.itemLabel\", \"ui.itemLabel\", \"ITEM_LABEL_MAX\"),\n \"item icon\": corpusFix(\"ui.icon (list)\", \"ui.icon (list)\", \"DOCK_ICON_NAMES\"),\n \"preview icon\": corpusFix(\"ui.preview.icon\", \"ui.preview.icon\", \"DOCK_ICON_NAMES\"),\n \"preview path\": corpusFix(\"ui.preview.{title,subtitle,media}\", \"ui.preview.{title,subtitle,media}\", \"PREVIEW_PATH\"),\n \"unsupported key\": corpusFix(\"—\", \"—\", \"V2_SCHEMA_KEYS\"),\n} as const satisfies Record<V2Facet, FacetRow>;\n\nexport const facetOf = (feature: string): FacetRow | undefined => (FACETS as Record<string, FacetRow>)[feature];\n\n/** The owner-signed exclusions: what may be lost by design (shopify until its pipeline, and two deliberate backend rules). */\nexport const EXCLUDED: readonly V2Facet[] = (Object.keys(FACETS) as V2Facet[]).filter((f) => FACETS[f].carrier === \"excluded\");\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** @bettercms-ai/kit/core: the Core Schema, its facet table and the façades both lanes meet in (P2 C1). */
2
+ export * from "./core";
3
+ export * from "./facets";
@@ -0,0 +1,3 @@
1
+ import { EXCLUDED, FACETS, OUT_OF_DOMAIN, facetOf } from "./facets.js";
2
+ import { CORE_VERSION, canonical, coreHash, coreJson, embedProd, embedV2, leafDiff, normProd, normV2, preserveOutOfDomain, roundTripCore } from "./core.js";
3
+ export { CORE_VERSION, EXCLUDED, FACETS, OUT_OF_DOMAIN, canonical, coreHash, coreJson, embedProd, embedV2, facetOf, leafDiff, normProd, normV2, preserveOutOfDomain, roundTripCore };
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../lib/cn.js";
2
+ import { useForm, useKitEnv, useKitServices } from "../context.js";
2
3
  import { ensureKeys, isObj, itemId, newKey, pathKey } from "../lib/path.js";
3
4
  import { KitIcon } from "../lib/icons.js";
4
- import { useForm, useKitEnv, useKitServices } from "../context.js";
5
5
  import { FieldLabelForContext } from "../ui/field-context.js";
6
6
  import { Button } from "../ui/button.js";
7
7
  import { Menu, MenuContent, MenuItem, MenuLabel, MenuSeparator, MenuTrigger, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, Popover, PopoverAnchor, PopoverContent, Tooltip } from "../ui/overlay.js";
@@ -10,13 +10,13 @@ import { IssueDot, Thumb } from "./bits.js";
10
10
  import { FieldShell, PeerStack } from "./field-shell.js";
11
11
  import { INSET_LINE, InsetScope } from "./grouping.js";
12
12
  import { FieldList } from "./field-list.js";
13
- import { ItemList, arrayMove, useDragReorder } from "./item-list.js";
13
+ import { ItemList, OrderLockSlot, arrayMove, useDragReorder } from "./item-list.js";
14
14
  import { CONTROLS, FallbackControl, useFieldAccess } from "./kit-field.js";
15
15
  import * as React from "react";
16
- import { IconArrowDown, IconArrowUp, IconArrowsDiagonal, IconCheck, IconChevronDown, IconChevronRight, IconCopy, IconDots, IconGripVertical, IconMinus, IconPlus, IconRowInsertBottom, IconRowInsertTop, IconTrash, IconX } from "@tabler/icons-react";
17
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
17
+ import { IconArrowDown, IconArrowUp, IconArrowsDiagonal, IconCheck, IconChevronDown, IconChevronRight, IconCopy, IconDots, IconGripVertical, IconMinus, IconPlus, IconRowInsertBottom, IconRowInsertTop, IconTrash, IconX } from "@tabler/icons-react";
18
18
  import { AnimatePresence, motion } from "framer-motion";
19
- //#region src/kit/engine/array.tsx
19
+ //#region src/engine/array.tsx
20
20
  /**
21
21
  * ARRAYS — compact PREVIEW ROWS that rest closed (CPO D8 + production; V2 HEAD 9829bf1 kit/engine/array.tsx): grip ·
22
22
  * thumb · title + subtitle · validation dot · presence · always-visible ⋯ (Move up/down, Duplicate, Add above/below,
@@ -222,7 +222,8 @@ function InlineList({ field, item, path, list, readOnly }) {
222
222
  const Control = CONTROLS[item.type] ?? FallbackControl;
223
223
  const max = field.validation?.max;
224
224
  const ids = list.map((_, i) => `p${i}`);
225
- const sort = useDragReorder(ids, (from, to) => form.setAt(path, arrayMove(list, from, to)), { disabled: readOnly });
225
+ const sort = useDragReorder(ids, (from, to) => form.setAt(path, arrayMove(list, from, to)), { disabled: readOnly || !!field.orderLocked });
226
+ const ops = useListOps(field, path, list, (next) => form.setAt(path, next));
226
227
  const rowControl = (v, i) => /* @__PURE__ */ jsx(Control, {
227
228
  field: {
228
229
  ...item,
@@ -242,7 +243,8 @@ function InlineList({ field, item, path, list, readOnly }) {
242
243
  labelId: `${pathKey(path)}-${i}-label`,
243
244
  sort,
244
245
  readOnly,
245
- onRemove: () => form.setAt(path, list.filter((_, j) => j !== i)),
246
+ orderLocked: !!field.orderLocked,
247
+ onRemove: () => ops.remove(i, `${item.title} ${i + 1}`),
246
248
  children: [/* @__PURE__ */ jsx("span", {
247
249
  id: `${pathKey(path)}-${i}-label`,
248
250
  className: "sr-only",
@@ -268,13 +270,13 @@ function InlineList({ field, item, path, list, readOnly }) {
268
270
  ]
269
271
  });
270
272
  }
271
- function InlineRow({ id, labelId, sort, children, onRemove, readOnly }) {
273
+ function InlineRow({ id, labelId, sort, children, onRemove, readOnly, orderLocked }) {
272
274
  return /* @__PURE__ */ jsxs("div", {
273
275
  ref: sort.register(id),
274
276
  style: sort.style(id),
275
277
  className: cn("group/il flex items-start gap-1", sort.active === id && "relative z-10"),
276
278
  children: [
277
- readOnly ? null : /* @__PURE__ */ jsx("button", {
279
+ readOnly ? null : orderLocked ? /* @__PURE__ */ jsx(OrderLockSlot, { className: "mt-1.5" }) : /* @__PURE__ */ jsx("button", {
278
280
  type: "button",
279
281
  "aria-label": "Drag to reorder",
280
282
  ...sort.handle(id),
@@ -493,7 +495,7 @@ function AddItemButton({ field, onAdd, disabled }) {
493
495
  function RowList({ field, rows, readOnly, layout, mode, openId, onOpen, onCloseInline, ops, renderInline, emptyLabel, addButton, leading, rowToggle, dialogNav, menuExtra }) {
494
496
  const sort = useDragReorder(rows.map((r) => r.id), ops.reorder, {
495
497
  axis: layout === "grid" ? "grid" : "y",
496
- disabled: readOnly,
498
+ disabled: readOnly || !!field.orderLocked,
497
499
  distance: 5
498
500
  });
499
501
  const openRow = rows.find((r) => r.id === openId);
@@ -580,6 +582,13 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
580
582
  warnings: 0
581
583
  };
582
584
  const peers = Object.entries(env.presence).filter(([k]) => k === pathKey(r.path) || k.startsWith(`${pathKey(r.path)}.`)).flatMap(([, p]) => p);
585
+ const nChanged = env.review?.count(r.path) ?? 0;
586
+ const changeBar = nChanged ? /* @__PURE__ */ jsx("span", {
587
+ "aria-hidden": true,
588
+ className: "pointer-events-none absolute inset-y-1.5 left-0 z-[1] w-0.5 rounded-full",
589
+ style: { background: env.review.color(r.path) ?? "var(--kit-warning)" }
590
+ }) : null;
591
+ const changedNote = nChanged ? `${nChanged} changed` : "";
583
592
  const menu = readOnly ? null : /* @__PURE__ */ jsxs(Menu, { children: [/* @__PURE__ */ jsx(MenuTrigger, {
584
593
  "aria-label": `${r.preview.title} actions`,
585
594
  onClick: (e) => e.stopPropagation(),
@@ -594,13 +603,13 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
594
603
  children: [
595
604
  /* @__PURE__ */ jsx(MenuItem, {
596
605
  icon: /* @__PURE__ */ jsx(IconArrowUp, { stroke: 1.5 }),
597
- disabled: r.index === 0,
606
+ disabled: !!field.orderLocked || r.index === 0,
598
607
  onClick: () => ops.move(r.index, -1),
599
608
  children: "Move up"
600
609
  }),
601
610
  /* @__PURE__ */ jsx(MenuItem, {
602
611
  icon: /* @__PURE__ */ jsx(IconArrowDown, { stroke: 1.5 }),
603
- disabled: r.index === count - 1,
612
+ disabled: !!field.orderLocked || r.index === count - 1,
604
613
  onClick: () => ops.move(r.index, 1),
605
614
  children: "Move down"
606
615
  }),
@@ -633,7 +642,7 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
633
642
  })
634
643
  ]
635
644
  })] });
636
- const grip = readOnly ? null : /* @__PURE__ */ jsx("button", {
645
+ const grip = readOnly ? null : field.orderLocked ? /* @__PURE__ */ jsx(OrderLockSlot, { className: "h-7 items-center" }) : /* @__PURE__ */ jsx("button", {
637
646
  type: "button",
638
647
  "aria-label": `Reorder ${r.preview.title}`,
639
648
  onClick: (e) => e.stopPropagation(),
@@ -698,7 +707,8 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
698
707
  errors: roll.errors,
699
708
  warnings: roll.warnings,
700
709
  className: "absolute left-2 top-2 ring-2 ring-kit-surface"
701
- })
710
+ }),
711
+ changeBar
702
712
  ]
703
713
  })
704
714
  });
@@ -733,9 +743,12 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
733
743
  className: "shrink-0 rounded-kit-md bg-kit-muted px-1 text-kit-2xs font-medium text-kit-fg-2",
734
744
  children: r.chip
735
745
  }) : null]
736
- }), r.extra ?? r.preview.subtitle ? /* @__PURE__ */ jsx("span", {
746
+ }), (r.extra ?? r.preview.subtitle) || changedNote ? /* @__PURE__ */ jsxs("span", {
737
747
  className: "block truncate text-kit-xs text-kit-fg-3",
738
- children: r.extra ?? r.preview.subtitle
748
+ children: [changedNote ? /* @__PURE__ */ jsxs("span", {
749
+ className: "text-kit-fg-2",
750
+ children: [changedNote, r.extra ?? r.preview.subtitle ? " · " : ""]
751
+ }) : null, r.extra ?? r.preview.subtitle]
739
752
  }) : null]
740
753
  })] });
741
754
  const rowInner = /* @__PURE__ */ jsxs("div", {
@@ -744,7 +757,7 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
744
757
  if (!onOpen || !e.currentTarget.contains(target) || target.closest("button,[role^=menuitem],a,input")) return;
745
758
  onOpen();
746
759
  },
747
- className: cn("group/row flex min-h-12 items-center gap-2 py-1.5 pl-1.5 pr-2 transition-colors", onOpen && "cursor-pointer", open ? "bg-kit-subtle" : onOpen && "hover:bg-kit-subtle"),
760
+ className: cn(onOpen ? "group/row flex min-h-12 cursor-pointer items-center gap-2 py-1.5 pl-1.5 pr-2 transition-colors" : "group/row flex min-h-12 items-center gap-2 py-1.5 pl-1.5 pr-2 transition-colors", open ? "bg-kit-subtle" : onOpen && "hover:bg-kit-subtle"),
748
761
  children: [
749
762
  grip,
750
763
  toggle,
@@ -755,7 +768,7 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
755
768
  "aria-expanded": mode === "drill" ? void 0 : open,
756
769
  "aria-controls": inlineMode && open ? bodyId : void 0,
757
770
  "aria-haspopup": mode === "popover" || mode === "dialog" ? "dialog" : void 0,
758
- "aria-label": `${verb} ${r.preview.title}${r.chip ? `, ${r.chip}` : ""}, ${r.index + 1} of ${count}`,
771
+ "aria-label": `${verb} ${r.preview.title}${r.chip ? `, ${r.chip}` : ""}${changedNote ? `, ${changedNote}` : ""}, ${r.index + 1} of ${count}`,
759
772
  className: "flex min-w-0 flex-1 items-center gap-2.5 rounded-kit-md text-left outline-none",
760
773
  children: titleInner
761
774
  }) : /* @__PURE__ */ jsx("div", {
@@ -775,12 +788,12 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
775
788
  trailing
776
789
  ]
777
790
  });
778
- return /* @__PURE__ */ jsx("div", {
791
+ return /* @__PURE__ */ jsxs("div", {
779
792
  ref: sort.register(r.id),
780
793
  style: sort.style(r.id),
781
794
  "data-row-id": r.id,
782
795
  className: cn("relative border-b border-kit-line-subtle bg-kit-surface last:border-b-0", isDragging && "z-10 rounded-kit-lg shadow-kit-lg ring-1 ring-kit-line-strong"),
783
- children: /* @__PURE__ */ jsxs(motion.div, {
796
+ children: [changeBar, /* @__PURE__ */ jsxs(motion.div, {
784
797
  layout: !isDragging && !dragging ? "position" : false,
785
798
  initial: dragging ? false : {
786
799
  opacity: 0,
@@ -856,7 +869,7 @@ function Row({ r, count, field, readOnly, grid, mode, open, onOpen, ops, sort, l
856
869
  })
857
870
  }) : null
858
871
  }) : null]
859
- })
872
+ })]
860
873
  });
861
874
  }
862
875
  /** The included / not-included check on a feature row (D47): a real checkbox, outside the row's open button. */
@@ -875,7 +888,7 @@ function RowCheck({ on, label, title, readOnly, onToggle }) {
875
888
  },
876
889
  className: "group/chk flex size-7 shrink-0 items-center justify-center rounded-kit-md transition-colors hover:bg-kit-hover disabled:pointer-events-none",
877
890
  children: /* @__PURE__ */ jsx("span", {
878
- className: cn("flex size-[18px] items-center justify-center rounded-full transition-colors", on ? "bg-kit-inverse text-kit-fg-inverse" : "border border-dashed border-kit-field-border-hover text-kit-fg-3 group-hover/chk:border-[var(--kit-emphasis-line)]"),
891
+ className: cn("flex size-[18px] items-center justify-center rounded-full transition-colors", on ? "bg-kit-control-checked text-kit-fg-inverse" : "border border-dashed border-kit-field-border-hover text-kit-fg-3 group-hover/chk:border-[var(--kit-emphasis-line)]"),
879
892
  children: on ? /* @__PURE__ */ jsx(IconCheck, {
880
893
  className: "size-3",
881
894
  stroke: 2.5