@bettercms-ai/kit 0.1.0 → 1.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 (947) hide show
  1. package/_virtual/_rolldown/runtime.js +13 -0
  2. package/adapters/icons.d.ts +15 -0
  3. package/adapters/icons.js +27 -0
  4. package/adapters/icons.js.map +1 -0
  5. package/adapters/lossy.d.ts +267 -0
  6. package/adapters/lossy.js +233 -0
  7. package/adapters/lossy.js.map +1 -0
  8. package/adapters/prod-types.d.ts +468 -0
  9. package/adapters/prod-types.js +646 -0
  10. package/adapters/prod-types.js.map +1 -0
  11. package/adapters/schema.d.ts +115 -0
  12. package/adapters/schema.js +2203 -0
  13. package/adapters/schema.js.map +1 -0
  14. package/adapters/values.d.ts +200 -0
  15. package/adapters/values.js +553 -0
  16. package/adapters/values.js.map +1 -0
  17. package/brand/logo.d.ts +17 -0
  18. package/brand/logo.js +9 -0
  19. package/brand/logo.js.map +1 -0
  20. package/context.d.ts +269 -0
  21. package/context.js +214 -0
  22. package/context.js.map +1 -0
  23. package/controls/button.d.ts +58 -0
  24. package/controls/button.js +507 -0
  25. package/controls/button.js.map +1 -0
  26. package/controls/c1.d.ts +11 -0
  27. package/controls/c1.js +24 -0
  28. package/controls/c1.js.map +1 -0
  29. package/controls/c2.d.ts +10 -0
  30. package/controls/c2.js +19 -0
  31. package/controls/c2.js.map +1 -0
  32. package/controls/choice.d.ts +39 -0
  33. package/controls/choice.js +410 -0
  34. package/controls/choice.js.map +1 -0
  35. package/controls/code-register.d.ts +1 -0
  36. package/controls/code-register.js +8 -0
  37. package/controls/code-register.js.map +1 -0
  38. package/controls/code.d.ts +42 -0
  39. package/controls/code.js +396 -0
  40. package/controls/code.js.map +1 -0
  41. package/controls/color.d.ts +5 -0
  42. package/controls/color.js +130 -0
  43. package/controls/color.js.map +1 -0
  44. package/controls/component-services.d.ts +114 -0
  45. package/controls/date-register.d.ts +1 -0
  46. package/controls/date-register.js +9 -0
  47. package/controls/date-register.js.map +1 -0
  48. package/controls/date-zone.d.ts +104 -0
  49. package/controls/date-zone.js +272 -0
  50. package/controls/date-zone.js.map +1 -0
  51. package/controls/date.d.ts +7 -0
  52. package/controls/date.js +458 -0
  53. package/controls/date.js.map +1 -0
  54. package/controls/form-picker-register.d.ts +1 -0
  55. package/controls/form-picker-register.js +19 -0
  56. package/controls/form-picker-register.js.map +1 -0
  57. package/controls/form-picker.d.ts +43 -0
  58. package/controls/form-picker.js +83 -0
  59. package/controls/form-picker.js.map +1 -0
  60. package/controls/icon-register.d.ts +1 -0
  61. package/controls/icon-register.js +8 -0
  62. package/controls/icon-register.js.map +1 -0
  63. package/controls/icon.d.ts +38 -0
  64. package/controls/icon.js +355 -0
  65. package/controls/icon.js.map +1 -0
  66. package/controls/index.d.ts +5 -0
  67. package/controls/index.js +37 -0
  68. package/controls/index.js.map +1 -0
  69. package/controls/json-register.d.ts +1 -0
  70. package/controls/json-register.js +8 -0
  71. package/controls/json-register.js.map +1 -0
  72. package/controls/json.d.ts +2 -0
  73. package/controls/json.js +72 -0
  74. package/controls/json.js.map +1 -0
  75. package/controls/link.d.ts +260 -0
  76. package/controls/link.js +1186 -0
  77. package/controls/link.js.map +1 -0
  78. package/controls/location-register.d.ts +1 -0
  79. package/controls/location-register.js +8 -0
  80. package/controls/location-register.js.map +1 -0
  81. package/controls/location.d.ts +16 -0
  82. package/controls/location.js +197 -0
  83. package/controls/location.js.map +1 -0
  84. package/controls/media-register.d.ts +1 -0
  85. package/controls/media-register.js +12 -0
  86. package/controls/media-register.js.map +1 -0
  87. package/controls/media-services.d.ts +40 -0
  88. package/controls/media.d.ts +73 -0
  89. package/controls/media.js +1076 -0
  90. package/controls/media.js.map +1 -0
  91. package/controls/number.d.ts +22 -0
  92. package/controls/number.js +195 -0
  93. package/controls/number.js.map +1 -0
  94. package/controls/reference-register.d.ts +1 -0
  95. package/controls/reference-register.js +10 -0
  96. package/controls/reference-register.js.map +1 -0
  97. package/controls/reference-services.d.ts +54 -0
  98. package/controls/reference.d.ts +23 -0
  99. package/controls/reference.js +761 -0
  100. package/controls/reference.js.map +1 -0
  101. package/controls/rich-text/blocks.d.ts +28 -0
  102. package/controls/rich-text/blocks.js +1532 -0
  103. package/controls/rich-text/blocks.js.map +1 -0
  104. package/controls/rich-text/catalog.d.ts +98 -0
  105. package/controls/rich-text/catalog.js +613 -0
  106. package/controls/rich-text/catalog.js.map +1 -0
  107. package/controls/rich-text/codec.d.ts +56 -0
  108. package/controls/rich-text/codec.js +32 -0
  109. package/controls/rich-text/codec.js.map +1 -0
  110. package/controls/rich-text/component-card.d.ts +14 -0
  111. package/controls/rich-text/component-card.js +706 -0
  112. package/controls/rich-text/component-card.js.map +1 -0
  113. package/controls/rich-text/control.d.ts +21 -0
  114. package/controls/rich-text/control.js +254 -0
  115. package/controls/rich-text/control.js.map +1 -0
  116. package/controls/rich-text/dom.d.ts +190 -0
  117. package/controls/rich-text/dom.js +690 -0
  118. package/controls/rich-text/dom.js.map +1 -0
  119. package/controls/rich-text/editor.d.ts +50 -0
  120. package/controls/rich-text/editor.js +1530 -0
  121. package/controls/rich-text/editor.js.map +1 -0
  122. package/controls/rich-text/floating.d.ts +23 -0
  123. package/controls/rich-text/floating.js +137 -0
  124. package/controls/rich-text/floating.js.map +1 -0
  125. package/controls/rich-text/index.d.ts +1 -0
  126. package/controls/rich-text/index.js +12 -0
  127. package/controls/rich-text/index.js.map +1 -0
  128. package/controls/rich-text/link-form.d.ts +13 -0
  129. package/controls/rich-text/link-form.js +111 -0
  130. package/controls/rich-text/link-form.js.map +1 -0
  131. package/controls/rich-text/markdown.d.ts +6 -0
  132. package/controls/rich-text/markdown.js +179 -0
  133. package/controls/rich-text/markdown.js.map +1 -0
  134. package/controls/rich-text/ops.d.ts +35 -0
  135. package/controls/rich-text/ops.js +314 -0
  136. package/controls/rich-text/ops.js.map +1 -0
  137. package/controls/rich-text/toolbar.d.ts +85 -0
  138. package/controls/rich-text/toolbar.js +338 -0
  139. package/controls/rich-text/toolbar.js.map +1 -0
  140. package/controls/scale.d.ts +56 -0
  141. package/controls/scale.js +563 -0
  142. package/controls/scale.js.map +1 -0
  143. package/controls/slot-register.d.ts +1 -0
  144. package/controls/slot-register.js +16 -0
  145. package/controls/slot-register.js.map +1 -0
  146. package/controls/slot-services.d.ts +97 -0
  147. package/controls/slot-services.js +38 -0
  148. package/controls/slot-services.js.map +1 -0
  149. package/controls/slot.d.ts +33 -0
  150. package/controls/slot.js +348 -0
  151. package/controls/slot.js.map +1 -0
  152. package/controls/table/index.d.ts +1 -0
  153. package/controls/table/index.js +12 -0
  154. package/controls/table/index.js.map +1 -0
  155. package/controls/table/prod.d.ts +21 -0
  156. package/controls/table/prod.js +79 -0
  157. package/controls/table/prod.js.map +1 -0
  158. package/controls/table/refs.d.ts +50 -0
  159. package/controls/table/refs.js +68 -0
  160. package/controls/table/refs.js.map +1 -0
  161. package/controls/table/stored.d.ts +15 -0
  162. package/controls/table/stored.js +44 -0
  163. package/controls/table/stored.js.map +1 -0
  164. package/controls/table/table-editor.d.ts +103 -0
  165. package/controls/table/table-editor.js +2722 -0
  166. package/controls/table/table-editor.js.map +1 -0
  167. package/controls/table/table-link.d.ts +24 -0
  168. package/controls/table/table-link.js +180 -0
  169. package/controls/table/table-link.js.map +1 -0
  170. package/controls/table/table.d.ts +9 -0
  171. package/controls/table/table.js +103 -0
  172. package/controls/table/table.js.map +1 -0
  173. package/controls/text.d.ts +17 -0
  174. package/controls/text.js +287 -0
  175. package/controls/text.js.map +1 -0
  176. package/engine/array.d.ts +101 -0
  177. package/engine/array.js +893 -0
  178. package/engine/array.js.map +1 -0
  179. package/engine/bits.d.ts +24 -0
  180. package/engine/bits.js +60 -0
  181. package/engine/bits.js.map +1 -0
  182. package/engine/breadcrumb.d.ts +45 -0
  183. package/engine/breadcrumb.js +87 -0
  184. package/engine/breadcrumb.js.map +1 -0
  185. package/engine/expand.d.ts +68 -0
  186. package/engine/expand.js +170 -0
  187. package/engine/expand.js.map +1 -0
  188. package/engine/field-list.d.ts +20 -0
  189. package/engine/field-list.js +19 -0
  190. package/engine/field-list.js.map +1 -0
  191. package/engine/field-shell.d.ts +49 -0
  192. package/engine/field-shell.js +860 -0
  193. package/engine/field-shell.js.map +1 -0
  194. package/engine/frame.d.ts +120 -0
  195. package/engine/frame.js +599 -0
  196. package/engine/frame.js.map +1 -0
  197. package/engine/group-summary.d.ts +4 -0
  198. package/engine/group-summary.js +66 -0
  199. package/engine/group-summary.js.map +1 -0
  200. package/engine/grouping.d.ts +224 -0
  201. package/engine/grouping.js +824 -0
  202. package/engine/grouping.js.map +1 -0
  203. package/engine/item-list.d.ts +89 -0
  204. package/engine/item-list.js +703 -0
  205. package/engine/item-list.js.map +1 -0
  206. package/engine/kit-field.d.ts +72 -0
  207. package/engine/kit-field.js +523 -0
  208. package/engine/kit-field.js.map +1 -0
  209. package/engine/schema-form.d.ts +91 -0
  210. package/engine/schema-form.js +320 -0
  211. package/engine/schema-form.js.map +1 -0
  212. package/engine/slot.d.ts +13 -0
  213. package/engine/slot.js +226 -0
  214. package/engine/slot.js.map +1 -0
  215. package/index.d.ts +46 -0
  216. package/index.js +55 -0
  217. package/index.js.map +1 -0
  218. package/kit.css +56 -0
  219. package/lib/cn.d.ts +4 -0
  220. package/lib/cn.js +53 -0
  221. package/lib/cn.js.map +1 -0
  222. package/lib/columns.d.ts +14 -0
  223. package/lib/columns.js +27 -0
  224. package/lib/columns.js.map +1 -0
  225. package/lib/frames.d.ts +36 -0
  226. package/lib/frames.js +214 -0
  227. package/lib/frames.js.map +1 -0
  228. package/lib/icons.d.ts +16 -0
  229. package/lib/icons.js +172 -0
  230. package/lib/icons.js.map +1 -0
  231. package/lib/path.d.ts +29 -0
  232. package/lib/path.js +64 -0
  233. package/lib/path.js.map +1 -0
  234. package/lib/schema.d.ts +49 -0
  235. package/lib/schema.js +287 -0
  236. package/lib/schema.js.map +1 -0
  237. package/lib/utils.d.ts +7 -0
  238. package/lib/utils.js +37 -0
  239. package/lib/utils.js.map +1 -0
  240. package/lib/validate.d.ts +20 -0
  241. package/lib/validate.js +150 -0
  242. package/lib/validate.js.map +1 -0
  243. package/package.json +31 -59
  244. package/schema/adapters.d.ts +28 -0
  245. package/schema/adapters.js +493 -0
  246. package/schema/adapters.js.map +1 -0
  247. package/schema/help.d.ts +25 -0
  248. package/schema/help.js +54 -0
  249. package/schema/help.js.map +1 -0
  250. package/schema/scale.d.ts +69 -0
  251. package/schema/scale.js +250 -0
  252. package/schema/scale.js.map +1 -0
  253. package/schema/sources.d.ts +103 -0
  254. package/schema/sources.js +65 -0
  255. package/schema/sources.js.map +1 -0
  256. package/schema/table.d.ts +319 -0
  257. package/schema/table.js +1198 -0
  258. package/schema/table.js.map +1 -0
  259. package/schema/types.d.ts +269 -0
  260. package/schema/types.js +14 -0
  261. package/schema/types.js.map +1 -0
  262. package/types.d.ts +17 -0
  263. package/ui/action-tray.d.ts +54 -0
  264. package/ui/action-tray.js +153 -0
  265. package/ui/action-tray.js.map +1 -0
  266. package/ui/button.d.ts +57 -0
  267. package/ui/button.js +202 -0
  268. package/ui/button.js.map +1 -0
  269. package/ui/choice-switch.d.ts +36 -0
  270. package/ui/choice-switch.js +57 -0
  271. package/ui/choice-switch.js.map +1 -0
  272. package/ui/controls.d.ts +83 -0
  273. package/ui/controls.js +319 -0
  274. package/ui/controls.js.map +1 -0
  275. package/ui/display.d.ts +156 -0
  276. package/ui/display.js +444 -0
  277. package/ui/display.js.map +1 -0
  278. package/ui/expanded-editor-modal.d.ts +26 -0
  279. package/ui/expanded-editor-modal.js +140 -0
  280. package/ui/expanded-editor-modal.js.map +1 -0
  281. package/ui/field-context.d.ts +12 -0
  282. package/ui/field-context.js +23 -0
  283. package/ui/field-context.js.map +1 -0
  284. package/ui/floating-panel.d.ts +152 -0
  285. package/ui/floating-panel.js +912 -0
  286. package/ui/floating-panel.js.map +1 -0
  287. package/ui/index.d.ts +12 -0
  288. package/ui/index.js +13 -0
  289. package/ui/input.d.ts +78 -0
  290. package/ui/input.js +250 -0
  291. package/ui/input.js.map +1 -0
  292. package/ui/mode-bar.d.ts +31 -0
  293. package/ui/mode-bar.js +65 -0
  294. package/ui/mode-bar.js.map +1 -0
  295. package/ui/overlay.d.ts +123 -0
  296. package/ui/overlay.js +378 -0
  297. package/ui/overlay.js.map +1 -0
  298. package/ui/path-crumbs.d.ts +90 -0
  299. package/ui/path-crumbs.js +532 -0
  300. package/ui/path-crumbs.js.map +1 -0
  301. package/ui/presence.d.ts +16 -0
  302. package/ui/presence.js +65 -0
  303. package/ui/presence.js.map +1 -0
  304. package/ui/select.d.ts +66 -0
  305. package/ui/select.js +405 -0
  306. package/ui/select.js.map +1 -0
  307. package/ui/shortcut-hint.d.ts +14 -0
  308. package/ui/shortcut-hint.js +35 -0
  309. package/ui/shortcut-hint.js.map +1 -0
  310. package/ui/surfaces.d.ts +23 -0
  311. package/ui/surfaces.js +26 -0
  312. package/ui/surfaces.js.map +1 -0
  313. package/ui/tooltip-root.d.ts +12 -0
  314. package/ui/tooltip-root.js +76 -0
  315. package/ui/tooltip-root.js.map +1 -0
  316. package/ui/variants.d.ts +15 -0
  317. package/ui/variants.js +14 -0
  318. package/ui/variants.js.map +1 -0
  319. package/LICENSE +0 -21
  320. package/README.md +0 -27
  321. package/dist/_chunks-cjs/_visual-editing.js +0 -5898
  322. package/dist/_chunks-cjs/refractor.js +0 -22
  323. package/dist/_chunks-es/_visual-editing.mjs +0 -5904
  324. package/dist/_chunks-es/refractor.mjs +0 -25
  325. package/dist/_color.d.mts +0 -119
  326. package/dist/_color.d.ts +0 -119
  327. package/dist/_color.js +0 -1412
  328. package/dist/_color.mjs +0 -1411
  329. package/dist/_visual-editing.d.mts +0 -1126
  330. package/dist/_visual-editing.d.ts +0 -1126
  331. package/dist/_visual-editing.js +0 -30
  332. package/dist/_visual-editing.mjs +0 -30
  333. package/dist/index.d.mts +0 -3140
  334. package/dist/index.d.ts +0 -3140
  335. package/dist/index.js +0 -2036
  336. package/dist/index.mjs +0 -2044
  337. package/dist/theme.d.mts +0 -1506
  338. package/dist/theme.d.ts +0 -1506
  339. package/dist/theme.js +0 -4126
  340. package/dist/theme.mjs +0 -4126
  341. package/exports/_visual-editing.ts +0 -31
  342. package/exports/index.ts +0 -1
  343. package/exports/theme.ts +0 -1
  344. package/src/color/index.d.mts +0 -119
  345. package/src/color/index.mjs +0 -1411
  346. package/src/core/__workshop__/constants.ts +0 -293
  347. package/src/core/_compat.ts +0 -264
  348. package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
  349. package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
  350. package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
  351. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
  352. package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
  353. package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
  354. package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
  355. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
  356. package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
  357. package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
  358. package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
  359. package/src/core/components/autocomplete/autocomplete.tsx +0 -767
  360. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -45
  361. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  362. package/src/core/components/autocomplete/constants.ts +0 -28
  363. package/src/core/components/autocomplete/index.ts +0 -2
  364. package/src/core/components/autocomplete/types.ts +0 -108
  365. package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
  366. package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
  367. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
  368. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -51
  369. package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -133
  370. package/src/core/components/breadcrumbs/index.ts +0 -1
  371. package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
  372. package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
  373. package/src/core/components/dialog/__workshop__/index.ts +0 -19
  374. package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
  375. package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
  376. package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
  377. package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
  378. package/src/core/components/dialog/__workshop__/position.tsx +0 -30
  379. package/src/core/components/dialog/__workshop__/props.tsx +0 -75
  380. package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
  381. package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
  382. package/src/core/components/dialog/dialog.tsx +0 -430
  383. package/src/core/components/dialog/dialogContext.ts +0 -20
  384. package/src/core/components/dialog/dialogProvider.tsx +0 -35
  385. package/src/core/components/dialog/index.ts +0 -4
  386. package/src/core/components/dialog/styles.ts +0 -77
  387. package/src/core/components/dialog/useDialog.ts +0 -11
  388. package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
  389. package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
  390. package/src/core/components/hotkeys/hotkeys.test.tsx +0 -42
  391. package/src/core/components/hotkeys/hotkeys.tsx +0 -66
  392. package/src/core/components/hotkeys/index.ts +0 -1
  393. package/src/core/components/index.ts +0 -9
  394. package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
  395. package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
  396. package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
  397. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
  398. package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
  399. package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
  400. package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
  401. package/src/core/components/menu/__workshop__/groups.tsx +0 -156
  402. package/src/core/components/menu/__workshop__/index.ts +0 -89
  403. package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
  404. package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -58
  405. package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
  406. package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
  407. package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
  408. package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
  409. package/src/core/components/menu/__workshop__/tones.tsx +0 -25
  410. package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
  411. package/src/core/components/menu/helpers.ts +0 -82
  412. package/src/core/components/menu/index.ts +0 -5
  413. package/src/core/components/menu/menu.spacing.test.tsx +0 -63
  414. package/src/core/components/menu/menu.test.tsx +0 -125
  415. package/src/core/components/menu/menu.tsx +0 -178
  416. package/src/core/components/menu/menuButton.tsx +0 -268
  417. package/src/core/components/menu/menuContext.ts +0 -18
  418. package/src/core/components/menu/menuDivider.ts +0 -23
  419. package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -63
  420. package/src/core/components/menu/menuGroup.tsx +0 -233
  421. package/src/core/components/menu/menuItem.spacing.test.tsx +0 -59
  422. package/src/core/components/menu/menuItem.tsx +0 -197
  423. package/src/core/components/menu/useMenu.ts +0 -21
  424. package/src/core/components/menu/useMenuController.ts +0 -231
  425. package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
  426. package/src/core/components/skeleton/__workshop__/index.ts +0 -11
  427. package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
  428. package/src/core/components/skeleton/index.ts +0 -2
  429. package/src/core/components/skeleton/skeleton.tsx +0 -57
  430. package/src/core/components/skeleton/styles.ts +0 -50
  431. package/src/core/components/skeleton/textSkeleton.tsx +0 -122
  432. package/src/core/components/tab/__workshop__/example.tsx +0 -79
  433. package/src/core/components/tab/__workshop__/index.ts +0 -14
  434. package/src/core/components/tab/index.ts +0 -3
  435. package/src/core/components/tab/tab.tsx +0 -101
  436. package/src/core/components/tab/tabList.test.tsx +0 -48
  437. package/src/core/components/tab/tabList.tsx +0 -70
  438. package/src/core/components/tab/tabPanel.tsx +0 -39
  439. package/src/core/components/toast/__workshop__/hook.tsx +0 -71
  440. package/src/core/components/toast/__workshop__/index.ts +0 -19
  441. package/src/core/components/toast/__workshop__/toast.tsx +0 -26
  442. package/src/core/components/toast/index.ts +0 -4
  443. package/src/core/components/toast/styles.ts +0 -77
  444. package/src/core/components/toast/toast.test.tsx +0 -101
  445. package/src/core/components/toast/toast.tsx +0 -198
  446. package/src/core/components/toast/toastContext.ts +0 -7
  447. package/src/core/components/toast/toastLayer.tsx +0 -51
  448. package/src/core/components/toast/toastProvider.tsx +0 -113
  449. package/src/core/components/toast/toastState.ts +0 -6
  450. package/src/core/components/toast/types.ts +0 -26
  451. package/src/core/components/toast/useToast.ts +0 -25
  452. package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
  453. package/src/core/components/tree/__workshop__/basic.tsx +0 -105
  454. package/src/core/components/tree/__workshop__/index.ts +0 -21
  455. package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
  456. package/src/core/components/tree/helpers.ts +0 -105
  457. package/src/core/components/tree/index.ts +0 -4
  458. package/src/core/components/tree/style.ts +0 -105
  459. package/src/core/components/tree/tree.test.tsx +0 -55
  460. package/src/core/components/tree/tree.tsx +0 -240
  461. package/src/core/components/tree/treeContext.ts +0 -10
  462. package/src/core/components/tree/treeGroup.tsx +0 -28
  463. package/src/core/components/tree/treeItem.test.tsx +0 -65
  464. package/src/core/components/tree/treeItem.tsx +0 -224
  465. package/src/core/components/tree/types.ts +0 -25
  466. package/src/core/components/tree/useTree.ts +0 -17
  467. package/src/core/constants.ts +0 -79
  468. package/src/core/helpers/animation.ts +0 -27
  469. package/src/core/helpers/element.ts +0 -55
  470. package/src/core/helpers/focus.ts +0 -100
  471. package/src/core/helpers/index.ts +0 -4
  472. package/src/core/helpers/scroll.ts +0 -15
  473. package/src/core/hooks/index.ts +0 -12
  474. package/src/core/hooks/useArrayProp.ts +0 -17
  475. package/src/core/hooks/useClickOutside.test.tsx +0 -482
  476. package/src/core/hooks/useClickOutside.ts +0 -118
  477. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -115
  478. package/src/core/hooks/useClickOutsideEvent.ts +0 -73
  479. package/src/core/hooks/useCustomValidity.ts +0 -13
  480. package/src/core/hooks/useDelayed.test.ts +0 -88
  481. package/src/core/hooks/useDelayedState.ts +0 -36
  482. package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
  483. package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
  484. package/src/core/hooks/useElementRect/index.ts +0 -1
  485. package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
  486. package/src/core/hooks/useElementSize.ts +0 -19
  487. package/src/core/hooks/useForwardedRef.ts +0 -19
  488. package/src/core/hooks/useGlobalKeyDown.ts +0 -24
  489. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  490. package/src/core/hooks/useMatchMedia.ts +0 -28
  491. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
  492. package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
  493. package/src/core/hooks/useMediaIndex/index.ts +0 -1
  494. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -36
  495. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
  496. package/src/core/hooks/useMounted.ts +0 -15
  497. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
  498. package/src/core/hooks/usePrefersDark.test.tsx +0 -19
  499. package/src/core/hooks/usePrefersDark.ts +0 -16
  500. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  501. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -19
  502. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  503. package/src/core/index.ts +0 -10
  504. package/src/core/lib/createGlobalScopedContext.ts +0 -36
  505. package/src/core/lib/globalScope.ts +0 -19
  506. package/src/core/lib/isRecord.ts +0 -3
  507. package/src/core/middleware/origin.ts +0 -47
  508. package/src/core/observers/elementSizeObserver.ts +0 -116
  509. package/src/core/observers/index.ts +0 -2
  510. package/src/core/observers/resizeObserver.ts +0 -9
  511. package/src/core/primitives/_selectable/index.ts +0 -1
  512. package/src/core/primitives/_selectable/selectable.tsx +0 -15
  513. package/src/core/primitives/_selectable/style.ts +0 -115
  514. package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
  515. package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
  516. package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
  517. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
  518. package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
  519. package/src/core/primitives/avatar/avatar.tsx +0 -200
  520. package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
  521. package/src/core/primitives/avatar/avatarStack.tsx +0 -100
  522. package/src/core/primitives/avatar/index.ts +0 -4
  523. package/src/core/primitives/avatar/styles.ts +0 -167
  524. package/src/core/primitives/avatar/types.ts +0 -17
  525. package/src/core/primitives/badge/__workshop__/index.ts +0 -19
  526. package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
  527. package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
  528. package/src/core/primitives/badge/badge.test.tsx +0 -16
  529. package/src/core/primitives/badge/badge.tsx +0 -70
  530. package/src/core/primitives/badge/index.ts +0 -1
  531. package/src/core/primitives/badge/styles.ts +0 -20
  532. package/src/core/primitives/badge/types.ts +0 -8
  533. package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
  534. package/src/core/primitives/box/__workshop__/index.ts +0 -24
  535. package/src/core/primitives/box/__workshop__/props.tsx +0 -20
  536. package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
  537. package/src/core/primitives/box/box.test.tsx +0 -142
  538. package/src/core/primitives/box/box.tsx +0 -154
  539. package/src/core/primitives/box/index.ts +0 -1
  540. package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
  541. package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
  542. package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
  543. package/src/core/primitives/button/__workshop__/index.ts +0 -59
  544. package/src/core/primitives/button/__workshop__/labelUploadButton.tsx +0 -36
  545. package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
  546. package/src/core/primitives/button/__workshop__/props.tsx +0 -55
  547. package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
  548. package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
  549. package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
  550. package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
  551. package/src/core/primitives/button/button.test.tsx +0 -82
  552. package/src/core/primitives/button/button.tsx +0 -210
  553. package/src/core/primitives/button/index.ts +0 -1
  554. package/src/core/primitives/button/styles.ts +0 -117
  555. package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
  556. package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
  557. package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
  558. package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
  559. package/src/core/primitives/card/__workshop__/index.ts +0 -18
  560. package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
  561. package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
  562. package/src/core/primitives/card/__workshop__/props.tsx +0 -53
  563. package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
  564. package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
  565. package/src/core/primitives/card/card.tsx +0 -128
  566. package/src/core/primitives/card/index.ts +0 -2
  567. package/src/core/primitives/card/styles.ts +0 -147
  568. package/src/core/primitives/card/types.ts +0 -11
  569. package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
  570. package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
  571. package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
  572. package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
  573. package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
  574. package/src/core/primitives/checkbox/checkbox.tsx +0 -73
  575. package/src/core/primitives/checkbox/index.ts +0 -1
  576. package/src/core/primitives/checkbox/styles.ts +0 -128
  577. package/src/core/primitives/code/__workshop__/index.ts +0 -19
  578. package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
  579. package/src/core/primitives/code/__workshop__/props.tsx +0 -21
  580. package/src/core/primitives/code/code.tsx +0 -55
  581. package/src/core/primitives/code/index.ts +0 -1
  582. package/src/core/primitives/code/refractor.tsx +0 -20
  583. package/src/core/primitives/code/styles.ts +0 -77
  584. package/src/core/primitives/container/__workshop__/example.tsx +0 -20
  585. package/src/core/primitives/container/__workshop__/index.ts +0 -8
  586. package/src/core/primitives/container/container.tsx +0 -54
  587. package/src/core/primitives/container/index.ts +0 -2
  588. package/src/core/primitives/container/styles.ts +0 -23
  589. package/src/core/primitives/container/types.ts +0 -6
  590. package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
  591. package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
  592. package/src/core/primitives/flex/__workshop__/index.ts +0 -11
  593. package/src/core/primitives/flex/flex.tsx +0 -64
  594. package/src/core/primitives/flex/index.ts +0 -1
  595. package/src/core/primitives/grid/__workshop__/index.ts +0 -10
  596. package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
  597. package/src/core/primitives/grid/grid.test.tsx +0 -80
  598. package/src/core/primitives/grid/grid.tsx +0 -74
  599. package/src/core/primitives/grid/index.ts +0 -1
  600. package/src/core/primitives/heading/__workshop__/index.ts +0 -19
  601. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
  602. package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
  603. package/src/core/primitives/heading/heading.tsx +0 -88
  604. package/src/core/primitives/heading/index.ts +0 -1
  605. package/src/core/primitives/heading/styles.ts +0 -64
  606. package/src/core/primitives/heading/types.ts +0 -7
  607. package/src/core/primitives/index.ts +0 -27
  608. package/src/core/primitives/inline/__workshop__/index.ts +0 -8
  609. package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
  610. package/src/core/primitives/inline/index.ts +0 -1
  611. package/src/core/primitives/inline/inline.test.tsx +0 -51
  612. package/src/core/primitives/inline/inline.tsx +0 -63
  613. package/src/core/primitives/inline/styles.ts +0 -32
  614. package/src/core/primitives/inline/types.ts +0 -6
  615. package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
  616. package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
  617. package/src/core/primitives/kbd/index.ts +0 -1
  618. package/src/core/primitives/kbd/kbd.tsx +0 -69
  619. package/src/core/primitives/label/__workshop__/index.ts +0 -19
  620. package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
  621. package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
  622. package/src/core/primitives/label/index.ts +0 -1
  623. package/src/core/primitives/label/label.tsx +0 -87
  624. package/src/core/primitives/label/styles.ts +0 -45
  625. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
  626. package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  627. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
  628. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  629. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
  630. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
  631. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
  632. package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
  633. package/src/core/primitives/popover/__workshop__/index.ts +0 -49
  634. package/src/core/primitives/popover/constants.ts +0 -22
  635. package/src/core/primitives/popover/floating-ui/size.ts +0 -99
  636. package/src/core/primitives/popover/helpers.ts +0 -31
  637. package/src/core/primitives/popover/index.ts +0 -2
  638. package/src/core/primitives/popover/popover.tsx +0 -511
  639. package/src/core/primitives/popover/popoverCard.tsx +0 -166
  640. package/src/core/primitives/popover/types.ts +0 -7
  641. package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
  642. package/src/core/primitives/radio/__workshop__/index.ts +0 -11
  643. package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
  644. package/src/core/primitives/radio/index.ts +0 -1
  645. package/src/core/primitives/radio/radio.tsx +0 -51
  646. package/src/core/primitives/radio/styles.ts +0 -117
  647. package/src/core/primitives/select/__workshop__/index.ts +0 -11
  648. package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
  649. package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
  650. package/src/core/primitives/select/index.ts +0 -1
  651. package/src/core/primitives/select/select.test.tsx +0 -52
  652. package/src/core/primitives/select/select.tsx +0 -94
  653. package/src/core/primitives/select/styles.ts +0 -166
  654. package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
  655. package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
  656. package/src/core/primitives/spinner/index.ts +0 -1
  657. package/src/core/primitives/spinner/spinner.tsx +0 -46
  658. package/src/core/primitives/stack/__workshop__/index.ts +0 -14
  659. package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
  660. package/src/core/primitives/stack/index.ts +0 -1
  661. package/src/core/primitives/stack/stack.test.tsx +0 -57
  662. package/src/core/primitives/stack/stack.tsx +0 -57
  663. package/src/core/primitives/stack/styles.ts +0 -32
  664. package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
  665. package/src/core/primitives/switch/__workshop__/index.ts +0 -11
  666. package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
  667. package/src/core/primitives/switch/index.ts +0 -1
  668. package/src/core/primitives/switch/styles.ts +0 -173
  669. package/src/core/primitives/switch/switch.tsx +0 -68
  670. package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
  671. package/src/core/primitives/text/__workshop__/example.tsx +0 -39
  672. package/src/core/primitives/text/__workshop__/index.ts +0 -24
  673. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
  674. package/src/core/primitives/text/index.ts +0 -1
  675. package/src/core/primitives/text/styles.ts +0 -74
  676. package/src/core/primitives/text/text.tsx +0 -89
  677. package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
  678. package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
  679. package/src/core/primitives/textArea/index.ts +0 -1
  680. package/src/core/primitives/textArea/textArea.tsx +0 -120
  681. package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
  682. package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
  683. package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
  684. package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
  685. package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
  686. package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
  687. package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
  688. package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
  689. package/src/core/primitives/textInput/index.ts +0 -1
  690. package/src/core/primitives/textInput/textInput.test.tsx +0 -48
  691. package/src/core/primitives/textInput/textInput.tsx +0 -395
  692. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
  693. package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
  694. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
  695. package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
  696. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
  697. package/src/core/primitives/tooltip/constants.ts +0 -23
  698. package/src/core/primitives/tooltip/index.ts +0 -2
  699. package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
  700. package/src/core/primitives/tooltip/tooltip.tsx +0 -495
  701. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -109
  702. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  703. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
  704. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
  705. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
  706. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  707. package/src/core/primitives/types.ts +0 -179
  708. package/src/core/styles/border/borderStyle.ts +0 -56
  709. package/src/core/styles/border/index.ts +0 -2
  710. package/src/core/styles/border/types.ts +0 -10
  711. package/src/core/styles/box/boxStyle.ts +0 -69
  712. package/src/core/styles/box/index.ts +0 -2
  713. package/src/core/styles/box/types.ts +0 -11
  714. package/src/core/styles/card/_cardColorStyle.ts +0 -108
  715. package/src/core/styles/card/index.ts +0 -1
  716. package/src/core/styles/flex/flexItemStyle.ts +0 -27
  717. package/src/core/styles/flex/flexStyle.ts +0 -70
  718. package/src/core/styles/flex/index.ts +0 -3
  719. package/src/core/styles/flex/types.ts +0 -25
  720. package/src/core/styles/focusRing/index.ts +0 -25
  721. package/src/core/styles/font/codeFontStyle.ts +0 -13
  722. package/src/core/styles/font/headingFontStyle.ts +0 -13
  723. package/src/core/styles/font/index.ts +0 -6
  724. package/src/core/styles/font/labelFontStyle.ts +0 -13
  725. package/src/core/styles/font/responsiveFont.ts +0 -103
  726. package/src/core/styles/font/textAlignStyle.ts +0 -19
  727. package/src/core/styles/font/textFontStyle.ts +0 -13
  728. package/src/core/styles/font/types.ts +0 -35
  729. package/src/core/styles/grid/gridItemStyle.ts +0 -82
  730. package/src/core/styles/grid/gridStyle.ts +0 -108
  731. package/src/core/styles/grid/index.ts +0 -3
  732. package/src/core/styles/grid/types.ts +0 -37
  733. package/src/core/styles/helpers.ts +0 -72
  734. package/src/core/styles/index.ts +0 -5
  735. package/src/core/styles/input/index.ts +0 -2
  736. package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
  737. package/src/core/styles/input/textInputStyle.ts +0 -263
  738. package/src/core/styles/internal.ts +0 -12
  739. package/src/core/styles/margin/index.ts +0 -2
  740. package/src/core/styles/margin/marginStyle.ts +0 -21
  741. package/src/core/styles/margin/marginsStyle.test.ts +0 -33
  742. package/src/core/styles/margin/types.ts +0 -9
  743. package/src/core/styles/padding/index.ts +0 -2
  744. package/src/core/styles/padding/paddingStyle.test.ts +0 -33
  745. package/src/core/styles/padding/paddingStyle.ts +0 -21
  746. package/src/core/styles/padding/types.ts +0 -12
  747. package/src/core/styles/radius/index.ts +0 -2
  748. package/src/core/styles/radius/radiusStyle.ts +0 -23
  749. package/src/core/styles/radius/types.ts +0 -8
  750. package/src/core/styles/shadow/index.ts +0 -2
  751. package/src/core/styles/shadow/shadowStyle.ts +0 -29
  752. package/src/core/styles/shadow/types.ts +0 -6
  753. package/src/core/styles/types.ts +0 -8
  754. package/src/core/theme/__workshop__/build/Root.tsx +0 -367
  755. package/src/core/theme/__workshop__/build/helpers.ts +0 -46
  756. package/src/core/theme/__workshop__/build/story.tsx +0 -465
  757. package/src/core/theme/__workshop__/canvas.tsx +0 -352
  758. package/src/core/theme/__workshop__/color.tsx +0 -62
  759. package/src/core/theme/__workshop__/debug/story.tsx +0 -408
  760. package/src/core/theme/__workshop__/index.ts +0 -39
  761. package/src/core/theme/__workshop__/layer.tsx +0 -78
  762. package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
  763. package/src/core/theme/index.ts +0 -5
  764. package/src/core/theme/theme.test.tsx +0 -73
  765. package/src/core/theme/themeColorProvider.tsx +0 -29
  766. package/src/core/theme/themeContext.ts +0 -10
  767. package/src/core/theme/themeProvider.tsx +0 -62
  768. package/src/core/theme/types.ts +0 -12
  769. package/src/core/theme/useRootTheme.ts +0 -17
  770. package/src/core/theme/useTheme.ts +0 -16
  771. package/src/core/types/avatar.ts +0 -14
  772. package/src/core/types/badge.ts +0 -12
  773. package/src/core/types/box.ts +0 -19
  774. package/src/core/types/button.ts +0 -21
  775. package/src/core/types/card.ts +0 -6
  776. package/src/core/types/component.ts +0 -32
  777. package/src/core/types/dialog.ts +0 -4
  778. package/src/core/types/flex.ts +0 -30
  779. package/src/core/types/grid.ts +0 -14
  780. package/src/core/types/gridItem.ts +0 -29
  781. package/src/core/types/index.ts +0 -15
  782. package/src/core/types/placement.ts +0 -18
  783. package/src/core/types/popover.ts +0 -4
  784. package/src/core/types/radius.ts +0 -4
  785. package/src/core/types/selectable.ts +0 -6
  786. package/src/core/types/text.ts +0 -4
  787. package/src/core/utils/arrow/arrow.tsx +0 -123
  788. package/src/core/utils/arrow/cmds.ts +0 -91
  789. package/src/core/utils/arrow/index.ts +0 -1
  790. package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
  791. package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
  792. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -100
  793. package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
  794. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
  795. package/src/core/utils/boundaryElement/index.ts +0 -3
  796. package/src/core/utils/boundaryElement/types.ts +0 -7
  797. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
  798. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -21
  799. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  800. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
  801. package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
  802. package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
  803. package/src/core/utils/elementQuery/helpers.ts +0 -27
  804. package/src/core/utils/elementQuery/index.ts +0 -1
  805. package/src/core/utils/errorBoundary.tsx +0 -48
  806. package/src/core/utils/getElementRef.ts +0 -26
  807. package/src/core/utils/index.ts +0 -9
  808. package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
  809. package/src/core/utils/layer/__workshop__/index.ts +0 -24
  810. package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
  811. package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
  812. package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
  813. package/src/core/utils/layer/getLayerContext.test.ts +0 -30
  814. package/src/core/utils/layer/getLayerContext.ts +0 -21
  815. package/src/core/utils/layer/index.ts +0 -4
  816. package/src/core/utils/layer/layer.test.tsx +0 -108
  817. package/src/core/utils/layer/layer.tsx +0 -98
  818. package/src/core/utils/layer/layerContext.ts +0 -7
  819. package/src/core/utils/layer/layerProvider.tsx +0 -111
  820. package/src/core/utils/layer/types.ts +0 -9
  821. package/src/core/utils/layer/useLayer.ts +0 -26
  822. package/src/core/utils/portal/__workshop__/index.ts +0 -14
  823. package/src/core/utils/portal/__workshop__/named.tsx +0 -63
  824. package/src/core/utils/portal/index.ts +0 -4
  825. package/src/core/utils/portal/portal.test.tsx +0 -103
  826. package/src/core/utils/portal/portal.ts +0 -32
  827. package/src/core/utils/portal/portalContext.ts +0 -31
  828. package/src/core/utils/portal/portalProvider.tsx +0 -47
  829. package/src/core/utils/portal/types.ts +0 -9
  830. package/src/core/utils/portal/usePortal.ts +0 -25
  831. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  832. package/src/core/utils/srOnly/index.ts +0 -1
  833. package/src/core/utils/srOnly/srOnly.tsx +0 -36
  834. package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
  835. package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
  836. package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
  837. package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
  838. package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
  839. package/src/core/utils/virtualList/index.ts +0 -1
  840. package/src/core/utils/virtualList/virtualList.tsx +0 -200
  841. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
  842. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
  843. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -22
  844. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -55
  845. package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -60
  846. package/src/theme/build/_deprecated/color/color.test.ts +0 -63
  847. package/src/theme/build/_deprecated/color/defaults.ts +0 -390
  848. package/src/theme/build/_deprecated/color/factory.ts +0 -142
  849. package/src/theme/build/_deprecated/color/index.ts +0 -1
  850. package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -81
  851. package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -54
  852. package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -20
  853. package/src/theme/build/buildColorTheme.test.ts +0 -183
  854. package/src/theme/build/buildColorTheme.ts +0 -499
  855. package/src/theme/build/buildTheme.test.ts +0 -87
  856. package/src/theme/build/buildTheme.ts +0 -36
  857. package/src/theme/build/colorToken/colorToken.ts +0 -19
  858. package/src/theme/build/colorToken/compileColorToken.ts +0 -21
  859. package/src/theme/build/colorToken/index.ts +0 -2
  860. package/src/theme/build/colorToken/types.ts +0 -6
  861. package/src/theme/build/index.ts +0 -3
  862. package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
  863. package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
  864. package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
  865. package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
  866. package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -68
  867. package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
  868. package/src/theme/build/lib/color-fns/convert.ts +0 -150
  869. package/src/theme/build/lib/color-fns/index.ts +0 -6
  870. package/src/theme/build/lib/color-fns/parse.ts +0 -60
  871. package/src/theme/build/lib/color-fns/rgba.ts +0 -10
  872. package/src/theme/build/lib/color-fns/types.ts +0 -28
  873. package/src/theme/build/lib/isRecord.ts +0 -3
  874. package/src/theme/build/lib/lazy.ts +0 -30
  875. package/src/theme/build/lib/utils.ts +0 -19
  876. package/src/theme/build/merge.ts +0 -26
  877. package/src/theme/build/mixThemeColor.test.ts +0 -21
  878. package/src/theme/build/mixThemeColor.ts +0 -53
  879. package/src/theme/build/renderColorTheme.ts +0 -532
  880. package/src/theme/build/renderColorValue.ts +0 -85
  881. package/src/theme/build/resolveColorTokens.ts +0 -268
  882. package/src/theme/build/theme.test.ts +0 -27
  883. package/src/theme/config/helpers.ts +0 -55
  884. package/src/theme/config/index.ts +0 -4
  885. package/src/theme/config/system.ts +0 -115
  886. package/src/theme/config/tokens/color/index.ts +0 -1
  887. package/src/theme/config/tokens/color/types.ts +0 -133
  888. package/src/theme/config/tokens/index.ts +0 -4
  889. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
  890. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  891. package/src/theme/config/tokens/parseTokenValue.test.ts +0 -42
  892. package/src/theme/config/tokens/parseTokenValue.ts +0 -133
  893. package/src/theme/config/tokens/types.ts +0 -53
  894. package/src/theme/config/types.ts +0 -46
  895. package/src/theme/defaults/colorPalette.ts +0 -5
  896. package/src/theme/defaults/colorTokens.ts +0 -648
  897. package/src/theme/defaults/config.ts +0 -84
  898. package/src/theme/defaults/fonts.ts +0 -227
  899. package/src/theme/getScopedTheme.ts +0 -98
  900. package/src/theme/index.ts +0 -5
  901. package/src/theme/system/avatar.ts +0 -14
  902. package/src/theme/system/color/_constants.ts +0 -45
  903. package/src/theme/system/color/_helpers.ts +0 -24
  904. package/src/theme/system/color/_system.ts +0 -40
  905. package/src/theme/system/color/avatar.ts +0 -15
  906. package/src/theme/system/color/badge.ts +0 -16
  907. package/src/theme/system/color/button.ts +0 -17
  908. package/src/theme/system/color/color.ts +0 -34
  909. package/src/theme/system/color/index.ts +0 -13
  910. package/src/theme/system/color/input.ts +0 -25
  911. package/src/theme/system/color/kbd.ts +0 -8
  912. package/src/theme/system/color/selectable.ts +0 -12
  913. package/src/theme/system/color/shadow.ts +0 -7
  914. package/src/theme/system/color/state.ts +0 -43
  915. package/src/theme/system/color/syntax.ts +0 -41
  916. package/src/theme/system/css.ts +0 -14
  917. package/src/theme/system/focusRing.ts +0 -7
  918. package/src/theme/system/font.ts +0 -52
  919. package/src/theme/system/index.ts +0 -11
  920. package/src/theme/system/input.ts +0 -33
  921. package/src/theme/system/layer.ts +0 -8
  922. package/src/theme/system/shadow.ts +0 -19
  923. package/src/theme/system/styles.ts +0 -13
  924. package/src/theme/system/theme.ts +0 -138
  925. package/src/theme/system/v0/avatar.ts +0 -10
  926. package/src/theme/system/v0/color/_generic.ts +0 -35
  927. package/src/theme/system/v0/color/_system.ts +0 -17
  928. package/src/theme/system/v0/color/base.ts +0 -21
  929. package/src/theme/system/v0/color/button.ts +0 -42
  930. package/src/theme/system/v0/color/card.ts +0 -19
  931. package/src/theme/system/v0/color/color.ts +0 -40
  932. package/src/theme/system/v0/color/index.ts +0 -11
  933. package/src/theme/system/v0/color/input.ts +0 -34
  934. package/src/theme/system/v0/color/muted.ts +0 -26
  935. package/src/theme/system/v0/color/selectable.ts +0 -31
  936. package/src/theme/system/v0/color/solid.ts +0 -26
  937. package/src/theme/system/v0/color/spot.ts +0 -13
  938. package/src/theme/system/v0/index.ts +0 -3
  939. package/src/theme/system/v0/input.ts +0 -23
  940. package/src/theme/versioning/getTheme_v2.ts +0 -57
  941. package/src/theme/versioning/index.ts +0 -5
  942. package/src/theme/versioning/is_v0.ts +0 -6
  943. package/src/theme/versioning/is_v2.ts +0 -6
  944. package/src/theme/versioning/themeColor_v0_v2.ts +0 -243
  945. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
  946. package/src/theme/versioning/v0_v2.ts +0 -94
  947. package/src/theme/versioning/v2_v0.ts +0 -135
