@bettercms-ai/kit 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/README.md +33 -0
  2. package/dist/adapters/dock-values.d.ts +28 -0
  3. package/dist/adapters/dock-values.js +41 -0
  4. package/dist/adapters/dock-values.js.map +1 -0
  5. package/{adapters → dist/adapters}/icons.js +2 -2
  6. package/dist/adapters/icons.js.map +1 -0
  7. package/{adapters → dist/adapters}/lossy.d.ts +90 -31
  8. package/dist/adapters/lossy.js +414 -0
  9. package/dist/adapters/lossy.js.map +1 -0
  10. package/{adapters → dist/adapters}/prod-types.d.ts +82 -4
  11. package/{adapters → dist/adapters}/prod-types.js +71 -3
  12. package/dist/adapters/prod-types.js.map +1 -0
  13. package/{adapters → dist/adapters}/schema.d.ts +40 -1
  14. package/{adapters → dist/adapters}/schema.js +996 -179
  15. package/dist/adapters/schema.js.map +1 -0
  16. package/{adapters → dist/adapters}/values.d.ts +26 -5
  17. package/{adapters → dist/adapters}/values.js +87 -17
  18. package/dist/adapters/values.js.map +1 -0
  19. package/dist/brand/logo.js +96 -0
  20. package/dist/brand/logo.js.map +1 -0
  21. package/{context.d.ts → dist/context.d.ts} +92 -2
  22. package/{context.js → dist/context.js} +5 -2
  23. package/dist/context.js.map +1 -0
  24. package/{controls → dist/controls}/button.d.ts +19 -5
  25. package/{controls → dist/controls}/button.js +125 -54
  26. package/dist/controls/button.js.map +1 -0
  27. package/{controls → dist/controls}/c1.js +1 -1
  28. package/dist/controls/c1.js.map +1 -0
  29. package/{controls → dist/controls}/c2.js +1 -1
  30. package/dist/controls/c2.js.map +1 -0
  31. package/{controls → dist/controls}/choice.d.ts +7 -2
  32. package/{controls → dist/controls}/choice.js +71 -18
  33. package/dist/controls/choice.js.map +1 -0
  34. package/{controls → dist/controls}/code-register.js +1 -1
  35. package/dist/controls/code-register.js.map +1 -0
  36. package/{controls → dist/controls}/code.js +10 -9
  37. package/dist/controls/code.js.map +1 -0
  38. package/{controls → dist/controls}/color.js +8 -8
  39. package/dist/controls/color.js.map +1 -0
  40. package/{controls → dist/controls}/component-services.d.ts +42 -0
  41. package/dist/controls/component-services.js +7 -0
  42. package/dist/controls/component-services.js.map +1 -0
  43. package/{controls → dist/controls}/date-register.js +1 -1
  44. package/dist/controls/date-register.js.map +1 -0
  45. package/{controls → dist/controls}/date-zone.js +8 -2
  46. package/dist/controls/date-zone.js.map +1 -0
  47. package/{controls → dist/controls}/date.js +32 -24
  48. package/dist/controls/date.js.map +1 -0
  49. package/{controls → dist/controls}/form-picker-register.js +1 -1
  50. package/dist/controls/form-picker-register.js.map +1 -0
  51. package/{controls → dist/controls}/form-picker.js +11 -9
  52. package/dist/controls/form-picker.js.map +1 -0
  53. package/{controls → dist/controls}/icon-register.js +1 -1
  54. package/dist/controls/icon-register.js.map +1 -0
  55. package/{controls → dist/controls}/icon.d.ts +4 -2
  56. package/{controls → dist/controls}/icon.js +32 -27
  57. package/dist/controls/icon.js.map +1 -0
  58. package/{controls → dist/controls}/index.d.ts +1 -1
  59. package/{controls → dist/controls}/index.js +4 -3
  60. package/dist/controls/index.js.map +1 -0
  61. package/{controls → dist/controls}/json-register.js +1 -1
  62. package/dist/controls/json-register.js.map +1 -0
  63. package/{controls → dist/controls}/json.js +13 -3
  64. package/dist/controls/json.js.map +1 -0
  65. package/{controls → dist/controls}/link.js +6 -6
  66. package/dist/controls/link.js.map +1 -0
  67. package/{controls → dist/controls}/location-register.js +1 -1
  68. package/dist/controls/location-register.js.map +1 -0
  69. package/{controls → dist/controls}/location.js +64 -40
  70. package/dist/controls/location.js.map +1 -0
  71. package/{controls → dist/controls}/media-register.js +1 -1
  72. package/dist/controls/media-register.js.map +1 -0
  73. package/{controls → dist/controls}/media-services.d.ts +6 -0
  74. package/dist/controls/media-services.js +0 -0
  75. package/{controls → dist/controls}/media.d.ts +35 -4
  76. package/{controls → dist/controls}/media.js +491 -171
  77. package/dist/controls/media.js.map +1 -0
  78. package/{controls → dist/controls}/number.js +10 -9
  79. package/dist/controls/number.js.map +1 -0
  80. package/{controls → dist/controls}/reference-register.js +1 -1
  81. package/dist/controls/reference-register.js.map +1 -0
  82. package/{controls → dist/controls}/reference-services.d.ts +4 -0
  83. package/dist/controls/reference-services.js +0 -0
  84. package/{controls → dist/controls}/reference.d.ts +1 -1
  85. package/{controls → dist/controls}/reference.js +93 -77
  86. package/dist/controls/reference.js.map +1 -0
  87. package/dist/controls/rich-text/blocks.d.ts +49 -0
  88. package/{controls → dist/controls}/rich-text/blocks.js +471 -144
  89. package/dist/controls/rich-text/blocks.js.map +1 -0
  90. package/{controls → dist/controls}/rich-text/catalog.d.ts +4 -1
  91. package/{controls → dist/controls}/rich-text/catalog.js +75 -65
  92. package/dist/controls/rich-text/catalog.js.map +1 -0
  93. package/{controls → dist/controls}/rich-text/codec.d.ts +9 -1
  94. package/{controls → dist/controls}/rich-text/codec.js +3 -1
  95. package/dist/controls/rich-text/codec.js.map +1 -0
  96. package/{controls → dist/controls}/rich-text/component-card.d.ts +1 -1
  97. package/{controls → dist/controls}/rich-text/component-card.js +417 -99
  98. package/dist/controls/rich-text/component-card.js.map +1 -0
  99. package/dist/controls/rich-text/component-panel.d.ts +47 -0
  100. package/dist/controls/rich-text/component-panel.js +141 -0
  101. package/dist/controls/rich-text/component-panel.js.map +1 -0
  102. package/{controls → dist/controls}/rich-text/control.d.ts +1 -2
  103. package/{controls → dist/controls}/rich-text/control.js +84 -42
  104. package/dist/controls/rich-text/control.js.map +1 -0
  105. package/{controls → dist/controls}/rich-text/dom.d.ts +52 -9
  106. package/{controls → dist/controls}/rich-text/dom.js +379 -50
  107. package/dist/controls/rich-text/dom.js.map +1 -0
  108. package/{controls → dist/controls}/rich-text/editor.d.ts +7 -0
  109. package/{controls → dist/controls}/rich-text/editor.js +148 -48
  110. package/dist/controls/rich-text/editor.js.map +1 -0
  111. package/{controls → dist/controls}/rich-text/floating.d.ts +6 -1
  112. package/{controls → dist/controls}/rich-text/floating.js +35 -18
  113. package/dist/controls/rich-text/floating.js.map +1 -0
  114. package/{controls → dist/controls}/rich-text/index.js +1 -1
  115. package/dist/controls/rich-text/index.js.map +1 -0
  116. package/dist/controls/rich-text/link-form.js +147 -0
  117. package/dist/controls/rich-text/link-form.js.map +1 -0
  118. package/{controls → dist/controls}/rich-text/markdown.js +4 -2
  119. package/dist/controls/rich-text/markdown.js.map +1 -0
  120. package/{controls → dist/controls}/rich-text/ops.js +17 -15
  121. package/dist/controls/rich-text/ops.js.map +1 -0
  122. package/dist/controls/rich-text/plain.d.ts +17 -0
  123. package/dist/controls/rich-text/plain.js +44 -0
  124. package/dist/controls/rich-text/plain.js.map +1 -0
  125. package/{controls → dist/controls}/rich-text/toolbar.d.ts +6 -2
  126. package/{controls → dist/controls}/rich-text/toolbar.js +12 -7
  127. package/dist/controls/rich-text/toolbar.js.map +1 -0
  128. package/{controls → dist/controls}/scale.js +5 -5
  129. package/dist/controls/scale.js.map +1 -0
  130. package/{controls → dist/controls}/slot-register.js +1 -1
  131. package/dist/controls/slot-register.js.map +1 -0
  132. package/{controls → dist/controls}/slot-services.d.ts +25 -0
  133. package/dist/controls/slot-services.js +155 -0
  134. package/dist/controls/slot-services.js.map +1 -0
  135. package/{controls → dist/controls}/slot.js +42 -24
  136. package/dist/controls/slot.js.map +1 -0
  137. package/{controls → dist/controls}/table/index.js +1 -1
  138. package/dist/controls/table/index.js.map +1 -0
  139. package/{controls → dist/controls}/table/prod.js +3 -3
  140. package/dist/controls/table/prod.js.map +1 -0
  141. package/{controls → dist/controls}/table/refs.js +13 -2
  142. package/dist/controls/table/refs.js.map +1 -0
  143. package/{controls → dist/controls}/table/stored.js +1 -1
  144. package/dist/controls/table/stored.js.map +1 -0
  145. package/{controls → dist/controls}/table/table-editor.js +51 -48
  146. package/dist/controls/table/table-editor.js.map +1 -0
  147. package/{controls → dist/controls}/table/table-link.js +3 -3
  148. package/dist/controls/table/table-link.js.map +1 -0
  149. package/{controls → dist/controls}/table/table.js +3 -3
  150. package/dist/controls/table/table.js.map +1 -0
  151. package/{controls → dist/controls}/text.d.ts +2 -2
  152. package/{controls → dist/controls}/text.js +78 -43
  153. package/dist/controls/text.js.map +1 -0
  154. package/dist/controls/unknown-value.d.ts +17 -0
  155. package/dist/controls/unknown-value.js +66 -0
  156. package/dist/controls/unknown-value.js.map +1 -0
  157. package/dist/core/core.d.ts +63 -0
  158. package/dist/core/core.js +171 -0
  159. package/dist/core/core.js.map +1 -0
  160. package/dist/core/facets.d.ts +347 -0
  161. package/dist/core/facets.js +334 -0
  162. package/dist/core/facets.js.map +1 -0
  163. package/dist/core/index.d.ts +3 -0
  164. package/dist/core/index.js +3 -0
  165. package/{engine → dist/engine}/array.js +34 -21
  166. package/dist/engine/array.js.map +1 -0
  167. package/{engine → dist/engine}/bits.js +1 -1
  168. package/dist/engine/bits.js.map +1 -0
  169. package/{engine → dist/engine}/breadcrumb.d.ts +3 -3
  170. package/{engine → dist/engine}/breadcrumb.js +12 -36
  171. package/dist/engine/breadcrumb.js.map +1 -0
  172. package/{engine → dist/engine}/expand.d.ts +2 -4
  173. package/{engine → dist/engine}/expand.js +5 -22
  174. package/dist/engine/expand.js.map +1 -0
  175. package/{engine → dist/engine}/field-list.js +1 -1
  176. package/dist/engine/field-list.js.map +1 -0
  177. package/{engine → dist/engine}/field-shell.js +249 -121
  178. package/dist/engine/field-shell.js.map +1 -0
  179. package/{engine → dist/engine}/frame.d.ts +3 -1
  180. package/{engine → dist/engine}/frame.js +16 -14
  181. package/dist/engine/frame.js.map +1 -0
  182. package/{engine → dist/engine}/group-summary.d.ts +2 -1
  183. package/{engine → dist/engine}/group-summary.js +7 -3
  184. package/dist/engine/group-summary.js.map +1 -0
  185. package/{engine → dist/engine}/grouping.d.ts +19 -5
  186. package/{engine → dist/engine}/grouping.js +193 -21
  187. package/dist/engine/grouping.js.map +1 -0
  188. package/{engine → dist/engine}/item-list.d.ts +11 -1
  189. package/{engine → dist/engine}/item-list.js +35 -13
  190. package/dist/engine/item-list.js.map +1 -0
  191. package/{engine → dist/engine}/kit-field.js +45 -10
  192. package/dist/engine/kit-field.js.map +1 -0
  193. package/{engine → dist/engine}/schema-form.d.ts +27 -2
  194. package/{engine → dist/engine}/schema-form.js +182 -40
  195. package/dist/engine/schema-form.js.map +1 -0
  196. package/{engine → dist/engine}/slot.js +5 -15
  197. package/dist/engine/slot.js.map +1 -0
  198. package/dist/index.js +47 -0
  199. package/dist/index.js.map +1 -0
  200. package/{kit.css → dist/kit.css} +19 -0
  201. package/{lib → dist/lib}/cn.js +7 -4
  202. package/dist/lib/cn.js.map +1 -0
  203. package/{lib → dist/lib}/columns.js +4 -1
  204. package/dist/lib/columns.js.map +1 -0
  205. package/{lib → dist/lib}/frames.js +2 -2
  206. package/dist/lib/frames.js.map +1 -0
  207. package/dist/lib/icon-image.d.ts +10 -0
  208. package/dist/lib/icon-image.js +8 -0
  209. package/dist/lib/icon-image.js.map +1 -0
  210. package/{lib → dist/lib}/icons.js +4 -3
  211. package/dist/lib/icons.js.map +1 -0
  212. package/dist/lib/input-modality.d.ts +11 -0
  213. package/dist/lib/input-modality.js +47 -0
  214. package/dist/lib/input-modality.js.map +1 -0
  215. package/dist/lib/key-event.d.ts +11 -0
  216. package/dist/lib/key-event.js +16 -0
  217. package/dist/lib/key-event.js.map +1 -0
  218. package/{lib → dist/lib}/path.js +4 -2
  219. package/dist/lib/path.js.map +1 -0
  220. package/{lib → dist/lib}/schema.d.ts +34 -3
  221. package/{lib → dist/lib}/schema.js +110 -13
  222. package/dist/lib/schema.js.map +1 -0
  223. package/{lib → dist/lib}/utils.js +1 -1
  224. package/dist/lib/utils.js.map +1 -0
  225. package/{lib → dist/lib}/validate.d.ts +11 -1
  226. package/{lib → dist/lib}/validate.js +85 -11
  227. package/dist/lib/validate.js.map +1 -0
  228. package/dist/library/analysis.d.ts +23 -0
  229. package/dist/library/analysis.js +160 -0
  230. package/dist/library/analysis.js.map +1 -0
  231. package/dist/library/catalog.d.ts +57 -0
  232. package/dist/library/catalog.js +307 -0
  233. package/dist/library/catalog.js.map +1 -0
  234. package/dist/library/coreNotes.d.ts +8 -0
  235. package/dist/library/coreNotes.js +111 -0
  236. package/dist/library/coreNotes.js.map +1 -0
  237. package/dist/library/coverage.d.ts +40 -0
  238. package/dist/library/coverage.js +59 -0
  239. package/dist/library/coverage.js.map +1 -0
  240. package/dist/library/entries/advanced.entries.d.ts +2 -0
  241. package/dist/library/entries/advanced.entries.js +6579 -0
  242. package/dist/library/entries/advanced.entries.js.map +1 -0
  243. package/dist/library/entries/commerce.entries.d.ts +2 -0
  244. package/dist/library/entries/commerce.entries.js +4140 -0
  245. package/dist/library/entries/commerce.entries.js.map +1 -0
  246. package/dist/library/entries/company.entries.d.ts +2 -0
  247. package/dist/library/entries/company.entries.js +2731 -0
  248. package/dist/library/entries/company.entries.js.map +1 -0
  249. package/dist/library/entries/conversion.entries.d.ts +2 -0
  250. package/dist/library/entries/conversion.entries.js +3707 -0
  251. package/dist/library/entries/conversion.entries.js.map +1 -0
  252. package/dist/library/entries/data.entries.d.ts +7 -0
  253. package/dist/library/entries/data.entries.js +4613 -0
  254. package/dist/library/entries/data.entries.js.map +1 -0
  255. package/dist/library/entries/events.entries.d.ts +2 -0
  256. package/dist/library/entries/events.entries.js +3428 -0
  257. package/dist/library/entries/events.entries.js.map +1 -0
  258. package/dist/library/entries/features.entries.d.ts +2 -0
  259. package/dist/library/entries/features.entries.js +3157 -0
  260. package/dist/library/entries/features.entries.js.map +1 -0
  261. package/dist/library/entries/heroes.entries.d.ts +2 -0
  262. package/dist/library/entries/heroes.entries.js +3401 -0
  263. package/dist/library/entries/heroes.entries.js.map +1 -0
  264. package/dist/library/entries/index.d.ts +3 -0
  265. package/dist/library/entries/index.js +35 -0
  266. package/dist/library/entries/index.js.map +1 -0
  267. package/dist/library/entries/listings.entries.d.ts +2 -0
  268. package/dist/library/entries/listings.entries.js +2976 -0
  269. package/dist/library/entries/listings.entries.js.map +1 -0
  270. package/dist/library/entries/longform.entries.d.ts +2 -0
  271. package/dist/library/entries/longform.entries.js +4227 -0
  272. package/dist/library/entries/longform.entries.js.map +1 -0
  273. package/dist/library/entries/media.entries.d.ts +2 -0
  274. package/dist/library/entries/media.entries.js +2781 -0
  275. package/dist/library/entries/media.entries.js.map +1 -0
  276. package/dist/library/entries/navigation.entries.d.ts +2 -0
  277. package/dist/library/entries/navigation.entries.js +4011 -0
  278. package/dist/library/entries/navigation.entries.js.map +1 -0
  279. package/dist/library/entries/pricing.entries.d.ts +2 -0
  280. package/dist/library/entries/pricing.entries.js +2383 -0
  281. package/dist/library/entries/pricing.entries.js.map +1 -0
  282. package/dist/library/entries/social-proof.entries.d.ts +2 -0
  283. package/dist/library/entries/social-proof.entries.js +2297 -0
  284. package/dist/library/entries/social-proof.entries.js.map +1 -0
  285. package/dist/library/examples/bento.d.ts +92 -0
  286. package/dist/library/examples/bento.js +201 -0
  287. package/dist/library/examples/bento.js.map +1 -0
  288. package/dist/library/examples/blocks.d.ts +14 -0
  289. package/dist/library/examples/blocks.js +313 -0
  290. package/dist/library/examples/blocks.js.map +1 -0
  291. package/dist/library/examples/faq.d.ts +28 -0
  292. package/dist/library/examples/faq.js +230 -0
  293. package/dist/library/examples/faq.js.map +1 -0
  294. package/dist/library/examples/hero.d.ts +43 -0
  295. package/dist/library/examples/hero.js +222 -0
  296. package/dist/library/examples/hero.js.map +1 -0
  297. package/dist/library/examples/index.d.ts +36 -0
  298. package/dist/library/examples/index.js +109 -0
  299. package/dist/library/examples/index.js.map +1 -0
  300. package/dist/library/examples/journalStory.d.ts +93 -0
  301. package/dist/library/examples/journalStory.js +338 -0
  302. package/dist/library/examples/journalStory.js.map +1 -0
  303. package/dist/library/examples/megaMenu.d.ts +134 -0
  304. package/dist/library/examples/megaMenu.js +442 -0
  305. package/dist/library/examples/megaMenu.js.map +1 -0
  306. package/dist/library/examples/pricing.d.ts +103 -0
  307. package/dist/library/examples/pricing.js +479 -0
  308. package/dist/library/examples/pricing.js.map +1 -0
  309. package/dist/library/examples/tabs.d.ts +87 -0
  310. package/dist/library/examples/tabs.js +180 -0
  311. package/dist/library/examples/tabs.js.map +1 -0
  312. package/dist/library/export.d.ts +42 -0
  313. package/dist/library/export.js +80 -0
  314. package/dist/library/export.js.map +1 -0
  315. package/dist/library/index.d.ts +13 -0
  316. package/dist/library/index.js +6 -0
  317. package/dist/library/kit-catalog.json +1510 -0
  318. package/dist/library/types.d.ts +42 -0
  319. package/dist/library/types.js +0 -0
  320. package/{schema → dist/schema}/adapters.js +1 -2
  321. package/dist/schema/adapters.js.map +1 -0
  322. package/{schema → dist/schema}/help.d.ts +2 -0
  323. package/{schema → dist/schema}/help.js +6 -4
  324. package/dist/schema/help.js.map +1 -0
  325. package/{schema → dist/schema}/scale.js +1 -1
  326. package/dist/schema/scale.js.map +1 -0
  327. package/{schema → dist/schema}/sources.js +1 -1
  328. package/dist/schema/sources.js.map +1 -0
  329. package/{schema → dist/schema}/table.js +11 -10
  330. package/dist/schema/table.js.map +1 -0
  331. package/{schema → dist/schema}/types.d.ts +29 -1
  332. package/{schema → dist/schema}/types.js +1 -1
  333. package/dist/schema/types.js.map +1 -0
  334. package/dist/styles.css +2 -0
  335. package/dist/table/table-view.d.ts +14 -0
  336. package/dist/table/table-view.js +140 -0
  337. package/dist/table/table-view.js.map +1 -0
  338. package/dist/table/table.css +73 -0
  339. package/dist/testing/corpus.d.ts +63 -0
  340. package/dist/testing/corpus.js +129 -0
  341. package/dist/testing/corpus.js.map +1 -0
  342. package/dist/testing/test-form.d.ts +11 -0
  343. package/dist/testing/test-form.js +38 -0
  344. package/dist/testing/test-form.js.map +1 -0
  345. package/dist/theme.css +345 -0
  346. package/dist/theme.d.ts +22 -0
  347. package/dist/theme.js +43 -0
  348. package/dist/theme.js.map +1 -0
  349. package/dist/tokens.css +542 -0
  350. package/dist/types.js +0 -0
  351. package/{ui → dist/ui}/action-tray.d.ts +1 -1
  352. package/{ui → dist/ui}/action-tray.js +20 -19
  353. package/dist/ui/action-tray.js.map +1 -0
  354. package/dist/ui/autocomplete.d.ts +30 -0
  355. package/dist/ui/autocomplete.js +139 -0
  356. package/dist/ui/autocomplete.js.map +1 -0
  357. package/{ui → dist/ui}/button.d.ts +3 -3
  358. package/{ui → dist/ui}/button.js +6 -7
  359. package/dist/ui/button.js.map +1 -0
  360. package/{ui → dist/ui}/choice-switch.js +1 -1
  361. package/dist/ui/choice-switch.js.map +1 -0
  362. package/{ui → dist/ui}/controls.js +51 -39
  363. package/dist/ui/controls.js.map +1 -0
  364. package/{ui → dist/ui}/display.d.ts +10 -3
  365. package/{ui → dist/ui}/display.js +57 -46
  366. package/dist/ui/display.js.map +1 -0
  367. package/{ui → dist/ui}/expanded-editor-modal.d.ts +2 -2
  368. package/{ui → dist/ui}/expanded-editor-modal.js +6 -6
  369. package/dist/ui/expanded-editor-modal.js.map +1 -0
  370. package/{ui → dist/ui}/field-context.js +1 -1
  371. package/dist/ui/field-context.js.map +1 -0
  372. package/{ui → dist/ui}/floating-panel.d.ts +1 -1
  373. package/{ui → dist/ui}/floating-panel.js +28 -12
  374. package/dist/ui/floating-panel.js.map +1 -0
  375. package/{ui → dist/ui}/index.d.ts +4 -0
  376. package/dist/ui/index.js +18 -0
  377. package/{ui → dist/ui}/input.d.ts +1 -1
  378. package/{ui → dist/ui}/input.js +9 -9
  379. package/dist/ui/input.js.map +1 -0
  380. package/{ui → dist/ui}/mode-bar.js +3 -3
  381. package/dist/ui/mode-bar.js.map +1 -0
  382. package/{ui → dist/ui}/overlay.d.ts +77 -5
  383. package/dist/ui/overlay.js +697 -0
  384. package/dist/ui/overlay.js.map +1 -0
  385. package/{ui → dist/ui}/path-crumbs.js +37 -3
  386. package/dist/ui/path-crumbs.js.map +1 -0
  387. package/{ui → dist/ui}/presence.js +2 -2
  388. package/dist/ui/presence.js.map +1 -0
  389. package/{ui → dist/ui}/select.js +89 -87
  390. package/dist/ui/select.js.map +1 -0
  391. package/{ui → dist/ui}/shortcut-hint.js +1 -1
  392. package/dist/ui/shortcut-hint.js.map +1 -0
  393. package/dist/ui/spinner.d.ts +24 -0
  394. package/dist/ui/spinner.js +42 -0
  395. package/dist/ui/spinner.js.map +1 -0
  396. package/dist/ui/split-button.d.ts +32 -0
  397. package/dist/ui/split-button.js +60 -0
  398. package/dist/ui/split-button.js.map +1 -0
  399. package/{ui → dist/ui}/surfaces.js +1 -1
  400. package/dist/ui/surfaces.js.map +1 -0
  401. package/dist/ui/tab.d.ts +38 -0
  402. package/dist/ui/tab.js +87 -0
  403. package/dist/ui/tab.js.map +1 -0
  404. package/dist/ui/toast.d.ts +20 -0
  405. package/dist/ui/toast.js +115 -0
  406. package/dist/ui/toast.js.map +1 -0
  407. package/{ui → dist/ui}/tooltip-root.d.ts +4 -3
  408. package/{ui → dist/ui}/tooltip-root.js +9 -8
  409. package/dist/ui/tooltip-root.js.map +1 -0
  410. package/{ui → dist/ui}/variants.js +1 -1
  411. package/dist/ui/variants.js.map +1 -0
  412. package/package.json +77 -23
  413. package/adapters/icons.js.map +0 -1
  414. package/adapters/lossy.js +0 -233
  415. package/adapters/lossy.js.map +0 -1
  416. package/adapters/prod-types.js.map +0 -1
  417. package/adapters/schema.js.map +0 -1
  418. package/adapters/values.js.map +0 -1
  419. package/brand/logo.js +0 -9
  420. package/brand/logo.js.map +0 -1
  421. package/context.js.map +0 -1
  422. package/controls/button.js.map +0 -1
  423. package/controls/c1.js.map +0 -1
  424. package/controls/c2.js.map +0 -1
  425. package/controls/choice.js.map +0 -1
  426. package/controls/code-register.js.map +0 -1
  427. package/controls/code.js.map +0 -1
  428. package/controls/color.js.map +0 -1
  429. package/controls/date-register.js.map +0 -1
  430. package/controls/date-zone.js.map +0 -1
  431. package/controls/date.js.map +0 -1
  432. package/controls/form-picker-register.js.map +0 -1
  433. package/controls/form-picker.js.map +0 -1
  434. package/controls/icon-register.js.map +0 -1
  435. package/controls/icon.js.map +0 -1
  436. package/controls/index.js.map +0 -1
  437. package/controls/json-register.js.map +0 -1
  438. package/controls/json.js.map +0 -1
  439. package/controls/link.js.map +0 -1
  440. package/controls/location-register.js.map +0 -1
  441. package/controls/location.js.map +0 -1
  442. package/controls/media-register.js.map +0 -1
  443. package/controls/media.js.map +0 -1
  444. package/controls/number.js.map +0 -1
  445. package/controls/reference-register.js.map +0 -1
  446. package/controls/reference.js.map +0 -1
  447. package/controls/rich-text/blocks.d.ts +0 -28
  448. package/controls/rich-text/blocks.js.map +0 -1
  449. package/controls/rich-text/catalog.js.map +0 -1
  450. package/controls/rich-text/codec.js.map +0 -1
  451. package/controls/rich-text/component-card.js.map +0 -1
  452. package/controls/rich-text/control.js.map +0 -1
  453. package/controls/rich-text/dom.js.map +0 -1
  454. package/controls/rich-text/editor.js.map +0 -1
  455. package/controls/rich-text/floating.js.map +0 -1
  456. package/controls/rich-text/index.js.map +0 -1
  457. package/controls/rich-text/link-form.js +0 -111
  458. package/controls/rich-text/link-form.js.map +0 -1
  459. package/controls/rich-text/markdown.js.map +0 -1
  460. package/controls/rich-text/ops.js.map +0 -1
  461. package/controls/rich-text/toolbar.js.map +0 -1
  462. package/controls/scale.js.map +0 -1
  463. package/controls/slot-register.js.map +0 -1
  464. package/controls/slot-services.js +0 -38
  465. package/controls/slot-services.js.map +0 -1
  466. package/controls/slot.js.map +0 -1
  467. package/controls/table/index.js.map +0 -1
  468. package/controls/table/prod.js.map +0 -1
  469. package/controls/table/refs.js.map +0 -1
  470. package/controls/table/stored.js.map +0 -1
  471. package/controls/table/table-editor.js.map +0 -1
  472. package/controls/table/table-link.js.map +0 -1
  473. package/controls/table/table.js.map +0 -1
  474. package/controls/text.js.map +0 -1
  475. package/engine/array.js.map +0 -1
  476. package/engine/bits.js.map +0 -1
  477. package/engine/breadcrumb.js.map +0 -1
  478. package/engine/expand.js.map +0 -1
  479. package/engine/field-list.js.map +0 -1
  480. package/engine/field-shell.js.map +0 -1
  481. package/engine/frame.js.map +0 -1
  482. package/engine/group-summary.js.map +0 -1
  483. package/engine/grouping.js.map +0 -1
  484. package/engine/item-list.js.map +0 -1
  485. package/engine/kit-field.js.map +0 -1
  486. package/engine/schema-form.js.map +0 -1
  487. package/engine/slot.js.map +0 -1
  488. package/index.js +0 -55
  489. package/index.js.map +0 -1
  490. package/lib/cn.js.map +0 -1
  491. package/lib/columns.js.map +0 -1
  492. package/lib/frames.js.map +0 -1
  493. package/lib/icons.js.map +0 -1
  494. package/lib/path.js.map +0 -1
  495. package/lib/schema.js.map +0 -1
  496. package/lib/utils.js.map +0 -1
  497. package/lib/validate.js.map +0 -1
  498. package/schema/adapters.js.map +0 -1
  499. package/schema/help.js.map +0 -1
  500. package/schema/scale.js.map +0 -1
  501. package/schema/sources.js.map +0 -1
  502. package/schema/table.js.map +0 -1
  503. package/schema/types.js.map +0 -1
  504. package/ui/action-tray.js.map +0 -1
  505. package/ui/button.js.map +0 -1
  506. package/ui/choice-switch.js.map +0 -1
  507. package/ui/controls.js.map +0 -1
  508. package/ui/display.js.map +0 -1
  509. package/ui/expanded-editor-modal.js.map +0 -1
  510. package/ui/field-context.js.map +0 -1
  511. package/ui/floating-panel.js.map +0 -1
  512. package/ui/index.js +0 -13
  513. package/ui/input.js.map +0 -1
  514. package/ui/mode-bar.js.map +0 -1
  515. package/ui/overlay.js +0 -378
  516. package/ui/overlay.js.map +0 -1
  517. package/ui/path-crumbs.js.map +0 -1
  518. package/ui/presence.js.map +0 -1
  519. package/ui/select.js.map +0 -1
  520. package/ui/shortcut-hint.js.map +0 -1
  521. package/ui/surfaces.js.map +0 -1
  522. package/ui/tooltip-root.js.map +0 -1
  523. package/ui/variants.js.map +0 -1
  524. /package/{_virtual → dist/_virtual}/_rolldown/runtime.js +0 -0
  525. /package/{adapters → dist/adapters}/icons.d.ts +0 -0
  526. /package/{brand → dist/brand}/logo.d.ts +0 -0
  527. /package/{controls → dist/controls}/c1.d.ts +0 -0
  528. /package/{controls → dist/controls}/c2.d.ts +0 -0
  529. /package/{controls → dist/controls}/code-register.d.ts +0 -0
  530. /package/{controls → dist/controls}/code.d.ts +0 -0
  531. /package/{controls → dist/controls}/color.d.ts +0 -0
  532. /package/{controls → dist/controls}/date-register.d.ts +0 -0
  533. /package/{controls → dist/controls}/date-zone.d.ts +0 -0
  534. /package/{controls → dist/controls}/date.d.ts +0 -0
  535. /package/{controls → dist/controls}/form-picker-register.d.ts +0 -0
  536. /package/{controls → dist/controls}/form-picker.d.ts +0 -0
  537. /package/{controls → dist/controls}/icon-register.d.ts +0 -0
  538. /package/{controls → dist/controls}/json-register.d.ts +0 -0
  539. /package/{controls → dist/controls}/json.d.ts +0 -0
  540. /package/{controls → dist/controls}/link.d.ts +0 -0
  541. /package/{controls → dist/controls}/location-register.d.ts +0 -0
  542. /package/{controls → dist/controls}/location.d.ts +0 -0
  543. /package/{controls → dist/controls}/media-register.d.ts +0 -0
  544. /package/{controls → dist/controls}/number.d.ts +0 -0
  545. /package/{controls → dist/controls}/reference-register.d.ts +0 -0
  546. /package/{controls → dist/controls}/rich-text/index.d.ts +0 -0
  547. /package/{controls → dist/controls}/rich-text/link-form.d.ts +0 -0
  548. /package/{controls → dist/controls}/rich-text/markdown.d.ts +0 -0
  549. /package/{controls → dist/controls}/rich-text/ops.d.ts +0 -0
  550. /package/{controls → dist/controls}/scale.d.ts +0 -0
  551. /package/{controls → dist/controls}/slot-register.d.ts +0 -0
  552. /package/{controls → dist/controls}/slot.d.ts +0 -0
  553. /package/{controls → dist/controls}/table/index.d.ts +0 -0
  554. /package/{controls → dist/controls}/table/prod.d.ts +0 -0
  555. /package/{controls → dist/controls}/table/refs.d.ts +0 -0
  556. /package/{controls → dist/controls}/table/stored.d.ts +0 -0
  557. /package/{controls → dist/controls}/table/table-editor.d.ts +0 -0
  558. /package/{controls → dist/controls}/table/table-link.d.ts +0 -0
  559. /package/{controls → dist/controls}/table/table.d.ts +0 -0
  560. /package/{engine → dist/engine}/array.d.ts +0 -0
  561. /package/{engine → dist/engine}/bits.d.ts +0 -0
  562. /package/{engine → dist/engine}/field-list.d.ts +0 -0
  563. /package/{engine → dist/engine}/field-shell.d.ts +0 -0
  564. /package/{engine → dist/engine}/kit-field.d.ts +0 -0
  565. /package/{engine → dist/engine}/slot.d.ts +0 -0
  566. /package/{index.d.ts → dist/index.d.ts} +0 -0
  567. /package/{lib → dist/lib}/cn.d.ts +0 -0
  568. /package/{lib → dist/lib}/columns.d.ts +0 -0
  569. /package/{lib → dist/lib}/frames.d.ts +0 -0
  570. /package/{lib → dist/lib}/icons.d.ts +0 -0
  571. /package/{lib → dist/lib}/path.d.ts +0 -0
  572. /package/{lib → dist/lib}/utils.d.ts +0 -0
  573. /package/{schema → dist/schema}/adapters.d.ts +0 -0
  574. /package/{schema → dist/schema}/scale.d.ts +0 -0
  575. /package/{schema → dist/schema}/sources.d.ts +0 -0
  576. /package/{schema → dist/schema}/table.d.ts +0 -0
  577. /package/{types.d.ts → dist/types.d.ts} +0 -0
  578. /package/{ui → dist/ui}/choice-switch.d.ts +0 -0
  579. /package/{ui → dist/ui}/controls.d.ts +0 -0
  580. /package/{ui → dist/ui}/field-context.d.ts +0 -0
  581. /package/{ui → dist/ui}/mode-bar.d.ts +0 -0
  582. /package/{ui → dist/ui}/path-crumbs.d.ts +0 -0
  583. /package/{ui → dist/ui}/presence.d.ts +0 -0
  584. /package/{ui → dist/ui}/select.d.ts +0 -0
  585. /package/{ui → dist/ui}/shortcut-hint.d.ts +0 -0
  586. /package/{ui → dist/ui}/surfaces.d.ts +0 -0
  587. /package/{ui → dist/ui}/variants.d.ts +0 -0
