@bettercms-ai/kit 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/README.md +33 -0
  2. package/dist/adapters/dock-values.d.ts +28 -0
  3. package/dist/adapters/dock-values.js +41 -0
  4. package/dist/adapters/dock-values.js.map +1 -0
  5. package/{adapters → dist/adapters}/icons.js +2 -2
  6. package/dist/adapters/icons.js.map +1 -0
  7. package/{adapters → dist/adapters}/lossy.d.ts +90 -31
  8. package/dist/adapters/lossy.js +414 -0
  9. package/dist/adapters/lossy.js.map +1 -0
  10. package/{adapters → dist/adapters}/prod-types.d.ts +82 -4
  11. package/{adapters → dist/adapters}/prod-types.js +71 -3
  12. package/dist/adapters/prod-types.js.map +1 -0
  13. package/{adapters → dist/adapters}/schema.d.ts +40 -1
  14. package/{adapters → dist/adapters}/schema.js +996 -179
  15. package/dist/adapters/schema.js.map +1 -0
  16. package/{adapters → dist/adapters}/values.d.ts +26 -5
  17. package/{adapters → dist/adapters}/values.js +87 -17
  18. package/dist/adapters/values.js.map +1 -0
  19. package/dist/brand/logo.js +96 -0
  20. package/dist/brand/logo.js.map +1 -0
  21. package/{context.d.ts → dist/context.d.ts} +92 -2
  22. package/{context.js → dist/context.js} +5 -2
  23. package/dist/context.js.map +1 -0
  24. package/{controls → dist/controls}/button.d.ts +19 -5
  25. package/{controls → dist/controls}/button.js +125 -54
  26. package/dist/controls/button.js.map +1 -0
  27. package/{controls → dist/controls}/c1.js +1 -1
  28. package/dist/controls/c1.js.map +1 -0
  29. package/{controls → dist/controls}/c2.js +1 -1
  30. package/dist/controls/c2.js.map +1 -0
  31. package/{controls → dist/controls}/choice.d.ts +7 -2
  32. package/{controls → dist/controls}/choice.js +71 -18
  33. package/dist/controls/choice.js.map +1 -0
  34. package/{controls → dist/controls}/code-register.js +1 -1
  35. package/dist/controls/code-register.js.map +1 -0
  36. package/{controls → dist/controls}/code.js +10 -9
  37. package/dist/controls/code.js.map +1 -0
  38. package/{controls → dist/controls}/color.js +8 -8
  39. package/dist/controls/color.js.map +1 -0
  40. package/{controls → dist/controls}/component-services.d.ts +42 -0
  41. package/dist/controls/component-services.js +7 -0
  42. package/dist/controls/component-services.js.map +1 -0
  43. package/{controls → dist/controls}/date-register.js +1 -1
  44. package/dist/controls/date-register.js.map +1 -0
  45. package/{controls → dist/controls}/date-zone.js +8 -2
  46. package/dist/controls/date-zone.js.map +1 -0
  47. package/{controls → dist/controls}/date.js +32 -24
  48. package/dist/controls/date.js.map +1 -0
  49. package/{controls → dist/controls}/form-picker-register.js +1 -1
  50. package/dist/controls/form-picker-register.js.map +1 -0
  51. package/{controls → dist/controls}/form-picker.js +11 -9
  52. package/dist/controls/form-picker.js.map +1 -0
  53. package/{controls → dist/controls}/icon-register.js +1 -1
  54. package/dist/controls/icon-register.js.map +1 -0
  55. package/{controls → dist/controls}/icon.d.ts +4 -2
  56. package/{controls → dist/controls}/icon.js +32 -27
  57. package/dist/controls/icon.js.map +1 -0
  58. package/{controls → dist/controls}/index.d.ts +1 -1
  59. package/{controls → dist/controls}/index.js +4 -3
  60. package/dist/controls/index.js.map +1 -0
  61. package/{controls → dist/controls}/json-register.js +1 -1
  62. package/dist/controls/json-register.js.map +1 -0
  63. package/{controls → dist/controls}/json.js +13 -3
  64. package/dist/controls/json.js.map +1 -0
  65. package/{controls → dist/controls}/link.js +6 -6
  66. package/dist/controls/link.js.map +1 -0
  67. package/{controls → dist/controls}/location-register.js +1 -1
  68. package/dist/controls/location-register.js.map +1 -0
  69. package/{controls → dist/controls}/location.js +64 -40
  70. package/dist/controls/location.js.map +1 -0
  71. package/{controls → dist/controls}/media-register.js +1 -1
  72. package/dist/controls/media-register.js.map +1 -0
  73. package/{controls → dist/controls}/media-services.d.ts +6 -0
  74. package/dist/controls/media-services.js +0 -0
  75. package/{controls → dist/controls}/media.d.ts +35 -4
  76. package/{controls → dist/controls}/media.js +491 -171
  77. package/dist/controls/media.js.map +1 -0
  78. package/{controls → dist/controls}/number.js +10 -9
  79. package/dist/controls/number.js.map +1 -0
  80. package/{controls → dist/controls}/reference-register.js +1 -1
  81. package/dist/controls/reference-register.js.map +1 -0
  82. package/{controls → dist/controls}/reference-services.d.ts +4 -0
  83. package/dist/controls/reference-services.js +0 -0
  84. package/{controls → dist/controls}/reference.d.ts +1 -1
  85. package/{controls → dist/controls}/reference.js +93 -77
  86. package/dist/controls/reference.js.map +1 -0
  87. package/dist/controls/rich-text/blocks.d.ts +49 -0
  88. package/{controls → dist/controls}/rich-text/blocks.js +471 -144
  89. package/dist/controls/rich-text/blocks.js.map +1 -0
  90. package/{controls → dist/controls}/rich-text/catalog.d.ts +4 -1
  91. package/{controls → dist/controls}/rich-text/catalog.js +75 -65
  92. package/dist/controls/rich-text/catalog.js.map +1 -0
  93. package/{controls → dist/controls}/rich-text/codec.d.ts +9 -1
  94. package/{controls → dist/controls}/rich-text/codec.js +3 -1
  95. package/dist/controls/rich-text/codec.js.map +1 -0
  96. package/{controls → dist/controls}/rich-text/component-card.d.ts +1 -1
  97. package/{controls → dist/controls}/rich-text/component-card.js +417 -99
  98. package/dist/controls/rich-text/component-card.js.map +1 -0
  99. package/dist/controls/rich-text/component-panel.d.ts +47 -0
  100. package/dist/controls/rich-text/component-panel.js +141 -0
  101. package/dist/controls/rich-text/component-panel.js.map +1 -0
  102. package/{controls → dist/controls}/rich-text/control.d.ts +1 -2
  103. package/{controls → dist/controls}/rich-text/control.js +84 -42
  104. package/dist/controls/rich-text/control.js.map +1 -0
  105. package/{controls → dist/controls}/rich-text/dom.d.ts +52 -9
  106. package/{controls → dist/controls}/rich-text/dom.js +379 -50
  107. package/dist/controls/rich-text/dom.js.map +1 -0
  108. package/{controls → dist/controls}/rich-text/editor.d.ts +7 -0
  109. package/{controls → dist/controls}/rich-text/editor.js +148 -48
  110. package/dist/controls/rich-text/editor.js.map +1 -0
  111. package/{controls → dist/controls}/rich-text/floating.d.ts +6 -1
  112. package/{controls → dist/controls}/rich-text/floating.js +35 -18
  113. package/dist/controls/rich-text/floating.js.map +1 -0
  114. package/{controls → dist/controls}/rich-text/index.js +1 -1
  115. package/dist/controls/rich-text/index.js.map +1 -0
  116. package/dist/controls/rich-text/link-form.js +147 -0
  117. package/dist/controls/rich-text/link-form.js.map +1 -0
  118. package/{controls → dist/controls}/rich-text/markdown.js +4 -2
  119. package/dist/controls/rich-text/markdown.js.map +1 -0
  120. package/{controls → dist/controls}/rich-text/ops.js +17 -15
  121. package/dist/controls/rich-text/ops.js.map +1 -0
  122. package/dist/controls/rich-text/plain.d.ts +17 -0
  123. package/dist/controls/rich-text/plain.js +44 -0
  124. package/dist/controls/rich-text/plain.js.map +1 -0
  125. package/{controls → dist/controls}/rich-text/toolbar.d.ts +6 -2
  126. package/{controls → dist/controls}/rich-text/toolbar.js +12 -7
  127. package/dist/controls/rich-text/toolbar.js.map +1 -0
  128. package/{controls → dist/controls}/scale.js +5 -5
  129. package/dist/controls/scale.js.map +1 -0
  130. package/{controls → dist/controls}/slot-register.js +1 -1
  131. package/dist/controls/slot-register.js.map +1 -0
  132. package/{controls → dist/controls}/slot-services.d.ts +25 -0
  133. package/dist/controls/slot-services.js +155 -0
  134. package/dist/controls/slot-services.js.map +1 -0
  135. package/{controls → dist/controls}/slot.js +42 -24
  136. package/dist/controls/slot.js.map +1 -0
  137. package/{controls → dist/controls}/table/index.js +1 -1
  138. package/dist/controls/table/index.js.map +1 -0
  139. package/{controls → dist/controls}/table/prod.js +3 -3
  140. package/dist/controls/table/prod.js.map +1 -0
  141. package/{controls → dist/controls}/table/refs.js +13 -2
  142. package/dist/controls/table/refs.js.map +1 -0
  143. package/{controls → dist/controls}/table/stored.js +1 -1
  144. package/dist/controls/table/stored.js.map +1 -0
  145. package/{controls → dist/controls}/table/table-editor.js +51 -48
  146. package/dist/controls/table/table-editor.js.map +1 -0
  147. package/{controls → dist/controls}/table/table-link.js +3 -3
  148. package/dist/controls/table/table-link.js.map +1 -0
  149. package/{controls → dist/controls}/table/table.js +3 -3
  150. package/dist/controls/table/table.js.map +1 -0
  151. package/{controls → dist/controls}/text.d.ts +2 -2
  152. package/{controls → dist/controls}/text.js +78 -43
  153. package/dist/controls/text.js.map +1 -0
  154. package/dist/controls/unknown-value.d.ts +17 -0
  155. package/dist/controls/unknown-value.js +66 -0
  156. package/dist/controls/unknown-value.js.map +1 -0
  157. package/dist/core/core.d.ts +63 -0
  158. package/dist/core/core.js +171 -0
  159. package/dist/core/core.js.map +1 -0
  160. package/dist/core/facets.d.ts +347 -0
  161. package/dist/core/facets.js +334 -0
  162. package/dist/core/facets.js.map +1 -0
  163. package/dist/core/index.d.ts +3 -0
  164. package/dist/core/index.js +3 -0
  165. package/{engine → dist/engine}/array.js +34 -21
  166. package/dist/engine/array.js.map +1 -0
  167. package/{engine → dist/engine}/bits.js +1 -1
  168. package/dist/engine/bits.js.map +1 -0
  169. package/{engine → dist/engine}/breadcrumb.d.ts +3 -3
  170. package/{engine → dist/engine}/breadcrumb.js +12 -36
  171. package/dist/engine/breadcrumb.js.map +1 -0
  172. package/{engine → dist/engine}/expand.d.ts +2 -4
  173. package/{engine → dist/engine}/expand.js +5 -22
  174. package/dist/engine/expand.js.map +1 -0
  175. package/{engine → dist/engine}/field-list.js +1 -1
  176. package/dist/engine/field-list.js.map +1 -0
  177. package/{engine → dist/engine}/field-shell.js +249 -121
  178. package/dist/engine/field-shell.js.map +1 -0
  179. package/{engine → dist/engine}/frame.d.ts +3 -1
  180. package/{engine → dist/engine}/frame.js +16 -14
  181. package/dist/engine/frame.js.map +1 -0
  182. package/{engine → dist/engine}/group-summary.d.ts +2 -1
  183. package/{engine → dist/engine}/group-summary.js +7 -3
  184. package/dist/engine/group-summary.js.map +1 -0
  185. package/{engine → dist/engine}/grouping.d.ts +19 -5
  186. package/{engine → dist/engine}/grouping.js +193 -21
  187. package/dist/engine/grouping.js.map +1 -0
  188. package/{engine → dist/engine}/item-list.d.ts +11 -1
  189. package/{engine → dist/engine}/item-list.js +35 -13
  190. package/dist/engine/item-list.js.map +1 -0
  191. package/{engine → dist/engine}/kit-field.js +45 -10
  192. package/dist/engine/kit-field.js.map +1 -0
  193. package/{engine → dist/engine}/schema-form.d.ts +27 -2
  194. package/{engine → dist/engine}/schema-form.js +182 -40
  195. package/dist/engine/schema-form.js.map +1 -0
  196. package/{engine → dist/engine}/slot.js +5 -15
  197. package/dist/engine/slot.js.map +1 -0
  198. package/dist/index.js +47 -0
  199. package/dist/index.js.map +1 -0
  200. package/{kit.css → dist/kit.css} +19 -0
  201. package/{lib → dist/lib}/cn.js +7 -4
  202. package/dist/lib/cn.js.map +1 -0
  203. package/{lib → dist/lib}/columns.js +4 -1
  204. package/dist/lib/columns.js.map +1 -0
  205. package/{lib → dist/lib}/frames.js +2 -2
  206. package/dist/lib/frames.js.map +1 -0
  207. package/dist/lib/icon-image.d.ts +10 -0
  208. package/dist/lib/icon-image.js +8 -0
  209. package/dist/lib/icon-image.js.map +1 -0
  210. package/{lib → dist/lib}/icons.js +4 -3
  211. package/dist/lib/icons.js.map +1 -0
  212. package/dist/lib/input-modality.d.ts +11 -0
  213. package/dist/lib/input-modality.js +47 -0
  214. package/dist/lib/input-modality.js.map +1 -0
  215. package/dist/lib/key-event.d.ts +11 -0
  216. package/dist/lib/key-event.js +16 -0
  217. package/dist/lib/key-event.js.map +1 -0
  218. package/{lib → dist/lib}/path.js +4 -2
  219. package/dist/lib/path.js.map +1 -0
  220. package/{lib → dist/lib}/schema.d.ts +34 -3
  221. package/{lib → dist/lib}/schema.js +110 -13
  222. package/dist/lib/schema.js.map +1 -0
  223. package/{lib → dist/lib}/utils.js +1 -1
  224. package/dist/lib/utils.js.map +1 -0
  225. package/{lib → dist/lib}/validate.d.ts +11 -1
  226. package/{lib → dist/lib}/validate.js +85 -11
  227. package/dist/lib/validate.js.map +1 -0
  228. package/dist/library/analysis.d.ts +23 -0
  229. package/dist/library/analysis.js +160 -0
  230. package/dist/library/analysis.js.map +1 -0
  231. package/dist/library/catalog.d.ts +57 -0
  232. package/dist/library/catalog.js +307 -0
  233. package/dist/library/catalog.js.map +1 -0
  234. package/dist/library/coreNotes.d.ts +8 -0
  235. package/dist/library/coreNotes.js +111 -0
  236. package/dist/library/coreNotes.js.map +1 -0
  237. package/dist/library/coverage.d.ts +40 -0
  238. package/dist/library/coverage.js +59 -0
  239. package/dist/library/coverage.js.map +1 -0
  240. package/dist/library/entries/advanced.entries.d.ts +2 -0
  241. package/dist/library/entries/advanced.entries.js +6579 -0
  242. package/dist/library/entries/advanced.entries.js.map +1 -0
  243. package/dist/library/entries/commerce.entries.d.ts +2 -0
  244. package/dist/library/entries/commerce.entries.js +4140 -0
  245. package/dist/library/entries/commerce.entries.js.map +1 -0
  246. package/dist/library/entries/company.entries.d.ts +2 -0
  247. package/dist/library/entries/company.entries.js +2731 -0
  248. package/dist/library/entries/company.entries.js.map +1 -0
  249. package/dist/library/entries/conversion.entries.d.ts +2 -0
  250. package/dist/library/entries/conversion.entries.js +3707 -0
  251. package/dist/library/entries/conversion.entries.js.map +1 -0
  252. package/dist/library/entries/data.entries.d.ts +7 -0
  253. package/dist/library/entries/data.entries.js +4613 -0
  254. package/dist/library/entries/data.entries.js.map +1 -0
  255. package/dist/library/entries/events.entries.d.ts +2 -0
  256. package/dist/library/entries/events.entries.js +3428 -0
  257. package/dist/library/entries/events.entries.js.map +1 -0
  258. package/dist/library/entries/features.entries.d.ts +2 -0
  259. package/dist/library/entries/features.entries.js +3157 -0
  260. package/dist/library/entries/features.entries.js.map +1 -0
  261. package/dist/library/entries/heroes.entries.d.ts +2 -0
  262. package/dist/library/entries/heroes.entries.js +3401 -0
  263. package/dist/library/entries/heroes.entries.js.map +1 -0
  264. package/dist/library/entries/index.d.ts +3 -0
  265. package/dist/library/entries/index.js +35 -0
  266. package/dist/library/entries/index.js.map +1 -0
  267. package/dist/library/entries/listings.entries.d.ts +2 -0
  268. package/dist/library/entries/listings.entries.js +2976 -0
  269. package/dist/library/entries/listings.entries.js.map +1 -0
  270. package/dist/library/entries/longform.entries.d.ts +2 -0
  271. package/dist/library/entries/longform.entries.js +4227 -0
  272. package/dist/library/entries/longform.entries.js.map +1 -0
  273. package/dist/library/entries/media.entries.d.ts +2 -0
  274. package/dist/library/entries/media.entries.js +2781 -0
  275. package/dist/library/entries/media.entries.js.map +1 -0
  276. package/dist/library/entries/navigation.entries.d.ts +2 -0
  277. package/dist/library/entries/navigation.entries.js +4011 -0
  278. package/dist/library/entries/navigation.entries.js.map +1 -0
  279. package/dist/library/entries/pricing.entries.d.ts +2 -0
  280. package/dist/library/entries/pricing.entries.js +2383 -0
  281. package/dist/library/entries/pricing.entries.js.map +1 -0
  282. package/dist/library/entries/social-proof.entries.d.ts +2 -0
  283. package/dist/library/entries/social-proof.entries.js +2297 -0
  284. package/dist/library/entries/social-proof.entries.js.map +1 -0
  285. package/dist/library/examples/bento.d.ts +92 -0
  286. package/dist/library/examples/bento.js +201 -0
  287. package/dist/library/examples/bento.js.map +1 -0
  288. package/dist/library/examples/blocks.d.ts +14 -0
  289. package/dist/library/examples/blocks.js +313 -0
  290. package/dist/library/examples/blocks.js.map +1 -0
  291. package/dist/library/examples/faq.d.ts +28 -0
  292. package/dist/library/examples/faq.js +230 -0
  293. package/dist/library/examples/faq.js.map +1 -0
  294. package/dist/library/examples/hero.d.ts +43 -0
  295. package/dist/library/examples/hero.js +222 -0
  296. package/dist/library/examples/hero.js.map +1 -0
  297. package/dist/library/examples/index.d.ts +36 -0
  298. package/dist/library/examples/index.js +109 -0
  299. package/dist/library/examples/index.js.map +1 -0
  300. package/dist/library/examples/journalStory.d.ts +93 -0
  301. package/dist/library/examples/journalStory.js +338 -0
  302. package/dist/library/examples/journalStory.js.map +1 -0
  303. package/dist/library/examples/megaMenu.d.ts +134 -0
  304. package/dist/library/examples/megaMenu.js +442 -0
  305. package/dist/library/examples/megaMenu.js.map +1 -0
  306. package/dist/library/examples/pricing.d.ts +103 -0
  307. package/dist/library/examples/pricing.js +479 -0
  308. package/dist/library/examples/pricing.js.map +1 -0
  309. package/dist/library/examples/tabs.d.ts +87 -0
  310. package/dist/library/examples/tabs.js +180 -0
  311. package/dist/library/examples/tabs.js.map +1 -0
  312. package/dist/library/export.d.ts +42 -0
  313. package/dist/library/export.js +80 -0
  314. package/dist/library/export.js.map +1 -0
  315. package/dist/library/index.d.ts +13 -0
  316. package/dist/library/index.js +6 -0
  317. package/dist/library/kit-catalog.json +1510 -0
  318. package/dist/library/types.d.ts +42 -0
  319. package/dist/library/types.js +0 -0
  320. package/{schema → dist/schema}/adapters.js +1 -2
  321. package/dist/schema/adapters.js.map +1 -0
  322. package/{schema → dist/schema}/help.d.ts +2 -0
  323. package/{schema → dist/schema}/help.js +6 -4
  324. package/dist/schema/help.js.map +1 -0
  325. package/{schema → dist/schema}/scale.js +1 -1
  326. package/dist/schema/scale.js.map +1 -0
  327. package/{schema → dist/schema}/sources.js +1 -1
  328. package/dist/schema/sources.js.map +1 -0
  329. package/{schema → dist/schema}/table.js +11 -10
  330. package/dist/schema/table.js.map +1 -0
  331. package/{schema → dist/schema}/types.d.ts +29 -1
  332. package/{schema → dist/schema}/types.js +1 -1
  333. package/dist/schema/types.js.map +1 -0
  334. package/dist/styles.css +2 -0
  335. package/dist/table/table-view.d.ts +14 -0
  336. package/dist/table/table-view.js +140 -0
  337. package/dist/table/table-view.js.map +1 -0
  338. package/dist/table/table.css +73 -0
  339. package/dist/testing/corpus.d.ts +63 -0
  340. package/dist/testing/corpus.js +129 -0
  341. package/dist/testing/corpus.js.map +1 -0
  342. package/dist/testing/test-form.d.ts +11 -0
  343. package/dist/testing/test-form.js +38 -0
  344. package/dist/testing/test-form.js.map +1 -0
  345. package/dist/theme.css +345 -0
  346. package/dist/theme.d.ts +22 -0
  347. package/dist/theme.js +43 -0
  348. package/dist/theme.js.map +1 -0
  349. package/dist/tokens.css +542 -0
  350. package/dist/types.js +0 -0
  351. package/{ui → dist/ui}/action-tray.d.ts +1 -1
  352. package/{ui → dist/ui}/action-tray.js +20 -19
  353. package/dist/ui/action-tray.js.map +1 -0
  354. package/dist/ui/autocomplete.d.ts +30 -0
  355. package/dist/ui/autocomplete.js +139 -0
  356. package/dist/ui/autocomplete.js.map +1 -0
  357. package/{ui → dist/ui}/button.d.ts +3 -3
  358. package/{ui → dist/ui}/button.js +6 -7
  359. package/dist/ui/button.js.map +1 -0
  360. package/{ui → dist/ui}/choice-switch.js +1 -1
  361. package/dist/ui/choice-switch.js.map +1 -0
  362. package/{ui → dist/ui}/controls.js +51 -39
  363. package/dist/ui/controls.js.map +1 -0
  364. package/{ui → dist/ui}/display.d.ts +10 -3
  365. package/{ui → dist/ui}/display.js +57 -46
  366. package/dist/ui/display.js.map +1 -0
  367. package/{ui → dist/ui}/expanded-editor-modal.d.ts +2 -2
  368. package/{ui → dist/ui}/expanded-editor-modal.js +6 -6
  369. package/dist/ui/expanded-editor-modal.js.map +1 -0
  370. package/{ui → dist/ui}/field-context.js +1 -1
  371. package/dist/ui/field-context.js.map +1 -0
  372. package/{ui → dist/ui}/floating-panel.d.ts +1 -1
  373. package/{ui → dist/ui}/floating-panel.js +28 -12
  374. package/dist/ui/floating-panel.js.map +1 -0
  375. package/{ui → dist/ui}/index.d.ts +4 -0
  376. package/dist/ui/index.js +18 -0
  377. package/{ui → dist/ui}/input.d.ts +1 -1
  378. package/{ui → dist/ui}/input.js +9 -9
  379. package/dist/ui/input.js.map +1 -0
  380. package/{ui → dist/ui}/mode-bar.js +3 -3
  381. package/dist/ui/mode-bar.js.map +1 -0
  382. package/{ui → dist/ui}/overlay.d.ts +77 -5
  383. package/dist/ui/overlay.js +697 -0
  384. package/dist/ui/overlay.js.map +1 -0
  385. package/{ui → dist/ui}/path-crumbs.js +37 -3
  386. package/dist/ui/path-crumbs.js.map +1 -0
  387. package/{ui → dist/ui}/presence.js +2 -2
  388. package/dist/ui/presence.js.map +1 -0
  389. package/{ui → dist/ui}/select.js +89 -87
  390. package/dist/ui/select.js.map +1 -0
  391. package/{ui → dist/ui}/shortcut-hint.js +1 -1
  392. package/dist/ui/shortcut-hint.js.map +1 -0
  393. package/dist/ui/spinner.d.ts +24 -0
  394. package/dist/ui/spinner.js +42 -0
  395. package/dist/ui/spinner.js.map +1 -0
  396. package/dist/ui/split-button.d.ts +32 -0
  397. package/dist/ui/split-button.js +60 -0
  398. package/dist/ui/split-button.js.map +1 -0
  399. package/{ui → dist/ui}/surfaces.js +1 -1
  400. package/dist/ui/surfaces.js.map +1 -0
  401. package/dist/ui/tab.d.ts +38 -0
  402. package/dist/ui/tab.js +87 -0
  403. package/dist/ui/tab.js.map +1 -0
  404. package/dist/ui/toast.d.ts +20 -0
  405. package/dist/ui/toast.js +115 -0
  406. package/dist/ui/toast.js.map +1 -0
  407. package/{ui → dist/ui}/tooltip-root.d.ts +4 -3
  408. package/{ui → dist/ui}/tooltip-root.js +9 -8
  409. package/dist/ui/tooltip-root.js.map +1 -0
  410. package/{ui → dist/ui}/variants.js +1 -1
  411. package/dist/ui/variants.js.map +1 -0
  412. package/package.json +77 -23
  413. package/adapters/icons.js.map +0 -1
  414. package/adapters/lossy.js +0 -233
  415. package/adapters/lossy.js.map +0 -1
  416. package/adapters/prod-types.js.map +0 -1
  417. package/adapters/schema.js.map +0 -1
  418. package/adapters/values.js.map +0 -1
  419. package/brand/logo.js +0 -9
  420. package/brand/logo.js.map +0 -1
  421. package/context.js.map +0 -1
  422. package/controls/button.js.map +0 -1
  423. package/controls/c1.js.map +0 -1
  424. package/controls/c2.js.map +0 -1
  425. package/controls/choice.js.map +0 -1
  426. package/controls/code-register.js.map +0 -1
  427. package/controls/code.js.map +0 -1
  428. package/controls/color.js.map +0 -1
  429. package/controls/date-register.js.map +0 -1
  430. package/controls/date-zone.js.map +0 -1
  431. package/controls/date.js.map +0 -1
  432. package/controls/form-picker-register.js.map +0 -1
  433. package/controls/form-picker.js.map +0 -1
  434. package/controls/icon-register.js.map +0 -1
  435. package/controls/icon.js.map +0 -1
  436. package/controls/index.js.map +0 -1
  437. package/controls/json-register.js.map +0 -1
  438. package/controls/json.js.map +0 -1
  439. package/controls/link.js.map +0 -1
  440. package/controls/location-register.js.map +0 -1
  441. package/controls/location.js.map +0 -1
  442. package/controls/media-register.js.map +0 -1
  443. package/controls/media.js.map +0 -1
  444. package/controls/number.js.map +0 -1
  445. package/controls/reference-register.js.map +0 -1
  446. package/controls/reference.js.map +0 -1
  447. package/controls/rich-text/blocks.d.ts +0 -28
  448. package/controls/rich-text/blocks.js.map +0 -1
  449. package/controls/rich-text/catalog.js.map +0 -1
  450. package/controls/rich-text/codec.js.map +0 -1
  451. package/controls/rich-text/component-card.js.map +0 -1
  452. package/controls/rich-text/control.js.map +0 -1
  453. package/controls/rich-text/dom.js.map +0 -1
  454. package/controls/rich-text/editor.js.map +0 -1
  455. package/controls/rich-text/floating.js.map +0 -1
  456. package/controls/rich-text/index.js.map +0 -1
  457. package/controls/rich-text/link-form.js +0 -111
  458. package/controls/rich-text/link-form.js.map +0 -1
  459. package/controls/rich-text/markdown.js.map +0 -1
  460. package/controls/rich-text/ops.js.map +0 -1
  461. package/controls/rich-text/toolbar.js.map +0 -1
  462. package/controls/scale.js.map +0 -1
  463. package/controls/slot-register.js.map +0 -1
  464. package/controls/slot-services.js +0 -38
  465. package/controls/slot-services.js.map +0 -1
  466. package/controls/slot.js.map +0 -1
  467. package/controls/table/index.js.map +0 -1
  468. package/controls/table/prod.js.map +0 -1
  469. package/controls/table/refs.js.map +0 -1
  470. package/controls/table/stored.js.map +0 -1
  471. package/controls/table/table-editor.js.map +0 -1
  472. package/controls/table/table-link.js.map +0 -1
  473. package/controls/table/table.js.map +0 -1
  474. package/controls/text.js.map +0 -1
  475. package/engine/array.js.map +0 -1
  476. package/engine/bits.js.map +0 -1
  477. package/engine/breadcrumb.js.map +0 -1
  478. package/engine/expand.js.map +0 -1
  479. package/engine/field-list.js.map +0 -1
  480. package/engine/field-shell.js.map +0 -1
  481. package/engine/frame.js.map +0 -1
  482. package/engine/group-summary.js.map +0 -1
  483. package/engine/grouping.js.map +0 -1
  484. package/engine/item-list.js.map +0 -1
  485. package/engine/kit-field.js.map +0 -1
  486. package/engine/schema-form.js.map +0 -1
  487. package/engine/slot.js.map +0 -1
  488. package/index.js +0 -55
  489. package/index.js.map +0 -1
  490. package/lib/cn.js.map +0 -1
  491. package/lib/columns.js.map +0 -1
  492. package/lib/frames.js.map +0 -1
  493. package/lib/icons.js.map +0 -1
  494. package/lib/path.js.map +0 -1
  495. package/lib/schema.js.map +0 -1
  496. package/lib/utils.js.map +0 -1
  497. package/lib/validate.js.map +0 -1
  498. package/schema/adapters.js.map +0 -1
  499. package/schema/help.js.map +0 -1
  500. package/schema/scale.js.map +0 -1
  501. package/schema/sources.js.map +0 -1
  502. package/schema/table.js.map +0 -1
  503. package/schema/types.js.map +0 -1
  504. package/ui/action-tray.js.map +0 -1
  505. package/ui/button.js.map +0 -1
  506. package/ui/choice-switch.js.map +0 -1
  507. package/ui/controls.js.map +0 -1
  508. package/ui/display.js.map +0 -1
  509. package/ui/expanded-editor-modal.js.map +0 -1
  510. package/ui/field-context.js.map +0 -1
  511. package/ui/floating-panel.js.map +0 -1
  512. package/ui/index.js +0 -13
  513. package/ui/input.js.map +0 -1
  514. package/ui/mode-bar.js.map +0 -1
  515. package/ui/overlay.js +0 -378
  516. package/ui/overlay.js.map +0 -1
  517. package/ui/path-crumbs.js.map +0 -1
  518. package/ui/presence.js.map +0 -1
  519. package/ui/select.js.map +0 -1
  520. package/ui/shortcut-hint.js.map +0 -1
  521. package/ui/surfaces.js.map +0 -1
  522. package/ui/tooltip-root.js.map +0 -1
  523. package/ui/variants.js.map +0 -1
  524. /package/{_virtual → dist/_virtual}/_rolldown/runtime.js +0 -0
  525. /package/{adapters → dist/adapters}/icons.d.ts +0 -0
  526. /package/{brand → dist/brand}/logo.d.ts +0 -0
  527. /package/{controls → dist/controls}/c1.d.ts +0 -0
  528. /package/{controls → dist/controls}/c2.d.ts +0 -0
  529. /package/{controls → dist/controls}/code-register.d.ts +0 -0
  530. /package/{controls → dist/controls}/code.d.ts +0 -0
  531. /package/{controls → dist/controls}/color.d.ts +0 -0
  532. /package/{controls → dist/controls}/date-register.d.ts +0 -0
  533. /package/{controls → dist/controls}/date-zone.d.ts +0 -0
  534. /package/{controls → dist/controls}/date.d.ts +0 -0
  535. /package/{controls → dist/controls}/form-picker-register.d.ts +0 -0
  536. /package/{controls → dist/controls}/form-picker.d.ts +0 -0
  537. /package/{controls → dist/controls}/icon-register.d.ts +0 -0
  538. /package/{controls → dist/controls}/json-register.d.ts +0 -0
  539. /package/{controls → dist/controls}/json.d.ts +0 -0
  540. /package/{controls → dist/controls}/link.d.ts +0 -0
  541. /package/{controls → dist/controls}/location-register.d.ts +0 -0
  542. /package/{controls → dist/controls}/location.d.ts +0 -0
  543. /package/{controls → dist/controls}/media-register.d.ts +0 -0
  544. /package/{controls → dist/controls}/number.d.ts +0 -0
  545. /package/{controls → dist/controls}/reference-register.d.ts +0 -0
  546. /package/{controls → dist/controls}/rich-text/index.d.ts +0 -0
  547. /package/{controls → dist/controls}/rich-text/link-form.d.ts +0 -0
  548. /package/{controls → dist/controls}/rich-text/markdown.d.ts +0 -0
  549. /package/{controls → dist/controls}/rich-text/ops.d.ts +0 -0
  550. /package/{controls → dist/controls}/scale.d.ts +0 -0
  551. /package/{controls → dist/controls}/slot-register.d.ts +0 -0
  552. /package/{controls → dist/controls}/slot.d.ts +0 -0
  553. /package/{controls → dist/controls}/table/index.d.ts +0 -0
  554. /package/{controls → dist/controls}/table/prod.d.ts +0 -0
  555. /package/{controls → dist/controls}/table/refs.d.ts +0 -0
  556. /package/{controls → dist/controls}/table/stored.d.ts +0 -0
  557. /package/{controls → dist/controls}/table/table-editor.d.ts +0 -0
  558. /package/{controls → dist/controls}/table/table-link.d.ts +0 -0
  559. /package/{controls → dist/controls}/table/table.d.ts +0 -0
  560. /package/{engine → dist/engine}/array.d.ts +0 -0
  561. /package/{engine → dist/engine}/bits.d.ts +0 -0
  562. /package/{engine → dist/engine}/field-list.d.ts +0 -0
  563. /package/{engine → dist/engine}/field-shell.d.ts +0 -0
  564. /package/{engine → dist/engine}/kit-field.d.ts +0 -0
  565. /package/{engine → dist/engine}/slot.d.ts +0 -0
  566. /package/{index.d.ts → dist/index.d.ts} +0 -0
  567. /package/{lib → dist/lib}/cn.d.ts +0 -0
  568. /package/{lib → dist/lib}/columns.d.ts +0 -0
  569. /package/{lib → dist/lib}/frames.d.ts +0 -0
  570. /package/{lib → dist/lib}/icons.d.ts +0 -0
  571. /package/{lib → dist/lib}/path.d.ts +0 -0
  572. /package/{lib → dist/lib}/utils.d.ts +0 -0
  573. /package/{schema → dist/schema}/adapters.d.ts +0 -0
  574. /package/{schema → dist/schema}/scale.d.ts +0 -0
  575. /package/{schema → dist/schema}/sources.d.ts +0 -0
  576. /package/{schema → dist/schema}/table.d.ts +0 -0
  577. /package/{types.d.ts → dist/types.d.ts} +0 -0
  578. /package/{ui → dist/ui}/choice-switch.d.ts +0 -0
  579. /package/{ui → dist/ui}/controls.d.ts +0 -0
  580. /package/{ui → dist/ui}/field-context.d.ts +0 -0
  581. /package/{ui → dist/ui}/mode-bar.d.ts +0 -0
  582. /package/{ui → dist/ui}/path-crumbs.d.ts +0 -0
  583. /package/{ui → dist/ui}/presence.d.ts +0 -0
  584. /package/{ui → dist/ui}/select.d.ts +0 -0
  585. /package/{ui → dist/ui}/shortcut-hint.d.ts +0 -0
  586. /package/{ui → dist/ui}/surfaces.d.ts +0 -0
  587. /package/{ui → dist/ui}/variants.d.ts +0 -0
