@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,25 @@
1
+ /**
2
+ * FIELD HELP — CPO D39, narrowed by D51 "Help text is the exception". One place for the grey line under a label.
3
+ *
4
+ * Precedence (first match wins):
5
+ * 1. `field.description` written on the schema. `""` opts out on purpose.
6
+ * 2. A computed line from the field's own settings (slug before publish, number ranges).
7
+ * 3. A convention from this file, matched on field NAME + TYPE. Only facts that are true for that field in every
8
+ * block live here, and only facts the editor cannot see from the label and the control.
9
+ *
10
+ * The rule (D51, enforced by scripts/brain/check-help.ts):
11
+ * - Most fields get NO help. Ask: "Does the editor need this to type the right value?" If no, no help.
12
+ * - Allowed: a non-obvious format or unit ("In minutes.", "A .vtt file."), where it shows when the canvas can't
13
+ * show it ("Shown in search results."), a real constraint or consequence ("Changing it once live breaks links."),
14
+ * a fallback ("Leave empty to use the page title.").
15
+ * - Never: restating the label, writing advice ("Keep it short", "Start with a verb", "2–4 words"), marketing
16
+ * theory, internal or design-system notes ("Label and link are one unit"), examples that belong in `placeholder`.
17
+ * - Length guidance is a counter (`validation.max` / `recommendedMax`), never a sentence.
18
+ * - One short sentence, under 90 characters, no em dash. Anything longer goes in `helpMore` (the ⓘ), sparingly.
19
+ * - No type-wide defaults: a heading, a button or an image gets nothing just for being one.
20
+ */
21
+ import type { FieldSchema } from "./types";
22
+ /** The convention for a field, or undefined. Does not look at `description`; callers decide precedence. */
23
+ export declare function conventionalHelp(field: Pick<FieldSchema, "name" | "type">): string | undefined;
24
+ /** Help for a field following D39 precedence. `computed` is the field's own derived line (slug, number range). */
25
+ export declare function resolveHelp(field: FieldSchema, computed?: string): string | undefined;
package/schema/help.js ADDED
@@ -0,0 +1,54 @@
1
+ //#region src/kit/schema/help.ts
2
+ var TEXT = ["string", "text"];
3
+ /** Conventions by field name. Each says something the label and the control cannot. */
4
+ var RULES = [
5
+ {
6
+ names: ["excerpt", "summary"],
7
+ types: TEXT,
8
+ help: "Shown on cards and in search results."
9
+ },
10
+ {
11
+ names: ["alt"],
12
+ types: TEXT,
13
+ help: "Not shown. Read by screen readers and search engines."
14
+ },
15
+ {
16
+ names: ["anchor"],
17
+ types: TEXT,
18
+ help: "Lowercase, no spaces. Links like /about#team jump here."
19
+ },
20
+ {
21
+ names: ["coverImage", "cover"],
22
+ types: ["image"],
23
+ help: "Also used on cards and in link previews."
24
+ },
25
+ {
26
+ names: [
27
+ "published",
28
+ "publishedAt",
29
+ "publishDate"
30
+ ],
31
+ types: ["date", "datetime"],
32
+ help: "Also used to sort lists."
33
+ },
34
+ {
35
+ names: ["readingTime"],
36
+ types: ["number"],
37
+ help: "In minutes."
38
+ }
39
+ ];
40
+ /** Conventions by field TYPE (any name). Only consequences the editor cannot see; no advice, no restating. */
41
+ var BY_TYPE = { slug: "Once live, changing it offers a redirect from the old address." };
42
+ /** The convention for a field, or undefined. Does not look at `description`; callers decide precedence. */
43
+ function conventionalHelp(field) {
44
+ return RULES.find((r) => r.names.includes(field.name) && (!r.types || r.types.includes(field.type)))?.help ?? BY_TYPE[field.type];
45
+ }
46
+ /** Help for a field following D39 precedence. `computed` is the field's own derived line (slug, number range). */
47
+ function resolveHelp(field, computed) {
48
+ if (field.description !== void 0) return field.description || void 0;
49
+ return computed ?? conventionalHelp(field);
50
+ }
51
+ //#endregion
52
+ export { conventionalHelp, resolveHelp };
53
+
54
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","names":[],"sources":["../../src/kit/schema/help.ts"],"sourcesContent":["/**\n * FIELD HELP — CPO D39, narrowed by D51 \"Help text is the exception\". One place for the grey line under a label.\n *\n * Precedence (first match wins):\n * 1. `field.description` written on the schema. `\"\"` opts out on purpose.\n * 2. A computed line from the field's own settings (slug before publish, number ranges).\n * 3. A convention from this file, matched on field NAME + TYPE. Only facts that are true for that field in every\n * block live here, and only facts the editor cannot see from the label and the control.\n *\n * The rule (D51, enforced by scripts/brain/check-help.ts):\n * - Most fields get NO help. Ask: \"Does the editor need this to type the right value?\" If no, no help.\n * - Allowed: a non-obvious format or unit (\"In minutes.\", \"A .vtt file.\"), where it shows when the canvas can't\n * show it (\"Shown in search results.\"), a real constraint or consequence (\"Changing it once live breaks links.\"),\n * a fallback (\"Leave empty to use the page title.\").\n * - Never: restating the label, writing advice (\"Keep it short\", \"Start with a verb\", \"2–4 words\"), marketing\n * theory, internal or design-system notes (\"Label and link are one unit\"), examples that belong in `placeholder`.\n * - Length guidance is a counter (`validation.max` / `recommendedMax`), never a sentence.\n * - One short sentence, under 90 characters, no em dash. Anything longer goes in `helpMore` (the ⓘ), sparingly.\n * - No type-wide defaults: a heading, a button or an image gets nothing just for being one.\n */\nimport type { FieldSchema } from \"./types\";\n\ntype Rule = { names: string[]; types?: FieldSchema[\"type\"][]; help: string };\n\nconst TEXT: FieldSchema[\"type\"][] = [\"string\", \"text\"];\n\n/** Conventions by field name. Each says something the label and the control cannot. */\nconst RULES: Rule[] = [\n { names: [\"excerpt\", \"summary\"], types: TEXT, help: \"Shown on cards and in search results.\" },\n { names: [\"alt\"], types: TEXT, help: \"Not shown. Read by screen readers and search engines.\" },\n // No SEO conventions (metaTitle, metaDescription, canonical, noindex, schemaType): SEO is native, never a modelled field.\n { names: [\"anchor\"], types: TEXT, help: \"Lowercase, no spaces. Links like /about#team jump here.\" },\n { names: [\"coverImage\", \"cover\"], types: [\"image\"], help: \"Also used on cards and in link previews.\" },\n { names: [\"published\", \"publishedAt\", \"publishDate\"], types: [\"date\", \"datetime\"], help: \"Also used to sort lists.\" },\n { names: [\"readingTime\"], types: [\"number\"], help: \"In minutes.\" },\n];\n\n/** Conventions by field TYPE (any name). Only consequences the editor cannot see; no advice, no restating. */\nconst BY_TYPE: Partial<Record<FieldSchema[\"type\"], string>> = {\n slug: \"Once live, changing it offers a redirect from the old address.\",\n};\n\n/** The convention for a field, or undefined. Does not look at `description`; callers decide precedence. */\nexport function conventionalHelp(field: Pick<FieldSchema, \"name\" | \"type\">): string | undefined {\n const rule = RULES.find((r) => r.names.includes(field.name) && (!r.types || r.types.includes(field.type)));\n return rule?.help ?? BY_TYPE[field.type];\n}\n\n/** Help for a field following D39 precedence. `computed` is the field's own derived line (slug, number range). */\nexport function resolveHelp(field: FieldSchema, computed?: string): string | undefined {\n if (field.description !== undefined) return field.description || undefined; // \"\" = deliberately none\n return computed ?? conventionalHelp(field);\n}\n"],"mappings":";AAwBA,IAAM,OAA8B,CAAC,UAAU,OAAO;;AAGtD,IAAM,QAAgB;CACpB;EAAE,OAAO,CAAC,WAAW,UAAU;EAAE,OAAO;EAAM,MAAM;EAAyC;CAC7F;EAAE,OAAO,CAAC,MAAM;EAAE,OAAO;EAAM,MAAM;EAAyD;CAE9F;EAAE,OAAO,CAAC,SAAS;EAAE,OAAO;EAAM,MAAM;EAA2D;CACnG;EAAE,OAAO,CAAC,cAAc,QAAQ;EAAE,OAAO,CAAC,QAAQ;EAAE,MAAM;EAA4C;CACtG;EAAE,OAAO;GAAC;GAAa;GAAe;GAAc;EAAE,OAAO,CAAC,QAAQ,WAAW;EAAE,MAAM;EAA4B;CACrH;EAAE,OAAO,CAAC,cAAc;EAAE,OAAO,CAAC,SAAS;EAAE,MAAM;EAAe;CACnE;;AAGD,IAAM,UAAwD,EAC5D,MAAM,kEACP;;AAGD,SAAgB,iBAAiB,OAA+D;AAE9F,QADa,MAAM,MAAM,MAAM,EAAE,MAAM,SAAS,MAAM,KAAK,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,SAAS,MAAM,KAAK,EAAE,EAC7F,QAAQ,QAAQ,MAAM;;;AAIrC,SAAgB,YAAY,OAAoB,UAAuC;AACrF,KAAI,MAAM,gBAAgB,KAAA,EAAW,QAAO,MAAM,eAAe,KAAA;AACjE,QAAO,YAAY,iBAAiB,MAAM"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * SCALES (CPO D41) — the logic behind "fixed steps, with an optional custom escape hatch".
3
+ * Pure functions: the Block Kit control, the Visuals Design tab and site renderers all read values through here,
4
+ * so a token, a stepped number and a custom size resolve the same way everywhere.
5
+ *
6
+ * Stored shapes (see `ScaleValue` in ./types):
7
+ * "xl" → token (developers map it to their design system)
8
+ * 15 → number on a stepped range, in the scale's default unit
9
+ * { value: 200, unit: "px" } → custom (only when the field allows custom)
10
+ */
11
+ import type { FieldSchema, ScaleCustomValue, ScaleRange, ScaleSchema, ScaleStep, ScaleUnit, ScaleValue } from "./types";
12
+ export declare const SCALE_UNITS: ScaleUnit[];
13
+ export declare const UNIT_NAMES: Record<ScaleUnit, string>;
14
+ export declare const isCustomValue: (v: unknown) => v is ScaleCustomValue;
15
+ export declare const isTokenScale: (s: ScaleSchema) => s is ScaleSchema & {
16
+ steps: ScaleStep[];
17
+ };
18
+ export declare const rangeOf: (s: ScaleSchema) => ScaleRange | null;
19
+ /** Back-compat: `layout: "slider"` + `numeric: { min, max, step, unit }` → a fixed-only range scale. */
20
+ export declare function fieldScale(field: Pick<FieldSchema, "scale" | "layout" | "numeric">): ScaleSchema | null;
21
+ export declare const defaultUnit: (s: ScaleSchema) => ScaleUnit | undefined;
22
+ /** The custom rules, or null when the field is fixed only. */
23
+ export declare function customRules(s: ScaleSchema): {
24
+ units: ScaleUnit[];
25
+ step: number;
26
+ min: (u: ScaleUnit) => number | undefined;
27
+ max: (u: ScaleUnit) => number | undefined;
28
+ } | null;
29
+ export declare function roundTo(n: number, step: number): number;
30
+ /** Readable number + unit: "200px", "15%", "1.5rem", "4.9". */
31
+ export declare function formatNumber(n: number, unit?: string): string;
32
+ /** px for a custom value when it can be known without layout (px, rem/em at 16). */
33
+ export declare function customPx(v: ScaleCustomValue): number | undefined;
34
+ export interface ResolvedScale {
35
+ kind: "token" | "number" | "custom" | "empty";
36
+ /** short readout: "XL", "15%", "200px" */
37
+ label: string;
38
+ /** long name: "Extra large", "15%", "Custom" */
39
+ title: string;
40
+ /** CSS to emit ("48px", "15%", "200px", or a step's css) */
41
+ css?: string;
42
+ px?: number;
43
+ /** token index (token scales) */
44
+ index?: number;
45
+ /** spoken value for aria-valuetext: "Extra large, 48 pixels" */
46
+ spoken: string;
47
+ }
48
+ /** Resolve any stored value against its scale. Unknown tokens fall back to "empty" (never throws). */
49
+ export declare function resolveScale(s: ScaleSchema, v: unknown, legacyUnit?: string): ResolvedScale;
50
+ /** CSS for a stored value — what a site renderer emits. */
51
+ export declare const scaleCss: (s: ScaleSchema, v: unknown) => string | undefined;
52
+ /** "XL · 48px" — the hint shown for a token. */
53
+ export declare function scaleHint(r: ResolvedScale): string;
54
+ /** Index of the token nearest to a custom value (by px), or -1 when it can't be placed. */
55
+ export declare function nearestTokenIndex(s: ScaleSchema, v: ScaleCustomValue): number;
56
+ export type ParseResult = {
57
+ ok: true;
58
+ value: ScaleValue;
59
+ } | {
60
+ ok: false;
61
+ error: string;
62
+ };
63
+ /** Validate a custom value against the field's custom rules. Returns a plain-words error or null. */
64
+ export declare function validateCustom(s: ScaleSchema, v: ScaleCustomValue): string | null;
65
+ /**
66
+ * Parse what an editor typed: a token ("xl", "XL", "Extra large"), a number ("240" → default unit) or a number with
67
+ * a unit ("200px", "75 %", "1.5rem"). Exact px matches of a token snap to the token, so the design system wins.
68
+ */
69
+ export declare function parseScaleInput(s: ScaleSchema, text: string, unitHint?: ScaleUnit): ParseResult;
@@ -0,0 +1,250 @@
1
+ //#region src/kit/schema/scale.ts
2
+ var SCALE_UNITS = [
3
+ "px",
4
+ "%",
5
+ "rem",
6
+ "em",
7
+ "vw",
8
+ "vh"
9
+ ];
10
+ var isUnit = (u) => typeof u === "string" && SCALE_UNITS.includes(u);
11
+ /** Spoken unit names for aria-valuetext ("48 pixels"). */
12
+ var UNIT_WORDS = {
13
+ px: ["pixel", "pixels"],
14
+ "%": ["percent", "percent"],
15
+ rem: ["rem", "rem"],
16
+ em: ["em", "em"],
17
+ vw: ["percent of the screen width", "percent of the screen width"],
18
+ vh: ["percent of the screen height", "percent of the screen height"]
19
+ };
20
+ var UNIT_NAMES = {
21
+ px: "Pixels",
22
+ "%": "Percent",
23
+ rem: "Root em",
24
+ em: "Em",
25
+ vw: "Screen width",
26
+ vh: "Screen height"
27
+ };
28
+ var isCustomValue = (v) => !!v && typeof v === "object" && typeof v.value === "number" && isUnit(v.unit);
29
+ var isTokenScale = (s) => Array.isArray(s.steps);
30
+ var rangeOf = (s) => Array.isArray(s.steps) ? null : s.steps;
31
+ /** Back-compat: `layout: "slider"` + `numeric: { min, max, step, unit }` → a fixed-only range scale. */
32
+ function fieldScale(field) {
33
+ if (field.scale) return field.scale;
34
+ const n = field.numeric;
35
+ if (field.layout === "slider" && n?.min != null && n?.max != null) return {
36
+ steps: {
37
+ min: n.min,
38
+ max: n.max,
39
+ step: n.step ?? 1
40
+ },
41
+ units: isUnit(n.unit) ? [n.unit] : void 0
42
+ };
43
+ return null;
44
+ }
45
+ var defaultUnit = (s) => s.defaultUnit ?? s.units?.[0];
46
+ /** The custom rules, or null when the field is fixed only. */
47
+ function customRules(s) {
48
+ if (!s.allowCustom) return null;
49
+ const c = s.allowCustom === true ? {} : s.allowCustom;
50
+ const units = c.units ?? s.units ?? ["px"];
51
+ const pick = (b, u) => typeof b === "number" ? b : b?.[u];
52
+ return {
53
+ units,
54
+ step: c.step ?? 1,
55
+ min: (u) => pick(c.min, u),
56
+ max: (u) => pick(c.max, u)
57
+ };
58
+ }
59
+ var decimals = (n) => (String(n).split(".")[1] ?? "").length;
60
+ function roundTo(n, step) {
61
+ return Number((Math.round(n / step) * step).toFixed(Math.max(decimals(step), 0)));
62
+ }
63
+ /** Readable number + unit: "200px", "15%", "1.5rem", "4.9". */
64
+ function formatNumber(n, unit) {
65
+ const t = Number.isInteger(n) ? String(n) : String(Number(n.toFixed(3)));
66
+ if (!unit) return t;
67
+ return isUnit(unit) ? `${t}${unit}` : `${t} ${unit}`;
68
+ }
69
+ /** px for a custom value when it can be known without layout (px, rem/em at 16). */
70
+ function customPx(v) {
71
+ if (v.unit === "px") return v.value;
72
+ if (v.unit === "rem" || v.unit === "em") return v.value * 16;
73
+ }
74
+ function spokenNumber(n, unit) {
75
+ if (!unit) return String(n);
76
+ if (!isUnit(unit)) return `${n} ${unit}`;
77
+ const [one, many] = UNIT_WORDS[unit];
78
+ return `${n} ${n === 1 ? one : many}`;
79
+ }
80
+ /** Resolve any stored value against its scale. Unknown tokens fall back to "empty" (never throws). */
81
+ function resolveScale(s, v, legacyUnit) {
82
+ if (isCustomValue(v)) {
83
+ const px = customPx(v);
84
+ return {
85
+ kind: "custom",
86
+ label: formatNumber(v.value, v.unit),
87
+ title: "Custom",
88
+ css: `${v.value}${v.unit}`,
89
+ px,
90
+ spoken: `Custom, ${spokenNumber(v.value, v.unit)}`
91
+ };
92
+ }
93
+ if (isTokenScale(s)) {
94
+ const i = s.steps.findIndex((st) => st.value === v);
95
+ if (i < 0) return {
96
+ kind: "empty",
97
+ label: "—",
98
+ title: "Not set",
99
+ spoken: "Not set"
100
+ };
101
+ const st = s.steps[i];
102
+ const title = st.title ?? st.label;
103
+ const css = st.css ?? (st.px != null ? `${st.px}px` : void 0);
104
+ return {
105
+ kind: "token",
106
+ label: st.label,
107
+ title,
108
+ css,
109
+ px: st.px,
110
+ index: i,
111
+ spoken: st.px != null ? `${title}, ${spokenNumber(st.px, "px")}` : st.css ? `${title}, ${st.css}` : title
112
+ };
113
+ }
114
+ const unit = defaultUnit(s) ?? legacyUnit;
115
+ const n = typeof v === "number" ? v : typeof v === "string" && v.trim() !== "" && !Number.isNaN(Number(v)) ? Number(v) : null;
116
+ if (n == null) return {
117
+ kind: "empty",
118
+ label: "—",
119
+ title: "Not set",
120
+ spoken: "Not set"
121
+ };
122
+ const css = isUnit(unit) ? `${n}${unit}` : String(n);
123
+ return {
124
+ kind: "number",
125
+ label: formatNumber(n, unit),
126
+ title: formatNumber(n, unit),
127
+ css,
128
+ px: unit === "px" ? n : void 0,
129
+ spoken: spokenNumber(n, unit)
130
+ };
131
+ }
132
+ /** CSS for a stored value — what a site renderer emits. */
133
+ var scaleCss = (s, v) => resolveScale(s, v).css;
134
+ /** "XL · 48px" — the hint shown for a token. */
135
+ function scaleHint(r) {
136
+ if (r.kind === "token") return r.css ? `${r.title} · ${r.css}` : r.title;
137
+ if (r.kind === "custom") return `Custom · ${r.label}`;
138
+ return r.title;
139
+ }
140
+ /** Index of the token nearest to a custom value (by px), or -1 when it can't be placed. */
141
+ function nearestTokenIndex(s, v) {
142
+ if (!isTokenScale(s)) return -1;
143
+ const px = customPx(v);
144
+ if (px == null) return -1;
145
+ let best = -1;
146
+ let d = Infinity;
147
+ s.steps.forEach((st, i) => {
148
+ if (st.px == null) return;
149
+ const dd = Math.abs(st.px - px);
150
+ if (dd < d) d = dd, best = i;
151
+ });
152
+ return best;
153
+ }
154
+ /** Validate a custom value against the field's custom rules. Returns a plain-words error or null. */
155
+ function validateCustom(s, v) {
156
+ const c = customRules(s);
157
+ if (!c) return "Pick a value on the scale.";
158
+ if (!c.units.includes(v.unit)) return `Use ${listUnits(c.units)}.`;
159
+ const lo = c.min(v.unit);
160
+ const hi = c.max(v.unit);
161
+ if (lo != null && v.value < lo || hi != null && v.value > hi) {
162
+ if (lo != null && hi != null) return `Use ${formatNumber(lo)}–${formatNumber(hi, v.unit)}.`;
163
+ if (lo != null) return `Use ${formatNumber(lo, v.unit)} or more.`;
164
+ return `Use ${formatNumber(hi, v.unit)} or less.`;
165
+ }
166
+ return null;
167
+ }
168
+ var listUnits = (u) => u.length === 1 ? u[0] : `${u.slice(0, -1).join(", ")} or ${u[u.length - 1]}`;
169
+ /**
170
+ * Parse what an editor typed: a token ("xl", "XL", "Extra large"), a number ("240" → default unit) or a number with
171
+ * a unit ("200px", "75 %", "1.5rem"). Exact px matches of a token snap to the token, so the design system wins.
172
+ */
173
+ function parseScaleInput(s, text, unitHint) {
174
+ const t = text.trim();
175
+ if (!t) return {
176
+ ok: false,
177
+ error: "Type a value, like 240px."
178
+ };
179
+ const low = t.toLowerCase();
180
+ if (isTokenScale(s)) {
181
+ const st = s.steps.find((x) => x.value.toLowerCase() === low || x.label.toLowerCase() === low || x.title?.toLowerCase() === low);
182
+ if (st) return {
183
+ ok: true,
184
+ value: st.value
185
+ };
186
+ }
187
+ const m = /^(-?(?:\d+(?:\.\d+)?|\.\d+))\s*(px|%|rem|em|vw|vh)?$/i.exec(t);
188
+ if (!m) return {
189
+ ok: false,
190
+ error: `Type a number like 240px${isTokenScale(s) ? ` or a size like ${s.steps[Math.min(2, s.steps.length - 1)].label}` : ""}.`
191
+ };
192
+ const n = Number(m[1]);
193
+ const typedUnit = m[2]?.toLowerCase();
194
+ const c = customRules(s);
195
+ const range = rangeOf(s);
196
+ if (range) {
197
+ const base = defaultUnit(s);
198
+ const sameUnit = !typedUnit || typedUnit === base;
199
+ const step = range.step ?? 1;
200
+ const onGrid = Math.abs((n - range.min) / step - Math.round((n - range.min) / step)) < 1e-9;
201
+ if (sameUnit && n >= range.min && n <= range.max && (onGrid || !c)) return {
202
+ ok: true,
203
+ value: onGrid ? n : roundTo(n, step)
204
+ };
205
+ if (!c) return {
206
+ ok: false,
207
+ error: `Use ${formatNumber(range.min)}–${formatNumber(range.max, base)}.`
208
+ };
209
+ const cv = {
210
+ value: n,
211
+ unit: typedUnit ?? unitHint ?? base ?? c.units[0]
212
+ };
213
+ const err = validateCustom(s, cv);
214
+ return err ? {
215
+ ok: false,
216
+ error: err
217
+ } : {
218
+ ok: true,
219
+ value: cv
220
+ };
221
+ }
222
+ if (!c) return {
223
+ ok: false,
224
+ error: "Pick a value on the scale."
225
+ };
226
+ const unit = typedUnit ?? unitHint ?? c.units[0];
227
+ const cv = {
228
+ value: n,
229
+ unit
230
+ };
231
+ if (isTokenScale(s) && unit === "px") {
232
+ const exact = s.steps.find((st) => st.px === n && !st.css);
233
+ if (exact) return {
234
+ ok: true,
235
+ value: exact.value
236
+ };
237
+ }
238
+ const err = validateCustom(s, cv);
239
+ return err ? {
240
+ ok: false,
241
+ error: err
242
+ } : {
243
+ ok: true,
244
+ value: cv
245
+ };
246
+ }
247
+ //#endregion
248
+ export { SCALE_UNITS, UNIT_NAMES, customPx, customRules, defaultUnit, fieldScale, formatNumber, isCustomValue, isTokenScale, nearestTokenIndex, parseScaleInput, rangeOf, resolveScale, roundTo, scaleCss, scaleHint, validateCustom };
249
+
250
+ //# sourceMappingURL=scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale.js","names":[],"sources":["../../src/kit/schema/scale.ts"],"sourcesContent":["/**\n * SCALES (CPO D41) — the logic behind \"fixed steps, with an optional custom escape hatch\".\n * Pure functions: the Block Kit control, the Visuals Design tab and site renderers all read values through here,\n * so a token, a stepped number and a custom size resolve the same way everywhere.\n *\n * Stored shapes (see `ScaleValue` in ./types):\n * \"xl\" → token (developers map it to their design system)\n * 15 → number on a stepped range, in the scale's default unit\n * { value: 200, unit: \"px\" } → custom (only when the field allows custom)\n */\nimport type { FieldSchema, ScaleCustomValue, ScaleRange, ScaleSchema, ScaleStep, ScaleUnit, ScaleValue } from \"./types\";\n\nexport const SCALE_UNITS: ScaleUnit[] = [\"px\", \"%\", \"rem\", \"em\", \"vw\", \"vh\"];\nconst isUnit = (u: unknown): u is ScaleUnit => typeof u === \"string\" && (SCALE_UNITS as string[]).includes(u);\n\n/** Spoken unit names for aria-valuetext (\"48 pixels\"). */\nconst UNIT_WORDS: Record<ScaleUnit, [one: string, many: string]> = {\n px: [\"pixel\", \"pixels\"],\n \"%\": [\"percent\", \"percent\"],\n rem: [\"rem\", \"rem\"],\n em: [\"em\", \"em\"],\n vw: [\"percent of the screen width\", \"percent of the screen width\"],\n vh: [\"percent of the screen height\", \"percent of the screen height\"],\n};\nexport const UNIT_NAMES: Record<ScaleUnit, string> = { px: \"Pixels\", \"%\": \"Percent\", rem: \"Root em\", em: \"Em\", vw: \"Screen width\", vh: \"Screen height\" };\n\nexport const isCustomValue = (v: unknown): v is ScaleCustomValue =>\n !!v && typeof v === \"object\" && typeof (v as ScaleCustomValue).value === \"number\" && isUnit((v as ScaleCustomValue).unit);\nexport const isTokenScale = (s: ScaleSchema): s is ScaleSchema & { steps: ScaleStep[] } => Array.isArray(s.steps);\nexport const rangeOf = (s: ScaleSchema): ScaleRange | null => (Array.isArray(s.steps) ? null : s.steps);\n\n/** Back-compat: `layout: \"slider\"` + `numeric: { min, max, step, unit }` → a fixed-only range scale. */\nexport function fieldScale(field: Pick<FieldSchema, \"scale\" | \"layout\" | \"numeric\">): ScaleSchema | null {\n if (field.scale) return field.scale;\n const n = field.numeric;\n if (field.layout === \"slider\" && n?.min != null && n?.max != null) {\n return { steps: { min: n.min, max: n.max, step: n.step ?? 1 }, units: isUnit(n.unit) ? [n.unit] : undefined };\n }\n return null;\n}\n\nexport const defaultUnit = (s: ScaleSchema): ScaleUnit | undefined => s.defaultUnit ?? s.units?.[0];\n\n/** The custom rules, or null when the field is fixed only. */\nexport function customRules(s: ScaleSchema) {\n if (!s.allowCustom) return null;\n const c = s.allowCustom === true ? {} : s.allowCustom;\n const units = c.units ?? s.units ?? [\"px\"];\n const pick = (b: typeof c.min, u: ScaleUnit) => (typeof b === \"number\" ? b : b?.[u]);\n return {\n units,\n step: c.step ?? 1,\n min: (u: ScaleUnit) => pick(c.min, u),\n max: (u: ScaleUnit) => pick(c.max, u),\n };\n}\n\nconst decimals = (n: number) => (String(n).split(\".\")[1] ?? \"\").length;\nexport function roundTo(n: number, step: number) {\n return Number((Math.round(n / step) * step).toFixed(Math.max(decimals(step), 0)));\n}\n\n/** Readable number + unit: \"200px\", \"15%\", \"1.5rem\", \"4.9\". */\nexport function formatNumber(n: number, unit?: string) {\n const t = Number.isInteger(n) ? String(n) : String(Number(n.toFixed(3)));\n if (!unit) return t;\n return isUnit(unit) ? `${t}${unit}` : `${t} ${unit}`;\n}\n\n/** px for a custom value when it can be known without layout (px, rem/em at 16). */\nexport function customPx(v: ScaleCustomValue): number | undefined {\n if (v.unit === \"px\") return v.value;\n if (v.unit === \"rem\" || v.unit === \"em\") return v.value * 16;\n return undefined;\n}\n\nexport interface ResolvedScale {\n kind: \"token\" | \"number\" | \"custom\" | \"empty\";\n /** short readout: \"XL\", \"15%\", \"200px\" */\n label: string;\n /** long name: \"Extra large\", \"15%\", \"Custom\" */\n title: string;\n /** CSS to emit (\"48px\", \"15%\", \"200px\", or a step's css) */\n css?: string;\n px?: number;\n /** token index (token scales) */\n index?: number;\n /** spoken value for aria-valuetext: \"Extra large, 48 pixels\" */\n spoken: string;\n}\n\nfunction spokenNumber(n: number, unit?: string) {\n if (!unit) return String(n);\n if (!isUnit(unit)) return `${n} ${unit}`;\n const [one, many] = UNIT_WORDS[unit];\n return `${n} ${n === 1 ? one : many}`;\n}\n\n/** Resolve any stored value against its scale. Unknown tokens fall back to \"empty\" (never throws). */\nexport function resolveScale(s: ScaleSchema, v: unknown, legacyUnit?: string): ResolvedScale {\n if (isCustomValue(v)) {\n const px = customPx(v);\n return { kind: \"custom\", label: formatNumber(v.value, v.unit), title: \"Custom\", css: `${v.value}${v.unit}`, px, spoken: `Custom, ${spokenNumber(v.value, v.unit)}` };\n }\n if (isTokenScale(s)) {\n const i = s.steps.findIndex((st) => st.value === v);\n if (i < 0) return { kind: \"empty\", label: \"—\", title: \"Not set\", spoken: \"Not set\" };\n const st = s.steps[i];\n const title = st.title ?? st.label;\n const css = st.css ?? (st.px != null ? `${st.px}px` : undefined);\n return { kind: \"token\", label: st.label, title, css, px: st.px, index: i, spoken: st.px != null ? `${title}, ${spokenNumber(st.px, \"px\")}` : st.css ? `${title}, ${st.css}` : title };\n }\n const unit = defaultUnit(s) ?? legacyUnit;\n const n = typeof v === \"number\" ? v : typeof v === \"string\" && v.trim() !== \"\" && !Number.isNaN(Number(v)) ? Number(v) : null;\n if (n == null) return { kind: \"empty\", label: \"—\", title: \"Not set\", spoken: \"Not set\" };\n const css = isUnit(unit) ? `${n}${unit}` : String(n);\n return { kind: \"number\", label: formatNumber(n, unit), title: formatNumber(n, unit), css, px: unit === \"px\" ? n : undefined, spoken: spokenNumber(n, unit) };\n}\n\n/** CSS for a stored value — what a site renderer emits. */\nexport const scaleCss = (s: ScaleSchema, v: unknown) => resolveScale(s, v).css;\n\n/** \"XL · 48px\" — the hint shown for a token. */\nexport function scaleHint(r: ResolvedScale) {\n if (r.kind === \"token\") return r.css ? `${r.title} · ${r.css}` : r.title;\n if (r.kind === \"custom\") return `Custom · ${r.label}`;\n return r.title;\n}\n\n/** Index of the token nearest to a custom value (by px), or -1 when it can't be placed. */\nexport function nearestTokenIndex(s: ScaleSchema, v: ScaleCustomValue): number {\n if (!isTokenScale(s)) return -1;\n const px = customPx(v);\n if (px == null) return -1;\n let best = -1;\n let d = Infinity;\n s.steps.forEach((st, i) => {\n if (st.px == null) return;\n const dd = Math.abs(st.px - px);\n if (dd < d) (d = dd), (best = i);\n });\n return best;\n}\n\nexport type ParseResult = { ok: true; value: ScaleValue } | { ok: false; error: string };\n\n/** Validate a custom value against the field's custom rules. Returns a plain-words error or null. */\nexport function validateCustom(s: ScaleSchema, v: ScaleCustomValue): string | null {\n const c = customRules(s);\n if (!c) return \"Pick a value on the scale.\";\n if (!c.units.includes(v.unit)) return `Use ${listUnits(c.units)}.`;\n const lo = c.min(v.unit);\n const hi = c.max(v.unit);\n if ((lo != null && v.value < lo) || (hi != null && v.value > hi)) {\n if (lo != null && hi != null) return `Use ${formatNumber(lo)}–${formatNumber(hi, v.unit)}.`;\n if (lo != null) return `Use ${formatNumber(lo, v.unit)} or more.`;\n return `Use ${formatNumber(hi!, v.unit)} or less.`;\n }\n return null;\n}\n\nconst listUnits = (u: ScaleUnit[]) => (u.length === 1 ? u[0] : `${u.slice(0, -1).join(\", \")} or ${u[u.length - 1]}`);\n\n/**\n * Parse what an editor typed: a token (\"xl\", \"XL\", \"Extra large\"), a number (\"240\" → default unit) or a number with\n * a unit (\"200px\", \"75 %\", \"1.5rem\"). Exact px matches of a token snap to the token, so the design system wins.\n */\nexport function parseScaleInput(s: ScaleSchema, text: string, unitHint?: ScaleUnit): ParseResult {\n const t = text.trim();\n if (!t) return { ok: false, error: \"Type a value, like 240px.\" };\n const low = t.toLowerCase();\n if (isTokenScale(s)) {\n const st = s.steps.find((x) => x.value.toLowerCase() === low || x.label.toLowerCase() === low || x.title?.toLowerCase() === low);\n if (st) return { ok: true, value: st.value };\n }\n const m = /^(-?(?:\\d+(?:\\.\\d+)?|\\.\\d+))\\s*(px|%|rem|em|vw|vh)?$/i.exec(t);\n if (!m) {\n const tokens = isTokenScale(s) ? ` or a size like ${s.steps[Math.min(2, s.steps.length - 1)].label}` : \"\";\n return { ok: false, error: `Type a number like 240px${tokens}.` };\n }\n const n = Number(m[1]);\n const typedUnit = m[2]?.toLowerCase() as ScaleUnit | undefined;\n const c = customRules(s);\n const range = rangeOf(s);\n if (range) {\n const base = defaultUnit(s);\n const sameUnit = !typedUnit || typedUnit === base;\n const step = range.step ?? 1;\n const onGrid = Math.abs((n - range.min) / step - Math.round((n - range.min) / step)) < 1e-9;\n if (sameUnit && n >= range.min && n <= range.max && (onGrid || !c)) return { ok: true, value: onGrid ? n : roundTo(n, step) };\n if (!c) return { ok: false, error: `Use ${formatNumber(range.min)}–${formatNumber(range.max, base)}.` };\n const unit = typedUnit ?? unitHint ?? base ?? c.units[0];\n const cv = { value: n, unit };\n const err = validateCustom(s, cv);\n return err ? { ok: false, error: err } : { ok: true, value: cv };\n }\n if (!c) return { ok: false, error: \"Pick a value on the scale.\" };\n const unit = typedUnit ?? unitHint ?? c.units[0];\n const cv: ScaleCustomValue = { value: n, unit };\n if (isTokenScale(s) && unit === \"px\") {\n const exact = s.steps.find((st) => st.px === n && !st.css);\n if (exact) return { ok: true, value: exact.value };\n }\n const err = validateCustom(s, cv);\n return err ? { ok: false, error: err } : { ok: true, value: cv };\n}\n"],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * The V2 shapes the schema layer reads, copied type for type so @/kit owns them and imports nothing from
3
+ * the app. Sources at V2 HEAD 9829bf1:
4
+ * - Cap: src/lib/access/registry.ts (CAP_IDS, the permission keys a field's `access` names)
5
+ * - FieldType, FieldDef: src/data/types.ts (content collection fields)
6
+ * - BlockCategory, PropType, PropDef, BlockFieldset, BlockDef: src/features/visuals/model/catalog.ts
7
+ * The production adapters (src/kit/adapters) map production models onto these; nothing here is wired yet.
8
+ */
9
+ export declare const CAP_IDS: readonly ["content.view", "content.create", "content.edit", "content.delete", "content.review", "content.publish", "pages.organize", "collections.manage", "schema.view", "schema.manage", "components.use", "components.manage", "media.upload", "media.manage", "seo.edit", "seo.manage", "forms.view", "forms.manage", "forms.submissions", "analytics.view", "visuals.edit", "design.edit", "design.manage", "publish.deploy", "publish.workflow", "branches.create", "branches.merge", "agents.run", "agents.build", "agents.manage", "ai.use", "ai.manage", "comments.create", "comments.moderate", "settings.project", "settings.workspace", "settings.security", "audit.view", "members.view", "members.invite", "members.manage", "members.viewAs", "billing.view", "billing.manage", "domains.manage", "api.view", "api.manage", "integrations.manage", "projects.create", "projects.delete"];
10
+ export type Cap = (typeof CAP_IDS)[number];
11
+ export type FieldType = "text" | "textarea" | "richtext" | "slug" | "number" | "boolean" | "date" | "datetime" | "select" | "multiselect" | "image" | "gallery" | "file" | "video" | "link" | "button" | "reference" | "references" | "color" | "json" | "code" | "repeater" | "group" | "email" | "url" | "location" | "rating" | "tags" | "table";
12
+ export interface FieldDef {
13
+ id: string;
14
+ name: string;
15
+ type: FieldType;
16
+ required?: boolean;
17
+ /** Help under the label (CPO D39). Unset → house convention by id/type; "" = none. */
18
+ help?: string;
19
+ /** Longer explanation behind the ⓘ next to the label. */
20
+ helpMore?: string;
21
+ options?: string[];
22
+ reference?: string;
23
+ max?: number;
24
+ localized?: boolean;
25
+ fields?: FieldDef[];
26
+ }
27
+ export type BlockCategory = "Navigation" | "Hero" | "Content" | "Social proof" | "Commerce" | "Conversion" | "Collection" | "Media" | "Footer" | "Basic" | "Blog";
28
+ /**
29
+ * Prop types: every FieldType, plus two shapes only blocks need — "list" (an array of one-line strings: bullets,
30
+ * features, "what's included"; never tags, D47) and "icon" (a Tabler icon name, picked from the icon picker).
31
+ */
32
+ export type PropType = FieldType | "list" | "icon";
33
+ export interface PropDef {
34
+ key: string;
35
+ label: string;
36
+ type: PropType;
37
+ /** Help under the label (CPO D39). Unset → house convention by key/type; "" = none. */
38
+ help?: string;
39
+ /** Longer explanation behind the ⓘ next to the label. */
40
+ helpMore?: string;
41
+ options?: string[];
42
+ max?: number;
43
+ item?: PropDef[];
44
+ group?: "Content" | "Media" | "Links" | "Data";
45
+ /** reference props: the collection id the picker lists (e.g. "col_journal"); default = pages */
46
+ reference?: string;
47
+ /** D45: the fieldset (BlockDef.fieldsets) this prop sits in. */
48
+ fieldset?: string;
49
+ /** Show only when a sibling prop equals one of these values (the form hides it otherwise). */
50
+ showIf?: {
51
+ key: string;
52
+ equals: unknown;
53
+ };
54
+ /** Arrays: the noun for "Add {noun}". */
55
+ itemNoun?: string;
56
+ placeholder?: string;
57
+ /** Arrays: the most and fewest items. */
58
+ min?: number;
59
+ }
60
+ /** D45 fieldset: siblings with one purpose ("Buttons", "Newsletter"), optionally collapsed. */
61
+ export interface BlockFieldset {
62
+ name: string;
63
+ title: string;
64
+ collapsed?: boolean;
65
+ columns?: 1 | 2;
66
+ }
67
+ export interface BlockDef {
68
+ type: string;
69
+ name: string;
70
+ category: BlockCategory;
71
+ description: string;
72
+ icon: string;
73
+ variants: {
74
+ id: string;
75
+ name: string;
76
+ description?: string;
77
+ }[];
78
+ content: PropDef[];
79
+ /** D45 fieldsets the content props sit in (PropDef.fieldset). */
80
+ fieldsets?: BlockFieldset[];
81
+ defaults: Record<string, unknown>;
82
+ /** Global blocks (nav, footer, announcement) are synced across every page. */
83
+ global?: boolean;
84
+ /**
85
+ * PLACEMENT (CPO D55): where the block fits. "inline" = it fits a text column, so a rich-text body offers it in the
86
+ * Insert menu's Article group. "section" (the default) = page-width; a body reaches it only through More components.
87
+ * "page" = a whole page or a feed of other content (Blog post, Recipe, Journal grid, Rich text); never inside a body.
88
+ */
89
+ placement?: "inline" | "section" | "page";
90
+ /** Developer-only lock: marketers can edit content but not swap/remove. */
91
+ tags?: string[];
92
+ /**
93
+ * SLOTS (CPO D8, added by the canvas team) — named areas that hold nested blocks (Tabs panels, Bento cells…).
94
+ * Instances keep them in `BlockInstance.children[slot]`. `accepts` limits which block types can be dropped in.
95
+ */
96
+ slots?: {
97
+ name: string;
98
+ label: string;
99
+ accepts?: string[];
100
+ }[];
101
+ /** Nested blocks created with a fresh instance: slot → [type, variant?, props override?][] */
102
+ childDefaults?: Record<string, [string, string?, Record<string, unknown>?][]>;
103
+ }
@@ -0,0 +1,65 @@
1
+ //#region src/kit/schema/sources.ts
2
+ /**
3
+ * The V2 shapes the schema layer reads, copied type for type so @/kit owns them and imports nothing from
4
+ * the app. Sources at V2 HEAD 9829bf1:
5
+ * - Cap: src/lib/access/registry.ts (CAP_IDS, the permission keys a field's `access` names)
6
+ * - FieldType, FieldDef: src/data/types.ts (content collection fields)
7
+ * - BlockCategory, PropType, PropDef, BlockFieldset, BlockDef: src/features/visuals/model/catalog.ts
8
+ * The production adapters (src/kit/adapters) map production models onto these; nothing here is wired yet.
9
+ */
10
+ var CAP_IDS = [
11
+ "content.view",
12
+ "content.create",
13
+ "content.edit",
14
+ "content.delete",
15
+ "content.review",
16
+ "content.publish",
17
+ "pages.organize",
18
+ "collections.manage",
19
+ "schema.view",
20
+ "schema.manage",
21
+ "components.use",
22
+ "components.manage",
23
+ "media.upload",
24
+ "media.manage",
25
+ "seo.edit",
26
+ "seo.manage",
27
+ "forms.view",
28
+ "forms.manage",
29
+ "forms.submissions",
30
+ "analytics.view",
31
+ "visuals.edit",
32
+ "design.edit",
33
+ "design.manage",
34
+ "publish.deploy",
35
+ "publish.workflow",
36
+ "branches.create",
37
+ "branches.merge",
38
+ "agents.run",
39
+ "agents.build",
40
+ "agents.manage",
41
+ "ai.use",
42
+ "ai.manage",
43
+ "comments.create",
44
+ "comments.moderate",
45
+ "settings.project",
46
+ "settings.workspace",
47
+ "settings.security",
48
+ "audit.view",
49
+ "members.view",
50
+ "members.invite",
51
+ "members.manage",
52
+ "members.viewAs",
53
+ "billing.view",
54
+ "billing.manage",
55
+ "domains.manage",
56
+ "api.view",
57
+ "api.manage",
58
+ "integrations.manage",
59
+ "projects.create",
60
+ "projects.delete"
61
+ ];
62
+ //#endregion
63
+ export { CAP_IDS };
64
+
65
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","names":[],"sources":["../../src/kit/schema/sources.ts"],"sourcesContent":["/**\n * The V2 shapes the schema layer reads, copied type for type so @/kit owns them and imports nothing from\n * the app. Sources at V2 HEAD 9829bf1:\n * - Cap: src/lib/access/registry.ts (CAP_IDS, the permission keys a field's `access` names)\n * - FieldType, FieldDef: src/data/types.ts (content collection fields)\n * - BlockCategory, PropType, PropDef, BlockFieldset, BlockDef: src/features/visuals/model/catalog.ts\n * The production adapters (src/kit/adapters) map production models onto these; nothing here is wired yet.\n */\n\nexport const CAP_IDS = [\n // content\n \"content.view\",\n \"content.create\",\n \"content.edit\",\n \"content.delete\",\n \"content.review\",\n \"content.publish\",\n // pages and collections\n \"pages.organize\",\n \"collections.manage\",\n // schema\n \"schema.view\",\n \"schema.manage\",\n // components\n \"components.use\",\n \"components.manage\",\n // media\n \"media.upload\",\n \"media.manage\",\n // seo\n \"seo.edit\",\n \"seo.manage\",\n // forms\n \"forms.view\",\n \"forms.manage\",\n \"forms.submissions\",\n // analytics\n \"analytics.view\",\n // visuals and design\n \"visuals.edit\",\n \"design.edit\",\n \"design.manage\",\n // publish and branches\n \"publish.deploy\",\n \"publish.workflow\",\n \"branches.create\",\n \"branches.merge\",\n // agents and AI\n \"agents.run\",\n \"agents.build\",\n \"agents.manage\",\n \"ai.use\",\n \"ai.manage\",\n // comments\n \"comments.create\",\n \"comments.moderate\",\n // settings and audit\n \"settings.project\",\n \"settings.workspace\",\n \"settings.security\",\n \"audit.view\",\n // members\n \"members.view\",\n \"members.invite\",\n \"members.manage\",\n \"members.viewAs\",\n // billing and domains\n \"billing.view\",\n \"billing.manage\",\n \"domains.manage\",\n // api, integrations, projects\n \"api.view\",\n \"api.manage\",\n \"integrations.manage\",\n \"projects.create\",\n \"projects.delete\",\n] as const;\n\nexport type Cap = (typeof CAP_IDS)[number];\n\nexport type FieldType =\n | \"text\"\n | \"textarea\"\n | \"richtext\"\n | \"slug\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"datetime\"\n | \"select\"\n | \"multiselect\"\n | \"image\"\n | \"gallery\"\n | \"file\"\n | \"video\"\n | \"link\"\n | \"button\"\n | \"reference\"\n | \"references\"\n | \"color\"\n | \"json\"\n | \"code\"\n | \"repeater\"\n | \"group\"\n | \"email\"\n | \"url\"\n | \"location\"\n | \"rating\"\n | \"tags\"\n | \"table\";\n\nexport interface FieldDef {\n id: string;\n name: string;\n type: FieldType;\n required?: boolean;\n /** Help under the label (CPO D39). Unset → house convention by id/type; \"\" = none. */\n help?: string;\n /** Longer explanation behind the ⓘ next to the label. */\n helpMore?: string;\n options?: string[];\n reference?: string;\n max?: number;\n localized?: boolean;\n fields?: FieldDef[];\n}\n\n\nexport type BlockCategory = \"Navigation\" | \"Hero\" | \"Content\" | \"Social proof\" | \"Commerce\" | \"Conversion\" | \"Collection\" | \"Media\" | \"Footer\" | \"Basic\" | \"Blog\";\n\n/**\n * Prop types: every FieldType, plus two shapes only blocks need — \"list\" (an array of one-line strings: bullets,\n * features, \"what's included\"; never tags, D47) and \"icon\" (a Tabler icon name, picked from the icon picker).\n */\nexport type PropType = FieldType | \"list\" | \"icon\";\n\nexport interface PropDef {\n key: string;\n label: string;\n type: PropType;\n /** Help under the label (CPO D39). Unset → house convention by key/type; \"\" = none. */\n help?: string;\n /** Longer explanation behind the ⓘ next to the label. */\n helpMore?: string;\n options?: string[];\n max?: number;\n item?: PropDef[]; // for repeater\n group?: \"Content\" | \"Media\" | \"Links\" | \"Data\";\n /** reference props: the collection id the picker lists (e.g. \"col_journal\"); default = pages */\n reference?: string;\n /** D45: the fieldset (BlockDef.fieldsets) this prop sits in. */\n fieldset?: string;\n /** Show only when a sibling prop equals one of these values (the form hides it otherwise). */\n showIf?: { key: string; equals: unknown };\n /** Arrays: the noun for \"Add {noun}\". */\n itemNoun?: string;\n placeholder?: string;\n /** Arrays: the most and fewest items. */\n min?: number;\n}\n\n/** D45 fieldset: siblings with one purpose (\"Buttons\", \"Newsletter\"), optionally collapsed. */\nexport interface BlockFieldset {\n name: string;\n title: string;\n collapsed?: boolean;\n columns?: 1 | 2;\n}\n\nexport interface BlockDef {\n type: string;\n name: string;\n category: BlockCategory;\n description: string;\n icon: string; // lucide icon name\n variants: { id: string; name: string; description?: string }[];\n content: PropDef[];\n /** D45 fieldsets the content props sit in (PropDef.fieldset). */\n fieldsets?: BlockFieldset[];\n defaults: Record<string, unknown>;\n /** Global blocks (nav, footer, announcement) are synced across every page. */\n global?: boolean;\n /**\n * PLACEMENT (CPO D55): where the block fits. \"inline\" = it fits a text column, so a rich-text body offers it in the\n * Insert menu's Article group. \"section\" (the default) = page-width; a body reaches it only through More components.\n * \"page\" = a whole page or a feed of other content (Blog post, Recipe, Journal grid, Rich text); never inside a body.\n */\n placement?: \"inline\" | \"section\" | \"page\";\n /** Developer-only lock: marketers can edit content but not swap/remove. */\n tags?: string[];\n /**\n * SLOTS (CPO D8, added by the canvas team) — named areas that hold nested blocks (Tabs panels, Bento cells…).\n * Instances keep them in `BlockInstance.children[slot]`. `accepts` limits which block types can be dropped in.\n */\n slots?: { name: string; label: string; accepts?: string[] }[];\n /** Nested blocks created with a fresh instance: slot → [type, variant?, props override?][] */\n childDefaults?: Record<string, [string, string?, Record<string, unknown>?][]>;\n}\n"],"mappings":";;;;;;;;;AASA,IAAa,UAAU;CAErB;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CACA;CACA;CAEA;CAEA;CACA;CACA;CAEA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CAEA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACD"}