@@ -0,0 +1,613 @@
1
+ import { cn } from "../../lib/cn.js";
2
+ import { PopoverContent } from "../../ui/overlay.js";
3
+ import * as React from "react";
4
+ import { IconArrowLeft, IconBlockquote, IconChevronRight, IconComponents, IconFileText, IconH1, IconH2, IconH3, IconH4, IconH5, IconH6, IconInfoCircle, IconLayoutNavbarCollapse, IconList, IconListDetails, IconListNumbers, IconPhoto, IconPilcrow, IconQuote, IconSearch, IconSeparatorHorizontal, IconTable, IconTerminal2, IconVideo } from "@tabler/icons-react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/kit/controls/rich-text/catalog.tsx
7
+ /**
8
+ * RICH TEXT · the block catalogue shared by the toolbar Insert menu, the gutter "+" and the "/" slash menu (V2 HEAD
9
+ * controls/rich-text/catalog.tsx, CPO D55).
10
+ *
11
+ * browse Text · Media · Data, grouped, then one quiet "More components N" row that opens the components the
12
+ * field may embed (V2 HEAD catalog.tsx MORE), with its own search and a way back ("All blocks")
13
+ * search every block and every embeddable component in one list: recently used first among the strong matches,
14
+ * then by match (label, aliases, then description)
15
+ * no match "No match."
16
+ *
17
+ * Only the blocks the field accepts are offered (`features`, from the host's codec: each block is offered only where
18
+ * the field's stored shape has a place for it). Not in this catalogue, and why:
19
+ * Footnote, Gallery, Embed, Columns, Checklist, Button, Table of contents, Related posts, Author bio
20
+ * production's rich text has no stored block for them (a checklist renders as a bulleted list; production's embed
21
+ * frames the raw link, which providers refuse, so Video is the one media link offered)
22
+ *
23
+ * Components come from the host (KitServices.useInsertableComponents: the project's components, narrowed to the ones
24
+ * the field's config accepts), handed in through CatalogComponentsProvider. Without that service none is offered.
25
+ * Deviation from V2: the library has no inline / page-section placement, so every component sits in one
26
+ * "Components" group (V2: "Article" and "Page sections"), and no live preview flyout is drawn beside a row.
27
+ */
28
+ var i = (I) => /* @__PURE__ */ jsx(I, { stroke: 1.5 });
29
+ var rows = (list) => list.map(([id, label, description, icon, aliases]) => ({
30
+ key: id,
31
+ id,
32
+ label,
33
+ description,
34
+ icon,
35
+ aliases
36
+ }));
37
+ var TEXT = rows([
38
+ [
39
+ "p",
40
+ "Text",
41
+ "Plain body text",
42
+ i(IconPilcrow),
43
+ ["paragraph", "body"]
44
+ ],
45
+ [
46
+ "h2",
47
+ "Heading 2",
48
+ "Section heading",
49
+ i(IconH2),
50
+ ["title", "subtitle"]
51
+ ],
52
+ [
53
+ "h3",
54
+ "Heading 3",
55
+ "Subsection heading",
56
+ i(IconH3)
57
+ ],
58
+ [
59
+ "h4",
60
+ "Heading 4",
61
+ "Minor heading",
62
+ i(IconH4)
63
+ ],
64
+ [
65
+ "quote",
66
+ "Quote",
67
+ "A quoted passage",
68
+ i(IconBlockquote),
69
+ ["blockquote"]
70
+ ],
71
+ [
72
+ "pullquote",
73
+ "Pull quote",
74
+ "A highlighted line with who said it",
75
+ i(IconQuote),
76
+ [
77
+ "pq",
78
+ "testimonial",
79
+ "attribution"
80
+ ]
81
+ ],
82
+ [
83
+ "ul",
84
+ "List",
85
+ "Bulleted list",
86
+ i(IconList),
87
+ [
88
+ "bullets",
89
+ "bulleted list",
90
+ "unordered"
91
+ ]
92
+ ],
93
+ [
94
+ "ol",
95
+ "Numbered list",
96
+ "Ordered steps",
97
+ i(IconListNumbers),
98
+ ["ordered", "steps"]
99
+ ],
100
+ [
101
+ "toggle",
102
+ "Toggle",
103
+ "Collapsible title and body",
104
+ i(IconLayoutNavbarCollapse),
105
+ [
106
+ "accordion",
107
+ "details",
108
+ "collapse"
109
+ ]
110
+ ],
111
+ [
112
+ "callout",
113
+ "Callout",
114
+ "A highlighted note with a tone",
115
+ i(IconInfoCircle),
116
+ [
117
+ "note",
118
+ "tip",
119
+ "warning",
120
+ "aside"
121
+ ]
122
+ ],
123
+ [
124
+ "takeaways",
125
+ "Key takeaways",
126
+ "The story in a few points",
127
+ i(IconListDetails),
128
+ [
129
+ "summary",
130
+ "tldr",
131
+ "tl;dr",
132
+ "highlights"
133
+ ]
134
+ ],
135
+ [
136
+ "hr",
137
+ "Divider",
138
+ "A line between parts",
139
+ i(IconSeparatorHorizontal),
140
+ [
141
+ "line",
142
+ "separator",
143
+ "rule"
144
+ ]
145
+ ],
146
+ [
147
+ "code",
148
+ "Code",
149
+ "Monospaced snippet",
150
+ i(IconTerminal2),
151
+ [
152
+ "code block",
153
+ "snippet",
154
+ "pre"
155
+ ]
156
+ ]
157
+ ]);
158
+ var MEDIA = rows([
159
+ [
160
+ "image",
161
+ "Image",
162
+ "Image with alt text and caption",
163
+ i(IconPhoto),
164
+ [
165
+ "img",
166
+ "picture",
167
+ "photo"
168
+ ]
169
+ ],
170
+ [
171
+ "video",
172
+ "Video",
173
+ "A YouTube, Vimeo or video file link",
174
+ i(IconVideo),
175
+ [
176
+ "mp4",
177
+ "youtube",
178
+ "yt",
179
+ "vimeo",
180
+ "clip",
181
+ "movie"
182
+ ]
183
+ ],
184
+ [
185
+ "file",
186
+ "File",
187
+ "A downloadable PDF or file",
188
+ i(IconFileText),
189
+ [
190
+ "pdf",
191
+ "download",
192
+ "attachment"
193
+ ]
194
+ ]
195
+ ]);
196
+ var DATA = rows([[
197
+ "table",
198
+ "Table",
199
+ "Rows and columns",
200
+ i(IconTable),
201
+ [
202
+ "grid",
203
+ "data",
204
+ "comparison",
205
+ "spreadsheet"
206
+ ]
207
+ ]]);
208
+ /** Found by search, not listed: rare in a body (H1 is the page title). */
209
+ var SEARCH_ONLY = rows([
210
+ [
211
+ "h1",
212
+ "Heading 1",
213
+ "Largest heading",
214
+ i(IconH1)
215
+ ],
216
+ [
217
+ "h5",
218
+ "Heading 5",
219
+ "Smallest heading",
220
+ i(IconH5)
221
+ ],
222
+ [
223
+ "h6",
224
+ "Heading 6",
225
+ "Eyebrow heading",
226
+ i(IconH6)
227
+ ]
228
+ ]);
229
+ /** The feature a block needs (Text needs none). */
230
+ var NEEDS = {
231
+ p: null,
232
+ h1: "h1",
233
+ h2: "h2",
234
+ h3: "h3",
235
+ h4: "h4",
236
+ h5: "h5",
237
+ h6: "h6",
238
+ quote: "blockquote",
239
+ ul: "ul",
240
+ ol: "ol",
241
+ code: "pre",
242
+ hr: "hr",
243
+ image: "image",
244
+ pullquote: "pullquote",
245
+ takeaways: "takeaways",
246
+ callout: "callout",
247
+ toggle: "toggle",
248
+ video: "video",
249
+ file: "file",
250
+ table: "table"
251
+ };
252
+ var MORE = {
253
+ key: "more",
254
+ kind: "folder",
255
+ label: "More components",
256
+ description: "Shared across your site",
257
+ icon: i(IconComponents)
258
+ };
259
+ var BACK = {
260
+ key: "back",
261
+ kind: "back",
262
+ label: "All blocks",
263
+ description: "",
264
+ icon: i(IconArrowLeft)
265
+ };
266
+ var componentRow = (c) => ({
267
+ key: `c:${c.id}`,
268
+ kind: "component",
269
+ component: c,
270
+ label: c.name,
271
+ description: c.description || "Shared across your site",
272
+ icon: i(IconComponents)
273
+ });
274
+ var ComponentsContext = React.createContext(null);
275
+ var CatalogComponentsProvider = ComponentsContext.Provider;
276
+ var blockAllowed = (id, allows) => {
277
+ const need = NEEDS[id];
278
+ return !need || allows(need);
279
+ };
280
+ var RECENTS_KEY = "kit-rt-insert-recents";
281
+ var recents = (() => {
282
+ try {
283
+ const v = JSON.parse(globalThis.localStorage?.getItem(RECENTS_KEY) ?? "[]");
284
+ return Array.isArray(v) ? v.filter((x) => typeof x === "string") : [];
285
+ } catch {
286
+ return [];
287
+ }
288
+ })();
289
+ var recentSubs = /* @__PURE__ */ new Set();
290
+ /** Remember a pick so search ranks it first next time. */
291
+ function noteRecent(it) {
292
+ recents = [it.key, ...recents.filter((k) => k !== it.key)].slice(0, 12);
293
+ try {
294
+ globalThis.localStorage?.setItem(RECENTS_KEY, JSON.stringify(recents));
295
+ } catch {}
296
+ recentSubs.forEach((s) => s());
297
+ }
298
+ function useRecents() {
299
+ return React.useSyncExternalStore((cb) => {
300
+ recentSubs.add(cb);
301
+ return () => recentSubs.delete(cb);
302
+ }, () => recents, () => recents);
303
+ }
304
+ /** 5 exact (label, id or alias) · 4 label or alias starts with it · 3 a word of the label starts with it · 2 inside the
305
+ * label · 1 the description. */
306
+ var score = (q, it) => {
307
+ const l = it.label.toLowerCase();
308
+ const al = it.aliases ?? [];
309
+ if (l === q || it.id === q || al.includes(q)) return 5;
310
+ if (l.startsWith(q) || al.some((a) => a.startsWith(q))) return 4;
311
+ if (l.split(/[\s-]+/).some((w) => w.startsWith(q))) return 3;
312
+ if (l.includes(q)) return 2;
313
+ return it.description.toLowerCase().includes(q) ? 1 : 0;
314
+ };
315
+ /** Ranked by recently used among the strong matches, then by match, then catalogue order. */
316
+ var rank = (q, list, recent) => list.map((it, i) => {
317
+ const s = score(q, it);
318
+ const r = recent.indexOf(it.key);
319
+ return {
320
+ it,
321
+ s,
322
+ strong: s >= 3 ? 1 : 0,
323
+ r: s >= 3 && r >= 0 ? r : 999,
324
+ i
325
+ };
326
+ }).filter((x) => x.s > 0).sort((a, b) => b.strong - a.strong || a.r - b.r || b.s - a.s || a.i - b.i).map((x) => x.it);
327
+ /** `folder`: the More components view (its way back first, then the components, searched by `query`). */
328
+ function useCatalog(query, allows, folder = false, own) {
329
+ const recent = useRecents();
330
+ const provided = React.useContext(ComponentsContext);
331
+ const lib = own === void 0 ? provided : own;
332
+ return React.useMemo(() => {
333
+ const q = query.trim().toLowerCase().replace(/^\//, "");
334
+ const keep = (list) => list.filter((it) => !it.id || blockAllowed(it.id, allows));
335
+ const comps = (lib?.components ?? []).map(componentRow);
336
+ let sections;
337
+ let noMatch = false;
338
+ let emptyText = "No match.";
339
+ if (folder) {
340
+ const found = q ? rank(q, comps, recent) : comps;
341
+ noMatch = !!q && !!comps.length && !found.length;
342
+ if (!comps.length) emptyText = lib?.error ?? (lib?.loading ? "Loading components…" : "This field takes no components.");
343
+ sections = [{
344
+ title: null,
345
+ items: [BACK]
346
+ }, {
347
+ title: "Components",
348
+ items: found
349
+ }];
350
+ } else if (q) {
351
+ const found = rank(q, [
352
+ ...keep(TEXT),
353
+ ...keep(MEDIA),
354
+ ...keep(DATA),
355
+ ...keep(SEARCH_ONLY),
356
+ ...comps
357
+ ], recent);
358
+ noMatch = !found.length;
359
+ sections = [{
360
+ title: null,
361
+ items: found
362
+ }];
363
+ } else sections = [
364
+ {
365
+ title: "Text",
366
+ items: keep(TEXT)
367
+ },
368
+ {
369
+ title: "Media",
370
+ items: keep(MEDIA)
371
+ },
372
+ {
373
+ title: "Data",
374
+ items: keep(DATA)
375
+ },
376
+ {
377
+ title: null,
378
+ items: lib && (comps.length || lib.loading || lib.error) ? [{
379
+ ...MORE,
380
+ ...comps.length ? { count: comps.length } : {}
381
+ }] : []
382
+ }
383
+ ];
384
+ sections = sections.filter((s) => s.items.length);
385
+ const flat = sections.flatMap((s) => s.items);
386
+ const empty = !flat.some((it) => it.kind !== "back");
387
+ return {
388
+ sections,
389
+ flat,
390
+ empty,
391
+ noMatch,
392
+ emptyText
393
+ };
394
+ }, [
395
+ query,
396
+ allows,
397
+ recent,
398
+ lib,
399
+ folder
400
+ ]);
401
+ }
402
+ function CatalogList({ sections, flat, active, onHover, onPick, empty, emptyText = "No match.", noMatch, detail, listId, className }) {
403
+ const box = React.useRef(null);
404
+ React.useEffect(() => {
405
+ const b = box.current;
406
+ const row = b?.querySelector(`[data-idx="${active}"]`);
407
+ if (!b || !row) return;
408
+ if (row.offsetTop < b.scrollTop) b.scrollTop = row.offsetTop - 6;
409
+ else if (row.offsetTop + row.offsetHeight > b.scrollTop + b.clientHeight) b.scrollTop = row.offsetTop + row.offsetHeight - b.clientHeight + 6;
410
+ }, [active]);
411
+ return /* @__PURE__ */ jsxs("div", {
412
+ ref: box,
413
+ id: listId,
414
+ role: "listbox",
415
+ "aria-label": "Blocks",
416
+ className: cn("relative max-h-[320px] overflow-y-auto p-1.5", className),
417
+ children: [sections.map((s, si) => /* @__PURE__ */ jsxs("div", {
418
+ role: "group",
419
+ "aria-label": s.title ?? void 0,
420
+ className: cn(!s.title && si > 0 && s.items[0]?.kind === "folder" && "mt-1.5 border-t border-kit-line-subtle pt-1.5"),
421
+ children: [s.title ? /* @__PURE__ */ jsx("div", {
422
+ className: "px-2 pb-0.5 pt-2 text-kit-2xs font-medium text-kit-fg-3",
423
+ children: s.title
424
+ }) : null, s.items.map((it) => {
425
+ const idx = flat.indexOf(it);
426
+ const on = idx === active;
427
+ const desc = detail && it.kind !== "back" && it.kind !== "folder" ? it.description : "";
428
+ return /* @__PURE__ */ jsxs("button", {
429
+ type: "button",
430
+ role: "option",
431
+ "aria-selected": on,
432
+ "aria-description": !desc && it.description ? it.description : void 0,
433
+ "data-idx": idx,
434
+ id: `${listId}-${idx}`,
435
+ onMouseDown: (e) => e.preventDefault(),
436
+ onMouseMove: () => !on && onHover(idx),
437
+ onClick: () => onPick(it),
438
+ className: cn("flex w-full items-center gap-2 rounded-kit-md px-2 text-left transition-colors", desc ? "py-1.5" : "h-8", it.kind === "back" ? "text-kit-fg-2" : "text-kit-fg", on && "bg-kit-hover text-kit-fg"),
439
+ children: [
440
+ /* @__PURE__ */ jsx("span", {
441
+ className: cn("flex shrink-0 items-center justify-center text-kit-fg-2 [&_svg]:size-4", desc ? "size-7 rounded-kit-md border border-kit-line bg-kit-control-bg" : "size-5"),
442
+ children: it.icon
443
+ }),
444
+ /* @__PURE__ */ jsxs("span", {
445
+ className: "min-w-0 flex-1",
446
+ children: [/* @__PURE__ */ jsx("span", {
447
+ className: "block truncate text-kit-sm",
448
+ children: it.label
449
+ }), desc ? /* @__PURE__ */ jsx("span", {
450
+ className: "block truncate text-kit-xs text-kit-fg-3",
451
+ children: desc
452
+ }) : null]
453
+ }),
454
+ it.count != null ? /* @__PURE__ */ jsx("span", {
455
+ className: "text-kit-2xs tabular-nums text-kit-fg-3",
456
+ children: it.count
457
+ }) : null,
458
+ it.kind === "folder" ? /* @__PURE__ */ jsx(IconChevronRight, {
459
+ className: "size-3.5 shrink-0 text-kit-fg-3",
460
+ stroke: 1.5,
461
+ "aria-hidden": true
462
+ }) : null
463
+ ]
464
+ }, it.key);
465
+ })]
466
+ }, s.title ?? `s${si}`)), empty || noMatch ? /* @__PURE__ */ jsx("div", {
467
+ className: "px-2 py-6 text-center text-kit-sm text-kit-fg-3",
468
+ children: noMatch ? "No match." : emptyText
469
+ }) : null]
470
+ });
471
+ }
472
+ var Footer = () => /* @__PURE__ */ jsx("div", {
473
+ "data-hint": "shortcuts",
474
+ className: "flex h-7 shrink-0 items-center border-t border-kit-line px-3 text-kit-2xs text-kit-fg-3",
475
+ children: /* @__PURE__ */ jsxs("span", { children: [/* @__PURE__ */ jsx("kbd", {
476
+ className: "font-kit-sans",
477
+ children: "↵"
478
+ }), " select · type to search"] })
479
+ });
480
+ /** Shared keyboard model: ↑↓ wrap, Home/End, Enter / Tab, → into More components. Returns true when handled. */
481
+ function catalogKey(e, flat, active, setActive, pick, homeEnd = true) {
482
+ const n = flat.length;
483
+ if (!n) return false;
484
+ if (e.key === "ArrowDown") return setActive((active + 1) % n), true;
485
+ if (e.key === "ArrowUp") return setActive((active - 1 + n) % n), true;
486
+ if (homeEnd && e.key === "Home") return setActive(0), true;
487
+ if (homeEnd && e.key === "End") return setActive(n - 1), true;
488
+ if (e.key === "ArrowRight" && flat[active]?.kind === "folder") return pick(flat[active]), true;
489
+ if (e.key === "Enter" || e.key === "Tab") {
490
+ const it = flat[active];
491
+ if (it) pick(it);
492
+ return true;
493
+ }
494
+ return false;
495
+ }
496
+ function InsertMenuContent({ onInsert, allows, keepFocusOnClose, align = "start", side = "bottom" }) {
497
+ const [q, setQ] = React.useState("");
498
+ const [active, setActive] = React.useState(0);
499
+ const input = React.useRef(null);
500
+ const listId = React.useId();
501
+ const [folder, setFolder] = React.useState(false);
502
+ const { sections, flat, empty, emptyText, noMatch } = useCatalog(q, allows, folder);
503
+ React.useEffect(() => setActive(folder && flat.length > 1 ? 1 : 0), [q, folder]);
504
+ const leave = () => {
505
+ setFolder(false);
506
+ setQ("");
507
+ input.current?.focus();
508
+ };
509
+ const pick = (it) => {
510
+ if (it.kind === "folder") {
511
+ setFolder(true);
512
+ setQ("");
513
+ input.current?.focus();
514
+ } else if (it.kind === "back") leave();
515
+ else onInsert(it);
516
+ };
517
+ return /* @__PURE__ */ jsxs(PopoverContent, {
518
+ side,
519
+ align,
520
+ className: "flex max-h-[420px] w-[320px] flex-col overflow-hidden p-0",
521
+ initialFocus: input,
522
+ finalFocus: keepFocusOnClose ? () => !keepFocusOnClose() : void 0,
523
+ onKeyDownCapture: (e) => {
524
+ if (!folder || e.key !== "Escape") return;
525
+ e.preventDefault();
526
+ e.stopPropagation();
527
+ leave();
528
+ },
529
+ children: [
530
+ /* @__PURE__ */ jsxs("div", {
531
+ className: "flex h-10 shrink-0 items-center gap-2 border-b border-kit-line px-3",
532
+ children: [/* @__PURE__ */ jsx(IconSearch, {
533
+ className: "size-4 shrink-0 text-kit-fg-3",
534
+ stroke: 1.5,
535
+ "aria-hidden": true
536
+ }), /* @__PURE__ */ jsx("input", {
537
+ ref: input,
538
+ value: q,
539
+ onChange: (e) => setQ(e.target.value),
540
+ onKeyDown: (e) => {
541
+ if (folder && e.key === "Backspace" && !q) {
542
+ e.preventDefault();
543
+ e.stopPropagation();
544
+ leave();
545
+ } else if (catalogKey(e, flat, active, setActive, pick, !q)) e.preventDefault();
546
+ },
547
+ role: "combobox",
548
+ "aria-expanded": true,
549
+ "aria-controls": listId,
550
+ "aria-activedescendant": flat.length ? `${listId}-${active}` : void 0,
551
+ "aria-label": folder ? "Search components" : "Search or pick a block",
552
+ placeholder: folder ? "Search components" : "Search or pick a block",
553
+ className: "h-full min-w-0 flex-1 bg-transparent text-kit-sm text-kit-fg outline-none placeholder:text-kit-fg-3"
554
+ })]
555
+ }),
556
+ /* @__PURE__ */ jsx(CatalogList, {
557
+ sections,
558
+ flat,
559
+ active,
560
+ onHover: setActive,
561
+ onPick: pick,
562
+ empty,
563
+ emptyText,
564
+ noMatch,
565
+ detail: !!q || folder,
566
+ listId,
567
+ className: "min-h-0 flex-1"
568
+ }),
569
+ /* @__PURE__ */ jsx(Footer, {})
570
+ ]
571
+ });
572
+ }
573
+ function SlashMenuPanel({ query, folder = false, active, setActive, onPick, allows, maxHeight }) {
574
+ const listId = React.useId();
575
+ const { sections, flat, empty, emptyText, noMatch } = useCatalog(query, allows, folder);
576
+ return /* @__PURE__ */ jsxs("div", {
577
+ "data-kit-scope": "",
578
+ className: "flex w-[320px] flex-col overflow-hidden rounded-kit-xl border border-kit-line bg-kit-surface text-kit-fg shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:border-kit-line-strong [.dark_&]:bg-[#252528]",
579
+ style: maxHeight ? { maxHeight } : void 0,
580
+ onMouseDown: (e) => e.preventDefault(),
581
+ children: [
582
+ /* @__PURE__ */ jsxs("div", {
583
+ className: "flex h-8 shrink-0 items-center gap-2 border-b border-kit-line px-3 text-kit-sm",
584
+ children: [/* @__PURE__ */ jsx("span", {
585
+ className: cn("flex-1 truncate", query ? "text-kit-fg" : "text-kit-fg-3"),
586
+ children: query ? `${folder ? "More components · " : ""}/${query}` : folder ? "More components" : "Type to search"
587
+ }), /* @__PURE__ */ jsx("kbd", {
588
+ "data-hint": "shortcuts",
589
+ className: "font-kit-sans text-kit-2xs text-kit-fg-3",
590
+ children: "esc"
591
+ })]
592
+ }),
593
+ /* @__PURE__ */ jsx(CatalogList, {
594
+ sections,
595
+ flat,
596
+ active,
597
+ onHover: setActive,
598
+ onPick,
599
+ empty,
600
+ emptyText,
601
+ noMatch,
602
+ detail: !!query || folder,
603
+ listId,
604
+ className: "max-h-[300px] min-h-0 flex-1"
605
+ }),
606
+ /* @__PURE__ */ jsx(Footer, {})
607
+ ]
608
+ });
609
+ }
610
+ //#endregion
611
+ export { CatalogComponentsProvider, InsertMenuContent, SlashMenuPanel, blockAllowed, catalogKey, noteRecent, useCatalog };
612
+
613
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","names":[],"sources":["../../../src/kit/controls/rich-text/catalog.tsx"],"sourcesContent":["/**\n * RICH TEXT · the block catalogue shared by the toolbar Insert menu, the gutter \"+\" and the \"/\" slash menu (V2 HEAD\n * controls/rich-text/catalog.tsx, CPO D55).\n *\n * browse Text · Media · Data, grouped, then one quiet \"More components N\" row that opens the components the\n * field may embed (V2 HEAD catalog.tsx MORE), with its own search and a way back (\"All blocks\")\n * search every block and every embeddable component in one list: recently used first among the strong matches,\n * then by match (label, aliases, then description)\n * no match \"No match.\"\n *\n * Only the blocks the field accepts are offered (`features`, from the host's codec: each block is offered only where\n * the field's stored shape has a place for it). Not in this catalogue, and why:\n * Footnote, Gallery, Embed, Columns, Checklist, Button, Table of contents, Related posts, Author bio\n * production's rich text has no stored block for them (a checklist renders as a bulleted list; production's embed\n * frames the raw link, which providers refuse, so Video is the one media link offered)\n *\n * Components come from the host (KitServices.useInsertableComponents: the project's components, narrowed to the ones\n * the field's config accepts), handed in through CatalogComponentsProvider. Without that service none is offered.\n * Deviation from V2: the library has no inline / page-section placement, so every component sits in one\n * \"Components\" group (V2: \"Article\" and \"Page sections\"), and no live preview flyout is drawn beside a row.\n */\nimport * as React from \"react\";\nimport {\n IconArrowLeft, IconBlockquote, IconChevronRight, IconComponents, IconFileText, IconH1, IconH2, IconH3, IconH4, IconH5, IconH6, IconInfoCircle, IconLayoutNavbarCollapse, IconList, IconListDetails, IconListNumbers, IconPhoto,\n IconPilcrow, IconQuote, IconSearch, IconSeparatorHorizontal, IconTable, IconTerminal2, IconVideo,\n} from \"@tabler/icons-react\";\nimport { cn } from \"../../lib/cn\";\nimport { PopoverContent } from \"../../ui/overlay\";\nimport type { RichTextFeature } from \"./codec\";\nimport type { KitInsertableComponent } from \"../component-services\";\n\nexport type BasicId =\n | \"p\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"quote\" | \"pullquote\" | \"callout\" | \"toggle\" | \"takeaways\" | \"ul\" | \"ol\" | \"code\" | \"hr\"\n | \"image\" | \"video\" | \"file\" | \"table\";\n\nexport interface CatalogItem {\n key: string;\n /** a basic block (absent on a component, the More components row and the way back) */\n id?: BasicId;\n /** component: embeds `component`; folder: opens More components; back: returns to every block */\n kind?: \"component\" | \"folder\" | \"back\";\n component?: KitInsertableComponent;\n /** the folder row's component count */\n count?: number;\n label: string;\n description: string;\n icon: React.ReactNode;\n /** extra words that find it */\n aliases?: string[];\n}\n\nconst i = (I: React.ComponentType<{ stroke?: number }>) => <I stroke={1.5} />;\ntype Row = [BasicId, string, string, React.ReactNode, string[]?];\nconst rows = (list: Row[]): CatalogItem[] => list.map(([id, label, description, icon, aliases]) => ({ key: id, id, label, description, icon, aliases }));\n\nconst TEXT = rows([\n [\"p\", \"Text\", \"Plain body text\", i(IconPilcrow), [\"paragraph\", \"body\"]],\n [\"h2\", \"Heading 2\", \"Section heading\", i(IconH2), [\"title\", \"subtitle\"]],\n [\"h3\", \"Heading 3\", \"Subsection heading\", i(IconH3)],\n [\"h4\", \"Heading 4\", \"Minor heading\", i(IconH4)],\n [\"quote\", \"Quote\", \"A quoted passage\", i(IconBlockquote), [\"blockquote\"]],\n [\"pullquote\", \"Pull quote\", \"A highlighted line with who said it\", i(IconQuote), [\"pq\", \"testimonial\", \"attribution\"]],\n [\"ul\", \"List\", \"Bulleted list\", i(IconList), [\"bullets\", \"bulleted list\", \"unordered\"]],\n [\"ol\", \"Numbered list\", \"Ordered steps\", i(IconListNumbers), [\"ordered\", \"steps\"]],\n [\"toggle\", \"Toggle\", \"Collapsible title and body\", i(IconLayoutNavbarCollapse), [\"accordion\", \"details\", \"collapse\"]],\n [\"callout\", \"Callout\", \"A highlighted note with a tone\", i(IconInfoCircle), [\"note\", \"tip\", \"warning\", \"aside\"]],\n [\"takeaways\", \"Key takeaways\", \"The story in a few points\", i(IconListDetails), [\"summary\", \"tldr\", \"tl;dr\", \"highlights\"]],\n [\"hr\", \"Divider\", \"A line between parts\", i(IconSeparatorHorizontal), [\"line\", \"separator\", \"rule\"]],\n [\"code\", \"Code\", \"Monospaced snippet\", i(IconTerminal2), [\"code block\", \"snippet\", \"pre\"]],\n]);\nconst MEDIA = rows([\n [\"image\", \"Image\", \"Image with alt text and caption\", i(IconPhoto), [\"img\", \"picture\", \"photo\"]],\n [\"video\", \"Video\", \"A YouTube, Vimeo or video file link\", i(IconVideo), [\"mp4\", \"youtube\", \"yt\", \"vimeo\", \"clip\", \"movie\"]],\n [\"file\", \"File\", \"A downloadable PDF or file\", i(IconFileText), [\"pdf\", \"download\", \"attachment\"]],\n]);\nconst DATA = rows([[\"table\", \"Table\", \"Rows and columns\", i(IconTable), [\"grid\", \"data\", \"comparison\", \"spreadsheet\"]]]);\n/** Found by search, not listed: rare in a body (H1 is the page title). */\nconst SEARCH_ONLY = rows([\n [\"h1\", \"Heading 1\", \"Largest heading\", i(IconH1)],\n [\"h5\", \"Heading 5\", \"Smallest heading\", i(IconH5)],\n [\"h6\", \"Heading 6\", \"Eyebrow heading\", i(IconH6)],\n]);\n\n/** The feature a block needs (Text needs none). */\nconst NEEDS: Record<BasicId, RichTextFeature | null> = {\n p: null, h1: \"h1\", h2: \"h2\", h3: \"h3\", h4: \"h4\", h5: \"h5\", h6: \"h6\", quote: \"blockquote\", ul: \"ul\", ol: \"ol\", code: \"pre\", hr: \"hr\", image: \"image\",\n pullquote: \"pullquote\", takeaways: \"takeaways\", callout: \"callout\", toggle: \"toggle\", video: \"video\", file: \"file\", table: \"table\",\n};\nconst MORE: CatalogItem = { key: \"more\", kind: \"folder\", label: \"More components\", description: \"Shared across your site\", icon: i(IconComponents) };\nconst BACK: CatalogItem = { key: \"back\", kind: \"back\", label: \"All blocks\", description: \"\", icon: i(IconArrowLeft) };\nconst componentRow = (c: KitInsertableComponent): CatalogItem => ({\n key: `c:${c.id}`,\n kind: \"component\",\n component: c,\n label: c.name,\n description: c.description || \"Shared across your site\",\n icon: i(IconComponents),\n});\n\n/** The components this field may embed, as the host answered (KitServices.useInsertableComponents). */\nexport interface CatalogComponents {\n components: KitInsertableComponent[];\n loading?: boolean;\n error?: string;\n}\nconst ComponentsContext = React.createContext<CatalogComponents | null>(null);\nexport const CatalogComponentsProvider = ComponentsContext.Provider;\n\nexport const blockAllowed = (id: BasicId, allows: (f: RichTextFeature) => boolean) => {\n const need = NEEDS[id];\n return !need || allows(need);\n};\n\n/* ── Recently used (per person, CPO D55): this browser's storage; a browser that keeps none just has no recents ── */\nconst RECENTS_KEY = \"kit-rt-insert-recents\";\nlet recents: string[] = (() => {\n try {\n const v = JSON.parse(globalThis.localStorage?.getItem(RECENTS_KEY) ?? \"[]\") as unknown;\n return Array.isArray(v) ? v.filter((x): x is string => typeof x === \"string\") : [];\n } catch {\n return [];\n }\n})();\nconst recentSubs = new Set<() => void>();\n/** Remember a pick so search ranks it first next time. */\nexport function noteRecent(it: CatalogItem) {\n recents = [it.key, ...recents.filter((k) => k !== it.key)].slice(0, 12);\n try {\n globalThis.localStorage?.setItem(RECENTS_KEY, JSON.stringify(recents));\n } catch {\n /* storage is off: recents last for this session */\n }\n recentSubs.forEach((s) => s());\n}\nfunction useRecents() {\n return React.useSyncExternalStore(\n (cb) => {\n recentSubs.add(cb);\n return () => recentSubs.delete(cb);\n },\n () => recents,\n () => recents,\n );\n}\n\nexport interface CatalogSection {\n title: string | null;\n items: CatalogItem[];\n}\n\n/** 5 exact (label, id or alias) · 4 label or alias starts with it · 3 a word of the label starts with it · 2 inside the\n * label · 1 the description. */\nconst score = (q: string, it: CatalogItem) => {\n const l = it.label.toLowerCase();\n const al = it.aliases ?? [];\n if (l === q || it.id === q || al.includes(q)) return 5;\n if (l.startsWith(q) || al.some((a) => a.startsWith(q))) return 4;\n if (l.split(/[\\s-]+/).some((w) => w.startsWith(q))) return 3;\n if (l.includes(q)) return 2;\n return it.description.toLowerCase().includes(q) ? 1 : 0;\n};\n/** Ranked by recently used among the strong matches, then by match, then catalogue order. */\nconst rank = (q: string, list: CatalogItem[], recent: string[]) =>\n list\n .map((it, i) => {\n const s = score(q, it);\n const r = recent.indexOf(it.key);\n return { it, s, strong: s >= 3 ? 1 : 0, r: s >= 3 && r >= 0 ? r : 999, i };\n })\n .filter((x) => x.s > 0)\n .sort((a, b) => b.strong - a.strong || a.r - b.r || b.s - a.s || a.i - b.i)\n .map((x) => x.it);\n\n/** `folder`: the More components view (its way back first, then the components, searched by `query`). */\nexport function useCatalog(query: string, allows: (f: RichTextFeature) => boolean, folder = false, own?: CatalogComponents | null) {\n const recent = useRecents();\n const provided = React.useContext(ComponentsContext);\n // the editor reads its own list (it renders the provider, so cannot read it)\n const lib = own === undefined ? provided : own;\n return React.useMemo(() => {\n const q = query.trim().toLowerCase().replace(/^\\//, \"\");\n const keep = (list: CatalogItem[]) => list.filter((it) => !it.id || blockAllowed(it.id, allows));\n const comps = (lib?.components ?? []).map(componentRow);\n let sections: CatalogSection[];\n let noMatch = false;\n let emptyText = \"No match.\";\n if (folder) {\n const found = q ? rank(q, comps, recent) : comps;\n noMatch = !!q && !!comps.length && !found.length;\n if (!comps.length) emptyText = lib?.error ?? (lib?.loading ? \"Loading components…\" : \"This field takes no components.\");\n sections = [{ title: null, items: [BACK] }, { title: \"Components\", items: found }];\n } else if (q) {\n const found = rank(q, [...keep(TEXT), ...keep(MEDIA), ...keep(DATA), ...keep(SEARCH_ONLY), ...comps], recent);\n noMatch = !found.length;\n sections = [{ title: null, items: found }];\n } else\n sections = [\n { title: \"Text\", items: keep(TEXT) },\n { title: \"Media\", items: keep(MEDIA) },\n { title: \"Data\", items: keep(DATA) },\n // offered while the list loads or failed too: opening it says which\n { title: null, items: lib && (comps.length || lib.loading || lib.error) ? [{ ...MORE, ...(comps.length ? { count: comps.length } : {}) }] : [] },\n ];\n sections = sections.filter((s) => s.items.length);\n const flat = sections.flatMap((s) => s.items);\n const empty = !flat.some((it) => it.kind !== \"back\");\n return { sections, flat, empty, noMatch, emptyText };\n }, [query, allows, recent, lib, folder]);\n}\n\n/* ── The list ───────────────────────────────────────────────────────────\n * Browsing: compact one-line rows (icon · name), grouped. Search results add the one-line description. */\nexport function CatalogList({\n sections,\n flat,\n active,\n onHover,\n onPick,\n empty,\n emptyText = \"No match.\",\n noMatch,\n detail,\n listId,\n className,\n}: {\n sections: CatalogSection[];\n flat: CatalogItem[];\n active: number;\n onHover: (i: number) => void;\n onPick: (it: CatalogItem) => void;\n empty: boolean;\n /** what an empty list says (\"No match.\", or why More components has none) */\n emptyText?: string;\n noMatch?: boolean;\n /** show each row's description (search results, More components) */\n detail?: boolean;\n listId: string;\n className?: string;\n}) {\n const box = React.useRef<HTMLDivElement>(null);\n React.useEffect(() => {\n // scroll only the list (scrollIntoView would also scroll the page behind a floating menu)\n const b = box.current;\n const row = b?.querySelector<HTMLElement>(`[data-idx=\"${active}\"]`);\n if (!b || !row) return;\n if (row.offsetTop < b.scrollTop) b.scrollTop = row.offsetTop - 6;\n else if (row.offsetTop + row.offsetHeight > b.scrollTop + b.clientHeight) b.scrollTop = row.offsetTop + row.offsetHeight - b.clientHeight + 6;\n }, [active]);\n return (\n <div ref={box} id={listId} role=\"listbox\" aria-label=\"Blocks\" className={cn(\"relative max-h-[320px] overflow-y-auto p-1.5\", className)}>\n {sections.map((s, si) => (\n <div\n key={s.title ?? `s${si}`}\n role=\"group\"\n aria-label={s.title ?? undefined}\n className={cn(!s.title && si > 0 && s.items[0]?.kind === \"folder\" && \"mt-1.5 border-t border-kit-line-subtle pt-1.5\")}\n >\n {s.title ? <div className=\"px-2 pb-0.5 pt-2 text-kit-2xs font-medium text-kit-fg-3\">{s.title}</div> : null}\n {s.items.map((it) => {\n const idx = flat.indexOf(it);\n const on = idx === active;\n const desc = detail && it.kind !== \"back\" && it.kind !== \"folder\" ? it.description : \"\";\n return (\n <button\n key={it.key}\n type=\"button\"\n role=\"option\"\n aria-selected={on}\n aria-description={!desc && it.description ? it.description : undefined}\n data-idx={idx}\n id={`${listId}-${idx}`}\n onMouseDown={(e) => e.preventDefault()}\n onMouseMove={() => !on && onHover(idx)}\n onClick={() => onPick(it)}\n className={cn(\n \"flex w-full items-center gap-2 rounded-kit-md px-2 text-left transition-colors\",\n desc ? \"py-1.5\" : \"h-8\",\n it.kind === \"back\" ? \"text-kit-fg-2\" : \"text-kit-fg\",\n on && \"bg-kit-hover text-kit-fg\",\n )}\n >\n <span className={cn(\"flex shrink-0 items-center justify-center text-kit-fg-2 [&_svg]:size-4\", desc ? \"size-7 rounded-kit-md border border-kit-line bg-kit-control-bg\" : \"size-5\")}>\n {it.icon}\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-kit-sm\">{it.label}</span>\n {desc ? <span className=\"block truncate text-kit-xs text-kit-fg-3\">{desc}</span> : null}\n </span>\n {it.count != null ? <span className=\"text-kit-2xs tabular-nums text-kit-fg-3\">{it.count}</span> : null}\n {it.kind === \"folder\" ? <IconChevronRight className=\"size-3.5 shrink-0 text-kit-fg-3\" stroke={1.5} aria-hidden /> : null}\n </button>\n );\n })}\n </div>\n ))}\n {empty || noMatch ? <div className=\"px-2 py-6 text-center text-kit-sm text-kit-fg-3\">{noMatch ? \"No match.\" : emptyText}</div> : null}\n </div>\n );\n}\n\nconst Footer = () => (\n <div data-hint=\"shortcuts\" className=\"flex h-7 shrink-0 items-center border-t border-kit-line px-3 text-kit-2xs text-kit-fg-3\">\n <span>\n <kbd className=\"font-kit-sans\">↵</kbd> select · type to search\n </span>\n </div>\n);\n\n/** Shared keyboard model: ↑↓ wrap, Home/End, Enter / Tab, → into More components. Returns true when handled. */\nexport function catalogKey(\n e: React.KeyboardEvent | KeyboardEvent,\n flat: CatalogItem[],\n active: number,\n setActive: (i: number) => void,\n pick: (it: CatalogItem) => void,\n homeEnd = true,\n) {\n const n = flat.length;\n if (!n) return false;\n if (e.key === \"ArrowDown\") return setActive((active + 1) % n), true;\n if (e.key === \"ArrowUp\") return setActive((active - 1 + n) % n), true;\n if (homeEnd && e.key === \"Home\") return setActive(0), true;\n if (homeEnd && e.key === \"End\") return setActive(n - 1), true;\n if (e.key === \"ArrowRight\" && flat[active]?.kind === \"folder\") return pick(flat[active]), true;\n if (e.key === \"Enter\" || e.key === \"Tab\") {\n const it = flat[active];\n if (it) pick(it);\n return true;\n }\n return false;\n}\n\n/* ── Insert menu (popover content for the toolbar \"Insert\" and the gutter \"+\") ─ */\nexport function InsertMenuContent({\n onInsert,\n allows,\n keepFocusOnClose,\n align = \"start\",\n side = \"bottom\",\n}: {\n onInsert: (it: CatalogItem) => void;\n allows: (f: RichTextFeature) => boolean;\n /** after an insert the caret stays in the editor: the menu gives no focus back to its trigger */\n keepFocusOnClose?: () => boolean;\n align?: \"start\" | \"center\" | \"end\";\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}) {\n const [q, setQ] = React.useState(\"\");\n const [active, setActive] = React.useState(0);\n const input = React.useRef<HTMLInputElement>(null);\n const listId = React.useId();\n const [folder, setFolder] = React.useState(false);\n const { sections, flat, empty, emptyText, noMatch } = useCatalog(q, allows, folder);\n // in More components the first row is the way back: the first component starts active\n React.useEffect(() => setActive(folder && flat.length > 1 ? 1 : 0), [q, folder]); // eslint-disable-line react-hooks/exhaustive-deps\n const leave = () => {\n setFolder(false);\n setQ(\"\");\n input.current?.focus();\n };\n const pick = (it: CatalogItem) => {\n if (it.kind === \"folder\") {\n setFolder(true);\n setQ(\"\");\n input.current?.focus();\n } else if (it.kind === \"back\") leave();\n else onInsert(it);\n };\n return (\n <PopoverContent\n side={side}\n align={align}\n className=\"flex max-h-[420px] w-[320px] flex-col overflow-hidden p-0\"\n initialFocus={input}\n finalFocus={keepFocusOnClose ? () => !keepFocusOnClose() : undefined}\n // Esc in More components steps back to every block, wherever focus sits in the menu (the list scrolls, so the\n // browser can focus it): caught before the popover's own Esc, which would close it\n onKeyDownCapture={(e) => {\n if (!folder || e.key !== \"Escape\") return;\n e.preventDefault();\n e.stopPropagation();\n leave();\n }}\n >\n <div className=\"flex h-10 shrink-0 items-center gap-2 border-b border-kit-line px-3\">\n <IconSearch className=\"size-4 shrink-0 text-kit-fg-3\" stroke={1.5} aria-hidden />\n <input\n ref={input}\n value={q}\n onChange={(e) => setQ(e.target.value)}\n onKeyDown={(e) => {\n if (folder && e.key === \"Backspace\" && !q) {\n // ⌫ in an empty search steps back to every block (Esc: the popup's capture above)\n e.preventDefault();\n e.stopPropagation();\n leave();\n } else if (catalogKey(e, flat, active, setActive, pick, !q)) e.preventDefault();\n }}\n role=\"combobox\"\n aria-expanded\n aria-controls={listId}\n aria-activedescendant={flat.length ? `${listId}-${active}` : undefined}\n aria-label={folder ? \"Search components\" : \"Search or pick a block\"}\n placeholder={folder ? \"Search components\" : \"Search or pick a block\"}\n className=\"h-full min-w-0 flex-1 bg-transparent text-kit-sm text-kit-fg outline-none placeholder:text-kit-fg-3\"\n />\n </div>\n <CatalogList\n sections={sections}\n flat={flat}\n active={active}\n onHover={setActive}\n onPick={pick}\n empty={empty}\n emptyText={emptyText}\n noMatch={noMatch}\n detail={!!q || folder}\n listId={listId}\n className=\"min-h-0 flex-1\"\n />\n <Footer />\n </PopoverContent>\n );\n}\n\n/* ── Slash menu panel (positioned by the editor; never takes focus) ── */\nexport function SlashMenuPanel({\n query,\n folder = false,\n active,\n setActive,\n onPick,\n allows,\n maxHeight,\n}: {\n /** the room the editor found for the menu (collision-aware); the list scrolls inside it */\n maxHeight?: number;\n query: string;\n /** the More components view (the editor keeps it with the rest of the slash state) */\n folder?: boolean;\n active: number;\n setActive: (i: number) => void;\n onPick: (it: CatalogItem) => void;\n allows: (f: RichTextFeature) => boolean;\n}) {\n const listId = React.useId();\n const { sections, flat, empty, emptyText, noMatch } = useCatalog(query, allows, folder);\n return (\n <div\n data-kit-scope=\"\"\n className=\"flex w-[320px] flex-col overflow-hidden rounded-kit-xl border border-kit-line bg-kit-surface text-kit-fg shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:border-kit-line-strong [.dark_&]:bg-[#252528]\"\n style={maxHeight ? { maxHeight } : undefined}\n onMouseDown={(e) => e.preventDefault()}\n >\n <div className=\"flex h-8 shrink-0 items-center gap-2 border-b border-kit-line px-3 text-kit-sm\">\n <span className={cn(\"flex-1 truncate\", query ? \"text-kit-fg\" : \"text-kit-fg-3\")}>{query ? `${folder ? \"More components · \" : \"\"}/${query}` : folder ? \"More components\" : \"Type to search\"}</span>\n <kbd data-hint=\"shortcuts\" className=\"font-kit-sans text-kit-2xs text-kit-fg-3\">\n esc\n </kbd>\n </div>\n <CatalogList\n sections={sections}\n flat={flat}\n active={active}\n onHover={setActive}\n onPick={onPick}\n empty={empty}\n emptyText={emptyText}\n noMatch={noMatch}\n detail={!!query || folder}\n listId={listId}\n className=\"max-h-[300px] min-h-0 flex-1\"\n />\n <Footer />\n </div>\n );\n}\n"],"mappings":"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"}