@@ -0,0 +1,542 @@
1
+ /* @bettercms-ai/kit design tokens: the V2 roles, light (:root) and dark (.dark).
2
+ Moved verbatim from bettercms-dashboard src/index.css (main 37f589151) in the 2.0 relocation; this file is now their one home.
3
+ A Tailwind v4 app imports it with theme.css; a page without Tailwind uses dist/styles.css. */
4
+ :root {
5
+ /* Non-kit roles the theme.css utilities read */
6
+ --motion-duration-fast: 140ms;
7
+ --editor-tray-line: #EDEDED;
8
+ /* Ink: the dark-in-both-themes surface (tooltips, chips), read by the glass-ink / kit-ink-pill utilities in theme.css */
9
+ --ink-bg: #1C1C1E;
10
+ --ink-fg: #F5F5F5;
11
+ --ink-hover: rgb(255 255 255 / 0.1);
12
+ --ink-active: rgb(255 255 255 / 0.15);
13
+ --ink-line: rgb(255 255 255 / 0.16);
14
+ --ink-danger-fg: #FF8A8A;
15
+ --ink-danger-fg-hover: #FFA3A3;
16
+ --ink-button: #FFFFFF;
17
+ --ink-button-fg: #141414;
18
+ --ink-button-kbd: rgb(20 20 20 / 0.1);
19
+ --shadow-ink: 0 10px 28px -8px rgb(0 0 0 / 0.35);
20
+ /* V2 --tray-line and the --ink-* set as kit roles (demo styles/index.css :79, :204-214); the toast edge reads tray-line */
21
+ --kit-tray-line: #ededed;
22
+ --kit-ink-bg: #1c1c1e;
23
+ --kit-ink-fg: #f5f5f5;
24
+ --kit-ink-fg-2: rgb(255 255 255 / 0.8);
25
+ --kit-ink-fg-3: rgb(255 255 255 / 0.62);
26
+ --kit-ink-hover: rgb(255 255 255 / 0.1);
27
+ --kit-ink-active: rgb(255 255 255 / 0.15);
28
+ --kit-ink-line: rgb(255 255 255 / 0.16);
29
+ --kit-ink-button: #ffffff;
30
+ --kit-ink-button-fg: #141414;
31
+ --kit-ink-danger-fg: #ff8a8a;
32
+ --kit-ink-danger-fg-hover: #ffa3a3;
33
+ /* ─── V2 roles: THE token home (demo bettercms-v2-demo-himanshu @ c896beb, src/styles/index.css :root) ───
34
+ Every --kit-* value lives here and in .dark below, nowhere else (src/kit/kit.css holds only keyframes).
35
+ The dashboard's legacy role names further down are var() aliases of these, so one value drives both
36
+ the kit and the legacy primitives. Values are the demo's, copied as they are; the only deviation is
37
+ --kit-font-sans, which leads with the variable build of the same Inter face the app ships. */
38
+ --kit-app: #fafafa;
39
+ --kit-surface: #ffffff;
40
+ --kit-surface-raised: #ffffff;
41
+ --kit-subtle: #f7f7f7;
42
+ /* a site preview's paper (a live component in a rich-text card): light in both themes, as V2's site-paper */
43
+ --kit-site-paper: #ffffff;
44
+ --kit-well: #f7f7f7;
45
+ --kit-muted: #f1f1f2;
46
+ --kit-hover: #f0f0f0;
47
+ --kit-selected: #ebebeb;
48
+ --kit-selected-hover: #e2e2e2;
49
+ --kit-inverse: #1c1c1c;
50
+ --kit-inverse-hover: #000000;
51
+ --kit-overlay: rgb(10 10 10 / 0.32);
52
+ /* V2 media handles (crop box, focal ring) and the dim outside a crop: pinned white-on-photo in both themes. */
53
+ --kit-media-handle: #ffffff;
54
+ --kit-media-handle-ring: rgb(0 0 0 / 0.35);
55
+ --kit-media-scrim: rgb(0 0 0 / 0.55);
56
+ /* V2 transparency checkerboard behind media tiles: white in light, dimmed in dark (never a white slab). */
57
+ --kit-checker-a: #ffffff;
58
+ --kit-checker-b: #f0f0f1;
59
+ /* V2 Content roles (S1a). Values are V2's literals (src/styles/index.css @ d78733d). */
60
+ --kit-rail: #fafafa; /* nav rail and panes; = app in light */
61
+ --kit-control-checked: #171717; /* checked radio / checkbox fill and border */
62
+ --kit-on-scrim: #ffffff;
63
+ --kit-on-scrim-2: rgb(255 255 255 / 0.7);
64
+ --kit-on-scrim-hover: rgb(255 255 255 / 0.1);
65
+ --kit-on-scrim-active: rgb(255 255 255 / 0.2);
66
+ --kit-scrim-strong: rgb(0 0 0 / 0.8);
67
+ --kit-scrim: rgb(0 0 0 / 0.55); /* V2 index.css:221 (light only) */
68
+ /* Kit overlay layers. The kit reads only these roles, falling back to V2's own numbers (float 52, sheet 55, modal 60,
69
+ expanded editor 70, menu 80, editor popover 84, tooltip 90; each popup sits at role + 1). The dashboard maps them onto
70
+ its --z-* ladder so a kit layer opened over a dashboard dialog or drawer stacks above it, in V2's order. */
71
+ --kit-z-float: 52;
72
+ --kit-z-sheet: var(--z-drawer);
73
+ --kit-z-modal: var(--z-modal);
74
+ --kit-z-expanded: calc(var(--z-modal) + 10);
75
+ --kit-z-menu: var(--z-dropdown);
76
+ --kit-z-popover: calc(var(--z-dropdown) + 5);
77
+ --kit-z-tooltip: var(--z-tooltip);
78
+ --kit-floating-line: #e5e5e5; /* V2 :151 modals, sheets, floating panels, expanded editors */
79
+ --kit-code-fg: #171717; /* V2 :259 */
80
+ --kit-shadow-sheet-b: 0 -16px 40px -12px rgb(0 0 0 / 0.2); /* V2 :253 bottom sheet */
81
+ --kit-ring-focus: 0 0 0 2px var(--kit-surface), 0 0 0 4px var(--kit-focus-ring); /* V2 :74; ring value = dash focus ring (TK-2) */
82
+ --kit-tray-gradient: linear-gradient(180deg, rgb(216 216 216 / 0) 16.105%, rgb(216 216 216 / 0.6) 123.57%); /* V2 :78 */
83
+ /* V2 :165-168, :240-243 generic site-preview palette (button style swatches, block thumbnails); a host that knows the site overrides it */
84
+ --kit-preview-paper: #f6f1ea;
85
+ --kit-preview-ink: #1e1b18;
86
+ --kit-preview-primary: #e0663b;
87
+ --kit-preview-primary-on: #1e1b18;
88
+ --kit-preview-contrast: #1e1b18;
89
+ --kit-preview-contrast-on: #f6f1ea;
90
+ --kit-preview-outline: rgb(30 27 24 / 0.25);
91
+ --kit-segment-thumb: #ffffff; /* the active pill in a segmented control */
92
+ --kit-progress-fill: #171717;
93
+ --kit-paper: #ffffff; /* document paper previews (PDF, DOCX) */
94
+ --kit-paper-ink: #1d1a17;
95
+ --kit-paper-filter: none; /* filter: var(--kit-paper-filter) dims a whole paper preview in dark */
96
+ --kit-site-paper-line: transparent; /* hairline edge of a site-paper preview (shows in dark) */
97
+ --kit-media-well: #111111; /* video tile and player backdrop */
98
+ --kit-media-backdrop: rgb(0 0 0 / 0.8);
99
+ --kit-media-control: rgb(255 255 255 / 0.9);
100
+ --kit-media-control-fg: #000000;
101
+ --kit-disabled-bg: #f1f1f2;
102
+ --kit-disabled-fg: #85858b;
103
+ --kit-constraint-bg: var(--kit-muted); /* Required, Max 60… chips */
104
+ --kit-constraint-fg: var(--kit-fg-2);
105
+ --kit-shadow-sheet-r: -12px 0 32px -16px rgb(0 0 0 / 0.18); /* sheet docked right */
106
+ --kit-fg: #171717;
107
+ --kit-fg-2: #525252;
108
+ --kit-fg-3: #606065;
109
+ --kit-fg-4: #707074;
110
+ --kit-fg-inverse: #ffffff;
111
+ --kit-line: #e5e5e5;
112
+ --kit-line-strong: #dcdcdf;
113
+ --kit-line-subtle: #f0f0f1;
114
+ --kit-field-border: #cfcfd4;
115
+ --kit-focus-ring: #838383; /* V2 demo is #a3a3a3 — 2.1–2.5:1 on V2 surfaces fails WCAG 1.4.11; same neutral, darker */
116
+ --kit-accent: #a354e9;
117
+ --kit-accent-hover: #9140dc;
118
+ --kit-accent-soft: #f5eefe;
119
+ --kit-accent-soft-2: #ead9fc;
120
+ --kit-accent-softer: #faf7ff;
121
+ --kit-accent-line: #e3ccf8;
122
+ --kit-accent-fg: #6c3b97;
123
+ --kit-accent-on: #ffffff;
124
+ --kit-success: #3cba71;
125
+ --kit-success-soft: #dcfce7;
126
+ --kit-success-softer: #eefef3;
127
+ --kit-success-line: #c5ead4;
128
+ --kit-success-fg: #166534;
129
+ --kit-success-on: #0f1f14;
130
+ --kit-warning: #f59e0b;
131
+ --kit-warning-soft: #fdf2dc;
132
+ --kit-warning-softer: #fef9ee;
133
+ --kit-warning-line: #fce2b6;
134
+ --kit-warning-fg: #9a5b06;
135
+ --kit-warning-on: #171717;
136
+ --kit-danger: #c7353e;
137
+ --kit-danger-soft: #fde8e8;
138
+ --kit-danger-softer: #fef4f4;
139
+ --kit-danger-line: #eec2c5;
140
+ --kit-danger-fg: #b42c35;
141
+ --kit-danger-on: #ffffff;
142
+ --kit-info: #3b82f6;
143
+ --kit-info-soft: #e6effd;
144
+ --kit-info-softer: #f3f7fe;
145
+ --kit-info-line: #c4dafc;
146
+ --kit-info-fg: #1f5fc9;
147
+ --kit-info-on: #111b28;
148
+ --kit-canvas: #f7f7f7;
149
+ --kit-scrollbar: #dcdcdf;
150
+ --kit-code: #f7f7f7;
151
+ --kit-control-bg: #ffffff;
152
+ --kit-field-bg: #ffffff;
153
+ --kit-field-border-hover: #85858b;
154
+ --kit-field-border-focus: #6a6a6f;
155
+ --kit-switch-off: #dcdcdf;
156
+ --kit-control-thumb: #ffffff;
157
+ --kit-swatch-ring: rgb(0 0 0 / 0.1);
158
+ --kit-on-inverse-2: rgb(255 255 255 / 0.7);
159
+ --kit-selection: #ead9fc;
160
+ --kit-canvas-select: #9746db;
161
+ --kit-canvas-select-on: #ffffff;
162
+ /* V2 --canvas-select-soft: the swap-target wash on the site (fixed in both themes, like --canvas-select) */
163
+ --kit-canvas-select-soft: rgb(151 70 219 / 0.1);
164
+ --kit-canvas-frame-ring: rgb(0 0 0 / 0.05);
165
+ --kit-syntax-keyword: #7945ab;
166
+ --kit-syntax-string: #1a763f;
167
+ --kit-syntax-number: #a35303;
168
+ --kit-syntax-property: #2266a4;
169
+ --kit-syntax-comment: #6a6a6f;
170
+ --kit-syntax-punct: #525252;
171
+ /* Schema V2 (D68): V2 index.css :277-313. Tags, field type families, the desk planes, row and drop states, health and review. */
172
+ --kit-tag-sky-bg: #eaf4fd; --kit-tag-sky-hover: #dcecfb; --kit-tag-sky-fg: #1b5a88; --kit-tag-sky-line: #cfe3f5;
173
+ --kit-tag-lavender-bg: #f0eefc; --kit-tag-lavender-hover: #e5e1fa; --kit-tag-lavender-fg: #4c429c; --kit-tag-lavender-line: #dcd7f5;
174
+ --kit-tag-mint-bg: #e7f6ee; --kit-tag-mint-hover: #d8f0e3; --kit-tag-mint-fg: #1b6644; --kit-tag-mint-line: #cbebd9;
175
+ --kit-tag-sand-bg: #f7f0e6; --kit-tag-sand-hover: #f0e5d4; --kit-tag-sand-fg: #74501c; --kit-tag-sand-line: #eadcc5;
176
+ --kit-tag-butter-bg: #fbf6dc; --kit-tag-butter-hover: #f6eec4; --kit-tag-butter-fg: #69560c; --kit-tag-butter-line: #efe4ad;
177
+ --kit-tag-coral-bg: #fdeeee; --kit-tag-coral-hover: #fbe2e2; --kit-tag-coral-fg: #9a3434; --kit-tag-coral-line: #f6d2d2;
178
+ --kit-tag-slate-bg: #eef0f3; --kit-tag-slate-hover: #e3e6eb; --kit-tag-slate-fg: #3f4856; --kit-tag-slate-line: #d9dde3;
179
+ --kit-tag-teal-bg: #e3f7f6; --kit-tag-teal-hover: #cff0f0; --kit-tag-teal-fg: #006767; --kit-tag-teal-line: #bfe9e9;
180
+ --kit-tag-rose-bg: #feedf4; --kit-tag-rose-hover: #fce0ec; --kit-tag-rose-fg: #7e3c5e; --kit-tag-rose-line: #f8d4e4;
181
+ --kit-type-text-bg: var(--kit-tag-slate-bg); --kit-type-text-fg: var(--kit-tag-slate-fg); --kit-type-text-line: var(--kit-tag-slate-line);
182
+ --kit-type-number-bg: var(--kit-tag-teal-bg); --kit-type-number-fg: var(--kit-tag-teal-fg); --kit-type-number-line: var(--kit-tag-teal-line);
183
+ --kit-type-choice-bg: var(--kit-tag-lavender-bg); --kit-type-choice-fg: var(--kit-tag-lavender-fg); --kit-type-choice-line: var(--kit-tag-lavender-line);
184
+ --kit-type-date-bg: var(--kit-tag-butter-bg); --kit-type-date-fg: var(--kit-tag-butter-fg); --kit-type-date-line: var(--kit-tag-butter-line);
185
+ --kit-type-media-bg: var(--kit-tag-mint-bg); --kit-type-media-fg: var(--kit-tag-mint-fg); --kit-type-media-line: var(--kit-tag-mint-line);
186
+ --kit-type-reference-bg: var(--kit-tag-sky-bg); --kit-type-reference-fg: var(--kit-tag-sky-fg); --kit-type-reference-line: var(--kit-tag-sky-line);
187
+ --kit-type-structure-bg: var(--kit-tag-sand-bg); --kit-type-structure-fg: var(--kit-tag-sand-fg); --kit-type-structure-line: var(--kit-tag-sand-line);
188
+ --kit-type-advanced-bg: var(--kit-tag-rose-bg); --kit-type-advanced-fg: var(--kit-tag-rose-fg); --kit-type-advanced-line: var(--kit-tag-rose-line);
189
+ --kit-type-off-bg: var(--kit-muted); --kit-type-off-fg: var(--kit-fg-4); --kit-type-off-line: var(--kit-line); /* archived, disabled */
190
+ --kit-desk: #f4f4f5; /* the builder's work plane */
191
+ --kit-desk-card: var(--kit-surface); /* the section cards on the desk */
192
+ --kit-row-selected-ring: var(--kit-accent-line);
193
+ --kit-row-selected-edge: var(--kit-accent);
194
+ --kit-row-selected-hover: var(--kit-accent-softer);
195
+ --kit-drop-zone-line: var(--kit-line-strong);
196
+ --kit-drop-target-line: var(--kit-accent-line);
197
+ --kit-health-good: var(--kit-success); --kit-health-tidy: var(--kit-warning); --kit-health-bad: var(--kit-danger);
198
+ --kit-review-safe-bg: var(--kit-success-soft); --kit-review-safe-fg: var(--kit-success-fg);
199
+ --kit-review-check-bg: var(--kit-warning-soft); --kit-review-check-fg: var(--kit-warning-fg);
200
+ --kit-review-breaking-bg: var(--kit-danger-soft); --kit-review-breaking-fg: var(--kit-danger-fg);
201
+ /* Chips, avatars, key caps, fields, tracks, skeletons, brand and presence (V2 :root, same order of roles). */
202
+ --kit-chip-ink-bg: #1c1c1c;
203
+ --kit-chip-ink-fg: #ffffff;
204
+ --kit-avatar-1: #c2410c;
205
+ --kit-avatar-2: #be185d;
206
+ --kit-avatar-3: #7e22ce;
207
+ --kit-avatar-4: #4338ca;
208
+ --kit-avatar-5: #1d4ed8;
209
+ --kit-avatar-6: #047857;
210
+ --kit-avatar-7: #b45309;
211
+ --kit-avatar-8: #0369a1;
212
+ --kit-avatar-9: #a21caf;
213
+ --kit-avatar-10: #6d28d9;
214
+ --kit-avatar-on: #ffffff;
215
+ --kit-kbd: #f7f7f7;
216
+ --kit-kbd-line: #e5e5e5;
217
+ --kit-field-invalid: #dd868b;
218
+ --kit-emphasis-line: #6a6a6f;
219
+ --kit-track: #ededed;
220
+ --kit-track-line: #e2e2e2;
221
+ --kit-bar-fill: #1c1c1c;
222
+ --kit-subtle-2: #fbfbfb;
223
+ --kit-shimmer-highlight: rgb(255 255 255 / 0.4); /* V2: moving sweep over a fill */
224
+ --kit-skeleton: #f1f1f2;
225
+ --kit-skeleton-shine: #f0f0f0;
226
+ --kit-brand: #a878d2;
227
+ --kit-presence-1: #ce3f69;
228
+ --kit-presence-2: #00863d;
229
+ --kit-presence-3: #0073db;
230
+ --kit-presence-4: #765ee8;
231
+ --kit-presence-5: #bb5900;
232
+ --kit-presence-6: #0079bd;
233
+ --kit-presence-7: #c53b9c;
234
+ --kit-presence-8: #5867e7;
235
+ --kit-presence-on: #ffffff;
236
+ --kit-shadow-button-primary: inset 0 1px 0 rgb(255 255 255 / 0.12), 0 1px 2px rgb(0 0 0 / 0.12);
237
+ --kit-shadow-xs: 0 1px 2px rgb(16 16 16 / 0.05);
238
+ --kit-shadow-sm: 0 1px 2px rgb(16 16 16 / 0.06), 0 1px 3px rgb(16 16 16 / 0.05);
239
+ --kit-shadow-md: 0 4px 12px -2px rgb(16 16 16 / 0.08), 0 2px 4px -2px rgb(16 16 16 / 0.05);
240
+ --kit-shadow-lg: 0 12px 32px -8px rgb(16 16 16 / 0.16), 0 4px 8px -4px rgb(16 16 16 / 0.06);
241
+ --kit-shadow-xl: 0 24px 64px -16px rgb(16 16 16 / 0.24), 0 8px 16px -8px rgb(16 16 16 / 0.08);
242
+ --kit-shadow-canvas-frame: 0 1px 2px rgb(0 0 0 / 0.06), 0 12px 40px -12px rgb(0 0 0 / 0.18);
243
+ --kit-shadow-device: 0 24px 60px -20px rgb(0 0 0 / 0.35);
244
+ --kit-shadow-field: inset 0 1px 1px rgb(0 0 0 / 0.04);
245
+ --kit-ring-field: 0 0 0 3px rgb(0 0 0 / 0.045);
246
+ /* V2's type scale (12 / 13 / 14 / 16 / 18 / 20 / 24 / 32), each size with its own line height. */
247
+ --kit-text-2xs: 11px;
248
+ --kit-text-2xs--line-height: 14px;
249
+ --kit-text-xs: 12px;
250
+ --kit-text-xs--line-height: 16px;
251
+ --kit-text-sm: 13px;
252
+ --kit-text-sm--line-height: 18px;
253
+ --kit-text-base: 14px;
254
+ --kit-text-base--line-height: 20px;
255
+ --kit-text-md: 16px;
256
+ --kit-text-md--line-height: 24px;
257
+ --kit-text-lg: 18px;
258
+ --kit-text-lg--line-height: 26px;
259
+ --kit-text-xl: 20px;
260
+ --kit-text-xl--line-height: 28px;
261
+ --kit-text-2xl: 24px;
262
+ --kit-text-2xl--line-height: 32px;
263
+ --kit-text-3xl: 32px;
264
+ --kit-text-3xl--line-height: 40px;
265
+ /* V2 loads static Inter; production ships the variable build of the same face (approved deviation). */
266
+ --kit-font-sans: "Inter Variable", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
267
+ --kit-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
268
+ --kit-radius-xs: 3px;
269
+ --kit-radius-sm: 4px;
270
+ --kit-radius-md: 6px;
271
+ --kit-radius-lg: 8px;
272
+ --kit-radius-xl: 12px;
273
+ --kit-radius-2xl: 16px;
274
+ --kit-ease-out-soft: cubic-bezier(0.22, 1, 0.36, 1);
275
+ --kit-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
276
+ /* V2 roles the scoped kit sheet did not carry yet (demo HEAD c896beb :root). */
277
+ --kit-presence-agent: #6b6585;
278
+ --kit-wordmark: #291018;
279
+ --kit-rating: #d29a1c;
280
+ --kit-avatar-ring: #ffffff;
281
+ --kit-canvas-dot: #dcdcdf;
282
+ --kit-canvas-accent-fg: #7a2fc7;
283
+ --kit-canvas-accent-soft: #f5eefe;
284
+ --kit-brand-violet: #a878d2;
285
+ --kit-brand-coral: #ed6262;
286
+ --kit-brand-rose: #d13a3a;
287
+ --kit-brand-coral-bright: #f24259;
288
+ --kit-brand-coral-light: #ff6767;
289
+ --kit-brand-on: #1f1627;
290
+ --kit-brand-soft: #eee4f6;
291
+ --kit-brand-wash: #fdf4ee;
292
+ --kit-brand-gradient: linear-gradient(90deg, #a878d2 0%, #ed6262 48%, #d13a3a 100%);
293
+ --kit-ai-gradient: linear-gradient(135deg, #a878d2 8%, #ed6262 48%, #d13a3a 100%);
294
+ /* Fixed z-index scale — never z-9999 */
295
+ --z-floating-launcher: 25;
296
+ /* Overlay order (bcms-demo ladder): sheet < dialog < menus/popovers < tooltip < toast.
297
+ Menus sit above dialogs because selects and menus open inside dialogs. */
298
+ --z-sticky: 100;
299
+ --z-drawer: 300;
300
+ --z-modal: 400;
301
+ --z-dropdown: 450;
302
+ --z-tooltip: 460;
303
+ --z-toast: 500;
304
+ }
305
+
306
+ .dark {
307
+ --editor-tray-line: #3A3A3D;
308
+ --ink-bg: #3D3D40;
309
+ --ink-fg: #ECECEF;
310
+ --ink-hover: rgb(255 255 255 / 0.08);
311
+ --ink-active: rgb(255 255 255 / 0.13);
312
+ --ink-line: rgb(255 255 255 / 0.12);
313
+ --ink-danger-fg: #FF8A8A;
314
+ --ink-danger-fg-hover: #FFA3A3;
315
+ --ink-button: #E7E7EA;
316
+ --ink-button-fg: #1B1B1E;
317
+ --ink-button-kbd: rgb(27 27 30 / 0.1);
318
+ --shadow-ink: inset 0 1px 0 rgb(255 255 255 / 0.06), 0 0 0 1px rgb(255 255 255 / 0.12), 0 14px 36px -8px rgb(5 5 9 / 0.55);
319
+ /* demo .dark :435, :510-520 (fg-2, fg-3 and the danger pair repeat the light value, as the demo does) */
320
+ --kit-tray-line: #3a3a3d;
321
+ --kit-ink-bg: #3d3d40;
322
+ --kit-ink-fg: #ececef;
323
+ --kit-ink-fg-2: rgb(255 255 255 / 0.8);
324
+ --kit-ink-fg-3: rgb(255 255 255 / 0.62);
325
+ --kit-ink-hover: rgb(255 255 255 / 0.08);
326
+ --kit-ink-active: rgb(255 255 255 / 0.13);
327
+ --kit-ink-line: rgb(255 255 255 / 0.12);
328
+ --kit-ink-button: #e7e7ea;
329
+ --kit-ink-button-fg: #1b1b1e;
330
+ --kit-ink-danger-fg: #ff8a8a;
331
+ --kit-ink-danger-fg-hover: #ffa3a3;
332
+ /* ─── V2 roles, dark (demo .dark "Graphite v2"). Only the roles whose dark value differs are listed;
333
+ the rest inherit from the light block. Colour functions are written in sRGB (the demo's oklch()
334
+ converted, same colour), as the editor desk tokens are. ─── */
335
+ --kit-app: #1b1b1e;
336
+ --kit-surface: #202023;
337
+ --kit-surface-raised: #252528;
338
+ --kit-subtle: #252528;
339
+ --kit-site-paper: #ffffff;
340
+ --kit-well: #18181a;
341
+ --kit-muted: rgb(255 255 255 / 0.045);
342
+ --kit-hover: #2f2f31;
343
+ --kit-selected: #343437;
344
+ --kit-selected-hover: #39393c;
345
+ --kit-inverse: #e1e1e4;
346
+ --kit-inverse-hover: #f1f1f5;
347
+ --kit-overlay: rgb(9 9 11 / 0.56);
348
+ --kit-fg: #e1e1e4;
349
+ --kit-fg-2: #c4c4c7;
350
+ --kit-fg-3: #b1b1b4;
351
+ --kit-fg-4: #9e9ea1;
352
+ --kit-fg-inverse: #1b1b1e;
353
+ --kit-line: #3a3a3d;
354
+ --kit-line-strong: #454548;
355
+ --kit-line-subtle: #353538;
356
+ --kit-field-border: #747477;
357
+ --kit-focus-ring: #929295;
358
+ --kit-accent: #b88fe6;
359
+ --kit-accent-hover: #c4a2ed;
360
+ --kit-accent-soft: rgb(182 102 255 / 0.1);
361
+ --kit-accent-soft-2: #423254;
362
+ --kit-accent-softer: #27232d;
363
+ --kit-accent-line: #5d4676;
364
+ --kit-accent-fg: #d1b6f3;
365
+ --kit-accent-on: #1e1628;
366
+ --kit-success: #58b575;
367
+ --kit-success-soft: rgb(12 192 35 / 0.1);
368
+ --kit-success-softer: #1e2820;
369
+ --kit-success-line: #2c5f3c;
370
+ --kit-success-fg: #8cd19e;
371
+ --kit-warning: #e8aa4e;
372
+ --kit-warning-soft: rgb(242 152 25 / 0.1);
373
+ --kit-warning-softer: #2b241b;
374
+ --kit-warning-line: #594329;
375
+ --kit-warning-fg: #f5c076;
376
+ --kit-warning-on: #23190a;
377
+ --kit-danger: #c74a49;
378
+ --kit-danger-soft: rgb(240 63 35 / 0.13);
379
+ --kit-danger-softer: #2e2121;
380
+ --kit-danger-line: #793f3e;
381
+ --kit-danger-fg: #f8a4a1;
382
+ --kit-info: #64a1ee;
383
+ --kit-info-soft: rgb(24 132 252 / 0.12);
384
+ --kit-info-softer: #1f262f;
385
+ --kit-info-line: #33547e;
386
+ --kit-info-fg: #92c1fd;
387
+ --kit-canvas: #1b1b1e;
388
+ --kit-scrollbar: #47474a;
389
+ --kit-code: #252528;
390
+ --kit-control-bg: rgb(255 255 255 / 0.06);
391
+ --kit-field-bg: rgb(255 255 255 / 0.025);
392
+ --kit-field-border-hover: #8c8c8f;
393
+ --kit-field-border-focus: #aaaaae;
394
+ --kit-switch-off: #747477;
395
+ --kit-control-thumb: #f1f1f4;
396
+ --kit-swatch-ring: rgb(255 255 255 / 0.4);
397
+ --kit-on-inverse-2: rgb(27 27 30 / 0.7);
398
+ --kit-selection: #503d66;
399
+ --kit-canvas-frame-ring: rgb(255 255 255 / 0.1);
400
+ --kit-syntax-keyword: #cdaef2;
401
+ --kit-syntax-string: #8cd19e;
402
+ --kit-syntax-number: #f4b581;
403
+ --kit-syntax-property: #87c6f2;
404
+ --kit-syntax-comment: #9e9ea1;
405
+ --kit-syntax-punct: #b1b1b4;
406
+ /* Schema V2 (D68): V2 index.css :550-562. The type, row, drop, health and review aliases follow from :root. */
407
+ --kit-tag-sky-bg: #1b2b36; --kit-tag-sky-hover: #1f3340; --kit-tag-sky-fg: #8dccf9; --kit-tag-sky-line: #264052;
408
+ --kit-tag-lavender-bg: #272737; --kit-tag-lavender-hover: #2e2e42; --kit-tag-lavender-fg: #bdbcfd; --kit-tag-lavender-line: #3a3a54;
409
+ --kit-tag-mint-bg: #1b2e24; --kit-tag-mint-hover: #20362a; --kit-tag-mint-fg: #8fd7b0; --kit-tag-mint-line: #274435;
410
+ --kit-tag-sand-bg: #322618; --kit-tag-sand-hover: #3c2d1c; --kit-tag-sand-fg: #eaba83; --kit-tag-sand-line: #4c3922;
411
+ --kit-tag-butter-bg: #2d2917; --kit-tag-butter-hover: #36301b; --kit-tag-butter-fg: #d6c480; --kit-tag-butter-line: #443d21;
412
+ --kit-tag-coral-bg: #362322; --kit-tag-coral-hover: #402928; --kit-tag-coral-fg: #f9adaa; --kit-tag-coral-line: #523432;
413
+ --kit-tag-slate-bg: #242930; --kit-tag-slate-hover: #2b3138; --kit-tag-slate-fg: #b3c6df; --kit-tag-slate-line: #363e48;
414
+ --kit-tag-teal-bg: #162e2d; --kit-tag-teal-hover: #193636; --kit-tag-teal-fg: #78d7d6; --kit-tag-teal-line: #1c4544;
415
+ --kit-tag-rose-bg: #34232b; --kit-tag-rose-hover: #3e2933; --kit-tag-rose-fg: #f1accc; --kit-tag-rose-line: #4f3340;
416
+ --kit-desk: var(--kit-app);
417
+ --kit-desk-card: var(--kit-surface-raised);
418
+ --kit-chip-ink-bg: #343437;
419
+ --kit-chip-ink-fg: #e1e1e4;
420
+ --kit-avatar-1: #e2957c;
421
+ --kit-avatar-2: #e090a3;
422
+ --kit-avatar-3: #b69ce0;
423
+ --kit-avatar-4: #9ba5ea;
424
+ --kit-avatar-5: #8baaeb;
425
+ --kit-avatar-6: #68bf9c;
426
+ --kit-avatar-7: #de9872;
427
+ --kit-avatar-8: #70b2e5;
428
+ --kit-avatar-9: #ca95cf;
429
+ --kit-avatar-10: #ac9fe5;
430
+ --kit-avatar-on: #1b1b1e;
431
+ --kit-kbd: #2a2a2c;
432
+ --kit-kbd-line: #454548;
433
+ --kit-field-invalid: #d46565;
434
+ --kit-emphasis-line: #929295;
435
+ --kit-track: #2f2f31;
436
+ --kit-track-line: #454548;
437
+ --kit-bar-fill: #b1b1b4;
438
+ --kit-subtle-2: #222225;
439
+ --kit-shimmer-highlight: oklch(1 0 0 / 0.08);
440
+ --kit-skeleton: #2a2a2c;
441
+ --kit-skeleton-shine: #343437;
442
+ --kit-brand: #b792db;
443
+ --kit-presence-1: #f290a3;
444
+ --kit-presence-2: #6dc88f;
445
+ --kit-presence-3: #7ab5fc;
446
+ --kit-presence-4: #aba5fa;
447
+ --kit-presence-5: #e79f5c;
448
+ --kit-presence-6: #60bbf4;
449
+ --kit-presence-7: #e592c6;
450
+ --kit-presence-8: #99abfd;
451
+ --kit-presence-on: #1b1b1e;
452
+ --kit-shadow-button-primary: none;
453
+ --kit-shadow-canvas-frame: 0 1px 2px oklch(0.12 0.01 286 / 0.4), 0 12px 40px -12px oklch(0.12 0.01 286 / 0.55);
454
+ --kit-shadow-device: 0 24px 60px -20px oklch(0.12 0.01 286 / 0.6), 0 0 0 1px oklch(1 0 0 / 0.08);
455
+ --kit-shadow-field: none;
456
+ --kit-ring-field: 0 0 0 3px oklch(1 0 0 / 0.06);
457
+ --kit-shadow-xs: 0 1px 2px oklch(0.12 0.01 286 / 0.3);
458
+ --kit-shadow-sm: 0 1px 2px oklch(0.12 0.01 286 / 0.32), 0 1px 3px oklch(0.12 0.01 286 / 0.2);
459
+ --kit-shadow-md: 0 4px 12px -2px oklch(0.12 0.01 286 / 0.38), 0 2px 4px -2px oklch(0.12 0.01 286 / 0.24);
460
+ --kit-shadow-lg: 0 12px 32px -8px oklch(0.12 0.01 286 / 0.48), 0 4px 8px -4px oklch(0.12 0.01 286 / 0.28), 0 0 0 1px oklch(1 0 0 / 0.04);
461
+ --kit-shadow-xl: 0 24px 64px -16px oklch(0.12 0.01 286 / 0.58), 0 8px 16px -8px oklch(0.12 0.01 286 / 0.32), 0 0 0 1px oklch(1 0 0 / 0.05);
462
+ /* V2 roles the scoped kit sheet did not carry yet (demo HEAD c896beb .dark). */
463
+ --kit-checker-a: #d7d7d9;
464
+ --kit-checker-b: #cacacc;
465
+ /* V2 Content roles (S1a), dark. V2's literals; the roles not listed keep their light value. */
466
+ --kit-rail: #202023; /* = surface: no dark channel */
467
+ --kit-control-checked: #e1e1e4; /* = fg; the check mark uses the inverse fg */
468
+ --kit-segment-thumb: #3b3b3e; /* the active pill lifts off the track */
469
+ --kit-progress-fill: #b1b1b4; /* = bar fill: no near-white glare */
470
+ --kit-paper: #e3e1de; /* dimmed sheet: no glare slab */
471
+ --kit-paper-ink: #1d1a17;
472
+ --kit-paper-filter: brightness(0.9);
473
+ --kit-site-paper-line: oklch(1 0 0 / 0.12);
474
+ --kit-media-well: #18181a; /* = well, not a black hole */
475
+ --kit-disabled-bg: #2a2a2d;
476
+ --kit-disabled-fg: #9e9ea1;
477
+ --kit-shadow-sheet-r: -12px 0 32px -16px oklch(0.12 0.01 286 / 0.5);
478
+ --kit-floating-line: #454548; /* V2 :414 */
479
+ --kit-code-fg: #e1e1e4; /* V2 :532 */
480
+ --kit-shadow-sheet-b: 0 -16px 40px -12px oklch(0.12 0.01 286 / 0.5); /* V2 :572 */
481
+ --kit-ring-focus: 0 0 0 2px var(--kit-surface), 0 0 0 4px var(--kit-focus-ring); /* V2 :575 */
482
+ --kit-tray-gradient: linear-gradient(180deg, oklch(0.32 0.005 286 / 0) 16.105%, oklch(0.32 0.005 286 / 0.6) 123.57%); /* V2 :577 */
483
+ --kit-preview-contrast: #f6f1ea; /* V2 :426-428 */
484
+ --kit-preview-contrast-on: #1e1b18;
485
+ --kit-preview-outline: #929295;
486
+ --kit-presence-agent: #b2adc6;
487
+ --kit-wordmark: #e1e1e4;
488
+ --kit-avatar-ring: #202023;
489
+ --kit-canvas-dot: #454548;
490
+ --kit-brand-soft: #362a42;
491
+ --kit-brand-wash: #2f231e;
492
+ --kit-brand-gradient: linear-gradient(90deg, #b792db 0%, #f47a77 48%, #e45d58 100%);
493
+ --kit-ai-gradient: linear-gradient(135deg, #b792db 8%, #f47a77 48%, #e45d58 100%);
494
+ }
495
+
496
+ @layer base {
497
+
498
+ :is(main, h1, h2, h3, [tabindex="-1"]) {
499
+ scroll-margin-top: 5rem;
500
+ }
501
+
502
+ /* Kit islands ([data-kit-scope], moved here from src/kit/kit.css). The marker carries no token: every
503
+ --kit-* value is global above. It keeps V2's base element defaults where this sheet's legacy base
504
+ layer still differs, so a kit island inside a legacy 13px container renders as the demo does: V2 body
505
+ text, --kit-line borders, currentcolor outline, thin scrollbars, unsized headings (they inherit), a
506
+ default label cursor, the kit mono on code, and .sr-only left in the flow. Base layer, so every
507
+ utility still wins. These go when the legacy base rules they correct go. */
508
+ [data-kit-scope] {
509
+ font-family: var(--kit-font-sans);
510
+ font-size: 14px;
511
+ line-height: 20px;
512
+ font-feature-settings: "cv11", "ss01", "ss03";
513
+ -webkit-font-smoothing: antialiased;
514
+ -moz-osx-font-smoothing: grayscale;
515
+ text-rendering: optimizeLegibility;
516
+ }
517
+ [data-kit-scope],
518
+ [data-kit-scope] * {
519
+ border-color: var(--kit-line);
520
+ scrollbar-width: thin;
521
+ scrollbar-color: var(--kit-scrollbar) transparent;
522
+ }
523
+ [data-kit-scope] :is(h1, h2, h3, h4, h5, h6) {
524
+ --tw-leading: initial;
525
+ --tw-tracking: initial;
526
+ font-size: inherit;
527
+ font-weight: inherit;
528
+ line-height: inherit;
529
+ letter-spacing: inherit;
530
+ color: inherit;
531
+ }
532
+ [data-kit-scope] label {
533
+ cursor: default;
534
+ }
535
+ [data-kit-scope] :is(code, kbd, samp, pre) {
536
+ font-family: var(--kit-font-mono);
537
+ }
538
+ [data-kit-scope] .sr-only {
539
+ top: auto;
540
+ left: auto;
541
+ }
542
+ }
package/dist/types.js ADDED
File without changes
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import * as React from "react";
14
14
  /** Class string for footers that can't take the component (e.g. a shared footer primitive). */
15
- export declare const actionTrayClass: string;
15
+ export declare const actionTrayClass = "shrink-0 border-t border-kit-editor-tray-line bg-tray";
16
16
  export declare function ActionTray({ meta, children, className, as: Tag, clearToasts, ...props }: Omit<React.HTMLAttributes<HTMLElement>, "children"> & {
17
17
  /** Left slot, usually <TrayMeta>. */
18
18
  meta?: React.ReactNode;
@@ -1,12 +1,11 @@
1
1
  import { cn } from "../lib/cn.js";
2
- import { TRAY } from "./surfaces.js";
3
2
  import { HintTooltip, IconButton } from "./button.js";
4
3
  import { Menu, MenuContent, MenuTrigger } from "./overlay.js";
5
4
  import { Avatar, AvatarStack } from "./display.js";
6
5
  import * as React from "react";
7
- import { IconDots } from "@tabler/icons-react";
8
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
- //#region src/kit/ui/action-tray.tsx
7
+ import { IconDots } from "@tabler/icons-react";
8
+ //#region src/ui/action-tray.tsx
10
9
  /**
11
10
  * ACTION TRAY: Figma 61014:66265 "Bottom". The soft, slightly raised bar at the bottom of editors, inspectors,
12
11
  * sheets and dialogs: surface → light grey gradient, 1px top hairline, 12px side padding, 6px vertical, 44px tall +
@@ -48,7 +47,7 @@ function useToastClearance(ref, on) {
48
47
  }, [ref, on]);
49
48
  }
50
49
  /** Class string for footers that can't take the component (e.g. a shared footer primitive). */
51
- var actionTrayClass = cn("shrink-0 border-t", TRAY);
50
+ var actionTrayClass = "shrink-0 border-t border-kit-editor-tray-line bg-tray";
52
51
  function ActionTray({ meta, children, className, as: Tag = "div", clearToasts = false, ...props }) {
53
52
  const ref = React.useRef(null);
54
53
  useToastClearance(ref, clearToasts);
@@ -117,21 +116,23 @@ function TrayMeta({ name, avatarName, src, people, at, verb = "Edited", note, on
117
116
  className: "hidden min-w-0 truncate text-kit-sm text-kit-fg-3 @[34rem]/tray:inline",
118
117
  children: when
119
118
  })] });
119
+ const tip = at ? `${name} · ${verb} ${fullStamp(at)}${onClick ? ` · ${actionHint}` : ""}` : onClick ? `${name} · ${when} · ${actionHint}` : `${name} · ${when}`;
120
+ const body = onClick ? /* @__PURE__ */ jsx("button", {
121
+ type: "button",
122
+ onClick,
123
+ "aria-label": `${name}, ${when}. ${actionHint}`,
124
+ className: "-mx-1 flex min-w-0 items-center gap-2 rounded-kit-md px-1 py-0.5 transition-colors hover:bg-kit-hover",
125
+ children: inner
126
+ }) : /* @__PURE__ */ jsxs("span", {
127
+ className: "flex min-w-0 items-center gap-2",
128
+ children: [inner, /* @__PURE__ */ jsx("span", {
129
+ className: "sr-only @[34rem]/tray:hidden",
130
+ children: `${name}, ${when}`
131
+ })]
132
+ });
120
133
  return /* @__PURE__ */ jsx(HintTooltip, {
121
- content: at ? `${name} · ${verb} ${fullStamp(at)}${onClick ? ` · ${actionHint}` : ""}` : onClick ? `${name} · ${when} · ${actionHint}` : `${name} · ${when}`,
122
- children: onClick ? /* @__PURE__ */ jsx("button", {
123
- type: "button",
124
- onClick,
125
- "aria-label": `${name}, ${when}. ${actionHint}`,
126
- className: "-mx-1 flex min-w-0 items-center gap-2 rounded-kit-md px-1 py-0.5 transition-colors hover:bg-kit-hover",
127
- children: inner
128
- }) : /* @__PURE__ */ jsxs("span", {
129
- className: "flex min-w-0 items-center gap-2",
130
- children: [inner, /* @__PURE__ */ jsx("span", {
131
- className: "sr-only @[34rem]/tray:hidden",
132
- children: `${name}, ${when}`
133
- })]
134
- })
134
+ content: tip,
135
+ children: body
135
136
  });
136
137
  }
137
138
  /** The tray's "⋯" (32×32 ghost, Figma "Button - Modal actions") opening a menu above the bar. Children are menu items. */
@@ -143,7 +144,7 @@ function TrayMore({ label = "More options", children, menuClassName }) {
143
144
  }) }), /* @__PURE__ */ jsx(MenuContent, {
144
145
  side: "top",
145
146
  align: "end",
146
- className: cn("w-60 font-kit-sans", menuClassName),
147
+ className: cn("w-60", menuClassName),
147
148
  children
148
149
  })] });
