@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,523 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { isObj, pathKey } from "../lib/path.js";
3
+ import { KitIcon } from "../lib/icons.js";
4
+ import { resolveFieldAccess, useForm, useKitEnv, useKitServices } from "../context.js";
5
+ import { Button } from "../ui/button.js";
6
+ import { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, Popover, PopoverContent, PopoverTrigger } from "../ui/overlay.js";
7
+ import { isHidden, objectOpenMode, plainText, summarize } from "../lib/schema.js";
8
+ import { IssueDot, RowChrome } from "./bits.js";
9
+ import { resolveHelp } from "../schema/help.js";
10
+ import { FieldShell } from "./field-shell.js";
11
+ import { groupSummary } from "./group-summary.js";
12
+ import { FieldInset, FieldRun, useInsetDepth } from "./grouping.js";
13
+ import { FieldList } from "./field-list.js";
14
+ import { ArrayField } from "./array.js";
15
+ import { ExpandAction, ExpandedField, expandKey, expandSpecFor, isExpandShortcut, openExpanded } from "./expand.js";
16
+ import { SchemaForm } from "./schema-form.js";
17
+ import { SlotField } from "./slot.js";
18
+ import { JsonControl } from "../controls/json.js";
19
+ import * as React from "react";
20
+ import { IconChevronRight } from "@tabler/icons-react";
21
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
22
+ //#region src/kit/engine/kit-field.tsx
23
+ /**
24
+ * KitField — renders ONE field of the schema at `path` (must be inside <SchemaForm>): the shell + the control for its
25
+ * type (V2 HEAD 9829bf1 kit/engine/kit-field.tsx).
26
+ *
27
+ * Arrays (array.tsx) and slots (slot.tsx) get their rows; objects open inline (FieldInset), drill (NavRow -> a frame),
28
+ * popover or dialog (NestedForm: its own navigation stack). Primitive types dispatch through the CONTROLS table, which
29
+ * the controls lanes fill. Every SchemaType has a control there; a type that is none of them (a schema newer than this
30
+ * kit) edits its raw value in the JSON control (FallbackControl), never nothing and never a stand-in.
31
+ */
32
+ /** Type → control. Registered by the controls lane; a type with no entry edits its raw value (FallbackControl). */
33
+ var CONTROLS = {};
34
+ /**
35
+ * Type → label-row action (DESIGN 4.4: slug Generate, rich text expand, table Edit in full screen), registered by the
36
+ * controls lane next to its control. It gets the control's props. V2 draws it only while the field is editable, except
37
+ * the types in ACTION_WHEN_READ_ONLY, whose action takes `readOnly` and decides for itself (slug Generate).
38
+ */
39
+ var ACTIONS = {};
40
+ var ACTION_WHEN_READ_ONLY = new Set(["slug"]);
41
+ /** D58: the field for the lens: read-only (plain text) when it can't edit it. Hidden fields never reach here
42
+ * (SchemaForm drops them from the schema). */
43
+ function useFieldAccess(field) {
44
+ return { readOnly: resolveFieldAccess(field, useKitEnv()).readOnly };
45
+ }
46
+ /** CPO D39: the field's help line — schema text first, then a line computed from its settings, then the house convention. */
47
+ function withDefaultHelp(field, isPublished, readOnly) {
48
+ let computed;
49
+ if (readOnly && field.lockReason) return {
50
+ ...field,
51
+ description: field.lockReason.replace(/\.?$/, ".")
52
+ };
53
+ if (field.type === "slug" && isPublished === false) computed = "Follows the title until you change it or publish.";
54
+ else if (field.type === "number" && !field.scale && field.layout !== "slider" && field.numeric?.unit) {
55
+ const { min, max, unit } = field.numeric;
56
+ computed = unit.startsWith("/") || max != null && unit.includes(String(max)) || min == null && max == null ? "" : min != null && max != null ? `Between ${min} and ${max} ${unit}.` : min != null ? `${min} ${unit} or more.` : `Up to ${max} ${unit}.`;
57
+ } else if (field.type === "number" && !field.scale && field.layout !== "slider" && (field.numeric?.min != null || field.numeric?.max != null)) {
58
+ const { min, max } = field.numeric ?? {};
59
+ computed = min != null && max != null ? `Between ${min} and ${max}.` : min != null ? `${min} or more.` : `Up to ${max}.`;
60
+ }
61
+ const help = resolveHelp(field, computed) ?? "";
62
+ return help === field.description ? field : {
63
+ ...field,
64
+ description: help
65
+ };
66
+ }
67
+ function KitField({ field, path, parent }) {
68
+ const form = useForm();
69
+ const env = useKitEnv();
70
+ const id = React.useId();
71
+ const { readOnly } = useFieldAccess(field);
72
+ if (!form) return null;
73
+ if (field.type === "array") return /* @__PURE__ */ jsx(ArrayField, {
74
+ field,
75
+ path,
76
+ parent
77
+ });
78
+ if (field.type === "slot") return /* @__PURE__ */ jsx(SlotField, {
79
+ field,
80
+ path
81
+ });
82
+ if (field.type === "object") return /* @__PURE__ */ jsx(ObjectField, {
83
+ field,
84
+ path
85
+ });
86
+ const key = pathKey(path);
87
+ const value = form.getAt(path);
88
+ const onChange = (v) => form.setAt(path, v);
89
+ const onBlur = () => form.touch(key);
90
+ const issue = form.visibleIssue(key);
91
+ const Control = CONTROLS[field.type] ?? FallbackControl;
92
+ const Action = ACTIONS[field.type];
93
+ const f = withDefaultHelp(field, env.isPublished, readOnly);
94
+ const plain = readOnly && PLAIN_TYPES.has(field.type);
95
+ const card = field.type === "boolean" && field.layout !== "checkbox";
96
+ const expand = plain || Action ? null : expandSpecFor(field, {
97
+ readOnly,
98
+ hasKitControl: !!CONTROLS[field.type],
99
+ variant: env.variant
100
+ });
101
+ const action = Action && (!readOnly || ACTION_WHEN_READ_ONLY.has(field.type)) ? /* @__PURE__ */ jsx(Action, {
102
+ field: f,
103
+ value,
104
+ onChange,
105
+ id,
106
+ readOnly,
107
+ path,
108
+ parent
109
+ }) : expand ? /* @__PURE__ */ jsx(ExpandAction, {
110
+ field: f,
111
+ path,
112
+ spec: expand
113
+ }) : void 0;
114
+ return /* @__PURE__ */ jsxs(FieldShell, {
115
+ field: f,
116
+ path,
117
+ id,
118
+ value,
119
+ onChange,
120
+ readOnly,
121
+ issue,
122
+ layout: card ? "card" : "stack",
123
+ action,
124
+ children: [plain ? card ? null : /* @__PURE__ */ jsx(PlainValue, {
125
+ field: f,
126
+ value,
127
+ id
128
+ }) : /* @__PURE__ */ jsx("div", {
129
+ onBlur,
130
+ onKeyDown: expand ? (e) => {
131
+ if (!isExpandShortcut(e)) return;
132
+ e.preventDefault();
133
+ openExpanded(expandKey(env.docId, path));
134
+ } : void 0,
135
+ className: "min-w-0",
136
+ children: /* @__PURE__ */ jsx(Control, {
137
+ field: f,
138
+ value,
139
+ onChange,
140
+ id,
141
+ invalid: issue?.level === "error",
142
+ readOnly,
143
+ path,
144
+ parent,
145
+ onBlur
146
+ })
147
+ }), expand ? /* @__PURE__ */ jsx(ExpandedField, {
148
+ field: f,
149
+ path,
150
+ spec: expand,
151
+ Control,
152
+ value,
153
+ onChange,
154
+ onBlur,
155
+ invalid: issue?.level === "error",
156
+ id,
157
+ parent
158
+ }) : null]
159
+ });
160
+ }
161
+ /**
162
+ * A row that opens something (V2 NavRow): type tile, title over a summary line, the field's chrome (from RowChrome),
163
+ * the issue rollup and a chevron.
164
+ * Like V2 it always draws its button and chevron, also with no `onClick` (a popover trigger around it opens on the
165
+ * click). Only `inert` (the form draws no frames, so nothing can open) leaves both out.
166
+ */
167
+ function NavRow({ icon, title, subtitle, path, onClick, inert, className, trailing }) {
168
+ const form = useForm();
169
+ const roll = path && form ? form.rollup(path) : {
170
+ errors: 0,
171
+ warnings: 0
172
+ };
173
+ const subId = React.useId();
174
+ const chrome = React.useContext(RowChrome);
175
+ const text = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
176
+ className: "block truncate text-kit-sm text-kit-fg",
177
+ children: title
178
+ }), /* @__PURE__ */ jsx("span", {
179
+ id: subId,
180
+ className: "block truncate text-kit-xs text-kit-fg-3",
181
+ children: subtitle || "Nothing set yet"
182
+ })] });
183
+ return /* @__PURE__ */ jsxs("div", {
184
+ className: cn("group/nav relative flex min-h-11 w-full min-w-0 items-center gap-2.5 rounded-kit-lg border border-kit-line bg-kit-control-bg py-1.5 pl-2 pr-2 text-left transition-colors hover:border-kit-line-strong hover:bg-kit-subtle", className),
185
+ children: [
186
+ /* @__PURE__ */ jsx("span", {
187
+ className: "flex size-7 shrink-0 items-center justify-center rounded-kit-md bg-kit-muted text-kit-fg-2",
188
+ children: /* @__PURE__ */ jsx(KitIcon, {
189
+ name: icon,
190
+ fallback: "folder",
191
+ className: "size-4"
192
+ })
193
+ }),
194
+ !inert ? /* @__PURE__ */ jsx("button", {
195
+ type: "button",
196
+ "data-nav-main": true,
197
+ onClick,
198
+ "aria-label": `Open ${title}${roll.errors ? `, ${roll.errors} ${roll.errors === 1 ? "issue" : "issues"}` : ""}`,
199
+ "aria-describedby": subId,
200
+ className: "min-w-0 flex-1 text-left outline-none after:absolute after:inset-0 after:rounded-kit-lg after:content-[''] focus-visible:after:outline-2 focus-visible:after:outline-offset-2 focus-visible:after:outline-kit-focus-ring focus-visible:after:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:after:outline-none",
201
+ children: text
202
+ }) : /* @__PURE__ */ jsx("div", {
203
+ "data-nav-main": true,
204
+ className: "min-w-0 flex-1 text-left",
205
+ children: text
206
+ }),
207
+ /* @__PURE__ */ jsx(IssueDot, {
208
+ errors: roll.errors,
209
+ warnings: roll.warnings,
210
+ className: "relative"
211
+ }),
212
+ chrome ? /* @__PURE__ */ jsx("span", {
213
+ className: "relative z-[1] flex shrink-0 items-center gap-0.5 empty:hidden",
214
+ children: chrome
215
+ }) : null,
216
+ trailing,
217
+ !inert ? /* @__PURE__ */ jsx(IconChevronRight, {
218
+ "aria-hidden": true,
219
+ className: "pointer-events-none size-4 shrink-0 text-kit-fg-3 transition-transform group-hover/nav:translate-x-0.5",
220
+ stroke: 1.5
221
+ }) : null
222
+ ]
223
+ });
224
+ }
225
+ function ObjectField({ field, path }) {
226
+ const form = useForm();
227
+ const id = React.useId();
228
+ const { readOnly } = useFieldAccess(field);
229
+ const depth = useInsetDepth();
230
+ const value = form.getAt(path);
231
+ const obj = isObj(value) ? value : {};
232
+ const fields = field.fields ?? [];
233
+ const wanted = objectOpenMode(field);
234
+ const mode = wanted === "inline" && depth > 0 ? "drill" : wanted;
235
+ const [open, setOpen] = React.useState(false);
236
+ const sum = groupSummary(fields, obj) || summarize(fields, obj);
237
+ const nav = React.useRef(null);
238
+ const shell = (control, layout) => /* @__PURE__ */ jsx(FieldShell, {
239
+ field,
240
+ path,
241
+ id,
242
+ value,
243
+ onChange: (v) => form.setAt(path, v),
244
+ readOnly,
245
+ issue: form.visibleIssue(pathKey(path)),
246
+ layout,
247
+ children: control
248
+ });
249
+ if (mode === "inline") {
250
+ const visible = fields.filter((f) => !isHidden(f, obj));
251
+ return shell(/* @__PURE__ */ jsx(FieldInset, {
252
+ label: field.title,
253
+ children: /* @__PURE__ */ jsx(FieldRun, {
254
+ fields: visible,
255
+ render: (f) => /* @__PURE__ */ jsx(KitField, {
256
+ field: f,
257
+ path: [...path, f.name],
258
+ parent: obj
259
+ })
260
+ })
261
+ }));
262
+ }
263
+ const help = resolveHelp(field) ?? "";
264
+ if (mode === "popover") return shell(/* @__PURE__ */ jsxs(Popover, {
265
+ open,
266
+ onOpenChange: setOpen,
267
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, {
268
+ nativeButton: false,
269
+ render: /* @__PURE__ */ jsx("div", {}),
270
+ children: /* @__PURE__ */ jsx(NavRow, {
271
+ icon: field.icon,
272
+ title: field.title,
273
+ subtitle: sum || help,
274
+ path
275
+ })
276
+ }), /* @__PURE__ */ jsx(PopoverContent, {
277
+ className: "w-[340px] p-3",
278
+ align: "start",
279
+ children: /* @__PURE__ */ jsx(FieldList, {
280
+ fields,
281
+ basePath: path,
282
+ memoryKey: `pop:${pathKey(path)}`
283
+ })
284
+ })]
285
+ }), "row");
286
+ if (mode === "dialog") return shell(/* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(NavRow, {
287
+ icon: field.icon,
288
+ title: field.title,
289
+ subtitle: sum || help,
290
+ path,
291
+ onClick: () => setOpen(true)
292
+ }), /* @__PURE__ */ jsx(Modal, {
293
+ open,
294
+ onOpenChange: (o, d) => {
295
+ if (!o && d.reason === "escape-key" && nav.current?.back()) return d.cancel();
296
+ setOpen(o);
297
+ },
298
+ children: /* @__PURE__ */ jsxs(ModalContent, {
299
+ size: "lg",
300
+ children: [
301
+ /* @__PURE__ */ jsx(ModalHeader, {
302
+ title: field.title,
303
+ description: field.description,
304
+ icon: /* @__PURE__ */ jsx(KitIcon, {
305
+ name: field.icon,
306
+ fallback: "folder"
307
+ })
308
+ }),
309
+ /* @__PURE__ */ jsx(ModalBody, {
310
+ className: "flex min-h-[320px] flex-col gap-5",
311
+ children: /* @__PURE__ */ jsx(NestedForm, {
312
+ fields,
313
+ title: field.title,
314
+ icon: field.icon,
315
+ path,
316
+ navRef: nav
317
+ })
318
+ }),
319
+ /* @__PURE__ */ jsxs(ModalFooter, { children: [/* @__PURE__ */ jsx("span", {
320
+ className: "mr-auto text-kit-xs text-kit-fg-3",
321
+ children: "Changes save as you type"
322
+ }), /* @__PURE__ */ jsx(Button, {
323
+ variant: "primary",
324
+ onClick: () => setOpen(false),
325
+ children: "Done"
326
+ })] })
327
+ ]
328
+ })
329
+ })] }), "row");
330
+ return shell(/* @__PURE__ */ jsx(NavRow, {
331
+ icon: field.icon,
332
+ title: field.title,
333
+ subtitle: sum || help,
334
+ path,
335
+ onClick: () => form.navigate(path),
336
+ inert: !form.canNavigate
337
+ }), "row");
338
+ }
339
+ /**
340
+ * A dialog gets its OWN navigation stack: lists inside it drill inside the dialog (breadcrumb, Esc, stepper), never the
341
+ * panel behind. Writes go straight into the parent form at `path`.
342
+ */
343
+ function NestedForm({ fields, title, icon, path, navRef }) {
344
+ const form = useForm();
345
+ const env = useKitEnv();
346
+ const key = pathKey(path);
347
+ const schema = React.useMemo(() => ({
348
+ name: key || "nested",
349
+ title,
350
+ icon,
351
+ kind: "object",
352
+ fields
353
+ }), [
354
+ key,
355
+ title,
356
+ icon,
357
+ fields
358
+ ]);
359
+ const raw = form.getAt(path);
360
+ const pub = form.hasPublished ? form.publishedAt(path) : void 0;
361
+ const presence = React.useMemo(() => {
362
+ const out = {};
363
+ for (const [k, v] of Object.entries(env.presence)) if (k.startsWith(`${key}.`)) out[k.slice(key.length + 1)] = v;
364
+ return out;
365
+ }, [env.presence, key]);
366
+ return /* @__PURE__ */ jsx(SchemaForm, {
367
+ schema,
368
+ value: isObj(raw) ? raw : {},
369
+ onChange: (v) => form.setAt(path, v),
370
+ variant: "document",
371
+ scroll: false,
372
+ navRef,
373
+ resolveSchema: form.resolveSchema,
374
+ blockLibrary: form.blockLibrary,
375
+ published: isObj(pub) ? pub : void 0,
376
+ presence,
377
+ readOnly: env.readOnly,
378
+ showErrors: form.showAllErrors,
379
+ onOpenReference: env.onOpenReference,
380
+ env: {
381
+ docId: `${env.docId}:${key}`,
382
+ docTitle: env.docTitle,
383
+ urlPrefix: env.urlPrefix,
384
+ isPublished: env.isPublished,
385
+ palette: env.palette,
386
+ helpDisplay: env.helpDisplay
387
+ }
388
+ });
389
+ }
390
+ var PLAIN_TYPES = new Set([
391
+ "string",
392
+ "text",
393
+ "richtext",
394
+ "number",
395
+ "slug",
396
+ "url",
397
+ "email",
398
+ "date",
399
+ "datetime",
400
+ "select",
401
+ "multiselect",
402
+ "tags",
403
+ "boolean",
404
+ "rating"
405
+ ]);
406
+ function plainOf(field, value) {
407
+ if (value == null || value === "") return "";
408
+ const label = (v) => field.options?.find((o) => o.value === v)?.label ?? String(v);
409
+ if (field.type === "boolean") return value ? "On" : "Off";
410
+ if (field.type === "select") return label(value);
411
+ if (field.type === "richtext") return plainText(value);
412
+ if (Array.isArray(value)) return value.map(label).join(", ");
413
+ if (field.type === "date" || field.type === "datetime") {
414
+ const d = new Date(String(value).replace(/\[.*\]$/, ""));
415
+ return Number.isNaN(+d) ? String(value) : d.toLocaleString("en-US", field.type === "date" ? {
416
+ month: "short",
417
+ day: "numeric",
418
+ year: "numeric"
419
+ } : {
420
+ month: "short",
421
+ day: "numeric",
422
+ year: "numeric",
423
+ hour: "numeric",
424
+ minute: "2-digit"
425
+ });
426
+ }
427
+ if (field.type === "number" && isObj(value)) return String(value.value ?? "");
428
+ return typeof value === "object" ? "" : String(value);
429
+ }
430
+ function PlainValue({ field, value, id }) {
431
+ const text = plainOf(field, value);
432
+ return /* @__PURE__ */ jsx("p", {
433
+ id,
434
+ tabIndex: 0,
435
+ "data-slot": "kit-plain",
436
+ className: cn("min-w-0 whitespace-pre-wrap break-words text-kit-sm leading-6 text-kit-fg outline-none", (field.type === "slug" || field.type === "url") && "font-kit-mono text-kit-xs leading-6"),
437
+ children: text || /* @__PURE__ */ jsx("span", {
438
+ className: "text-kit-fg-3",
439
+ children: "Empty"
440
+ })
441
+ });
442
+ }
443
+ /**
444
+ * Every SchemaType has a kit control (kit-field.test checks CONTROLS against the type list in schema/types.ts). A field
445
+ * whose type is none of them edits its raw stored value in the JSON control, tagged `data-kit-fallback="<type>"`: the
446
+ * value is shown and kept, and an edit is written only once it parses.
447
+ */
448
+ function FallbackControl(props) {
449
+ return /* @__PURE__ */ jsx("div", {
450
+ "data-kit-fallback": props.field.type,
451
+ className: "min-w-0",
452
+ children: /* @__PURE__ */ jsx(JsonControl, { ...props })
453
+ });
454
+ }
455
+ /**
456
+ * A control that cannot carry a stored value unchanged (rich text holding formatting its editor would drop) hands that
457
+ * value to the host's control for the type (KitServices.LegacyControl: the dashboard's FieldRenderer arm), bare inside
458
+ * the kit FieldShell, which owns the label and the help; the control names its reason above it. The box carries
459
+ * `data-kit-legacy="<type>"`, so the parity harness counts it (mismatch class `legacy-control`). A host with no legacy
460
+ * service, or a control that throws while rendering, says why in words; the form around it keeps working.
461
+ */
462
+ function LegacyFallback(props) {
463
+ const { LegacyControl } = useKitServices();
464
+ const { field, id } = props;
465
+ return /* @__PURE__ */ jsx("div", {
466
+ "data-kit-legacy": field.type,
467
+ className: "min-w-0",
468
+ children: LegacyControl ? /* @__PURE__ */ jsx(LegacyBoundary, {
469
+ field,
470
+ id,
471
+ value: props.value,
472
+ children: /* @__PURE__ */ jsx(LegacyControl, { ...props })
473
+ }, JSON.stringify(field)) : /* @__PURE__ */ jsxs(LegacyRefusal, {
474
+ id,
475
+ children: [
476
+ "This view has no control for ",
477
+ field.type,
478
+ " fields."
479
+ ]
480
+ })
481
+ });
482
+ }
483
+ /**
484
+ * An `<output>`: a labelable element, so the FieldShell label's `for` lands on it, and focusable, so a keyboard user
485
+ * reaches the reason. The neutral focus ring shows under keyboard modality only.
486
+ */
487
+ function LegacyRefusal({ id, children }) {
488
+ return /* @__PURE__ */ jsx("output", {
489
+ id,
490
+ role: "note",
491
+ tabIndex: 0,
492
+ "data-slot": "kit-legacy-refusal",
493
+ className: "block rounded-kit-sm text-kit-xs text-kit-fg-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-kit-focus-ring focus-visible:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:outline-0",
494
+ children
495
+ });
496
+ }
497
+ /** Retries the control once its field or value changes (a schema edit, a save from elsewhere, an undo). */
498
+ var LegacyBoundary = class extends React.Component {
499
+ state = { reason: null };
500
+ static getDerivedStateFromError(error) {
501
+ return { reason: error instanceof Error ? error.message : String(error) };
502
+ }
503
+ componentDidUpdate(prev) {
504
+ if (this.state.reason === null) return;
505
+ if (prev.value !== this.props.value || JSON.stringify(prev.field) !== JSON.stringify(this.props.field)) this.setState({ reason: null });
506
+ }
507
+ render() {
508
+ if (this.state.reason === null) return this.props.children;
509
+ return /* @__PURE__ */ jsxs(LegacyRefusal, {
510
+ id: this.props.id,
511
+ children: [
512
+ "The ",
513
+ this.props.field.title,
514
+ " control could not load: ",
515
+ this.state.reason
516
+ ]
517
+ });
518
+ }
519
+ };
520
+ //#endregion
521
+ export { ACTIONS, ACTION_WHEN_READ_ONLY, CONTROLS, FallbackControl, KitField, LegacyFallback, NavRow, NestedForm, plainOf, useFieldAccess, withDefaultHelp };
522
+
523
+ //# sourceMappingURL=kit-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kit-field.js","names":[],"sources":["../../src/kit/engine/kit-field.tsx"],"sourcesContent":["/**\n * KitField — renders ONE field of the schema at `path` (must be inside <SchemaForm>): the shell + the control for its\n * type (V2 HEAD 9829bf1 kit/engine/kit-field.tsx).\n *\n * Arrays (array.tsx) and slots (slot.tsx) get their rows; objects open inline (FieldInset), drill (NavRow -> a frame),\n * popover or dialog (NestedForm: its own navigation stack). Primitive types dispatch through the CONTROLS table, which\n * the controls lanes fill. Every SchemaType has a control there; a type that is none of them (a schema newer than this\n * kit) edits its raw value in the JSON control (FallbackControl), never nothing and never a stand-in.\n */\nimport * as React from \"react\";\nimport type { ComponentType } from \"react\";\nimport { IconChevronRight } from \"@tabler/icons-react\";\nimport { KitIcon } from \"../lib/icons\";\nimport { cn } from \"../lib/cn\";\nimport type { FieldPath, FieldSchema, PrimitiveType, SchemaType } from \"../schema/types\";\nimport { resolveHelp } from \"../schema/help\";\nimport type { ControlProps } from \"../types\";\nimport { resolveFieldAccess, useForm, useKitEnv, useKitServices, type KitPeer } from \"../context\";\nimport { Button } from \"../ui/button\";\nimport { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, Popover, PopoverContent, PopoverTrigger } from \"../ui/overlay\";\nimport { isObj, pathKey } from \"../lib/path\";\nimport { isHidden, objectOpenMode, plainText, summarize } from \"../lib/schema\";\nimport { ArrayField, type NestedFormProps } from \"./array\";\nimport { ExpandAction, ExpandedField, expandKey, expandSpecFor, isExpandShortcut, openExpanded } from \"./expand\";\nimport { FieldShell } from \"./field-shell\";\nimport { FieldList } from \"./field-list\";\nimport { IssueDot, RowChrome } from \"./bits\";\nimport { FieldInset, FieldRun, groupSummary, useInsetDepth } from \"./grouping\";\nimport { SchemaForm } from \"./schema-form\";\nimport { SlotField } from \"./slot\";\nimport { JsonControl } from \"../controls/json\";\n\nexport interface KitFieldProps {\n field: FieldSchema;\n path: (string | number)[];\n parent?: Record<string, unknown>;\n}\n\n/** Type → control. Registered by the controls lane; a type with no entry edits its raw value (FallbackControl). */\nexport const CONTROLS: Partial<Record<SchemaType, ComponentType<ControlProps>>> = {};\n\n/**\n * Type → label-row action (DESIGN 4.4: slug Generate, rich text expand, table Edit in full screen), registered by the\n * controls lane next to its control. It gets the control's props. V2 draws it only while the field is editable, except\n * the types in ACTION_WHEN_READ_ONLY, whose action takes `readOnly` and decides for itself (slug Generate).\n */\nexport const ACTIONS: Partial<Record<SchemaType, ComponentType<ControlProps>>> = {};\nexport const ACTION_WHEN_READ_ONLY = new Set<SchemaType>([\"slug\"]);\n\n/** D58: the field for the lens: read-only (plain text) when it can't edit it. Hidden fields never reach here\n * (SchemaForm drops them from the schema). */\nexport function useFieldAccess(field: FieldSchema) {\n const env = useKitEnv();\n return { readOnly: resolveFieldAccess(field, env).readOnly };\n}\n\n/** CPO D39: the field's help line — schema text first, then a line computed from its settings, then the house convention. */\nexport function withDefaultHelp(field: FieldSchema, isPublished?: boolean, readOnly?: boolean): FieldSchema {\n let computed: string | undefined;\n /* a value set elsewhere says where, in one plain line (never a lock or a key) */\n if (readOnly && field.lockReason) return { ...field, description: field.lockReason.replace(/\\.?$/, \".\") };\n if (field.type === \"slug\" && isPublished === false) computed = \"Follows the title until you change it or publish.\";\n else if (field.type === \"number\" && !field.scale && field.layout !== \"slider\" && field.numeric?.unit) {\n /* D63: the unit sits in the input (\"/ 5\", \"min\"), so a line that only restates it or its range is noise. A range\n still earns a line when the unit does not already say it (\"Between 1 and 12 items.\"). */\n const { min, max, unit } = field.numeric;\n const said = unit.startsWith(\"/\") || (max != null && unit.includes(String(max)));\n computed = said || (min == null && max == null) ? \"\" : min != null && max != null ? `Between ${min} and ${max} ${unit}.` : min != null ? `${min} ${unit} or more.` : `Up to ${max} ${unit}.`;\n } else if (field.type === \"number\" && !field.scale && field.layout !== \"slider\" && (field.numeric?.min != null || field.numeric?.max != null)) {\n const { min, max } = field.numeric ?? {};\n computed = min != null && max != null ? `Between ${min} and ${max}.` : min != null ? `${min} or more.` : `Up to ${max}.`;\n }\n /* resolve here so the computed line wins over the house convention; \"\" survives as \"deliberately none\" */\n const help = resolveHelp(field, computed) ?? \"\";\n return help === field.description ? field : { ...field, description: help };\n}\n\nexport function KitField({ field, path, parent }: KitFieldProps) {\n const form = useForm();\n const env = useKitEnv();\n const id = React.useId();\n const { readOnly } = useFieldAccess(field);\n if (!form) return null;\n\n if (field.type === \"array\") return <ArrayField field={field} path={path} parent={parent} />;\n if (field.type === \"slot\") return <SlotField field={field} path={path} />;\n if (field.type === \"object\") return <ObjectField field={field} path={path} />;\n\n const key = pathKey(path);\n const value = form.getAt(path);\n const onChange = (v: unknown) => form.setAt(path, v);\n const onBlur = () => form.touch(key);\n const issue = form.visibleIssue(key);\n const Control = CONTROLS[field.type] ?? FallbackControl;\n const Action = ACTIONS[field.type];\n const f = withDefaultHelp(field, env.isPublished, readOnly);\n const plain = readOnly && PLAIN_TYPES.has(field.type as PrimitiveType);\n const card = field.type === \"boolean\" && field.layout !== \"checkbox\";\n /* D49: rich text, code and tables open the shared expanded editor (expand.tsx). A lane that registers its\n own ACTIONS[type] owns its expansion too (rich text's editor modal, the table's spreadsheet): the engine draws no\n second modal and binds no second ⌘↵ for it. */\n const expand = plain || Action ? null : expandSpecFor(field, { readOnly, hasKitControl: !!CONTROLS[field.type], variant: env.variant });\n const action =\n Action && (!readOnly || ACTION_WHEN_READ_ONLY.has(field.type)) ? (\n <Action field={f} value={value} onChange={onChange} id={id} readOnly={readOnly} path={path} parent={parent} />\n ) : expand ? (\n <ExpandAction field={f} path={path} spec={expand} />\n ) : undefined;\n return (\n <FieldShell field={f} path={path} id={id} value={value} onChange={onChange} readOnly={readOnly} issue={issue} layout={card ? \"card\" : \"stack\"} action={action}>\n {plain ? (\n card ? null /* the switch card already reads On / Off */ : <PlainValue field={f} value={value} id={id} />\n ) : (\n <div\n onBlur={onBlur}\n onKeyDown={\n expand\n ? (e) => {\n if (!isExpandShortcut(e)) return;\n e.preventDefault();\n openExpanded(expandKey(env.docId, path));\n }\n : undefined\n }\n className=\"min-w-0\"\n >\n <Control field={f} value={value} onChange={onChange} id={id} invalid={issue?.level === \"error\"} readOnly={readOnly} path={path} parent={parent} onBlur={onBlur} />\n </div>\n )}\n {expand ? (\n <ExpandedField field={f} path={path} spec={expand} Control={Control} value={value} onChange={onChange} onBlur={onBlur} invalid={issue?.level === \"error\"} id={id} parent={parent} />\n ) : null}\n </FieldShell>\n );\n}\n\n/**\n * A row that opens something (V2 NavRow): type tile, title over a summary line, the field's chrome (from RowChrome),\n * the issue rollup and a chevron.\n * Like V2 it always draws its button and chevron, also with no `onClick` (a popover trigger around it opens on the\n * click). Only `inert` (the form draws no frames, so nothing can open) leaves both out.\n */\nexport function NavRow({\n icon,\n title,\n subtitle,\n path,\n onClick,\n inert,\n className,\n trailing,\n}: {\n icon?: string;\n title: string;\n subtitle?: string;\n path?: FieldPath;\n onClick?: () => void;\n inert?: boolean;\n className?: string;\n trailing?: React.ReactNode;\n}) {\n const form = useForm();\n const roll = path && form ? form.rollup(path) : { errors: 0, warnings: 0 };\n const subId = React.useId();\n const chrome = React.useContext(RowChrome);\n const text = (\n <>\n <span className=\"block truncate text-kit-sm text-kit-fg\">{title}</span>\n <span id={subId} className=\"block truncate text-kit-xs text-kit-fg-3\">\n {subtitle || \"Nothing set yet\"}\n </span>\n </>\n );\n return (\n <div\n className={cn(\n \"group/nav relative flex min-h-11 w-full min-w-0 items-center gap-2.5 rounded-kit-lg border border-kit-line bg-kit-control-bg py-1.5 pl-2 pr-2 text-left transition-colors hover:border-kit-line-strong hover:bg-kit-subtle\",\n className,\n )}\n >\n <span className=\"flex size-7 shrink-0 items-center justify-center rounded-kit-md bg-kit-muted text-kit-fg-2\">\n <KitIcon name={icon} fallback=\"folder\" className=\"size-4\" />\n </span>\n {!inert ? (\n <button\n type=\"button\"\n data-nav-main\n onClick={onClick}\n aria-label={`Open ${title}${roll.errors ? `, ${roll.errors} ${roll.errors === 1 ? \"issue\" : \"issues\"}` : \"\"}`}\n aria-describedby={subId}\n className=\"min-w-0 flex-1 text-left outline-none after:absolute after:inset-0 after:rounded-kit-lg after:content-[''] focus-visible:after:outline-2 focus-visible:after:outline-offset-2 focus-visible:after:outline-kit-focus-ring focus-visible:after:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:after:outline-none\"\n >\n {text}\n </button>\n ) : (\n <div data-nav-main className=\"min-w-0 flex-1 text-left\">\n {text}\n </div>\n )}\n <IssueDot errors={roll.errors} warnings={roll.warnings} className=\"relative\" />\n {chrome ? <span className=\"relative z-[1] flex shrink-0 items-center gap-0.5 empty:hidden\">{chrome}</span> : null}\n {trailing}\n {!inert ? <IconChevronRight aria-hidden className=\"pointer-events-none size-4 shrink-0 text-kit-fg-3 transition-transform group-hover/nav:translate-x-0.5\" stroke={1.5} /> : null}\n </div>\n );\n}\n\n/* ── Object: inline · drill · popover · dialog (V2 ObjectField) ───── */\n\nfunction ObjectField({ field, path }: { field: FieldSchema; path: FieldPath }) {\n const form = useForm()!;\n const id = React.useId();\n const { readOnly } = useFieldAccess(field);\n const depth = useInsetDepth();\n const value = form.getAt(path);\n const obj = isObj(value) ? value : {};\n const fields = field.fields ?? [];\n /* D45 nesting rule: one container per level. Inside an inset (or an expanded row) an \"inline\" object would be a box in a\n box, so it drills instead — level 3+ is always a new frame, never more indentation. */\n const wanted = objectOpenMode(field);\n const mode = wanted === \"inline\" && depth > 0 ? \"drill\" : wanted;\n const [open, setOpen] = React.useState(false);\n const sum = groupSummary(fields, obj) || summarize(fields, obj);\n const nav = React.useRef<{ back: () => boolean }>(null);\n const shell = (control: React.ReactNode, layout?: \"row\") => (\n <FieldShell field={field} path={path} id={id} value={value} onChange={(v) => form.setAt(path, v)} readOnly={readOnly} issue={form.visibleIssue(pathKey(path))} layout={layout}>\n {control}\n </FieldShell>\n );\n if (mode === \"inline\") {\n const visible = fields.filter((f) => !isHidden(f, obj));\n /* D63: label, then the children behind one inset line; short neighbours pair up only on a wide form */\n return shell(\n <FieldInset label={field.title}>\n <FieldRun fields={visible} render={(f) => <KitField field={f} path={[...path, f.name]} parent={obj} />} />\n </FieldInset>,\n );\n }\n const help = resolveHelp(field) ?? \"\";\n if (mode === \"popover\")\n /* V2: Radix <PopoverTrigger asChild><div> — the whole row is the trigger (aria-expanded, aria-haspopup=\"dialog\");\n NavRow gets no onClick but still draws its button (\"Open <title>\") and chevron, whose click opens the popover. */\n return shell(\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger nativeButton={false} render={<div />}>\n <NavRow icon={field.icon} title={field.title} subtitle={sum || help} path={path} />\n </PopoverTrigger>\n <PopoverContent className=\"w-[340px] p-3\" align=\"start\">\n <FieldList fields={fields} basePath={path} memoryKey={`pop:${pathKey(path)}`} />\n </PopoverContent>\n </Popover>,\n \"row\",\n );\n if (mode === \"dialog\")\n return shell(\n <>\n <NavRow icon={field.icon} title={field.title} subtitle={sum || help} path={path} onClick={() => setOpen(true)} />\n <Modal\n open={open}\n onOpenChange={(o, d) => {\n // Escape steps back inside the dialog's own frames first (V2: onEscapeKeyDown + nav.back())\n if (!o && d.reason === \"escape-key\" && nav.current?.back()) return d.cancel();\n setOpen(o);\n }}\n >\n <ModalContent size=\"lg\">\n <ModalHeader title={field.title} description={field.description} icon={<KitIcon name={field.icon} fallback=\"folder\" />} />\n <ModalBody className=\"flex min-h-[320px] flex-col gap-5\">\n <NestedForm fields={fields} title={field.title} icon={field.icon} path={path} navRef={nav} />\n </ModalBody>\n <ModalFooter>\n <span className=\"mr-auto text-kit-xs text-kit-fg-3\">Changes save as you type</span>\n <Button variant=\"primary\" onClick={() => setOpen(false)}>\n Done\n </Button>\n </ModalFooter>\n </ModalContent>\n </Modal>\n </>,\n \"row\",\n );\n return shell(<NavRow icon={field.icon} title={field.title} subtitle={sum || help} path={path} onClick={() => form.navigate(path)} inert={!form.canNavigate} />, \"row\");\n}\n\n/**\n * A dialog gets its OWN navigation stack: lists inside it drill inside the dialog (breadcrumb, Esc, stepper), never the\n * panel behind. Writes go straight into the parent form at `path`.\n */\nexport function NestedForm({ fields, title, icon, path, navRef }: NestedFormProps) {\n const form = useForm()!;\n const env = useKitEnv();\n const key = pathKey(path);\n const schema = React.useMemo(() => ({ name: key || \"nested\", title, icon, kind: \"object\" as const, fields }), [key, title, icon, fields]);\n const raw = form.getAt(path);\n const pub = form.hasPublished ? form.publishedAt(path) : undefined;\n const presence = React.useMemo(() => {\n const out: Record<string, KitPeer[]> = {};\n for (const [k, v] of Object.entries(env.presence)) if (k.startsWith(`${key}.`)) out[k.slice(key.length + 1)] = v;\n return out;\n }, [env.presence, key]);\n return (\n <SchemaForm\n schema={schema}\n value={isObj(raw) ? raw : {}}\n onChange={(v) => form.setAt(path, v)}\n variant=\"document\"\n scroll={false}\n navRef={navRef}\n resolveSchema={form.resolveSchema}\n blockLibrary={form.blockLibrary}\n published={isObj(pub) ? pub : undefined}\n presence={presence}\n readOnly={env.readOnly}\n showErrors={form.showAllErrors}\n onOpenReference={env.onOpenReference}\n env={{ docId: `${env.docId}:${key}`, docTitle: env.docTitle, urlPrefix: env.urlPrefix, isPublished: env.isPublished, palette: env.palette, helpDisplay: env.helpDisplay }}\n />\n );\n}\n\n/* ── Read-only as plain text (D58 §0): no greyed input, just the value ── */\nconst PLAIN_TYPES = new Set<PrimitiveType>([\"string\", \"text\", \"richtext\", \"number\", \"slug\", \"url\", \"email\", \"date\", \"datetime\", \"select\", \"multiselect\", \"tags\", \"boolean\", \"rating\"]);\nexport function plainOf(field: FieldSchema, value: unknown): string {\n if (value == null || value === \"\") return \"\";\n const label = (v: unknown) => field.options?.find((o) => o.value === v)?.label ?? String(v);\n if (field.type === \"boolean\") return value ? \"On\" : \"Off\";\n if (field.type === \"select\") return label(value);\n // before the list arm: stored rich text may be a Portable Text block array\n if (field.type === \"richtext\") return plainText(value);\n if (Array.isArray(value)) return value.map(label).join(\", \");\n if (field.type === \"date\" || field.type === \"datetime\") {\n const d = new Date(String(value).replace(/\\[.*\\]$/, \"\"));\n return Number.isNaN(+d) ? String(value) : d.toLocaleString(\"en-US\", field.type === \"date\" ? { month: \"short\", day: \"numeric\", year: \"numeric\" } : { month: \"short\", day: \"numeric\", year: \"numeric\", hour: \"numeric\", minute: \"2-digit\" });\n }\n if (field.type === \"number\" && isObj(value)) return String((value as { value?: unknown }).value ?? \"\");\n return typeof value === \"object\" ? \"\" : String(value);\n}\nfunction PlainValue({ field, value, id }: { field: FieldSchema; value: unknown; id: string }) {\n const text = plainOf(field, value);\n return (\n <p id={id} tabIndex={0} data-slot=\"kit-plain\" className={cn(\"min-w-0 whitespace-pre-wrap break-words text-kit-sm leading-6 text-kit-fg outline-none\", (field.type === \"slug\" || field.type === \"url\") && \"font-kit-mono text-kit-xs leading-6\")}>\n {text || <span className=\"text-kit-fg-3\">Empty</span>}\n </p>\n );\n}\n\n/* ── Unknown type: the raw value, in the JSON control ── */\n/**\n * Every SchemaType has a kit control (kit-field.test checks CONTROLS against the type list in schema/types.ts). A field\n * whose type is none of them edits its raw stored value in the JSON control, tagged `data-kit-fallback=\"<type>\"`: the\n * value is shown and kept, and an edit is written only once it parses.\n */\nexport function FallbackControl(props: ControlProps) {\n return (\n <div data-kit-fallback={props.field.type} className=\"min-w-0\">\n <JsonControl {...props} />\n </div>\n );\n}\n\n/* ── Hand-off: the host's own control for a value the kit refuses ── */\n/**\n * A control that cannot carry a stored value unchanged (rich text holding formatting its editor would drop) hands that\n * value to the host's control for the type (KitServices.LegacyControl: the dashboard's FieldRenderer arm), bare inside\n * the kit FieldShell, which owns the label and the help; the control names its reason above it. The box carries\n * `data-kit-legacy=\"<type>\"`, so the parity harness counts it (mismatch class `legacy-control`). A host with no legacy\n * service, or a control that throws while rendering, says why in words; the form around it keeps working.\n */\nexport function LegacyFallback(props: ControlProps) {\n const { LegacyControl } = useKitServices();\n const { field, id } = props;\n return (\n <div data-kit-legacy={field.type} className=\"min-w-0\">\n {LegacyControl ? (\n // keyed by the schema's content: a schema edit remounts the control (KitField hands over a fresh field object on\n // every render, so identity would remount on every keystroke). A value change retries in place (componentDidUpdate).\n <LegacyBoundary key={JSON.stringify(field)} field={field} id={id} value={props.value}>\n <LegacyControl {...props} />\n </LegacyBoundary>\n ) : (\n <LegacyRefusal id={id}>This view has no control for {field.type} fields.</LegacyRefusal>\n )}\n </div>\n );\n}\n\n/**\n * An `<output>`: a labelable element, so the FieldShell label's `for` lands on it, and focusable, so a keyboard user\n * reaches the reason. The neutral focus ring shows under keyboard modality only.\n */\nfunction LegacyRefusal({ id, children }: { id: string; children: React.ReactNode }) {\n return (\n <output\n id={id}\n role=\"note\"\n tabIndex={0}\n data-slot=\"kit-legacy-refusal\"\n className=\"block rounded-kit-sm text-kit-xs text-kit-fg-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-kit-focus-ring focus-visible:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:outline-0\"\n >\n {children}\n </output>\n );\n}\n\n/** Retries the control once its field or value changes (a schema edit, a save from elsewhere, an undo). */\nclass LegacyBoundary extends React.Component<{ field: FieldSchema; id: string; value: unknown; children: React.ReactNode }, { reason: string | null }> {\n state = { reason: null as string | null };\n static getDerivedStateFromError(error: unknown) {\n return { reason: error instanceof Error ? error.message : String(error) };\n }\n componentDidUpdate(prev: { field: FieldSchema; value: unknown }) {\n if (this.state.reason === null) return;\n // by content: KitField hands over a fresh field object (withDefaultHelp) on every render\n if (prev.value !== this.props.value || JSON.stringify(prev.field) !== JSON.stringify(this.props.field)) this.setState({ reason: null });\n }\n render() {\n if (this.state.reason === null) return this.props.children;\n return (\n <LegacyRefusal id={this.props.id}>\n The {this.props.field.title} control could not load: {this.state.reason}\n </LegacyRefusal>\n );\n }\n}\n"],"mappings":"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"}