@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":"dom.js","names":[],"sources":["../../../src/controls/rich-text/dom.ts"],"sourcesContent":["/**\n * RICH TEXT · DOM layer (V2 HEAD controls/rich-text/dom.ts). The field value is clean, semantic HTML; rich blocks are\n * \"islands\" while editing.\n *\n * Live DOM = the HTML, with every rich block swapped for a `div[data-rt-island=\"kind\"]` (contenteditable=false) that\n * React renders into through a portal. The island's model lives on the element (`el.__rt`).\n * Stored = `serialize()` swaps each island back for its static HTML (`renderStatic`). The static form is the markup\n * production's own renderer writes for the same block, so the host's ingest reads it back as that block.\n * Loading = `hydrate()` turns that markup back into islands, so a re-mount restores them.\n *\n * Only the blocks production stores are islands here. Each one's markup is what the host's codec renders the stored\n * block as and reads back (features/dock-v2/richTextCodec.ts); `data-extra` carries, opaque, whatever of the stored block\n * the editor does not edit, so nothing it holds is dropped by an edit elsewhere.\n * image `bcmsBlock` builtin:image: address, alt text, caption, alignment, size, link\n * (`<figure data-rt=\"image\" data-align data-size><a href><img src alt></a><figcaption>`)\n * table production's Portable Text table (rows of cells, a header row, header cells, and the V2 table's caption,\n * note, row groups and column groups), drawn with the kit's table editor (V2 TableBlock), stored as the markup\n * production's renderer writes (`<caption>`, `th[scope=colgroup data-group]`, a `<tbody data-key>` per row\n * group under a `th[scope=rowgroup]` row, `<figure data-rt=\"table\">…<p data-notes>` for the note; footnotes\n * fold into the note as `[1] …`, as production's ingest folds V2's). A cell's closing\n * footnote markers (`<sup data-footnote>`) ride the cell as written (`marks`). A table whose cells hold\n * other inline formatting the table value has no place for (a term, bold) is not an island: it stays\n * markup in the body, edited in place, so the formatting survives.\n * pullquote V2 article block (CPO D55), `<figure data-rt=\"pullquote\">` → a `pullQuote` block.\n * takeaways V2 article block (CPO D55), `<aside data-rt=\"takeaways\"><p data-title>…<ul><li>…` → a `keyTakeaways` block\n * {title?, points} (written in the text itself, V2 TakeawaysEditor).\n * callout `bcmsBlock` builtin:callout {tone, title, message}: `<div data-rt=\"callout\" data-callout><p data-title>…\n * <div data-body><p>…` (the message is plain text: paragraphs and line breaks)\n * toggle `bcmsBlock` builtin:toggle {title, body}: `<details data-rt=\"toggle\"><summary>…<div data-body><p>…`\n * video the `video` block {src, title}: `<div data-rt=\"video\" data-url data-title>`\n * embed `bcmsBlock` builtin:video {url, title} (the package's embed: `<iframe src title>` on the page), V2's\n * article Embed: `<figure data-rt=\"embed\" data-url data-title><a href>…`. V2's Shape (`aspect`) has no\n * stored key, so it is not offered: every embed draws 16:9.\n * file the `file` block {src, name, size}: `<div data-rt=\"file\" data-url data-name data-size>`\n * component `bcmsBlock` \"component\" {componentId, overrides, variant} (CPO D28): `<div data-rt=\"component\" data-ref\n * data-id data-name data-overrides data-variant>` — a linked instance of a project component, shown as a card.\n * A separate copy (V2 instances.ts `detach`) adds {detached, props, blocks, sourcePublishedAt}:\n * `data-detached=\"true\" data-props data-blocks data-source-published-at`, and carries no overrides.\n * A key the stored block holds is an attribute or element that is present; a key it lacks is absent, so an untouched\n * block reads back exactly as stored.\n * V2's gallery, columns, footnotes, contents, related posts and author bio have no stored form in production and are\n * not offered.\n */\n\nimport { boolLabels, cellText, cellValue, emptyTable, formatNumber, isCellObject, isObjLike, normalizeTable, parseTableElement, tkey, toBool, toNumber, type TableCell, type TableColumn, type TableColumnType, type TableGroup, type TableLink, type TableRow, type TableValue } from \"../../schema/table\";\n\nexport const esc = (s: string) => s.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\nexport const escAttr = (s: string) => esc(s).replace(/\"/g, \"&quot;\");\nlet seq = 0;\nexport const rid = (p = \"r\") => `${p}${Date.now().toString(36)}${(seq++).toString(36)}`;\n\n/* ── Island models ─────────────────────────────────────────────────── */\nexport type ImageAlign = \"full\" | \"center\" | \"left\" | \"right\";\nexport type ImageSize = \"s\" | \"m\" | \"l\" | \"full\";\nexport const IMAGE_ALIGNS: readonly ImageAlign[] = [\"full\", \"center\", \"left\", \"right\"];\nexport const IMAGE_SIZES: readonly ImageSize[] = [\"s\", \"m\", \"l\", \"full\"];\n/** Every optional key is absent when the stored block lacks it (see the header). */\nexport interface ImageModel {\n src: string;\n /** absent only on a stored block that never had one (every new image has alt text, empty or not) */\n alt?: string;\n caption?: string;\n align?: ImageAlign;\n size?: ImageSize;\n href?: string;\n /** the stored block's other keys, opaque to the editor */\n extra?: string;\n}\n/** A table island IS the kit's table value (V2 TableModel); only what production's table keeps is stored (see above). */\nexport type TableModel = TableValue;\n/** V2 PullQuoteModel (article.ts). */\nexport interface PullQuoteModel {\n quote: string;\n name: string;\n role: string;\n link: string;\n}\n/** V2 TakeawaysModel (article.ts): the title over the list and one plain string per point. */\nexport interface TakeawaysModel {\n title: string;\n points: string[];\n}\nexport type CalloutTone = \"info\" | \"tip\" | \"warning\";\nexport const CALLOUT_TONES: readonly CalloutTone[] = [\"info\", \"tip\", \"warning\"];\nexport interface CalloutModel {\n /** the stored tone, as written (the editor offers info, tip and warning) */\n tone?: string;\n title?: string;\n /** plain text: paragraphs split by a blank line, line breaks kept */\n body?: string;\n extra?: string;\n}\nexport interface ToggleModel {\n title?: string;\n body?: string;\n extra?: string;\n}\nexport interface VideoModel {\n url?: string;\n title?: string;\n extra?: string;\n}\n/** V2 EmbedModel (article.ts) without `aspect`, which the stored block has no key for. */\nexport interface EmbedModel {\n url?: string;\n title?: string;\n extra?: string;\n}\n/* V2 article.ts embed providers: detected from the link, for the editor's placeholder (nothing third-party loads in it) */\nexport type EmbedProvider = \"youtube\" | \"vimeo\" | \"x\" | \"codepen\" | \"figma\" | \"maps\" | \"spotify\" | \"podcast\" | \"audio\" | \"link\";\nexport interface EmbedInfo {\n provider: EmbedProvider;\n label: string;\n /** frame = a sized player · post = a social post card · audio = a slim player · link = a link card */\n shape: \"frame\" | \"post\" | \"audio\" | \"link\";\n host: string;\n}\nconst hostOf = (url: string) => {\n try {\n return new URL(url).hostname.replace(/^www\\./, \"\");\n } catch {\n return \"\";\n }\n};\nexport function detectEmbed(url: string): EmbedInfo {\n const u = url.trim();\n const host = hostOf(u);\n const is = (re: RegExp) => re.test(u);\n if (is(/(?:youtube\\.com\\/(?:watch\\?|embed\\/|shorts\\/|live\\/)|youtu\\.be\\/)/i)) return { provider: \"youtube\", label: \"YouTube\", shape: \"frame\", host };\n if (is(/vimeo\\.com\\/(?:video\\/)?\\d+/i)) return { provider: \"vimeo\", label: \"Vimeo\", shape: \"frame\", host };\n if (is(/(?:twitter|x)\\.com\\/[^/]+\\/status\\/\\d+/i)) return { provider: \"x\", label: \"X post\", shape: \"post\", host };\n if (is(/codepen\\.io\\/[^/]+\\/(?:pen|embed)\\//i)) return { provider: \"codepen\", label: \"CodePen\", shape: \"frame\", host };\n if (is(/figma\\.com\\/(?:file|design|proto|board)\\//i)) return { provider: \"figma\", label: \"Figma\", shape: \"frame\", host };\n if (is(/(?:google\\.[a-z.]+\\/maps|maps\\.app\\.goo\\.gl|goo\\.gl\\/maps)/i)) return { provider: \"maps\", label: \"Google Maps\", shape: \"frame\", host };\n if (is(/open\\.spotify\\.com\\/(?:episode|track|show|playlist|album)\\//i)) return { provider: \"spotify\", label: \"Spotify\", shape: \"audio\", host };\n if (is(/podcasts\\.apple\\.com\\//i)) return { provider: \"podcast\", label: \"Apple Podcasts\", shape: \"audio\", host };\n if (is(/\\.(?:mp3|m4a|wav|ogg|aac)(?:\\?|$)/i)) return { provider: \"audio\", label: \"Audio\", shape: \"audio\", host };\n return { provider: \"link\", label: host || \"Link\", shape: \"link\", host };\n}\nexport interface FileModel {\n url?: string;\n name?: string;\n size?: number;\n extra?: string;\n}\n/** A linked instance of a project component (CPO D28): its library id, its own id, its name and its overrides. */\nexport interface ComponentModel {\n /** the component it links to (`fields.componentId`) */\n ref?: string;\n /** this instance (the block's key) */\n id: string;\n /** the component's name when it was placed (`schemaLabel`) */\n name?: string;\n /** the fields this instance overrides, as stored JSON */\n overrides?: string;\n /** the layout this instance draws the component in (V2's per-instance variant, `fields.variant`) */\n variant?: string;\n /** V2 `detached`: a separate copy that no longer follows the component (`fields.detached`) */\n detached?: boolean;\n /** a separate copy's values as readers see them, as stored JSON (V2 `props`, `fields.props`) */\n props?: string;\n /** a separate copy's frozen block tree, as stored JSON (`fields.blocks`); the editor never edits it */\n blocks?: string;\n /** the version of the component the copy was taken from (`fields.sourcePublishedAt`) */\n sourcePublishedAt?: string;\n extra?: string;\n}\nexport interface IslandModels {\n image: ImageModel;\n table: TableModel;\n pullquote: PullQuoteModel;\n takeaways: TakeawaysModel;\n callout: CalloutModel;\n toggle: ToggleModel;\n video: VideoModel;\n embed: EmbedModel;\n file: FileModel;\n component: ComponentModel;\n}\nexport type IslandKind = keyof IslandModels;\nexport const ISLAND_KINDS: IslandKind[] = [\"image\", \"table\", \"pullquote\", \"takeaways\", \"callout\", \"toggle\", \"video\", \"embed\", \"file\", \"component\"];\nexport type IslandEl = HTMLElement & {\n __rt?: IslandModels[IslandKind];\n __rtFocus?: boolean;\n /** the mounted island's own setter: restores a model from the editor's history (undo / redo) */\n __rtSet?: (m: IslandModels[IslandKind]) => void;\n};\n\nexport function defaultModel<K extends IslandKind>(kind: K, extra?: Partial<IslandModels[K]>): IslandModels[K] {\n const base: { [P in IslandKind]: () => IslandModels[P] } = {\n image: () => ({ src: \"\", alt: \"\" }),\n table: () => emptyTable(3, 2),\n pullquote: () => ({ quote: \"\", name: \"\", role: \"\", link: \"\" }),\n takeaways: () => ({ title: \"Key takeaways\", points: [\"\"] }),\n callout: () => ({ tone: \"info\", title: \"\", body: \"\" }),\n toggle: () => ({ title: \"\", body: \"\" }),\n video: () => ({ url: \"\" }),\n embed: () => ({ url: \"\", title: \"\" }),\n file: () => ({ url: \"\", name: \"\" }),\n component: () => ({ id: rid(\"ci\"), overrides: \"{}\" }),\n };\n if (kind === \"table\") return { ...base.table(), ...(extra ?? {}), id: tkey(\"tbl\") } as IslandModels[K];\n return { ...base[kind](), ...(extra ?? {}) } as IslandModels[K];\n}\n\n/** Deep copy (Duplicate). A copied table or component instance gets its own id. */\nexport const cloneModel = <K extends IslandKind>(kind: K, m: IslandModels[K]): IslandModels[K] => {\n const c = JSON.parse(JSON.stringify(m)) as IslandModels[K];\n if (kind === \"table\") (c as TableModel).id = tkey(\"tbl\");\n if (kind === \"component\") (c as ComponentModel).id = rid(\"ci\");\n return c;\n};\n\n/* ── plain text ⇄ paragraphs (a callout's message, a toggle's body) ── */\n/** \"a\\nb\\n\\nc\" → `<p>a<br>b</p><p>c</p>`. Split on exactly one blank line, so any text reads back as written. */\nexport const textToParas = (s: string) =>\n s\n .split(\"\\n\\n\")\n .map((p) => `<p>${esc(p).replace(/\\n/g, \"<br>\")}</p>`)\n .join(\"\");\n/** The inverse of textToParas: each paragraph's text, its line breaks kept. */\nexport function parasToText(el: Element): string {\n const ps = Array.from(el.children).filter((c) => c.tagName === \"P\");\n const text = (n: Element) => {\n const c = n.cloneNode(true) as Element;\n c.querySelectorAll(\"br\").forEach((br) => br.replaceWith(\"\\n\"));\n return (c.textContent ?? \"\").replace(/\\u200b/g, \"\");\n };\n return ps.length ? ps.map(text).join(\"\\n\\n\") : text(el);\n}\n\n/* ── Static HTML (stored) ──────────────────────────────────────────── */\n/** An image is `<figure><img src alt></figure>`: production's renderer writes exactly this, and its ingest reads it. */\nconst xAttr = (extra?: string) => (extra ? ` data-extra=\"${escAttr(extra)}\"` : \"\");\nconst attr = (name: string, v: string | number | undefined) => (v === undefined ? \"\" : ` ${name}=\"${escAttr(String(v))}\"`);\n\nexport function renderStatic(kind: IslandKind, model: unknown): string {\n switch (kind) {\n case \"image\": {\n const m = model as ImageModel;\n const img = m.src ? `<img src=\"${escAttr(m.src)}\"${attr(\"alt\", m.alt)}>` : \"\";\n const linked = img && m.href !== undefined ? `<a href=\"${escAttr(m.href)}\">${img}</a>` : img;\n const cap = m.caption !== undefined ? `<figcaption>${esc(m.caption)}</figcaption>` : \"\";\n return `<figure data-rt=\"image\"${attr(\"data-align\", m.align)}${attr(\"data-size\", m.size)}${xAttr(m.extra)}>${linked}${cap}</figure>`;\n }\n case \"table\":\n return renderStoredTable(model as TableModel);\n case \"pullquote\": {\n // V2 article.ts renderArticle(\"pullquote\")\n const m = model as PullQuoteModel;\n const name = m.name ? (m.link ? `<a href=\"${escAttr(m.link)}\" data-name>${esc(m.name)}</a>` : `<span data-name>${esc(m.name)}</span>`) : \"\";\n const role = m.role ? `<span data-role>${esc(m.role)}</span>` : \"\";\n const cap = name || role ? `<figcaption>${name}${name && role ? \", \" : \"\"}${role}</figcaption>` : \"\";\n return `<figure data-rt=\"pullquote\"><blockquote${m.link ? ` cite=\"${escAttr(m.link)}\"` : \"\"}><p>${esc(m.quote)}</p></blockquote>${cap}</figure>`;\n }\n case \"takeaways\": {\n // V2 article.ts renderArticle(\"takeaways\")\n const m = model as TakeawaysModel;\n const pts = m.points.map((p) => p.trim()).filter(Boolean);\n return `<aside data-rt=\"takeaways\">${m.title ? `<p data-title>${esc(m.title)}</p>` : \"\"}<ul>${pts.map((p) => `<li>${esc(p)}</li>`).join(\"\")}</ul></aside>`;\n }\n case \"callout\": {\n const m = model as CalloutModel;\n const title = m.title !== undefined ? `<p data-title=\"true\">${esc(m.title)}</p>` : \"\";\n const body = m.body !== undefined ? `<div data-body=\"true\">${textToParas(m.body)}</div>` : \"\";\n return `<div data-rt=\"callout\"${attr(\"data-callout\", m.tone)}${xAttr(m.extra)}>${title}${body}</div>`;\n }\n case \"toggle\": {\n const m = model as ToggleModel;\n const title = m.title !== undefined ? `<summary>${esc(m.title)}</summary>` : \"\";\n const body = m.body !== undefined ? `<div data-body=\"true\">${textToParas(m.body)}</div>` : \"\";\n return `<details data-rt=\"toggle\"${xAttr(m.extra)}>${title}${body}</details>`;\n }\n case \"video\": {\n const m = model as VideoModel;\n return `<div data-rt=\"video\"${attr(\"data-url\", m.url)}${attr(\"data-title\", m.title)}${xAttr(m.extra)}>${m.url ? `<a href=\"${escAttr(m.url)}\">${esc(m.title || m.url)}</a>` : \"\"}</div>`;\n }\n case \"embed\": {\n // V2 article.ts renderArticle(\"embed\"), with the stored block's keys (no provider or shape: see the header)\n const m = model as EmbedModel;\n return `<figure data-rt=\"embed\"${attr(\"data-url\", m.url)}${attr(\"data-title\", m.title)}${xAttr(m.extra)}>${m.url ? `<a href=\"${escAttr(m.url)}\">${esc(m.title || m.url)}</a>` : \"\"}</figure>`;\n }\n case \"file\": {\n const m = model as FileModel;\n const link = m.url && m.name ? `<a href=\"${escAttr(m.url)}\" download>${esc(m.name)}</a>` : \"\";\n return `<div data-rt=\"file\"${attr(\"data-url\", m.url)}${attr(\"data-name\", m.name)}${attr(\"data-size\", m.size)}${xAttr(m.extra)}>${link}</div>`;\n }\n case \"component\": {\n const m = model as ComponentModel;\n const label = m.name || \"Component\";\n const copy = m.detached ? ` data-detached=\"true\"${attr(\"data-props\", m.props)}${attr(\"data-blocks\", m.blocks)}${attr(\"data-source-published-at\", m.sourcePublishedAt)}` : \"\";\n return `<div data-rt=\"component\"${attr(\"data-ref\", m.ref)} data-id=\"${escAttr(m.id)}\"${attr(\"data-name\", m.name)}${attr(\"data-overrides\", m.overrides)}${attr(\"data-variant\", m.variant)}${copy}${xAttr(m.extra)}>⧉&nbsp;${esc(label)} · ${m.detached ? \"detached copy\" : \"component\"}</div>`;\n }\n }\n}\n\n/* The V2 table's group rows, read as production's ingest reads them (@bettercms-ai/richtext ingest.ts). */\nconst words = (el: Element | null | undefined) => (el?.textContent ?? \"\").replace(/\\s+/g, \" \").trim();\nconst scopeIs = (c: Element, scope: string) => c.tagName === \"TH\" && (c.getAttribute(\"scope\") ?? \"\").toLowerCase() === scope;\n/** In `<thead>`: a `th[scope=colgroup]`, every other cell an empty `<td>`. A site's own two-row header stays rows. */\nconst isColumnGroupRow = (tr: HTMLTableRowElement) =>\n tr.parentElement?.tagName === \"THEAD\" &&\n Array.from(tr.cells).some((c) => scopeIs(c, \"colgroup\")) &&\n Array.from(tr.cells).every((c) => scopeIs(c, \"colgroup\") || (c.tagName === \"TD\" && !words(c)));\n/**\n * One `th[scope=rowgroup]` and nothing else, OPENING its own `<tbody>` with a body row after it (what production and\n * V2 write). A site's own `scope=rowgroup` row anywhere else stays a row, as production's ingest keeps it.\n */\nconst isRowGroupRow = (tr: HTMLTableRowElement) => {\n const body = tr.parentElement;\n if (tr.cells.length !== 1 || !scopeIs(tr.cells[0], \"rowgroup\") || body?.tagName !== \"TBODY\") return false;\n const rows = Array.from(body.children).filter((r) => r.tagName === \"TR\");\n return rows[0] === tr && rows.length > 1;\n};\nconst KEY = /^[A-Za-z0-9-]{1,32}$/;\n\n/* ── Typed columns and cells (V2 schema/table.ts; production's Portable Text table: a first-row cell's `column`, a row's and a\n * cell's `type`, a cell's `value`, the package's typedCellView) ── */\n/** The column types a rich-text table stores: V2's island offers these (table-editor.tsx:80-86 TYPE_UI, the non-dev ones). */\nexport const STORED_COLUMN_TYPES: readonly TableColumnType[] = [\"text\", \"number\", \"money\", \"boolean\", \"rating\", \"link\"];\nconst storedType = (v: unknown): TableColumnType | undefined => (STORED_COLUMN_TYPES as readonly unknown[]).includes(v) ? (v as TableColumnType) : undefined;\n/** A column's type and settings as stored (V2 TableColumn's keys). */\nexport type ColumnSettings = Partial<Pick<TableColumn, \"type\" | \"description\" | \"unit\" | \"currency\" | \"decimals\" | \"align\" | \"trueLabel\" | \"falseLabel\" | \"max\">>;\n/** The settings a kit column stores: none for a plain text or link column, else its type and every setting it has. */\nexport function columnSettings(c: TableColumn): ColumnSettings | undefined {\n const s: ColumnSettings = {\n ...(c.description ? { description: c.description } : {}),\n ...(c.unit ? { unit: c.unit } : {}),\n ...(c.currency ? { currency: c.currency } : {}),\n ...(c.decimals != null ? { decimals: c.decimals } : {}),\n ...(c.align ? { align: c.align } : {}),\n ...(c.trueLabel ? { trueLabel: c.trueLabel } : {}),\n ...(c.falseLabel ? { falseLabel: c.falseLabel } : {}),\n ...(c.max != null ? { max: c.max } : {}),\n };\n const type = storedType(c.type) ?? \"text\";\n return type === \"text\" || type === \"link\" ? (Object.keys(s).length ? { type, ...s } : undefined) : { type, ...s };\n}\n/** A `<col>`'s attributes, V2 renderTableHtml's order (schema/table.ts:511-526): the column's settings, data-sortable among them. */\nexport function colAttrs(c: ColumnSettings | undefined, sortable: boolean): string {\n return [\n c ? ` data-type=\"${c.type ?? \"text\"}\"` : \"\",\n c?.unit ? ` data-unit=\"${escAttr(c.unit)}\"` : \"\",\n c?.currency ? ` data-currency=\"${escAttr(c.currency)}\"` : \"\",\n c?.decimals != null ? ` data-decimals=\"${c.decimals}\"` : \"\",\n c?.align ? ` data-align=\"${c.align}\"` : \"\",\n sortable ? ' data-sortable=\"true\"' : \"\",\n c?.trueLabel ? ` data-true=\"${escAttr(c.trueLabel)}\"` : \"\",\n c?.falseLabel ? ` data-false=\"${escAttr(c.falseLabel)}\"` : \"\",\n c?.max != null ? ` data-max=\"${c.max}\"` : \"\",\n c?.description ? ` data-description=\"${escAttr(c.description)}\"` : \"\",\n ].join(\"\");\n}\n/** A `<col data-type …>` read back, as V2 parseTableElement reads it; undefined without a data-type. */\nexport function colSettingsOf(col: Element): ColumnSettings | undefined {\n const d = (n: string) => col.getAttribute(`data-${n}`) ?? undefined;\n const type = storedType(d(\"type\"));\n if (!type) return undefined;\n const int = (n: string, lo: number, hi: number) => {\n const v = Number(d(n));\n return d(n) !== undefined && Number.isInteger(v) && v >= lo && v <= hi ? v : undefined;\n };\n const align = d(\"align\");\n return {\n type,\n ...(d(\"unit\") ? { unit: d(\"unit\") } : {}),\n ...(d(\"currency\") && /^[A-Z]{3}$/.test(d(\"currency\")!) ? { currency: d(\"currency\") } : {}),\n ...(int(\"decimals\", 0, 10) !== undefined ? { decimals: int(\"decimals\", 0, 10) } : {}),\n ...(align === \"start\" || align === \"center\" || align === \"end\" ? { align } : {}),\n ...(d(\"true\") ? { trueLabel: d(\"true\") } : {}),\n ...(d(\"false\") ? { falseLabel: d(\"false\") } : {}),\n ...(int(\"max\", 1, 10) !== undefined ? { max: int(\"max\", 1, 10) } : {}),\n ...(d(\"description\") ? { description: d(\"description\") } : {}),\n };\n}\nconst NUMERIC = new Set<TableColumnType>([\"number\", \"money\", \"rating\"]);\n/** V2 alignOf (schema/table.ts:365). */\nconst alignOf = (c: ColumnSettings | undefined, t: TableColumnType) => c?.align ?? (NUMERIC.has(t) ? \"end\" : \"start\");\nexport const isValueType = (t: TableColumnType) => t === \"boolean\" || NUMERIC.has(t);\nconst asColumn = (c: ColumnSettings | undefined): TableColumn => ({ _key: \"\", label: \"\", ...c, type: c?.type ?? \"text\" });\n/** V2 cellText for a typed cell: the words it says (what a stored typed cell's blocks hold). */\nexport const typedWords = (c: ColumnSettings | undefined, type: TableColumnType, value: unknown): string =>\n value == null || value === \"\" ? \"\" : cellText(asColumn(c), undefined, { value, type } as TableCell);\n/**\n * What one cell of a typed table draws, as production's renderer writes it (the package's typedCellView, V2 cellHtml\n * schema/table.ts:369-437 and the column header at :564): `lead` attributes before data-label / data-highlight, `tail` after,\n * and the markup when the cell is empty or of a value type (undefined: the cell draws its own text or link).\n */\nexport function typedCellView(column: ColumnSettings | undefined, rowType: TableColumnType | undefined, cellType: TableColumnType | undefined, value: unknown, header: boolean, inHead: boolean): { lead: string; tail: string; inner?: string } {\n if (inHead) {\n const a = alignOf(column, column?.type ?? \"text\");\n return { lead: a !== \"start\" ? ` data-align=\"${a}\"` : \"\", tail: column?.description ? ` title=\"${escAttr(column.description)}\"` : \"\" };\n }\n const type = cellType ?? rowType ?? column?.type ?? \"text\";\n const words = typeof value === \"string\" ? value.replace(/\\s+/g, \" \").trim() : value;\n let tail = cellType ? ` data-type=\"${cellType}\"` : \"\";\n let inner: string | undefined;\n if (words == null || words === \"\") {\n inner = header ? \"\" : '<span aria-hidden=\"true\" class=\"bt-dash\">—</span><span class=\"bt-sr\">No value</span>';\n tail += ' data-empty=\"\"';\n } else if (type === \"boolean\") {\n const b = toBool(words);\n if (b == null) inner = esc(String(words));\n else {\n const { yes, no } = boolLabels(asColumn(column));\n inner = `<span aria-hidden=\"true\" class=\"bt-bool\" data-bool=\"${b}\">${b ? \"✓\" : \"–\"}</span><span class=\"bt-sr\">${esc(b ? yes : no)}</span>`;\n tail += ` data-value=\"${b}\"`;\n }\n } else if (type === \"rating\") {\n const n = toNumber(words);\n if (n == null) inner = esc(String(words));\n else {\n inner = `<span aria-hidden=\"true\" class=\"bt-star\">★</span> ${esc(formatNumber(n, 1).replace(/\\.0$/, \"\"))}<span class=\"bt-dim\"> / ${column?.max ?? 5}</span>`;\n tail += ` data-value=\"${n}\"`;\n }\n } else if (type === \"number\" || type === \"money\") {\n const n = toNumber(words);\n inner = esc(typedWords(column, type, words));\n if (n != null) tail += ` data-value=\"${n}\"`;\n }\n const a = alignOf(column, type);\n if (a !== \"start\") tail += ` data-align=\"${a}\"`;\n return { lead: \"\", tail, ...(inner === undefined ? {} : { inner }) };\n}\n/** A typed cell read back (V2 readCell): data-empty is no value; data-value a number or true / false for a value type. */\nexport function typedValueOf(cell: Element, type: TableColumnType): number | boolean | \"\" | undefined {\n if (cell.hasAttribute(\"data-empty\")) return \"\";\n const raw = cell.getAttribute(\"data-value\");\n if (raw === null || !isValueType(type)) return undefined;\n if (type === \"boolean\") return raw === \"true\";\n return raw.trim() !== \"\" && Number.isFinite(Number(raw)) ? Number(raw) : undefined;\n}\nexport const typeAttrOf = (el: Element): TableColumnType | undefined => storedType(el.getAttribute(\"data-type\"));\n\n/**\n * Production's table markup → the table value, cell for cell (renderStoredTable's inverse): the plain `<table>`, or\n * the `<figure data-rt=\"table\">` around one with its note. The V2 reader (parseTableElement) is not used here: it reads\n * a one-column row as a row-group heading and a caption-less grid by guesses that a stored table never meant.\n */\nexport function parseStoredTable(src: Element): TableModel {\n const fig = src.tagName === \"FIGURE\" ? src : null;\n const table = fig ? fig.querySelector(\":scope > table\")! : src;\n const t = emptyTable(0, 0);\n const trs = Array.from(table.querySelectorAll<HTMLTableRowElement>(\":scope > thead > tr, :scope > tbody > tr, :scope > tfoot > tr, :scope > tr\"));\n const groupRow = trs.find(isColumnGroupRow);\n const grid = trs.filter((tr) => tr !== groupRow && !isRowGroupRow(tr));\n const head = grid.filter((tr) => tr.parentElement?.tagName === \"THEAD\");\n const body = grid.filter((tr) => tr.parentElement?.tagName !== \"THEAD\");\n const width = Math.max(1, ...grid.map((tr) => tr.cells.length));\n const headCells = head.length ? Array.from(head[head.length - 1].cells) : [];\n t.headerRow = head.length > 0;\n t.headerColumn = body.length > 0 && body.every((tr) => tr.cells[0]?.tagName === \"TH\");\n t.caption = words(table.querySelector(\":scope > caption\"));\n // \"Visitors can search rows\": production's figure carries data-filter (V2 renderTableHtml)\n if (fig?.getAttribute(\"data-filter\") === \"true\") t.filterable = true;\n // \"On phones\" / \"Keep column names in view\": the figure's data-responsive (stack, cards) / data-sticky, as V2 reads them\n const resp = fig?.getAttribute(\"data-responsive\");\n if (resp === \"stack\" || resp === \"cards\") t.design = { ...t.design, responsive: resp };\n if (fig?.getAttribute(\"data-sticky\") === \"true\") t.design = { ...t.design, sticky: true };\n // \"Help search engines read this as\": the figure's data-jsonld (+ axis, price row), as V2 parseTableElement reads it\n const ld = fig?.getAttribute(\"data-jsonld\");\n if (ld === \"ItemList\" || ld === \"Dataset\" || ld === \"Offers\") {\n const axis = fig?.getAttribute(\"data-jsonld-axis\");\n const price = fig?.getAttribute(\"data-jsonld-price\");\n t.jsonLd = { type: ld, ...(axis === \"rows\" || axis === \"columns\" ? { axis } : {}), ...(price ? { priceRow: price } : {}) };\n }\n // \"Visitors can sort columns\": the column's <col data-sortable=\"true\">; a <colgroup> without <col>s spans its `span`\n const sortable = new Set<number>();\n // A typed column's <col data-type …> (V2 renderTableHtml): its type and settings\n const settings: (ColumnSettings | undefined)[] = [];\n let colAt = 0;\n for (const g of Array.from(table.querySelectorAll(\":scope > colgroup\"))) {\n const list = Array.from(g.querySelectorAll(\":scope > col\"));\n if (!list.length) colAt += Math.max(1, Number(g.getAttribute(\"span\")) || 1);\n for (const col of list) {\n const w = Math.max(1, Number(col.getAttribute(\"span\")) || 1);\n if (col.getAttribute(\"data-sortable\") === \"true\") for (let i = 0; i < w; i++) sortable.add(colAt + i);\n for (let i = 0; i < w; i++) settings[colAt + i] = colSettingsOf(col);\n colAt += w;\n }\n }\n // \"Highlight this column\": production stamps `data-highlight` on every cell of the column (its first row names it)\n t.columns = Array.from({ length: width }, (_, i) => ({ _key: tkey(\"c\"), label: words(headCells[i]), ...settings[i], type: settings[i]?.type ?? (\"text\" as const), ...(grid[0]?.cells[i]?.getAttribute(\"data-highlight\") === \"true\" ? { highlight: true } : {}), ...(sortable.has(i) ? { sortable: true } : {}) }));\n // Footnotes (production 0.10 / V2: `<ol data-footnotes>` of `<li data-key>`), before the cells that name them\n const footnoteEls = Array.from(fig?.querySelectorAll(\"[data-footnotes] > li\") ?? []);\n if (footnoteEls.length) t.footnotes = footnoteEls.map((li) => ({ _key: li.getAttribute(\"data-key\") || tkey(\"f\"), text: words(li) }));\n const cellOf = (cell: HTMLTableCellElement | undefined, col: TableColumn, rowType: TableColumnType | undefined): TableRow[\"cells\"][string] => {\n if (!cell) return \"\";\n const { rest: c, marks } = splitMarks(cell);\n // a typed cell (V2 cellHtml): its own type, its value (data-value), data-empty for none\n // a table footnote's marker (`<sup><a href=\"#<key>-fn-<n>\">`) is the cell's note, not its words\n let mark: number | undefined;\n for (const sup of Array.from(c.querySelectorAll(\"sup\"))) {\n const n = /-fn-(\\d+)$/.exec(sup.querySelector(\"a\")?.getAttribute(\"href\") ?? \"\")?.[1];\n if (!n) continue;\n mark ??= Number(n);\n sup.remove();\n }\n const named = cell.getAttribute(\"data-note\") ?? (mark ? t.footnotes?.[mark - 1]?._key : undefined);\n const note = named && t.footnotes?.some((f) => f._key === named) ? named : undefined;\n const own = typeAttrOf(cell);\n const typed = typedValueOf(cell, own ?? rowType ?? col.type);\n const text = words(c);\n const a = c.children.length === 1 && c.firstElementChild?.tagName === \"A\" && c.firstElementChild.textContent?.trim() === text ? c.firstElementChild : null;\n const value = typed !== undefined ? typed : a ? { label: text, href: a.getAttribute(\"href\") ?? \"\" } : text;\n return own || marks || note ? { value, ...(own ? { type: own } : {}), ...(note ? { note } : {}), ...(marks ? { marks } : {}) } : value;\n };\n // A group's key rides the markup (`th[data-group]`, `<tbody data-key>`), so a save keeps it; the same key met again\n // (a group split by a loose row or column) is the same group.\n const groupOf = (list: TableGroup[], own: string | null, prefix: string, label: string): TableGroup => {\n const k = (own ?? \"\").trim();\n const found = k ? list.find((g) => g._key === k) : undefined;\n if (found) return found;\n const g = { _key: k && k.length <= 64 && !list.some((x) => x._key === k) ? k : tkey(prefix), label };\n list.push(g);\n return g;\n };\n // column groups: the columns each `th[scope=colgroup]` spans\n if (groupRow) {\n const groups: TableGroup[] = [];\n let at = 0;\n for (const c of Array.from(groupRow.cells)) {\n const span = Math.max(1, c.colSpan || 1);\n if (c.tagName === \"TH\") {\n const g = groupOf(groups, c.getAttribute(\"data-group\"), \"g\", words(c));\n for (let i = at; i < at + span && i < width; i++) t.columns[i].group = g._key;\n }\n at += span;\n }\n t.columnGroups = groups;\n }\n // row groups: a label row opens a group for the rows after it in its own <tbody>\n const rowGroups: TableGroup[] = [];\n let current: { key: string; body: Element | null } | undefined;\n t.rows = [];\n for (const tr of trs) {\n if (tr === groupRow || tr.parentElement?.tagName === \"THEAD\") continue;\n if (isRowGroupRow(tr)) {\n const g = groupOf(rowGroups, tr.parentElement?.getAttribute(\"data-key\") ?? null, \"rg\", words(tr.cells[0]));\n current = { key: g._key, body: tr.parentElement };\n continue;\n }\n if (current && current.body !== tr.parentElement) current = undefined;\n // the totals row is production's <tfoot>; \"Highlight this row\" its tr[data-highlight]\n const footer = tr.parentElement?.tagName === \"TFOOT\";\n // the row's type (V2 `<tr data-type>`)\n const rowType = typeAttrOf(tr);\n t.rows.push({\n _key: tkey(\"r\"),\n cells: Object.fromEntries(t.columns.map((col, i) => [col._key, cellOf(tr.cells[i], col, rowType)])),\n ...(rowType ? { type: rowType } : {}),\n ...(current && !footer ? { group: current.key } : {}),\n ...(footer ? { footer: true } : {}),\n ...(tr.getAttribute(\"data-highlight\") === \"true\" ? { highlight: true } : {}),\n });\n }\n if (rowGroups.length) t.rowGroups = rowGroups;\n // the note: the figure's own `<p data-notes>`, or inside V2's `<div class=\"bt-notes\">` when the table has footnotes\n const note = fig?.querySelector(\":scope > [data-notes], :scope > .bt-notes > [data-notes]\");\n const box = fig?.querySelector(\":scope > .bt-notes\");\n // whitespace collapsed, as production's ingest reads it: the note renders as one paragraph\n const notes = words(note);\n if (notes) t.notes = notes;\n // the stored table's key rides the notes' id (`<key>-notes`), so a save keeps it\n const own = (box?.getAttribute(\"id\") ?? note?.getAttribute(\"id\") ?? table.getAttribute(\"aria-describedby\") ?? \"\").replace(/-notes$/, \"\");\n if (KEY.test(own)) t.id = own;\n // a link cell's column is a link column, so the editor draws (and the renderer writes) the link\n t.columns.forEach((col, i) => {\n if (settings[i]) return;\n const vals = t.rows.map((r) => r.cells[col._key]).filter((v) => v !== \"\");\n if (vals.length && vals.every((v) => isObjLike(v))) col.type = \"link\";\n });\n return t;\n}\n\n/**\n * The table as production's renderer writes a Portable Text table (@bettercms-ai/richtext html.ts tableHtml): a header\n * row in <thead>, header cells of the first column as <th>, every cell its text (a link cell its link). A caption, a\n * note or a group adds what that renderer writes for it, in the order the rows are held (an unedited stored table\n * comes back as it was; the editor's row list writes V2's order, loose rows first). An empty group has no row to label\n * and is not written, as production's renderer writes none. The totals rows are a <tfoot> after every <tbody>; a\n * highlighted row is `<tr data-highlight=\"true\">` and a highlighted column `data-highlight=\"true\"` on each of its cells\n * (production 0.10, the V2 table's markup). A sortable column is its `<col data-sortable=\"true\">` (one `<col>` per column,\n * inside each column group's `<colgroup>`), and \"Visitors can search rows\" the figure's `data-filter=\"true\"`.\n */\nexport function renderStoredTable(input: TableModel): string {\n const t = normalizeTable(input);\n const cols = t.columns;\n // typed columns and cells (V2's types): the column's settings, written as production's renderer writes a typed table\n const settings = cols.map(columnSettings);\n const typed =\n settings.some(Boolean) || t.rows.some((r) => !!storedType(r.type) || Object.values(r.cells).some((c) => isCellObject(c) && !!storedType(c.type)));\n const cell = (row: TableRow, c: TableColumn, i: number, header: boolean) => {\n const raw = row.cells[c._key];\n const v = cellValue(raw);\n const text = esc(cellText(c, row, raw));\n const marks = isCellObject(raw) && typeof raw.marks === \"string\" ? raw.marks : \"\";\n const plain = (isObjLike(v) && typeof (v as TableLink).href === \"string\" && (v as TableLink).href ? `<a href=\"${escAttr((v as TableLink).href)}\">${text}</a>` : text) + marks;\n const tag = header ? \"th\" : \"td\";\n const fn = noted(row, c);\n if (!typed) return `<${tag}${hi(c)}${fn.attr}>${plain}${fn.sup}</${tag}>`;\n const view = typedCellView(settings[i], storedType(row.type), isCellObject(raw) ? storedType(raw.type) : undefined, isObjLike(v) ? cellText(c, row, raw) : v, header, false);\n // V2 cellHtml's order: data-type, data-value / data-empty, data-note, data-align; the footnote marker after the value\n const tail = view.tail.replace(/( data-align=\"[^\"]*\")?$/, `${fn.attr}$1`);\n return `<${tag}${view.lead}${hi(c)}${tail}>${view.inner === undefined ? plain : view.inner + marks}${fn.sup}</${tag}>`;\n };\n const hi = (c: TableColumn) => (c.highlight ? ' data-highlight=\"true\"' : \"\");\n // a footnote: the cell's data-note and production's (V2's) marker after its words\n const fnOf = new Map((t.footnotes ?? []).map((f, i) => [f._key, i + 1]));\n const noted = (row: TableRow, c: TableColumn) => {\n const raw = row.cells[c._key];\n const key = isCellObject(raw) ? raw.note : undefined;\n const n = key ? fnOf.get(key) : undefined;\n return n ? { attr: ` data-note=\"${escAttr(key!)}\"`, sup: `<sup><a href=\"#${escAttr(t.id ?? \"tbl\")}-fn-${n}\" aria-label=\"Note ${n}\">${n}</a></sup>` } : { attr: \"\", sup: \"\" };\n };\n const rowHtml = (row: TableRow) =>\n `<tr${typed && storedType(row.type) ? ` data-type=\"${row.type}\"` : \"\"}${row.highlight ? ' data-highlight=\"true\"' : \"\"}>${cols.map((c, i) => cell(row, c, i, i === 0 && t.headerColumn)).join(\"\")}</tr>`;\n const headRow = `<tr>${cols\n .map((c, i) => {\n const view = typed ? typedCellView(settings[i], undefined, undefined, undefined, true, true) : { lead: \"\", tail: \"\" };\n return `<th${view.lead}${hi(c)}${view.tail}>${esc(c.label)}</th>`;\n })\n .join(\"\")}</tr>`;\n const body = t.rows.filter((r) => !r.footer);\n const tfoot = t.rows.some((r) => r.footer) ? `<tfoot>${t.rows.filter((r) => r.footer).map(rowHtml).join(\"\")}</tfoot>` : \"\";\n const span = (name: string, n: number) => (n > 1 ? ` ${name}=\"${n}\"` : \"\");\n const colLabels = new Map((t.columnGroups ?? []).map((g) => [g._key, String(g.label ?? \"\")]));\n const rowLabels = new Map((t.rowGroups ?? []).map((g) => [g._key, String(g.label ?? \"\")]));\n const runs = <T,>(items: T[], keyOf: (x: T) => string | undefined) => {\n const out: { key?: string; items: T[] }[] = [];\n for (const x of items) {\n const key = keyOf(x);\n const last = out[out.length - 1];\n if (last && last.key === key) last.items.push(x);\n else out.push({ key, items: [x] });\n }\n return out.some((r) => r.key !== undefined) ? out : [];\n };\n const colRuns = runs(cols, (c) => (c.group && colLabels.has(c.group) ? c.group : undefined));\n const rowRuns = runs(body, (r) => (r.group && rowLabels.has(r.group) ? r.group : undefined));\n const caption = t.caption.trim();\n const notes = (t.notes ?? \"\").trim();\n const footnotes = t.footnotes ?? [];\n const sortable = cols.some((c) => c.sortable) || settings.some(Boolean);\n const filter = !!t.filterable;\n const ld = t.jsonLd && t.jsonLd.type !== \"none\" ? t.jsonLd : null;\n const resp = t.design?.responsive === \"stack\" || t.design?.responsive === \"cards\" ? t.design.responsive : null;\n const sticky = !!t.design?.sticky;\n if (!caption && !notes && !footnotes.length && !colRuns.length && !rowRuns.length && !sortable && !filter && !ld && !resp && !sticky && !typed) {\n const out: string[] = [\"<table>\"];\n if (t.headerRow) out.push(`<thead>${headRow}</thead>`);\n out.push(`${body.length || !tfoot ? `<tbody>${body.map(rowHtml).join(\"\")}</tbody>` : \"\"}${tfoot}</table>`);\n return out.join(\"\");\n }\n const notesId = notes || footnotes.length ? `${t.id}-notes` : \"\";\n const out: string[] = [`<table${notesId ? ` aria-describedby=\"${escAttr(notesId)}\"` : \"\"}>`];\n if (caption) out.push(`<caption>${esc(caption)}</caption>`);\n if (sortable) {\n let at = 0;\n const widths = colRuns.length ? colRuns.map((r) => r.items.length) : [cols.length];\n out.push(widths.map((w) => `<colgroup>${cols.slice(at, (at += w)).map((c, k) => `<col${colAttrs(settings[at - w + k], !!c.sortable)}>`).join(\"\")}</colgroup>`).join(\"\"));\n } else out.push(colRuns.map((r) => `<colgroup${span(\"span\", r.items.length)}></colgroup>`).join(\"\"));\n const groupRow = colRuns.length\n ? `<tr>${colRuns.map((r) => (r.key === undefined ? \"<td></td>\".repeat(r.items.length) : `<th scope=\"colgroup\"${span(\"colspan\", r.items.length)} data-group=\"${escAttr(r.key)}\">${esc(colLabels.get(r.key)!)}</th>`)).join(\"\")}</tr>`\n : \"\";\n if (groupRow || t.headerRow) out.push(`<thead>${groupRow}${t.headerRow ? headRow : \"\"}</thead>`);\n if (rowRuns.length)\n for (const r of rowRuns)\n out.push(`<tbody${r.key === undefined ? \"\" : ` data-key=\"${escAttr(r.key)}\"`}>${r.key === undefined ? \"\" : `<tr><th scope=\"rowgroup\"${span(\"colspan\", cols.length)}>${esc(rowLabels.get(r.key)!)}</th></tr>`}${r.items.map(rowHtml).join(\"\")}</tbody>`);\n else if (body.length) out.push(`<tbody>${body.map(rowHtml).join(\"\")}</tbody>`);\n out.push(`${tfoot}</table>`);\n const html = out.join(\"\");\n if (!notes && !footnotes.length && !filter && !ld && !resp && !sticky) return html;\n const designAttrs = `${resp ? ` data-responsive=\"${resp}\"` : \"\"}${sticky ? ' data-sticky=\"true\"' : \"\"}`;\n const ldAttrs = ld ? ` data-jsonld=\"${ld.type}\"${ld.axis ? ` data-jsonld-axis=\"${ld.axis}\"` : \"\"}${ld.priceRow ? ` data-jsonld-price=\"${escAttr(ld.priceRow)}\"` : \"\"}` : \"\";\n return `<figure data-rt=\"table\"${designAttrs}${filter ? ' data-filter=\"true\"' : \"\"}${ldAttrs}>${html}${\n footnotes.length\n ? `<div class=\"bt-notes\" id=\"${escAttr(notesId)}\">${notes ? `<p data-notes>${esc(notes)}</p>` : \"\"}<ol data-footnotes>${footnotes.map((f, i) => `<li id=\"${escAttr(t.id ?? \"tbl\")}-fn-${i + 1}\" data-key=\"${escAttr(f._key)}\">${esc(f.text)}</li>`).join(\"\")}</ol></div>`\n : notes ? `<p data-notes id=\"${escAttr(notesId)}\">${esc(notes)}</p>` : \"\"\n }</figure>`;\n}\n\n/* ── Detect + parse (static HTML → model) ──────────────────────────── */\n/** The footnote markers closing a cell (`<sup data-footnote>` holding only text), and the cell without them. */\nfunction splitMarks(c: Element): { rest: Element; marks: string } {\n const rest = c.cloneNode(true) as Element;\n const marks: string[] = [];\n for (let n = rest.lastChild; n; n = rest.lastChild) {\n if (n.nodeType === 3 && !(n.textContent ?? \"\").trim() && marks.length) n.remove();\n else if (n.nodeType === 1 && (n as Element).tagName === \"SUP\" && (n as Element).hasAttribute(\"data-footnote\") && !(n as Element).children.length) {\n marks.unshift((n as Element).outerHTML);\n n.remove();\n } else break;\n }\n return { rest, marks: marks.join(\"\") };\n}\n/** A cell the table value can hold: text, line breaks, or one link around its text, then any footnote markers. */\nconst plainCell = (cell: Element) => {\n // a typed cell's markup is V2 cellHtml's (the check mark, star or dash and its words), read from data-value / data-empty\n if (cell.hasAttribute(\"data-value\") || cell.hasAttribute(\"data-empty\")) return true;\n const c = splitMarks(cell).rest;\n return (\n Array.from(c.childNodes).every((n) => n.nodeType === 3 || (n.nodeType === 1 && (n as Element).tagName === \"BR\")) ||\n (c.children.length === 1 && c.firstElementChild!.tagName === \"A\" && c.firstElementChild!.children.length === 0 && (c.textContent ?? \"\").trim() === (c.firstElementChild!.textContent ?? \"\").trim())\n );\n};\n\nexport function detectKind(el: Element): IslandKind | null {\n const rt = el.getAttribute(\"data-rt\");\n if (rt === \"table\") return el.tagName === \"TABLE\" && !Array.from(el.querySelectorAll(\"td,th\")).every(plainCell) ? null : \"table\";\n if (rt && (ISLAND_KINDS as string[]).includes(rt)) return rt as IslandKind;\n // a quote with an attribution is a pull quote (V2 detectArticle; legacy: <blockquote><p>…</p><cite>…</cite></blockquote>)\n if (el.tagName === \"BLOCKQUOTE\" && el.querySelector(\":scope > cite\")) return \"pullquote\";\n if (el.tagName === \"TABLE\") return Array.from(el.querySelectorAll(\"td,th\")).every(plainCell) ? \"table\" : null;\n if (el.tagName === \"FIGURE\" && el.querySelector(\":scope > table, :scope > .bt-scroll > table\")) return \"table\";\n // a figure that is only an image (optionally linked, optionally captioned)\n if (el.tagName === \"FIGURE\") {\n const kids = Array.from(el.children);\n const media = kids.filter((k) => k.tagName !== \"FIGCAPTION\");\n const m = media[0];\n if (media.length === 1 && kids.length - media.length <= 1 && (m.tagName === \"IMG\" || (m.tagName === \"A\" && m.children.length === 1 && m.firstElementChild!.tagName === \"IMG\"))) return \"image\";\n }\n return null;\n}\n\nconst attrOf = (el: Element, name: string) => (el.hasAttribute(name) ? el.getAttribute(name)! : undefined);\nconst oneOf = <T extends string>(list: readonly T[], v: string | undefined): T | undefined => (v !== undefined && (list as readonly string[]).includes(v) ? (v as T) : undefined);\n\nexport function parseIsland(kind: IslandKind, el: HTMLElement): IslandModels[IslandKind] {\n switch (kind) {\n case \"image\": {\n const img = el.querySelector(\"img\");\n const a = img?.parentElement?.tagName === \"A\" ? img.parentElement : null;\n const cap = el.querySelector(\":scope > figcaption\");\n const m: ImageModel = { src: img?.getAttribute(\"src\") ?? \"\" };\n if (img?.hasAttribute(\"alt\")) m.alt = img.getAttribute(\"alt\")!;\n if (cap) m.caption = (cap.textContent ?? \"\").replace(/\\u200b/g, \"\");\n const align = oneOf(IMAGE_ALIGNS, attrOf(el, \"data-align\"));\n const size = oneOf(IMAGE_SIZES, attrOf(el, \"data-size\"));\n if (align) m.align = align;\n if (size) m.size = size;\n if (a) m.href = a.getAttribute(\"href\") ?? \"\";\n const extra = attrOf(el, \"data-extra\");\n if (extra) m.extra = extra;\n return m;\n }\n case \"table\":\n // production's own figure holds its <table> directly; V2's (pasted) wraps it in a scroll region\n if (el.matches(\"figure[data-rt=table]\")) return el.querySelector(\":scope > table\") ? parseStoredTable(el) : parseTableElement(el);\n return parseStoredTable(el.matches(\"table\") ? el : el.querySelector(\"table\")!);\n case \"pullquote\": {\n // V2 article.ts parseArticle(\"pullquote\"): a legacy pull quote IS the <blockquote> (no <figure> around it)\n const text = (n: Element | null) => (n?.textContent ?? \"\").replace(/\\s+/g, \" \").trim();\n const bq = el.matches(\"blockquote\") ? el : el.querySelector(\"blockquote\");\n const cap = el.querySelector(\"figcaption\");\n const nameEl = cap?.querySelector(\"[data-name]\") ?? el.querySelector(\"blockquote > cite, cite\");\n let role = text(cap?.querySelector(\"[data-role]\") ?? null);\n // legacy <cite>Name, role</cite>\n let name = text(nameEl);\n if (!cap && name.includes(\",\")) [name, role] = [name.slice(0, name.indexOf(\",\")).trim(), name.slice(name.indexOf(\",\") + 1).trim()];\n const quoteEl = bq?.cloneNode(true) as HTMLElement | undefined;\n quoteEl?.querySelectorAll(\"cite\").forEach((c) => c.remove());\n return { quote: text(quoteEl ?? null), name, role, link: bq?.getAttribute(\"cite\") ?? nameEl?.getAttribute(\"href\") ?? \"\" };\n }\n case \"takeaways\": {\n // V2 article.ts parseArticle(\"takeaways\"): an empty list still holds a line to type in\n const text = (n: Element | null) => (n?.textContent ?? \"\").replace(/\\s+/g, \" \").trim();\n const pts = Array.from(el.querySelectorAll(\"li\")).map((li) => text(li));\n return { title: text(el.querySelector(\"[data-title]\")), points: pts.length ? pts : [\"\"] };\n }\n case \"callout\": {\n const title = el.querySelector(\":scope > [data-title]\");\n const body = el.querySelector(\":scope > [data-body]\");\n const m: CalloutModel = {};\n const tone = attrOf(el, \"data-callout\");\n if (tone !== undefined) m.tone = tone;\n if (title) m.title = (title.textContent ?? \"\").replace(/\\u200b/g, \"\");\n if (body) m.body = parasToText(body);\n const extra = attrOf(el, \"data-extra\");\n if (extra) m.extra = extra;\n return m;\n }\n case \"toggle\": {\n const title = el.querySelector(\":scope > summary\");\n const body = el.querySelector(\":scope > [data-body]\");\n const m: ToggleModel = {};\n if (title) m.title = (title.textContent ?? \"\").replace(/\\u200b/g, \"\");\n if (body) m.body = parasToText(body);\n const extra = attrOf(el, \"data-extra\");\n if (extra) m.extra = extra;\n return m;\n }\n case \"video\": {\n const m: VideoModel = {};\n const url = attrOf(el, \"data-url\");\n const title = attrOf(el, \"data-title\");\n if (url !== undefined) m.url = url;\n if (title !== undefined) m.title = title;\n const extra = attrOf(el, \"data-extra\");\n if (extra) m.extra = extra;\n return m;\n }\n case \"embed\": {\n const m: EmbedModel = {};\n const url = attrOf(el, \"data-url\");\n const title = attrOf(el, \"data-title\");\n if (url !== undefined) m.url = url;\n if (title !== undefined) m.title = title;\n const extra = attrOf(el, \"data-extra\");\n if (extra) m.extra = extra;\n return m;\n }\n case \"file\": {\n const m: FileModel = {};\n const url = attrOf(el, \"data-url\");\n const name = attrOf(el, \"data-name\");\n const size = attrOf(el, \"data-size\");\n if (url !== undefined) m.url = url;\n if (name !== undefined) m.name = name;\n if (size !== undefined && Number.isFinite(Number(size))) m.size = Number(size);\n const extra = attrOf(el, \"data-extra\");\n if (extra) m.extra = extra;\n return m;\n }\n case \"component\": {\n // V2 markup: data-ref is the library component, data-id this instance; a legacy one names only data-block\n const m: ComponentModel = { id: attrOf(el, \"data-id\") || rid(\"ci\") };\n const ref = attrOf(el, \"data-ref\") ?? attrOf(el, \"data-block\");\n const name = attrOf(el, \"data-name\");\n const overrides = attrOf(el, \"data-overrides\");\n if (ref !== undefined) m.ref = ref;\n if (name !== undefined) m.name = name;\n if (overrides !== undefined) m.overrides = overrides;\n const variant = attrOf(el, \"data-variant\");\n if (variant !== undefined) m.variant = variant;\n if (el.getAttribute(\"data-detached\") === \"true\") {\n m.detached = true;\n const props = attrOf(el, \"data-props\");\n const blocks = attrOf(el, \"data-blocks\");\n const at = attrOf(el, \"data-source-published-at\");\n if (props !== undefined) m.props = props;\n if (blocks !== undefined) m.blocks = blocks;\n if (at !== undefined) m.sourcePublishedAt = at;\n }\n const extra = attrOf(el, \"data-extra\");\n if (extra) m.extra = extra;\n return m;\n }\n }\n}\n\nexport function createIsland<K extends IslandKind>(kind: K, model: IslandModels[K]): IslandEl {\n const el = document.createElement(\"div\") as IslandEl;\n el.setAttribute(\"data-rt-island\", kind);\n el.setAttribute(\"contenteditable\", \"false\");\n el.__rt = model;\n return el;\n}\n\n/** Static block HTML → islands (top level only). Keeps a writable line after a trailing island or rule. */\nexport function hydrate(root: HTMLElement) {\n for (const ch of Array.from(root.children)) {\n if (ch.hasAttribute(\"data-rt-island\")) continue;\n const k = detectKind(ch);\n if (!k) continue;\n ch.replaceWith(createIsland(k, parseIsland(k, ch as HTMLElement)));\n }\n // loose top-level inline content → a paragraph (a single-paragraph field stores its text inline, with no <p>)\n let run: Node[] = [];\n const flush = (before: Node | null) => {\n if (run.some((n) => (n.textContent ?? \"\").trim() || (n.nodeType === 1 && (n as Element).tagName !== \"BR\"))) {\n const p = document.createElement(\"p\");\n root.insertBefore(p, before);\n run.forEach((n) => p.append(n));\n } else run.forEach((n) => n.parentNode === root && n.nodeType === 3 && root.removeChild(n));\n run = [];\n };\n for (const n of Array.from(root.childNodes)) {\n const block = n.nodeType === 1 && (BLOCK_TAGS.has((n as Element).tagName) || (n as Element).hasAttribute(\"data-rt-island\"));\n if (block) flush(n);\n else if (n.nodeType === 1 || n.nodeType === 3) run.push(n);\n }\n flush(null);\n if (!root.firstElementChild) root.innerHTML = \"<p><br></p>\";\n const last = root.lastElementChild;\n if (last && (last.hasAttribute(\"data-rt-island\") || last.tagName === \"HR\")) {\n const p = document.createElement(\"p\");\n p.innerHTML = \"<br>\";\n root.append(p);\n }\n}\n\nconst BLOCK_TAGS = new Set([\"P\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\", \"BLOCKQUOTE\", \"PRE\", \"UL\", \"OL\", \"HR\", \"FIGURE\", \"TABLE\", \"DIV\", \"DETAILS\", \"SECTION\", \"ASIDE\", \"NAV\"]);\nconst isEmptyP = (el: Element) => el.tagName === \"P\" && (el.innerHTML === \"\" || el.innerHTML === \"<br>\");\n\n/** Live DOM → stored HTML. */\nexport function serialize(root: HTMLElement): string {\n const clone = root.cloneNode(true) as HTMLElement;\n const live = Array.from(root.children);\n Array.from(clone.children).forEach((c, i) => {\n if (!c.hasAttribute(\"data-rt-island\")) return;\n const l = live[i] as IslandEl;\n const kind = c.getAttribute(\"data-rt-island\") as IslandKind;\n const model = l.__rt;\n if (!model) return c.remove();\n const tpl = document.createElement(\"template\");\n tpl.innerHTML = renderStatic(kind, model);\n c.replaceWith(tpl.content);\n });\n clone.querySelectorAll(\"[data-hint]\").forEach((n) => n.removeAttribute(\"data-hint\"));\n while (clone.children.length > 1 && clone.lastElementChild && isEmptyP(clone.lastElementChild)) clone.lastElementChild.remove();\n const html = clone.innerHTML.replace(/​/g, \"\");\n return html === \"<p><br></p>\" || html === \"<p></p>\" ? \"\" : html;\n}\n\n/** The HTML exactly as the editor would store it after opening `html` (load → hydrate → serialize), with no edit. */\nexport function editorRoundTrip(html: string): string {\n const el = document.createElement(\"div\");\n el.innerHTML = sanitize(html || \"\") || \"<p><br></p>\";\n hydrate(el);\n return serialize(el);\n}\n\n/** Strip scripts, event handlers and script URLs from HTML we did not author (paste, Markdown, loaded values). */\nexport function sanitize(html: string): string {\n if (!/[<&]/.test(html)) return html;\n const doc = new DOMParser().parseFromString(`<body>${html}</body>`, \"text/html\");\n doc.body.querySelectorAll(\"script,style,iframe,object,embed,link,meta,form,input,button,textarea,select,noscript\").forEach((n) => n.remove());\n doc.body.querySelectorAll(\"*\").forEach((el) => {\n for (const a of Array.from(el.attributes)) {\n const n = a.name.toLowerCase();\n if (n.startsWith(\"on\")) el.removeAttribute(a.name);\n else if ((n === \"href\" || n === \"src\" || n === \"xlink:href\") && /^\\s*(javascript|vbscript|data:text)/i.test(a.value)) el.removeAttribute(a.name);\n }\n });\n return doc.body.innerHTML;\n}\n\n/* ── Selection helpers ─────────────────────────────────────────────── */\nexport const TEXT_BLOCKS = new Set([\"P\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\", \"BLOCKQUOTE\", \"PRE\", \"LI\", \"DIV\"]);\n\nexport function topBlock(root: HTMLElement | null, node: Node | null): HTMLElement | null {\n if (!root) return null;\n let n: Node | null = node;\n while (n && n.parentNode !== root) n = n.parentNode;\n return n && n.nodeType === 1 ? (n as HTMLElement) : null;\n}\n\n/** Nearest text-ish block element around a node, inside root. */\nexport function closestBlock(root: HTMLElement, node: Node | null): HTMLElement | null {\n let n: Node | null = node;\n while (n && n !== root) {\n if (n.nodeType === 1 && TEXT_BLOCKS.has((n as HTMLElement).tagName) && (n as HTMLElement).closest(\"[data-rt-island]\") === null) return n as HTMLElement;\n n = n.parentNode;\n }\n return null;\n}\n\nexport function placeCaret(el: Node, atEnd = true) {\n const s = window.getSelection();\n if (!s) return;\n const r = document.createRange();\n r.selectNodeContents(el);\n r.collapse(!atEnd);\n s.removeAllRanges();\n s.addRange(r);\n}\n\nexport function textBeforeCaret(block: HTMLElement): string | null {\n const s = window.getSelection();\n if (!s || !s.rangeCount) return null;\n const r = s.getRangeAt(0);\n if (!block.contains(r.startContainer)) return null;\n const pre = document.createRange();\n pre.selectNodeContents(block);\n pre.setEnd(r.startContainer, r.startOffset);\n return pre.toString();\n}\n\nexport function editingHost(n: Node | null): HTMLElement | null {\n const el = n ? (n.nodeType === 1 ? (n as HTMLElement) : n.parentElement) : null;\n return el?.closest<HTMLElement>('[contenteditable=\"true\"],[contenteditable=\"plaintext-only\"]') ?? null;\n}\n\n/** A range's box. Browsers measure a collapsed caret as an empty rect, and some engines cannot measure ranges at all: then\n * the box of the element the range sits in. */\nexport function rangeRect(r: Range, fallback: Element | null): DOMRect {\n let rect: DOMRect | null = null;\n try {\n rect = r.getBoundingClientRect();\n } catch {\n rect = null;\n }\n if (rect && (rect.width || rect.height)) return rect;\n const host = r.startContainer.nodeType === 1 ? (r.startContainer as Element) : r.startContainer.parentElement;\n return (host ?? fallback ?? document.body).getBoundingClientRect();\n}\n\nexport const isEmptyHtml = (html: string) => !html.replace(/<(?!img|hr|figure|table|details|div data-rt)[^>]*>/g, \"\").replace(/&nbsp;/g, \"\").trim();\n"],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { type RichTextFeature } from "./codec";
2
+ import { type CatalogComponents } from "./catalog";
3
+ export declare const RT_PROSE: string;
4
+ /** Panel density (≈340px inspector): 13px text, smaller headings. */
5
+ export declare const RT_PANEL = "text-kit-sm leading-[1.6] [&_h1:not([data-rt-isolate]_*)]:text-kit-xl [&_h1:not([data-rt-isolate]_*)]:leading-7 [&_h2:not([data-rt-isolate]_*)]:text-kit-lg [&_h2:not([data-rt-isolate]_*)]:leading-7 [&_h3:not([data-rt-isolate]_*)]:text-kit-md [&_h4:not([data-rt-isolate]_*)]:text-kit-base [&_h5:not([data-rt-isolate]_*)]:text-kit-sm [&_h6:not([data-rt-isolate]_*)]:text-kit-xs";
6
+ export declare function countWords(html: string): number;
7
+ /** Linked component instances in the body. */
8
+ export declare const countComponents: (html: string) => number;
9
+ /** "1,840 words · 3 components" */
10
+ export declare const bodyCountLabel: (html: string) => string;
11
+ /**
12
+ * Where the slash menu goes, collision-aware: below the caret when the whole menu fits there, else on the side with
13
+ * more room, and never taller than that room (its list scrolls), so the last row (More components) stays reachable in
14
+ * a short window.
15
+ */
16
+ export declare function slashPlacement(caret: {
17
+ top: number;
18
+ bottom: number;
19
+ }, viewportH: number): {
20
+ flipUp: boolean;
21
+ maxHeight: number;
22
+ };
23
+ export interface RichTextEditorProps {
24
+ value: string;
25
+ onChange: (html: string) => void;
26
+ readOnly?: boolean;
27
+ placeholder?: string;
28
+ docKey: string;
29
+ /** what the field accepts; the editor offers nothing else (default: everything) */
30
+ features?: readonly RichTextFeature[];
31
+ /** a one-paragraph field: Enter starts no new block */
32
+ single?: boolean;
33
+ /** links may open in a new tab */
34
+ allowNewTab?: boolean;
35
+ /** the writing surface's id (the field label's `for`; its label is `${id}-label`) */
36
+ id?: string;
37
+ invalid?: boolean;
38
+ /** panel = narrow (~340px) inspector, document = the full editor column. */
39
+ variant?: "panel" | "document";
40
+ /** CPO D49: the expanded editor's breadcrumb, root → this field ("Alternating feature rows", "Thin walls", "Body"). */
41
+ expandCrumbs?: string[];
42
+ /** Controlled expanded modal (a host's label-row action opens it too). */
43
+ expandedOpen?: boolean;
44
+ onExpandedOpenChange?: (open: boolean) => void;
45
+ /** This editor IS the body of the expanded modal: toolbar always shown, tall writing surface. */
46
+ inModal?: boolean;
47
+ /** Already the full editor: no Expand button. */
48
+ hideFullscreen?: boolean;
49
+ /** Scroll the writing surface beyond this height (px). */
50
+ maxHeight?: number;
51
+ autoFocus?: boolean;
52
+ /** Shows the toolbar Comment button. */
53
+ onComment?: (quote: string) => void;
54
+ /** the components this field may embed (the insert menus' More components); absent → none offered */
55
+ components?: CatalogComponents;
56
+ }
57
+ export declare function RichTextEditor({ value, onChange, readOnly, placeholder, docKey, features, single, allowNewTab, id, invalid, variant, expandCrumbs, expandedOpen, onExpandedOpenChange, inModal, hideFullscreen, maxHeight, autoFocus, onComment, components, }: RichTextEditorProps): import("react/jsx-runtime").JSX.Element;