149
150
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-tray.js","names":[],"sources":["../../src/ui/action-tray.tsx"],"sourcesContent":["/**\n * ACTION TRAY: Figma 61014:66265 \"Bottom\". The soft, slightly raised bar at the bottom of editors, inspectors,\n * sheets and dialogs: surface → light grey gradient, 1px top hairline, 12px side padding, 6px vertical, 44px tall +\n * hairline (a 32px button fits exactly). No blur (D21).\n *\n * <ActionTray meta={<TrayMeta name=\"Priya Nair\" at={iso} onClick={openHistory} />}>\n * <Button variant=\"primary\" leftIcon={<IconUpload />}>Publish</Button>\n * <TrayMore>…menu items…</TrayMore>\n * </ActionTray>\n *\n * Use for sticky bottom ACTION bars only, never on cards or content areas.\n */\nimport * as React from \"react\";\nimport { IconDots } from \"@tabler/icons-react\";\nimport { cn } from \"../lib/cn\";\nimport { HintTooltip, IconButton } from \"./button\";\nimport { Avatar, AvatarStack } from \"./display\";\nimport { Menu, MenuContent, MenuTrigger } from \"./overlay\";\n\n/* ── Toasts clear the tray (S1: a toast covered the schema draft bar's Apply) ─────────────────────────────────────────\n A tray with `clearToasts` lifts the app's bottom toasts above itself while it is mounted: it writes\n `--toast-offset-bottom` on the root (the host's Toaster reads it as its bottom offset), the highest tray winning. */\nconst clearing = new Set<HTMLElement>();\nfunction syncToastOffset() {\n if (typeof document === \"undefined\") return;\n let lift = 0;\n for (const el of clearing) {\n const r = el.getBoundingClientRect();\n if (r.height) lift = Math.max(lift, window.innerHeight - r.top + 12);\n }\n if (lift > 0) document.documentElement.style.setProperty(\"--toast-offset-bottom\", `${Math.round(lift)}px`);\n else document.documentElement.style.removeProperty(\"--toast-offset-bottom\");\n}\nfunction useToastClearance(ref: React.RefObject<HTMLElement | null>, on: boolean) {\n React.useLayoutEffect(() => {\n const el = ref.current;\n if (!on || !el) return;\n clearing.add(el);\n syncToastOffset();\n const ro = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(syncToastOffset) : null;\n ro?.observe(el);\n window.addEventListener(\"resize\", syncToastOffset);\n return () => {\n clearing.delete(el);\n ro?.disconnect();\n window.removeEventListener(\"resize\", syncToastOffset);\n syncToastOffset();\n };\n }, [ref, on]);\n}\n\n/** Class string for footers that can't take the component (e.g. a shared footer primitive). */\nexport const actionTrayClass = \"shrink-0 border-t border-kit-editor-tray-line bg-tray\";\n\nexport function ActionTray({\n meta,\n children,\n className,\n as: Tag = \"div\",\n clearToasts = false,\n ...props\n}: Omit<React.HTMLAttributes<HTMLElement>, \"children\"> & {\n /** Left slot, usually <TrayMeta>. */\n meta?: React.ReactNode;\n /** Right slot: actions (primary last-but-one, ⋯ last). */\n children?: React.ReactNode;\n as?: \"div\" | \"footer\";\n /** a page-level bar at the bottom of the window: bottom toasts sit above it, never over its buttons */\n clearToasts?: boolean;\n}) {\n const ref = React.useRef<HTMLElement>(null);\n useToastClearance(ref, clearToasts);\n return (\n <Tag\n ref={ref as React.Ref<HTMLDivElement>}\n data-action-tray=\"\"\n className={cn(actionTrayClass, \"@container/tray flex min-h-[45px] items-center justify-between gap-2 px-3 py-1.5\", className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">{meta}</div>\n {children ? <div className=\"flex shrink-0 items-center gap-[5px]\">{children}</div> : null}\n </Tag>\n );\n}\n\n/** V2 relTime: \"just now\", \"5m ago\", \"3h ago\", \"2d ago\", \"1w ago\", then a date. */\nexport function relTime(at: string | number | Date, now = Date.now()) {\n const s = Math.round((now - new Date(at).getTime()) / 1000);\n if (s < 45) return \"just now\";\n const m = Math.round(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.round(m / 60);\n if (h < 24) return `${h}h ago`;\n const days = Math.round(h / 24);\n if (days < 7) return `${days}d ago`;\n const w = Math.round(days / 7);\n if (w < 5) return `${w}w ago`;\n return new Date(at).toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" });\n}\n\nconst fullStamp = (at: string | number | Date) =>\n new Date(at).toLocaleString(\"en-US\", { weekday: \"short\", month: \"short\", day: \"numeric\", year: \"numeric\", hour: \"numeric\", minute: \"2-digit\" });\n\n/**\n * Left meta: avatar 20 · name 13/500 · \"Edited 3h ago\" 13 muted (Figma). The tooltip carries the full timestamp;\n * when `onClick` is set the whole line is a button (opens History).\n */\nexport function TrayMeta({\n name,\n avatarName,\n src,\n people,\n at,\n verb = \"Edited\",\n note,\n onClick,\n actionHint = \"Open history\",\n}: {\n name: string;\n /** Full name for the avatar when `name` is shortened (\"You\", first names). */\n avatarName?: string;\n src?: string;\n /** Several editors → avatar stack (first is the last editor). */\n people?: { name: string; src?: string }[];\n /** When it was edited; omit for \"just now\" states you phrase yourself via `note`. */\n at?: string | number | Date;\n verb?: string;\n /** Overrides the relative-time text, e.g. \"Edited just now\". */\n note?: string;\n onClick?: () => void;\n actionHint?: string;\n}) {\n const when = note ?? (at ? `${verb} ${relTime(at).replace(\"just now\", \"a moment ago\")}` : verb);\n const inner = (\n <>\n <span className=\"flex shrink-0 items-center gap-1\">\n {people && people.length > 1 ? (\n <AvatarStack people={people} size={20} max={3} />\n ) : (\n <Avatar name={avatarName ?? name} src={src} size={20} decorative />\n )}\n {/* narrow trays (the grid drawer): just the avatar, the words move into the tooltip; never a clipped \"Edit…\" */}\n <span className=\"hidden whitespace-nowrap text-kit-sm font-medium text-kit-fg @[34rem]/tray:inline\">{name}</span>\n </span>\n <span className=\"hidden min-w-0 truncate text-kit-sm text-kit-fg-3 @[34rem]/tray:inline\">{when}</span>\n </>\n );\n const tip = at\n ? `${name} · ${verb} ${fullStamp(at)}${onClick ? ` · ${actionHint}` : \"\"}`\n : onClick\n ? `${name} · ${when} · ${actionHint}`\n : `${name} · ${when}`;\n const body = onClick ? (\n <button\n type=\"button\"\n onClick={onClick}\n aria-label={`${name}, ${when}. ${actionHint}`}\n className=\"-mx-1 flex min-w-0 items-center gap-2 rounded-kit-md px-1 py-0.5 transition-colors hover:bg-kit-hover\"\n >\n {inner}\n </button>\n ) : (\n <span className=\"flex min-w-0 items-center gap-2\">\n {inner}\n {/* the words hide in narrow trays; screen readers always get them */}\n <span className=\"sr-only @[34rem]/tray:hidden\">{`${name}, ${when}`}</span>\n </span>\n );\n return <HintTooltip content={tip}>{body}</HintTooltip>;\n}\n\n/** The tray's \"⋯\" (32×32 ghost, Figma \"Button - Modal actions\") opening a menu above the bar. Children are menu items. */\nexport function TrayMore({\n label = \"More options\",\n children,\n menuClassName,\n}: {\n label?: string;\n children: React.ReactNode;\n menuClassName?: string;\n}) {\n return (\n // the kit Menu: §12 dismiss guards, the modal-layer marker (an open tooltip closes) and V2's non-looping arrows\n <Menu>\n <MenuTrigger\n render={\n <IconButton label={label} size=\"md\">\n <IconDots aria-hidden />\n </IconButton>\n }\n />\n <MenuContent side=\"top\" align=\"end\" className={cn(\"w-60\", menuClassName)}>\n {children}\n </MenuContent>\n </Menu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBA,IAAM,2BAAW,IAAI,IAAiB;AACtC,SAAS,kBAAkB;CACzB,IAAI,OAAO,aAAa,aAAa;CACrC,IAAI,OAAO;CACX,KAAK,MAAM,MAAM,UAAU;EACzB,MAAM,IAAI,GAAG,sBAAsB;EACnC,IAAI,EAAE,QAAQ,OAAO,KAAK,IAAI,MAAM,OAAO,cAAc,EAAE,MAAM,EAAE;CACrE;CACA,IAAI,OAAO,GAAG,SAAS,gBAAgB,MAAM,YAAY,yBAAyB,GAAG,KAAK,MAAM,IAAI,EAAE,GAAG;MACpG,SAAS,gBAAgB,MAAM,eAAe,uBAAuB;AAC5E;AACA,SAAS,kBAAkB,KAA0C,IAAa;CAChF,MAAM,sBAAsB;EAC1B,MAAM,KAAK,IAAI;EACf,IAAI,CAAC,MAAM,CAAC,IAAI;EAChB,SAAS,IAAI,EAAE;EACf,gBAAgB;EAChB,MAAM,KAAK,OAAO,mBAAmB,cAAc,IAAI,eAAe,eAAe,IAAI;EACzF,IAAI,QAAQ,EAAE;EACd,OAAO,iBAAiB,UAAU,eAAe;EACjD,aAAa;GACX,SAAS,OAAO,EAAE;GAClB,IAAI,WAAW;GACf,OAAO,oBAAoB,UAAU,eAAe;GACpD,gBAAgB;EAClB;CACF,GAAG,CAAC,KAAK,EAAE,CAAC;AACd;;AAGA,IAAa,kBAAkB;AAE/B,SAAgB,WAAW,EACzB,MACA,UACA,WACA,IAAI,MAAM,OACV,cAAc,OACd,GAAG,SASF;CACD,MAAM,MAAM,MAAM,OAAoB,IAAI;CAC1C,kBAAkB,KAAK,WAAW;CAClC,OACE,qBAAC,KAAD;EACO;EACL,oBAAiB;EACjB,WAAW,GAAG,iBAAiB,oFAAoF,SAAS;EAC5H,GAAI;EAJN,UAAA,CAME,oBAAC,OAAD;GAAK,WAAU;GAA0C,UAAA;EAAU,CAAA,GAClE,WAAW,oBAAC,OAAD;GAAK,WAAU;GAAwC;EAAc,CAAA,IAAI,IAClF;;AAET;;AAGA,SAAgB,QAAQ,IAA4B,MAAM,KAAK,IAAI,GAAG;CACpE,MAAM,IAAI,KAAK,OAAO,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,QAAQ,KAAK,GAAI;CAC1D,IAAI,IAAI,IAAI,OAAO;CACnB,MAAM,IAAI,KAAK,MAAM,IAAI,EAAE;CAC3B,IAAI,IAAI,IAAI,OAAO,GAAG,EAAE;CACxB,MAAM,IAAI,KAAK,MAAM,IAAI,EAAE;CAC3B,IAAI,IAAI,IAAI,OAAO,GAAG,EAAE;CACxB,MAAM,OAAO,KAAK,MAAM,IAAI,EAAE;CAC9B,IAAI,OAAO,GAAG,OAAO,GAAG,KAAK;CAC7B,MAAM,IAAI,KAAK,MAAM,OAAO,CAAC;CAC7B,IAAI,IAAI,GAAG,OAAO,GAAG,EAAE;CACvB,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,mBAAmB,SAAS;EAAE,OAAO;EAAS,KAAK;EAAW,MAAM;CAAU,CAAC;AACrG;AAEA,IAAM,aAAa,OACjB,IAAI,KAAK,EAAE,CAAC,CAAC,eAAe,SAAS;CAAE,SAAS;CAAS,OAAO;CAAS,KAAK;CAAW,MAAM;CAAW,MAAM;CAAW,QAAQ;AAAU,CAAC;;;;;AAMhJ,SAAgB,SAAS,EACvB,MACA,YACA,KACA,QACA,IACA,OAAO,UACP,MACA,SACA,aAAa,kBAeZ;CACD,MAAM,OAAO,SAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC,CAAC,QAAQ,YAAY,cAAc,MAAM;CAC1F,MAAM,QACJ,qBAAA,UAAA,EAAA,UAAA,CACE,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CACG,UAAU,OAAO,SAAS,IACzB,oBAAC,aAAD;GAAqB;GAAQ,MAAM;GAAI,KAAK;EAAI,CAAA,IAEhD,oBAAC,QAAD;GAAQ,MAAM,cAAc;GAAW;GAAK,MAAM;GAAI,YAAA;EAAY,CAAA,GAGpE,oBAAC,QAAD;GAAM,WAAU;GAAqF,UAAA;EAAW,CAAA,CAC5G;CACN,CAAA,GAAA,oBAAC,QAAD;EAAM,WAAU;EAA0E,UAAA;CAAW,CAAA,CACrG,EAAA,CAAA;CAEJ,MAAM,MAAM,KACR,GAAG,KAAK,KAAK,KAAK,GAAG,UAAU,EAAE,IAAI,UAAU,MAAM,eAAe,OACpE,UACE,GAAG,KAAK,KAAK,KAAK,KAAK,eACvB,GAAG,KAAK,KAAK;CACnB,MAAM,OAAO,UACX,oBAAC,UAAD;EACE,MAAK;EACI;EACT,cAAY,GAAG,KAAK,IAAI,KAAK,IAAI;EACjC,WAAU;EAET,UAAA;CACK,CAAA,IAER,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CACG,OAED,oBAAC,QAAD;GAAM,WAAU;GAAgC,UAAA,GAAG,KAAK,IAAI;EAAa,CAAA,CACrE;;CAER,OAAO,oBAAC,aAAD;EAAa,SAAS;EAAM,UAAA;CAAkB,CAAA;AACvD;;AAGA,SAAgB,SAAS,EACvB,QAAQ,gBACR,UACA,iBAKC;CACD,OAEE,qBAAC,MAAD,EAAA,UAAA,CACE,oBAAC,aAAD,EACE,QACE,oBAAC,YAAD;EAAmB;EAAO,MAAK;EAC7B,UAAA,oBAAC,UAAD,EAAU,eAAA,KAAa,CAAA;CACb,CAAA,EAEf,CAAA,GACD,oBAAC,aAAD;EAAa,MAAK;EAAM,OAAM;EAAM,WAAW,GAAG,QAAQ,aAAa;EACpE;CACU,CAAA,CACT,EAAA,CAAA;AAEV"}