@@ -0,0 +1,697 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { KIT_SCOPE } from "./surfaces.js";
3
+ import { MODAL_LAYER, TooltipLayer, TooltipRoot } from "./tooltip-root.js";
4
+ import { IconButton, TooltipScope } from "./button.js";
5
+ import { useShortcutHints } from "./shortcut-hint.js";
6
+ import * as React from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { IconCheck, IconChevronRight, IconX } from "@tabler/icons-react";
9
+ import { AnimatePresence, motion } from "framer-motion";
10
+ import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
11
+ import { Dialog } from "@base-ui/react/dialog";
12
+ import { Menu as Menu$1 } from "@base-ui/react/menu";
13
+ import { Popover as Popover$1 } from "@base-ui/react/popover";
14
+ import { PreviewCard } from "@base-ui/react/preview-card";
15
+ import { Separator } from "@base-ui/react/separator";
16
+ import { useRender } from "@base-ui/react/use-render";
17
+ //#region src/ui/overlay.tsx
18
+ var layer = { [MODAL_LAYER]: "" };
19
+ var FLOATING_LAYER = "[data-floating-layer]";
20
+ function keepOpen(details, anchor) {
21
+ const target = details.event?.target;
22
+ const keep = details.reason === "escape-key" && details.event.defaultPrevented || details.reason === "outside-press" && target instanceof Element && (!!target.closest("[data-floating-layer]") || !!anchor?.contains(target));
23
+ if (keep) details.cancel();
24
+ return keep;
25
+ }
26
+ function guard(onOpenChange, anchor) {
27
+ return (open, details) => {
28
+ if (!open && keepOpen(details, anchor?.())) return;
29
+ onOpenChange?.(open, details);
30
+ };
31
+ }
32
+ var TooltipProvider = Tooltip$1.Provider;
33
+ function Tooltip({ content, children, side = "top", shortcut, delay = 350, disabled }) {
34
+ const hints = useShortcutHints();
35
+ if (disabled || !content) return /* @__PURE__ */ jsx(TooltipScope.Provider, {
36
+ value: true,
37
+ children
38
+ });
39
+ return /* @__PURE__ */ jsx(TooltipScope.Provider, {
40
+ value: true,
41
+ children: /* @__PURE__ */ jsxs(TooltipRoot, { children: [/* @__PURE__ */ jsx(Tooltip$1.Trigger, {
42
+ delay,
43
+ render: children
44
+ }), /* @__PURE__ */ jsxs(TooltipLayer, {
45
+ side,
46
+ children: [/* @__PURE__ */ jsx("span", {
47
+ className: "line-clamp-[8] min-w-0 whitespace-normal [overflow-wrap:anywhere]",
48
+ children: content
49
+ }), shortcut && hints ? /* @__PURE__ */ jsx("kbd", {
50
+ "data-hint": "shortcuts",
51
+ className: "mt-px shrink-0 rounded-kit-sm bg-kit-ink-active px-1 font-kit-sans text-kit-2xs",
52
+ children: shortcut
53
+ }) : null]
54
+ })] })
55
+ });
56
+ }
57
+ var AnchorContext = React.createContext(null);
58
+ function Popover({ onOpenChange, ...props }) {
59
+ const anchor = React.useRef(null);
60
+ return /* @__PURE__ */ jsx(AnchorContext.Provider, {
61
+ value: anchor,
62
+ children: /* @__PURE__ */ jsx(Popover$1.Root, {
63
+ ...props,
64
+ onOpenChange: guard(onOpenChange, () => anchor.current)
65
+ })
66
+ });
67
+ }
68
+ var PopoverTrigger = Popover$1.Trigger;
69
+ var PopoverClose = Popover$1.Close;
70
+ /** Positions the popover against this element instead of the trigger; presses on it count as inside. */
71
+ function PopoverAnchor({ render, ...props }) {
72
+ const anchor = React.useContext(AnchorContext);
73
+ return useRender({
74
+ render: render ?? /* @__PURE__ */ jsx("div", {}),
75
+ ref: anchor ?? void 0,
76
+ props
77
+ });
78
+ }
79
+ function PopoverContent({ className, align = "start", side, sideOffset = 6, keepFocus, onMouseDown, collisionBoundary, collisionPadding = 12, collisionAvoidance, ...props }) {
80
+ const anchor = React.useContext(AnchorContext);
81
+ return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(Popover$1.Positioner, {
82
+ align,
83
+ side,
84
+ sideOffset,
85
+ collisionBoundary,
86
+ collisionPadding,
87
+ collisionAvoidance,
88
+ anchor: anchor?.current ? anchor : void 0,
89
+ className: "z-[var(--kit-z-menu,80)]",
90
+ ...KIT_SCOPE,
91
+ children: /* @__PURE__ */ jsx(Popover$1.Popup, {
92
+ initialFocus: keepFocus ? false : void 0,
93
+ finalFocus: keepFocus ? false : void 0,
94
+ onMouseDown: (e) => {
95
+ onMouseDown?.(e);
96
+ if (keepFocus && !e.target.closest("input, textarea, select, [contenteditable=true]")) e.preventDefault();
97
+ },
98
+ className: cn("glass w-72 rounded-kit-xl border p-3 text-kit-fg outline-none data-[open]:animate-kit-pop-in", className),
99
+ ...props
100
+ })
101
+ }) });
102
+ }
103
+ var HoverCard = PreviewCard.Root;
104
+ var HoverCardTrigger = PreviewCard.Trigger;
105
+ function HoverCardContent({ className, ...props }) {
106
+ return /* @__PURE__ */ jsx(PreviewCard.Portal, { children: /* @__PURE__ */ jsx(PreviewCard.Positioner, {
107
+ sideOffset: 8,
108
+ collisionPadding: 12,
109
+ className: "z-[var(--kit-z-menu,80)]",
110
+ ...KIT_SCOPE,
111
+ children: /* @__PURE__ */ jsx(PreviewCard.Popup, {
112
+ className: cn("glass w-72 rounded-kit-xl border p-3 data-[open]:animate-kit-pop-in", className),
113
+ ...props
114
+ })
115
+ }) });
116
+ }
117
+ /** Arrowing past the last item stays put (loopFocus false), like V2's Radix menus. */
118
+ function Menu({ onOpenChange, loopFocus = false, ...props }) {
119
+ return /* @__PURE__ */ jsx(Menu$1.Root, {
120
+ loopFocus,
121
+ ...props,
122
+ onOpenChange: guard(onOpenChange)
123
+ });
124
+ }
125
+ var MenuTrigger = Menu$1.Trigger;
126
+ var MenuGroup = Menu$1.Group;
127
+ var MenuSub = Menu$1.SubmenuRoot;
128
+ var MenuRadioGroup = Menu$1.RadioGroup;
129
+ function MenuContent({ className, align = "start", side, sideOffset = 6, positionerClassName, ...props }) {
130
+ return /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, {
131
+ align,
132
+ side,
133
+ sideOffset,
134
+ collisionPadding: 12,
135
+ className: cn("z-[var(--kit-z-menu,80)]", positionerClassName),
136
+ ...KIT_SCOPE,
137
+ children: /* @__PURE__ */ jsx(Menu$1.Popup, {
138
+ ...layer,
139
+ className: cn("glass max-h-[var(--available-height)] min-w-48 overflow-y-auto overflow-x-hidden rounded-kit-lg border p-1 text-kit-fg outline-none data-[open]:animate-kit-pop-in", className),
140
+ ...props
141
+ })
142
+ }) });
143
+ }
144
+ var itemCls = "relative flex h-8 cursor-pointer select-none items-center gap-2 rounded-kit-md px-2 text-kit-sm text-kit-fg outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-40 data-[highlighted]:bg-kit-hover [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-kit-fg-2";
145
+ function MenuItem({ className, icon, shortcut, danger, children, ...props }) {
146
+ return /* @__PURE__ */ jsxs(Menu$1.Item, {
147
+ className: cn(itemCls, danger && "text-kit-danger-fg data-[highlighted]:bg-kit-danger-soft [&>svg]:text-kit-danger-fg", className),
148
+ ...props,
149
+ children: [
150
+ icon,
151
+ /* @__PURE__ */ jsx("span", {
152
+ className: "min-w-0 flex-1 truncate",
153
+ children
154
+ }),
155
+ shortcut ? /* @__PURE__ */ jsx("span", {
156
+ className: "text-kit-xs text-kit-fg-3",
157
+ children: shortcut
158
+ }) : null
159
+ ]
160
+ });
161
+ }
162
+ /** Checking an item closes the menu, like V2's Radix items (pass closeOnClick={false} to keep it open). */
163
+ function MenuCheckItem({ className, children, closeOnClick = true, ...props }) {
164
+ return /* @__PURE__ */ jsxs(Menu$1.CheckboxItem, {
165
+ className: cn(itemCls, "pr-8", className),
166
+ closeOnClick,
167
+ ...props,
168
+ children: [children, /* @__PURE__ */ jsx(Menu$1.CheckboxItemIndicator, {
169
+ className: "absolute right-2",
170
+ children: /* @__PURE__ */ jsx(IconCheck, { className: "size-4" })
171
+ })]
172
+ });
173
+ }
174
+ function MenuRadioItem({ className, children, closeOnClick = true, ...props }) {
175
+ return /* @__PURE__ */ jsxs(Menu$1.RadioItem, {
176
+ className: cn(itemCls, "pr-8", className),
177
+ closeOnClick,
178
+ ...props,
179
+ children: [children, /* @__PURE__ */ jsx(Menu$1.RadioItemIndicator, {
180
+ className: "absolute right-2",
181
+ children: /* @__PURE__ */ jsx(IconCheck, { className: "size-4" })
182
+ })]
183
+ });
184
+ }
185
+ function MenuSubTrigger({ className, icon, children, ...props }) {
186
+ return /* @__PURE__ */ jsxs(Menu$1.SubmenuTrigger, {
187
+ className: cn(itemCls, "data-[popup-open]:bg-kit-hover", className),
188
+ ...props,
189
+ children: [
190
+ icon,
191
+ /* @__PURE__ */ jsx("span", {
192
+ className: "flex-1",
193
+ children
194
+ }),
195
+ /* @__PURE__ */ jsx(IconChevronRight, { className: "size-3.5 text-kit-fg-3" })
196
+ ]
197
+ });
198
+ }
199
+ function MenuSubContent({ className, ...props }) {
200
+ return /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, {
201
+ sideOffset: 6,
202
+ collisionPadding: 12,
203
+ className: "z-[calc(var(--kit-z-menu,80)_+_1)]",
204
+ ...KIT_SCOPE,
205
+ children: /* @__PURE__ */ jsx(Menu$1.Popup, {
206
+ className: cn("glass min-w-44 rounded-kit-lg border p-1 data-[open]:animate-kit-pop-in", className),
207
+ ...props
208
+ })
209
+ }) });
210
+ }
211
+ function MenuLabel({ className, ...props }) {
212
+ return /* @__PURE__ */ jsx("div", {
213
+ className: cn("px-2 pb-1 pt-1.5 text-kit-xs font-medium text-kit-fg-3", className),
214
+ ...props
215
+ });
216
+ }
217
+ function MenuSeparator({ className }) {
218
+ return /* @__PURE__ */ jsx(Separator, { className: cn("-mx-1 my-1 h-px bg-kit-line", className) });
219
+ }
220
+ var recent = [];
221
+ if (typeof document !== "undefined") document.addEventListener("focusin", (e) => {
222
+ recent.unshift(e.target);
223
+ recent.length = Math.min(recent.length, 4);
224
+ }, true);
225
+ function useFocusReturn(finalFocus) {
226
+ const ret = React.useRef(null);
227
+ const popup = React.useRef(null);
228
+ return {
229
+ ref: React.useCallback((el) => {
230
+ if (el === popup.current) return;
231
+ popup.current = el;
232
+ if (!el) return;
233
+ const active = document.activeElement;
234
+ const outside = (n) => !!n && n !== document.body && !el.contains(n);
235
+ ret.current = outside(active) ? active : recent.find(outside) ?? null;
236
+ }, []),
237
+ finalFocus: finalFocus ?? (() => {
238
+ const t = ret.current;
239
+ return t && t.isConnected ? t : true;
240
+ })
241
+ };
242
+ }
243
+ /** One stable callback ref for both refs, so React does not detach and re-attach them on every render. */
244
+ function useMergedRef(a, b) {
245
+ return React.useCallback((el) => {
246
+ for (const r of [a, b]) if (typeof r === "function") r(el);
247
+ else if (r) r.current = el;
248
+ }, [a, b]);
249
+ }
250
+ function Modal({ onOpenChange, ...props }) {
251
+ return /* @__PURE__ */ jsx(Dialog.Root, {
252
+ ...props,
253
+ onOpenChange: guard(onOpenChange)
254
+ });
255
+ }
256
+ var ModalTrigger = Dialog.Trigger;
257
+ var ModalClose = Dialog.Close;
258
+ var sizes = {
259
+ sm: "max-w-[400px]",
260
+ md: "max-w-[480px]",
261
+ lg: "max-w-[640px]",
262
+ xl: "max-w-[800px]",
263
+ full: "max-w-[min(1280px,calc(100vw-48px))] h-[min(860px,calc(100vh-48px))]"
264
+ };
265
+ function ModalContent({ className, size = "md", children, hideClose, finalFocus, ref, ...props }) {
266
+ const focusReturn = useFocusReturn(finalFocus);
267
+ const merged = useMergedRef(ref, focusReturn.ref);
268
+ return /* @__PURE__ */ jsxs(Dialog.Portal, { children: [/* @__PURE__ */ jsx(Dialog.Backdrop, {
269
+ ...KIT_SCOPE,
270
+ className: "fixed inset-0 z-[var(--kit-z-modal,60)] bg-kit-overlay backdrop-blur-[2px] data-[open]:animate-kit-fade-in"
271
+ }), /* @__PURE__ */ jsx("div", {
272
+ ...KIT_SCOPE,
273
+ className: "pointer-events-none fixed inset-0 z-[calc(var(--kit-z-modal,60)_+_1)] flex items-center justify-center p-4 sm:p-6",
274
+ children: /* @__PURE__ */ jsxs(Dialog.Popup, {
275
+ ...layer,
276
+ className: cn("pointer-events-auto relative flex max-h-[calc(100vh-32px)] w-full flex-col overflow-hidden rounded-kit-xl border border-kit-floating-line bg-kit-surface-raised text-kit-fg shadow-kit-xl outline-none data-[open]:animate-kit-pop-in", sizes[size], className),
277
+ ...props,
278
+ ref: merged,
279
+ finalFocus: focusReturn.finalFocus,
280
+ children: [children, hideClose ? null : /* @__PURE__ */ jsx(Dialog.Close, {
281
+ render: /* @__PURE__ */ jsx(IconButton, {
282
+ label: "Close",
283
+ size: "sm",
284
+ className: "absolute right-3 top-3 z-10"
285
+ }),
286
+ children: /* @__PURE__ */ jsx(IconX, {})
287
+ })]
288
+ })
289
+ })] });
290
+ }
291
+ function ModalHeader({ title, description, className, children }) {
292
+ return /* @__PURE__ */ jsx("div", {
293
+ className: cn("flex shrink-0 items-start gap-2.5 px-5 pb-1 pt-5 pr-12", className),
294
+ children: /* @__PURE__ */ jsxs("div", {
295
+ className: "min-w-0 flex-1",
296
+ children: [
297
+ /* @__PURE__ */ jsx(Dialog.Title, {
298
+ className: "text-kit-md font-semibold tracking-[-0.01em] text-kit-fg",
299
+ children: title
300
+ }),
301
+ description ? /* @__PURE__ */ jsx(Dialog.Description, {
302
+ className: "mt-1 text-kit-sm text-kit-fg-2",
303
+ children: description
304
+ }) : /* @__PURE__ */ jsx(Dialog.Description, {
305
+ className: "sr-only",
306
+ children: typeof title === "string" ? title : "Dialog"
307
+ }),
308
+ children
309
+ ]
310
+ })
311
+ });
312
+ }
313
+ function ModalBody({ className, ...props }) {
314
+ return /* @__PURE__ */ jsx("div", {
315
+ className: cn("min-h-0 flex-1 overflow-y-auto px-5 pb-5 pt-4", className),
316
+ ...props
317
+ });
318
+ }
319
+ function ModalFooter({ className, ...props }) {
320
+ return /* @__PURE__ */ jsx("div", {
321
+ className: cn("flex shrink-0 items-center justify-end gap-2 border-t border-kit-editor-tray-line bg-tray px-5 py-3", className),
322
+ ...props
323
+ });
324
+ }
325
+ var flowWidths = {
326
+ md: "sm:max-w-[480px]",
327
+ lg: "sm:max-w-[640px]",
328
+ xl: "sm:max-w-[800px]",
329
+ "2xl": "sm:max-w-[960px]"
330
+ };
331
+ function FlowModal({ open, onOpenChange, size = "lg", height = "fixed", locked, children, className }) {
332
+ const h = height === "fixed" ? "sm:h-auto sm:max-h-[min(640px,calc(100dvh-48px))]" : height === "tall" ? "sm:h-auto sm:max-h-[min(760px,calc(100dvh-48px))]" : "sm:h-auto sm:max-h-[calc(100dvh-48px)]";
333
+ const popup = React.useRef(null);
334
+ const focusReturn = useFocusReturn();
335
+ const merged = useMergedRef(popup, focusReturn.ref);
336
+ return /* @__PURE__ */ jsx(Dialog.Root, {
337
+ open,
338
+ disablePointerDismissal: locked,
339
+ onOpenChange: guard((v, details) => {
340
+ if (!v && locked) return details.cancel();
341
+ onOpenChange(v);
342
+ }),
343
+ children: /* @__PURE__ */ jsxs(Dialog.Portal, { children: [/* @__PURE__ */ jsx(Dialog.Backdrop, {
344
+ ...KIT_SCOPE,
345
+ className: "fixed inset-0 z-[var(--kit-z-modal,60)] bg-kit-overlay backdrop-blur-[2px] data-[open]:animate-kit-fade-in"
346
+ }), /* @__PURE__ */ jsx("div", {
347
+ ...KIT_SCOPE,
348
+ className: "pointer-events-none fixed inset-0 z-[calc(var(--kit-z-modal,60)_+_1)] flex items-end justify-center sm:items-center sm:p-6",
349
+ children: /* @__PURE__ */ jsx(Dialog.Popup, {
350
+ ...layer,
351
+ ref: merged,
352
+ tabIndex: -1,
353
+ initialFocus: popup,
354
+ finalFocus: focusReturn.finalFocus,
355
+ className: cn("pointer-events-auto relative flex h-dvh w-full flex-col overflow-hidden bg-kit-surface text-kit-fg shadow-kit-xl outline-none", "max-sm:data-[open]:animate-kit-slide-up", "sm:rounded-kit-xl sm:border sm:border-kit-line sm:data-[open]:animate-kit-pop-in", flowWidths[size], h, className),
356
+ children
357
+ })
358
+ })] })
359
+ });
360
+ }
361
+ function FlowClose({ disabled }) {
362
+ return /* @__PURE__ */ jsx(Dialog.Close, {
363
+ disabled,
364
+ render: /* @__PURE__ */ jsx(IconButton, {
365
+ label: "Close",
366
+ size: "sm",
367
+ className: "shrink-0",
368
+ disabled
369
+ }),
370
+ children: /* @__PURE__ */ jsx(IconX, {})
371
+ });
372
+ }
373
+ function FlowHeader({ title, description, icon, status, right, children, className, closeDisabled }) {
374
+ return /* @__PURE__ */ jsxs("div", {
375
+ className: cn("relative shrink-0 border-b border-kit-line px-5 pb-3 pt-4", className),
376
+ children: [/* @__PURE__ */ jsxs("div", {
377
+ className: "flex items-start gap-3",
378
+ "data-icon": icon ? "" : void 0,
379
+ children: [/* @__PURE__ */ jsxs("div", {
380
+ className: "min-w-0 flex-1",
381
+ children: [/* @__PURE__ */ jsxs("div", {
382
+ className: "flex flex-wrap items-center gap-x-2 gap-y-1",
383
+ children: [/* @__PURE__ */ jsx(Dialog.Title, {
384
+ className: "text-kit-md font-semibold tracking-[-0.01em] text-kit-fg",
385
+ children: title
386
+ }), status]
387
+ }), description ? /* @__PURE__ */ jsx(Dialog.Description, {
388
+ className: "mt-0.5 text-kit-sm text-kit-fg-2",
389
+ children: description
390
+ }) : /* @__PURE__ */ jsx(Dialog.Description, {
391
+ className: "sr-only",
392
+ children: typeof title === "string" ? title : "Dialog"
393
+ })]
394
+ }), /* @__PURE__ */ jsxs("div", {
395
+ className: "flex shrink-0 items-center gap-1",
396
+ children: [right, /* @__PURE__ */ jsx(FlowClose, { disabled: closeDisabled })]
397
+ })]
398
+ }), children]
399
+ });
400
+ }
401
+ /** Status chip used in flow headers ("Ready to publish" with a green dot). */
402
+ function HeaderStatus({ tone = "success", children, pulse }) {
403
+ const dot = {
404
+ success: "bg-kit-success",
405
+ warning: "bg-kit-warning",
406
+ danger: "bg-kit-danger",
407
+ info: "bg-kit-info",
408
+ accent: "bg-kit-accent",
409
+ neutral: "bg-kit-fg-4"
410
+ }[tone];
411
+ const fg = {
412
+ success: "text-kit-success-fg",
413
+ warning: "text-kit-warning-fg",
414
+ danger: "text-kit-danger-fg",
415
+ info: "text-kit-info-fg",
416
+ accent: "text-kit-accent-fg",
417
+ neutral: "text-kit-fg-2"
418
+ }[tone];
419
+ return /* @__PURE__ */ jsxs("span", {
420
+ className: cn("inline-flex h-6 items-center gap-1.5 rounded-full border border-kit-line bg-kit-subtle px-2 text-kit-xs font-medium", fg),
421
+ children: [/* @__PURE__ */ jsxs("span", {
422
+ className: "relative inline-flex size-1.5",
423
+ children: [pulse ? /* @__PURE__ */ jsx("span", { className: cn("absolute inset-0 animate-ping rounded-full opacity-60", dot) }) : null, /* @__PURE__ */ jsx("span", { className: cn("relative inline-flex size-1.5 rounded-full", dot) })]
424
+ }), children]
425
+ });
426
+ }
427
+ function FlowBody({ className, children }) {
428
+ return /* @__PURE__ */ jsx("div", {
429
+ className: cn("min-h-0 flex-1 overflow-y-auto overflow-x-hidden px-4 py-4 sm:px-5", className),
430
+ children
431
+ });
432
+ }
433
+ function FlowFooter({ left, children, className }) {
434
+ return /* @__PURE__ */ jsxs("div", {
435
+ className: cn("flex shrink-0 flex-wrap items-center gap-2 border-t border-kit-editor-tray-line bg-tray px-4 py-3 pb-[max(12px,env(safe-area-inset-bottom))] sm:px-5", className),
436
+ children: [left ? /* @__PURE__ */ jsx("div", {
437
+ className: "min-w-0 flex-1 truncate text-kit-sm text-kit-fg-3 max-sm:basis-full",
438
+ children: left
439
+ }) : /* @__PURE__ */ jsx("div", { className: "flex-1" }), /* @__PURE__ */ jsx("div", {
440
+ className: "flex flex-wrap items-center justify-end gap-2 max-sm:w-full",
441
+ children
442
+ })]
443
+ });
444
+ }
445
+ /** Small uppercase-free section label used inside flow bodies. */
446
+ function FlowLabel({ children, right, className }) {
447
+ return /* @__PURE__ */ jsxs("div", {
448
+ className: cn("mb-2 flex items-center justify-between gap-2", className),
449
+ children: [/* @__PURE__ */ jsx("h3", {
450
+ className: "text-kit-sm font-medium text-kit-fg-2",
451
+ children
452
+ }), right]
453
+ });
454
+ }
455
+ /** Radio-like option row (Figma "Publish scope" / "When" rows). */
456
+ function OptionRow({ selected, onSelect, title, description, right, disabled, children, className }) {
457
+ return /* @__PURE__ */ jsxs("div", {
458
+ className: cn("rounded-kit-lg border bg-kit-surface transition-[border-color,box-shadow,background-color] duration-150", selected ? "border-kit-line-strong bg-kit-selected" : "border-kit-line hover:border-kit-line-strong hover:bg-kit-subtle-2", disabled && "pointer-events-none opacity-50", className),
459
+ children: [/* @__PURE__ */ jsxs("button", {
460
+ type: "button",
461
+ onClick: onSelect,
462
+ "aria-pressed": selected,
463
+ disabled,
464
+ className: "flex w-full items-center gap-3 px-3 py-2.5 text-left",
465
+ children: [
466
+ /* @__PURE__ */ jsx("span", {
467
+ className: cn("flex size-4 shrink-0 items-center justify-center rounded-full border transition-colors", selected ? "border-kit-inverse bg-kit-inverse" : "border-kit-line-strong bg-kit-surface"),
468
+ children: selected ? /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-kit-surface" }) : null
469
+ }),
470
+ /* @__PURE__ */ jsxs("span", {
471
+ className: "min-w-0 flex-1",
472
+ children: [/* @__PURE__ */ jsx("span", {
473
+ className: "block text-kit-sm font-medium text-kit-fg",
474
+ children: title
475
+ }), description ? /* @__PURE__ */ jsx("span", {
476
+ className: "block text-kit-sm text-kit-fg-2",
477
+ children: description
478
+ }) : null]
479
+ }),
480
+ right
481
+ ]
482
+ }), /* @__PURE__ */ jsx(AnimatePresence, {
483
+ initial: false,
484
+ children: selected && children ? /* @__PURE__ */ jsx(motion.div, {
485
+ initial: {
486
+ height: 0,
487
+ opacity: 0
488
+ },
489
+ animate: {
490
+ height: "auto",
491
+ opacity: 1
492
+ },
493
+ exit: {
494
+ height: 0,
495
+ opacity: 0
496
+ },
497
+ transition: {
498
+ duration: .2,
499
+ ease: [
500
+ .22,
501
+ 1,
502
+ .36,
503
+ 1
504
+ ]
505
+ },
506
+ className: "overflow-hidden",
507
+ children: /* @__PURE__ */ jsx("div", {
508
+ className: "px-3 pb-3 pl-[40px]",
509
+ children
510
+ })
511
+ }) : null
512
+ })]
513
+ });
514
+ }
515
+ /** Progressive disclosure: advanced choices tucked behind "More options" (CPO D6). */
516
+ function MoreOptions({ children, label = "More options", summary, defaultOpen = false, className }) {
517
+ const [open, setOpen] = React.useState(defaultOpen);
518
+ return /* @__PURE__ */ jsxs("div", {
519
+ className,
520
+ children: [/* @__PURE__ */ jsxs("button", {
521
+ type: "button",
522
+ "aria-expanded": open,
523
+ onClick: () => setOpen((o) => !o),
524
+ className: "group flex w-full min-w-0 items-center gap-2 whitespace-nowrap rounded-kit-md py-1 text-left text-kit-sm font-medium text-kit-fg-2 hover:text-kit-fg",
525
+ children: [
526
+ /* @__PURE__ */ jsx("span", {
527
+ className: cn("flex size-5 items-center justify-center rounded-kit-md border border-kit-line bg-kit-surface text-kit-fg-3 transition-transform duration-200", open && "rotate-90"),
528
+ children: /* @__PURE__ */ jsx("svg", {
529
+ viewBox: "0 0 16 16",
530
+ className: "size-3",
531
+ fill: "none",
532
+ stroke: "currentColor",
533
+ strokeWidth: 1.75,
534
+ "aria-hidden": true,
535
+ children: /* @__PURE__ */ jsx("path", {
536
+ d: "M6 4l4 4-4 4",
537
+ strokeLinecap: "round",
538
+ strokeLinejoin: "round"
539
+ })
540
+ })
541
+ }),
542
+ label,
543
+ summary && !open ? /* @__PURE__ */ jsx("span", {
544
+ className: "ml-1 truncate text-kit-xs font-normal text-kit-fg-3",
545
+ children: summary
546
+ }) : null
547
+ ]
548
+ }), /* @__PURE__ */ jsx(AnimatePresence, {
549
+ initial: false,
550
+ children: open ? /* @__PURE__ */ jsx(motion.div, {
551
+ initial: {
552
+ height: 0,
553
+ opacity: 0
554
+ },
555
+ animate: {
556
+ height: "auto",
557
+ opacity: 1
558
+ },
559
+ exit: {
560
+ height: 0,
561
+ opacity: 0
562
+ },
563
+ transition: {
564
+ duration: .22,
565
+ ease: [
566
+ .22,
567
+ 1,
568
+ .36,
569
+ 1
570
+ ]
571
+ },
572
+ className: "overflow-hidden",
573
+ children: /* @__PURE__ */ jsx("div", {
574
+ className: "pt-3",
575
+ children
576
+ })
577
+ }) : null
578
+ })]
579
+ });
580
+ }
581
+ /** A sheet is a dialog that slides in from an edge: open it with Sheet (= Modal) and its trigger. */
582
+ var Sheet = Modal;
583
+ var SheetTrigger = Dialog.Trigger;
584
+ var SheetClose = Dialog.Close;
585
+ var sheetBase = "fixed inset-y-0 z-[calc(var(--kit-z-sheet,55)_+_1)] flex flex-col bg-kit-surface-raised shadow-kit-xl outline-none transition-transform border-kit-floating-line";
586
+ var sheetSides = {
587
+ right: "right-0 border-l border-kit-line data-[open]:animate-[kit-sheet-in-r_260ms_var(--kit-ease-out-soft)]",
588
+ left: "left-0 border-r border-kit-line data-[open]:animate-[kit-sheet-in-l_260ms_var(--kit-ease-out-soft)]",
589
+ bottom: "inset-x-0 inset-y-auto bottom-0 h-[52%] overflow-hidden rounded-t-kit-2xl border-t border-kit-line data-[open]:animate-[kit-sheet-in-b_300ms_cubic-bezier(0.32,0.72,0,1)]"
590
+ };
591
+ /** How far a bottom sheet's grabber must be pulled down before letting go closes it (V2 editor.tsx). */
592
+ var SHEET_SWIPE_CLOSE_PX = 80;
593
+ /**
594
+ * A bottom sheet's grabber as a drag handle (V2 TabletSheet / CommentsSheet drag="y"): pulled down past
595
+ * SHEET_SWIPE_CLOSE_PX it closes the sheet, short of it the sheet eases back. The sheet follows the finger through a
596
+ * transform written straight to the element (no re-render per move). Not a tab stop: Esc is the keyboard's way out.
597
+ */
598
+ function SheetGrabber({ sheet }) {
599
+ const close = React.useRef(null);
600
+ const drag = React.useRef(null);
601
+ const settle = (el) => {
602
+ const reduce = document.documentElement.hasAttribute("data-reduce-motion") || !!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
603
+ el.style.transition = reduce ? "none" : "transform 200ms cubic-bezier(0.32, 0.72, 0, 1)";
604
+ el.style.transform = "";
605
+ };
606
+ return /* @__PURE__ */ jsxs("div", {
607
+ className: "flex shrink-0 justify-center pt-2",
608
+ children: [/* @__PURE__ */ jsx("div", {
609
+ role: "button",
610
+ tabIndex: -1,
611
+ "aria-label": "Drag down to close",
612
+ "data-sheet-handle": "",
613
+ className: "hit-area [--hit-size:24px] flex h-6 w-16 cursor-grab touch-none items-start justify-center active:cursor-grabbing",
614
+ onClick: (e) => {
615
+ if (e.currentTarget.dataset.dragged !== void 0) delete e.currentTarget.dataset.dragged;
616
+ else close.current?.click();
617
+ },
618
+ onPointerDown: (e) => {
619
+ if (e.button !== 0) return;
620
+ drag.current = {
621
+ id: e.pointerId,
622
+ y: e.clientY,
623
+ dy: 0
624
+ };
625
+ e.currentTarget.setPointerCapture?.(e.pointerId);
626
+ if (sheet.current) sheet.current.style.transition = "none";
627
+ },
628
+ onPointerMove: (e) => {
629
+ const d = drag.current;
630
+ if (!d || d.id !== e.pointerId || !sheet.current) return;
631
+ d.dy = Math.max(0, e.clientY - d.y);
632
+ sheet.current.style.transform = `translateY(${d.dy}px)`;
633
+ },
634
+ onPointerUp: (e) => {
635
+ const d = drag.current;
636
+ drag.current = null;
637
+ if (!d || d.id !== e.pointerId) return;
638
+ if (d.dy > SHEET_SWIPE_CLOSE_PX) close.current?.click();
639
+ else if (sheet.current) settle(sheet.current);
640
+ if (d.dy > 4) e.currentTarget.dataset.dragged = "";
641
+ },
642
+ onPointerCancel: () => {
643
+ drag.current = null;
644
+ if (sheet.current) settle(sheet.current);
645
+ },
646
+ children: /* @__PURE__ */ jsx("span", {
647
+ "data-sheet-grabber": true,
648
+ className: "h-1 w-10 rounded-full bg-kit-line-strong"
649
+ })
650
+ }), /* @__PURE__ */ jsx(Dialog.Close, {
651
+ ref: close,
652
+ hidden: true,
653
+ tabIndex: -1,
654
+ "aria-hidden": true
655
+ })]
656
+ });
657
+ }
658
+ function SheetContent({ className, side = "right", children, width = 440, label = "Panel", noScrim = false, finalFocus, ref, style, backdropClassName, keepMounted = false, ...props }) {
659
+ const focusReturn = useFocusReturn(finalFocus);
660
+ const popup = React.useRef(null);
661
+ const merged = useMergedRef(useMergedRef(ref, focusReturn.ref), popup);
662
+ const bottom = side === "bottom";
663
+ return /* @__PURE__ */ jsxs(Dialog.Portal, {
664
+ keepMounted,
665
+ children: [noScrim ? null : /* @__PURE__ */ jsx(Dialog.Backdrop, {
666
+ ...KIT_SCOPE,
667
+ className: cn("fixed inset-0 z-[var(--kit-z-sheet,55)] bg-kit-overlay data-[open]:animate-kit-fade-in", backdropClassName)
668
+ }), /* @__PURE__ */ jsxs(Dialog.Popup, {
669
+ ...KIT_SCOPE,
670
+ ...layer,
671
+ style: bottom ? style : {
672
+ width: `min(${width}px, 100vw)`,
673
+ ...style
674
+ },
675
+ className: cn(sheetBase, sheetSides[side], className),
676
+ ...props,
677
+ ref: merged,
678
+ finalFocus: focusReturn.finalFocus,
679
+ children: [
680
+ /* @__PURE__ */ jsx(Dialog.Title, {
681
+ className: "sr-only",
682
+ children: label
683
+ }),
684
+ /* @__PURE__ */ jsx(Dialog.Description, {
685
+ className: "sr-only",
686
+ children: bottom ? "Bottom panel" : "Side panel"
687
+ }),
688
+ bottom ? /* @__PURE__ */ jsx(SheetGrabber, { sheet: popup }) : null,
689
+ children
690
+ ]
691
+ })]
692
+ });
693
+ }
694
+ //#endregion
695
+ export { FLOATING_LAYER, FlowBody, FlowClose, FlowFooter, FlowHeader, FlowLabel, FlowModal, HeaderStatus, HoverCard, HoverCardContent, HoverCardTrigger, Menu, MenuCheckItem, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, Modal, ModalBody, ModalClose, ModalContent, ModalFooter, ModalHeader, ModalTrigger, MoreOptions, OptionRow, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, Sheet, SheetClose, SheetContent, SheetTrigger, Tooltip, TooltipProvider, useFocusReturn };
696
+
697
+ //# sourceMappingURL=overlay.js.map