@bettercms-ai/kit 0.1.1 → 2.0.0-next.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 (1100) hide show
  1. package/README.md +22 -16
  2. package/dist/_virtual/_rolldown/runtime.js +13 -0
  3. package/dist/adapters/dock-values.d.ts +28 -0
  4. package/dist/adapters/dock-values.js +41 -0
  5. package/dist/adapters/dock-values.js.map +1 -0
  6. package/dist/adapters/icons.d.ts +15 -0
  7. package/dist/adapters/icons.js +27 -0
  8. package/dist/adapters/icons.js.map +1 -0
  9. package/dist/adapters/lossy.d.ts +326 -0
  10. package/dist/adapters/lossy.js +414 -0
  11. package/dist/adapters/lossy.js.map +1 -0
  12. package/dist/adapters/prod-types.d.ts +546 -0
  13. package/dist/adapters/prod-types.js +714 -0
  14. package/dist/adapters/prod-types.js.map +1 -0
  15. package/dist/adapters/schema.d.ts +154 -0
  16. package/dist/adapters/schema.js +3020 -0
  17. package/dist/adapters/schema.js.map +1 -0
  18. package/dist/adapters/values.d.ts +221 -0
  19. package/dist/adapters/values.js +623 -0
  20. package/dist/adapters/values.js.map +1 -0
  21. package/dist/brand/logo.d.ts +17 -0
  22. package/dist/brand/logo.js +96 -0
  23. package/dist/brand/logo.js.map +1 -0
  24. package/dist/context.d.ts +359 -0
  25. package/dist/context.js +217 -0
  26. package/dist/context.js.map +1 -0
  27. package/dist/controls/button.d.ts +72 -0
  28. package/dist/controls/button.js +578 -0
  29. package/dist/controls/button.js.map +1 -0
  30. package/dist/controls/c1.d.ts +11 -0
  31. package/dist/controls/c1.js +24 -0
  32. package/dist/controls/c1.js.map +1 -0
  33. package/dist/controls/c2.d.ts +10 -0
  34. package/dist/controls/c2.js +19 -0
  35. package/dist/controls/c2.js.map +1 -0
  36. package/dist/controls/choice.d.ts +44 -0
  37. package/dist/controls/choice.js +463 -0
  38. package/dist/controls/choice.js.map +1 -0
  39. package/dist/controls/code-register.d.ts +1 -0
  40. package/dist/controls/code-register.js +8 -0
  41. package/dist/controls/code-register.js.map +1 -0
  42. package/dist/controls/code.d.ts +42 -0
  43. package/dist/controls/code.js +397 -0
  44. package/dist/controls/code.js.map +1 -0
  45. package/dist/controls/color.d.ts +5 -0
  46. package/dist/controls/color.js +130 -0
  47. package/dist/controls/color.js.map +1 -0
  48. package/dist/controls/component-services.d.ts +156 -0
  49. package/dist/controls/component-services.js +7 -0
  50. package/dist/controls/component-services.js.map +1 -0
  51. package/dist/controls/date-register.d.ts +1 -0
  52. package/dist/controls/date-register.js +9 -0
  53. package/dist/controls/date-register.js.map +1 -0
  54. package/dist/controls/date-zone.d.ts +104 -0
  55. package/dist/controls/date-zone.js +278 -0
  56. package/dist/controls/date-zone.js.map +1 -0
  57. package/dist/controls/date.d.ts +7 -0
  58. package/dist/controls/date.js +466 -0
  59. package/dist/controls/date.js.map +1 -0
  60. package/dist/controls/form-picker-register.d.ts +7 -0
  61. package/dist/controls/form-picker-register.js +15 -0
  62. package/dist/controls/form-picker-register.js.map +1 -0
  63. package/dist/controls/form-picker.d.ts +43 -0
  64. package/dist/controls/form-picker.js +85 -0
  65. package/dist/controls/form-picker.js.map +1 -0
  66. package/dist/controls/icon-register.d.ts +1 -0
  67. package/dist/controls/icon-register.js +8 -0
  68. package/dist/controls/icon-register.js.map +1 -0
  69. package/dist/controls/icon.d.ts +40 -0
  70. package/dist/controls/icon.js +360 -0
  71. package/dist/controls/icon.js.map +1 -0
  72. package/dist/controls/index.d.ts +5 -0
  73. package/dist/controls/index.js +38 -0
  74. package/dist/controls/index.js.map +1 -0
  75. package/dist/controls/json-register.d.ts +1 -0
  76. package/dist/controls/json-register.js +8 -0
  77. package/dist/controls/json-register.js.map +1 -0
  78. package/dist/controls/json.d.ts +2 -0
  79. package/dist/controls/json.js +82 -0
  80. package/dist/controls/json.js.map +1 -0
  81. package/dist/controls/link.d.ts +260 -0
  82. package/dist/controls/link.js +1186 -0
  83. package/dist/controls/link.js.map +1 -0
  84. package/dist/controls/location-register.d.ts +1 -0
  85. package/dist/controls/location-register.js +8 -0
  86. package/dist/controls/location-register.js.map +1 -0
  87. package/dist/controls/location.d.ts +16 -0
  88. package/dist/controls/location.js +221 -0
  89. package/dist/controls/location.js.map +1 -0
  90. package/dist/controls/media-register.d.ts +1 -0
  91. package/dist/controls/media-register.js +12 -0
  92. package/dist/controls/media-register.js.map +1 -0
  93. package/dist/controls/media-services.d.ts +46 -0
  94. package/dist/controls/media-services.js +0 -0
  95. package/dist/controls/media.d.ts +104 -0
  96. package/dist/controls/media.js +1396 -0
  97. package/dist/controls/media.js.map +1 -0
  98. package/dist/controls/number.d.ts +22 -0
  99. package/dist/controls/number.js +196 -0
  100. package/dist/controls/number.js.map +1 -0
  101. package/dist/controls/reference-register.d.ts +1 -0
  102. package/dist/controls/reference-register.js +10 -0
  103. package/dist/controls/reference-register.js.map +1 -0
  104. package/dist/controls/reference-services.d.ts +58 -0
  105. package/dist/controls/reference-services.js +0 -0
  106. package/dist/controls/reference.d.ts +23 -0
  107. package/dist/controls/reference.js +777 -0
  108. package/dist/controls/reference.js.map +1 -0
  109. package/dist/controls/rich-text/blocks.d.ts +49 -0
  110. package/dist/controls/rich-text/blocks.js +1859 -0
  111. package/dist/controls/rich-text/blocks.js.map +1 -0
  112. package/dist/controls/rich-text/catalog.d.ts +101 -0
  113. package/dist/controls/rich-text/catalog.js +623 -0
  114. package/dist/controls/rich-text/catalog.js.map +1 -0
  115. package/dist/controls/rich-text/codec.d.ts +64 -0
  116. package/dist/controls/rich-text/codec.js +34 -0
  117. package/dist/controls/rich-text/codec.js.map +1 -0
  118. package/dist/controls/rich-text/component-card.d.ts +14 -0
  119. package/dist/controls/rich-text/component-card.js +1024 -0
  120. package/dist/controls/rich-text/component-card.js.map +1 -0
  121. package/dist/controls/rich-text/component-panel.d.ts +47 -0
  122. package/dist/controls/rich-text/component-panel.js +141 -0
  123. package/dist/controls/rich-text/component-panel.js.map +1 -0
  124. package/dist/controls/rich-text/control.d.ts +20 -0
  125. package/dist/controls/rich-text/control.js +296 -0
  126. package/dist/controls/rich-text/control.js.map +1 -0
  127. package/dist/controls/rich-text/dom.d.ts +233 -0
  128. package/dist/controls/rich-text/dom.js +1019 -0
  129. package/dist/controls/rich-text/dom.js.map +1 -0
  130. package/dist/controls/rich-text/editor.d.ts +57 -0
  131. package/dist/controls/rich-text/editor.js +1630 -0
  132. package/dist/controls/rich-text/editor.js.map +1 -0
  133. package/dist/controls/rich-text/floating.d.ts +28 -0
  134. package/dist/controls/rich-text/floating.js +154 -0
  135. package/dist/controls/rich-text/floating.js.map +1 -0
  136. package/dist/controls/rich-text/index.d.ts +1 -0
  137. package/dist/controls/rich-text/index.js +12 -0
  138. package/dist/controls/rich-text/index.js.map +1 -0
  139. package/dist/controls/rich-text/link-form.d.ts +13 -0
  140. package/dist/controls/rich-text/link-form.js +147 -0
  141. package/dist/controls/rich-text/link-form.js.map +1 -0
  142. package/dist/controls/rich-text/markdown.d.ts +6 -0
  143. package/dist/controls/rich-text/markdown.js +181 -0
  144. package/dist/controls/rich-text/markdown.js.map +1 -0
  145. package/dist/controls/rich-text/ops.d.ts +35 -0
  146. package/dist/controls/rich-text/ops.js +316 -0
  147. package/dist/controls/rich-text/ops.js.map +1 -0
  148. package/dist/controls/rich-text/plain.d.ts +17 -0
  149. package/dist/controls/rich-text/plain.js +44 -0
  150. package/dist/controls/rich-text/plain.js.map +1 -0
  151. package/dist/controls/rich-text/toolbar.d.ts +89 -0
  152. package/dist/controls/rich-text/toolbar.js +343 -0
  153. package/dist/controls/rich-text/toolbar.js.map +1 -0
  154. package/dist/controls/scale.d.ts +56 -0
  155. package/dist/controls/scale.js +563 -0
  156. package/dist/controls/scale.js.map +1 -0
  157. package/dist/controls/slot-register.d.ts +6 -0
  158. package/dist/controls/slot-register.js +13 -0
  159. package/dist/controls/slot-register.js.map +1 -0
  160. package/dist/controls/slot-services.d.ts +122 -0
  161. package/dist/controls/slot-services.js +155 -0
  162. package/dist/controls/slot-services.js.map +1 -0
  163. package/dist/controls/slot.d.ts +33 -0
  164. package/dist/controls/slot.js +366 -0
  165. package/dist/controls/slot.js.map +1 -0
  166. package/dist/controls/table/index.d.ts +1 -0
  167. package/dist/controls/table/index.js +12 -0
  168. package/dist/controls/table/index.js.map +1 -0
  169. package/dist/controls/table/prod.d.ts +21 -0
  170. package/dist/controls/table/prod.js +79 -0
  171. package/dist/controls/table/prod.js.map +1 -0
  172. package/dist/controls/table/refs.d.ts +50 -0
  173. package/dist/controls/table/refs.js +79 -0
  174. package/dist/controls/table/refs.js.map +1 -0
  175. package/dist/controls/table/stored.d.ts +15 -0
  176. package/dist/controls/table/stored.js +44 -0
  177. package/dist/controls/table/stored.js.map +1 -0
  178. package/dist/controls/table/table-editor.d.ts +103 -0
  179. package/dist/controls/table/table-editor.js +2725 -0
  180. package/dist/controls/table/table-editor.js.map +1 -0
  181. package/dist/controls/table/table-link.d.ts +24 -0
  182. package/dist/controls/table/table-link.js +180 -0
  183. package/dist/controls/table/table-link.js.map +1 -0
  184. package/dist/controls/table/table.d.ts +9 -0
  185. package/dist/controls/table/table.js +103 -0
  186. package/dist/controls/table/table.js.map +1 -0
  187. package/dist/controls/text.d.ts +17 -0
  188. package/dist/controls/text.js +322 -0
  189. package/dist/controls/text.js.map +1 -0
  190. package/dist/controls/unknown-value.d.ts +17 -0
  191. package/dist/controls/unknown-value.js +66 -0
  192. package/dist/controls/unknown-value.js.map +1 -0
  193. package/dist/core/core.d.ts +63 -0
  194. package/dist/core/core.js +171 -0
  195. package/dist/core/core.js.map +1 -0
  196. package/dist/core/facets.d.ts +347 -0
  197. package/dist/core/facets.js +334 -0
  198. package/dist/core/facets.js.map +1 -0
  199. package/dist/core/index.d.ts +3 -0
  200. package/dist/core/index.js +3 -0
  201. package/dist/engine/array.d.ts +101 -0
  202. package/dist/engine/array.js +906 -0
  203. package/dist/engine/array.js.map +1 -0
  204. package/dist/engine/bits.d.ts +24 -0
  205. package/dist/engine/bits.js +60 -0
  206. package/dist/engine/bits.js.map +1 -0
  207. package/dist/engine/breadcrumb.d.ts +45 -0
  208. package/dist/engine/breadcrumb.js +63 -0
  209. package/dist/engine/breadcrumb.js.map +1 -0
  210. package/dist/engine/expand.d.ts +66 -0
  211. package/dist/engine/expand.js +153 -0
  212. package/dist/engine/expand.js.map +1 -0
  213. package/dist/engine/field-list.d.ts +20 -0
  214. package/dist/engine/field-list.js +19 -0
  215. package/dist/engine/field-list.js.map +1 -0
  216. package/dist/engine/field-shell.d.ts +49 -0
  217. package/dist/engine/field-shell.js +988 -0
  218. package/dist/engine/field-shell.js.map +1 -0
  219. package/dist/engine/frame.d.ts +122 -0
  220. package/dist/engine/frame.js +601 -0
  221. package/dist/engine/frame.js.map +1 -0
  222. package/dist/engine/group-summary.d.ts +5 -0
  223. package/dist/engine/group-summary.js +70 -0
  224. package/dist/engine/group-summary.js.map +1 -0
  225. package/dist/engine/grouping.d.ts +238 -0
  226. package/dist/engine/grouping.js +996 -0
  227. package/dist/engine/grouping.js.map +1 -0
  228. package/dist/engine/item-list.d.ts +99 -0
  229. package/dist/engine/item-list.js +725 -0
  230. package/dist/engine/item-list.js.map +1 -0
  231. package/dist/engine/kit-field.d.ts +72 -0
  232. package/dist/engine/kit-field.js +558 -0
  233. package/dist/engine/kit-field.js.map +1 -0
  234. package/dist/engine/schema-form.d.ts +116 -0
  235. package/dist/engine/schema-form.js +462 -0
  236. package/dist/engine/schema-form.js.map +1 -0
  237. package/dist/engine/slot.d.ts +13 -0
  238. package/dist/engine/slot.js +216 -0
  239. package/dist/engine/slot.js.map +1 -0
  240. package/dist/index.d.ts +45 -3139
  241. package/dist/index.js +58 -2036
  242. package/dist/index.js.map +1 -0
  243. package/dist/kit.css +75 -0
  244. package/dist/lib/cn.d.ts +4 -0
  245. package/dist/lib/cn.js +56 -0
  246. package/dist/lib/cn.js.map +1 -0
  247. package/dist/lib/columns.d.ts +14 -0
  248. package/dist/lib/columns.js +30 -0
  249. package/dist/lib/columns.js.map +1 -0
  250. package/dist/lib/frames.d.ts +36 -0
  251. package/dist/lib/frames.js +214 -0
  252. package/dist/lib/frames.js.map +1 -0
  253. package/dist/lib/icon-image.d.ts +10 -0
  254. package/dist/lib/icon-image.js +8 -0
  255. package/dist/lib/icon-image.js.map +1 -0
  256. package/dist/lib/icons.d.ts +16 -0
  257. package/dist/lib/icons.js +173 -0
  258. package/dist/lib/icons.js.map +1 -0
  259. package/dist/lib/input-modality.d.ts +11 -0
  260. package/dist/lib/input-modality.js +47 -0
  261. package/dist/lib/input-modality.js.map +1 -0
  262. package/dist/lib/key-event.d.ts +11 -0
  263. package/dist/lib/key-event.js +16 -0
  264. package/dist/lib/key-event.js.map +1 -0
  265. package/dist/lib/path.d.ts +29 -0
  266. package/dist/lib/path.js +66 -0
  267. package/dist/lib/path.js.map +1 -0
  268. package/dist/lib/schema.d.ts +80 -0
  269. package/dist/lib/schema.js +384 -0
  270. package/dist/lib/schema.js.map +1 -0
  271. package/dist/lib/utils.d.ts +7 -0
  272. package/dist/lib/utils.js +37 -0
  273. package/dist/lib/utils.js.map +1 -0
  274. package/dist/lib/validate.d.ts +30 -0
  275. package/dist/lib/validate.js +224 -0
  276. package/dist/lib/validate.js.map +1 -0
  277. package/dist/library/analysis.d.ts +23 -0
  278. package/dist/library/analysis.js +160 -0
  279. package/dist/library/analysis.js.map +1 -0
  280. package/dist/library/catalog.d.ts +57 -0
  281. package/dist/library/catalog.js +307 -0
  282. package/dist/library/catalog.js.map +1 -0
  283. package/dist/library/coreNotes.d.ts +8 -0
  284. package/dist/library/coreNotes.js +111 -0
  285. package/dist/library/coreNotes.js.map +1 -0
  286. package/dist/library/coverage.d.ts +40 -0
  287. package/dist/library/coverage.js +59 -0
  288. package/dist/library/coverage.js.map +1 -0
  289. package/dist/library/entries/advanced.entries.d.ts +2 -0
  290. package/dist/library/entries/advanced.entries.js +6579 -0
  291. package/dist/library/entries/advanced.entries.js.map +1 -0
  292. package/dist/library/entries/commerce.entries.d.ts +2 -0
  293. package/dist/library/entries/commerce.entries.js +4140 -0
  294. package/dist/library/entries/commerce.entries.js.map +1 -0
  295. package/dist/library/entries/company.entries.d.ts +2 -0
  296. package/dist/library/entries/company.entries.js +2731 -0
  297. package/dist/library/entries/company.entries.js.map +1 -0
  298. package/dist/library/entries/conversion.entries.d.ts +2 -0
  299. package/dist/library/entries/conversion.entries.js +3707 -0
  300. package/dist/library/entries/conversion.entries.js.map +1 -0
  301. package/dist/library/entries/data.entries.d.ts +7 -0
  302. package/dist/library/entries/data.entries.js +4613 -0
  303. package/dist/library/entries/data.entries.js.map +1 -0
  304. package/dist/library/entries/events.entries.d.ts +2 -0
  305. package/dist/library/entries/events.entries.js +3428 -0
  306. package/dist/library/entries/events.entries.js.map +1 -0
  307. package/dist/library/entries/features.entries.d.ts +2 -0
  308. package/dist/library/entries/features.entries.js +3157 -0
  309. package/dist/library/entries/features.entries.js.map +1 -0
  310. package/dist/library/entries/heroes.entries.d.ts +2 -0
  311. package/dist/library/entries/heroes.entries.js +3401 -0
  312. package/dist/library/entries/heroes.entries.js.map +1 -0
  313. package/dist/library/entries/index.d.ts +3 -0
  314. package/dist/library/entries/index.js +35 -0
  315. package/dist/library/entries/index.js.map +1 -0
  316. package/dist/library/entries/listings.entries.d.ts +2 -0
  317. package/dist/library/entries/listings.entries.js +2976 -0
  318. package/dist/library/entries/listings.entries.js.map +1 -0
  319. package/dist/library/entries/longform.entries.d.ts +2 -0
  320. package/dist/library/entries/longform.entries.js +4227 -0
  321. package/dist/library/entries/longform.entries.js.map +1 -0
  322. package/dist/library/entries/media.entries.d.ts +2 -0
  323. package/dist/library/entries/media.entries.js +2781 -0
  324. package/dist/library/entries/media.entries.js.map +1 -0
  325. package/dist/library/entries/navigation.entries.d.ts +2 -0
  326. package/dist/library/entries/navigation.entries.js +4011 -0
  327. package/dist/library/entries/navigation.entries.js.map +1 -0
  328. package/dist/library/entries/pricing.entries.d.ts +2 -0
  329. package/dist/library/entries/pricing.entries.js +2383 -0
  330. package/dist/library/entries/pricing.entries.js.map +1 -0
  331. package/dist/library/entries/social-proof.entries.d.ts +2 -0
  332. package/dist/library/entries/social-proof.entries.js +2297 -0
  333. package/dist/library/entries/social-proof.entries.js.map +1 -0
  334. package/dist/library/examples/bento.d.ts +92 -0
  335. package/dist/library/examples/bento.js +201 -0
  336. package/dist/library/examples/bento.js.map +1 -0
  337. package/dist/library/examples/blocks.d.ts +14 -0
  338. package/dist/library/examples/blocks.js +313 -0
  339. package/dist/library/examples/blocks.js.map +1 -0
  340. package/dist/library/examples/faq.d.ts +28 -0
  341. package/dist/library/examples/faq.js +230 -0
  342. package/dist/library/examples/faq.js.map +1 -0
  343. package/dist/library/examples/hero.d.ts +43 -0
  344. package/dist/library/examples/hero.js +222 -0
  345. package/dist/library/examples/hero.js.map +1 -0
  346. package/dist/library/examples/index.d.ts +36 -0
  347. package/dist/library/examples/index.js +109 -0
  348. package/dist/library/examples/index.js.map +1 -0
  349. package/dist/library/examples/journalStory.d.ts +93 -0
  350. package/dist/library/examples/journalStory.js +338 -0
  351. package/dist/library/examples/journalStory.js.map +1 -0
  352. package/dist/library/examples/megaMenu.d.ts +134 -0
  353. package/dist/library/examples/megaMenu.js +442 -0
  354. package/dist/library/examples/megaMenu.js.map +1 -0
  355. package/dist/library/examples/pricing.d.ts +103 -0
  356. package/dist/library/examples/pricing.js +479 -0
  357. package/dist/library/examples/pricing.js.map +1 -0
  358. package/dist/library/examples/tabs.d.ts +87 -0
  359. package/dist/library/examples/tabs.js +180 -0
  360. package/dist/library/examples/tabs.js.map +1 -0
  361. package/dist/library/export.d.ts +42 -0
  362. package/dist/library/export.js +80 -0
  363. package/dist/library/export.js.map +1 -0
  364. package/dist/library/index.d.ts +13 -0
  365. package/dist/library/index.js +6 -0
  366. package/dist/library/kit-catalog.json +1510 -0
  367. package/dist/library/types.d.ts +42 -0
  368. package/dist/library/types.js +0 -0
  369. package/dist/schema/adapters.d.ts +28 -0
  370. package/dist/schema/adapters.js +492 -0
  371. package/dist/schema/adapters.js.map +1 -0
  372. package/dist/schema/help.d.ts +27 -0
  373. package/dist/schema/help.js +56 -0
  374. package/dist/schema/help.js.map +1 -0
  375. package/dist/schema/scale.d.ts +69 -0
  376. package/dist/schema/scale.js +250 -0
  377. package/dist/schema/scale.js.map +1 -0
  378. package/dist/schema/sources.d.ts +103 -0
  379. package/dist/schema/sources.js +65 -0
  380. package/dist/schema/sources.js.map +1 -0
  381. package/dist/schema/table.d.ts +319 -0
  382. package/dist/schema/table.js +1199 -0
  383. package/dist/schema/table.js.map +1 -0
  384. package/dist/schema/types.d.ts +297 -0
  385. package/dist/schema/types.js +14 -0
  386. package/dist/schema/types.js.map +1 -0
  387. package/dist/styles.css +2 -0
  388. package/dist/table/table-view.d.ts +14 -0
  389. package/dist/table/table-view.js +140 -0
  390. package/dist/table/table-view.js.map +1 -0
  391. package/dist/table/table.css +73 -0
  392. package/dist/testing/corpus.d.ts +63 -0
  393. package/dist/testing/corpus.js +129 -0
  394. package/dist/testing/corpus.js.map +1 -0
  395. package/dist/testing/test-form.d.ts +11 -0
  396. package/dist/testing/test-form.js +38 -0
  397. package/dist/testing/test-form.js.map +1 -0
  398. package/dist/theme.css +345 -0
  399. package/dist/theme.d.ts +20 -1504
  400. package/dist/theme.js +43 -4126
  401. package/dist/theme.js.map +1 -0
  402. package/dist/tokens.css +542 -0
  403. package/dist/types.d.ts +17 -0
  404. package/dist/types.js +0 -0
  405. package/dist/ui/action-tray.d.ts +54 -0
  406. package/dist/ui/action-tray.js +154 -0
  407. package/dist/ui/action-tray.js.map +1 -0
  408. package/dist/ui/autocomplete.d.ts +30 -0
  409. package/dist/ui/autocomplete.js +139 -0
  410. package/dist/ui/autocomplete.js.map +1 -0
  411. package/dist/ui/button.d.ts +57 -0
  412. package/dist/ui/button.js +201 -0
  413. package/dist/ui/button.js.map +1 -0
  414. package/dist/ui/choice-switch.d.ts +36 -0
  415. package/dist/ui/choice-switch.js +57 -0
  416. package/dist/ui/choice-switch.js.map +1 -0
  417. package/dist/ui/controls.d.ts +83 -0
  418. package/dist/ui/controls.js +331 -0
  419. package/dist/ui/controls.js.map +1 -0
  420. package/dist/ui/display.d.ts +163 -0
  421. package/dist/ui/display.js +455 -0
  422. package/dist/ui/display.js.map +1 -0
  423. package/dist/ui/expanded-editor-modal.d.ts +26 -0
  424. package/dist/ui/expanded-editor-modal.js +140 -0
  425. package/dist/ui/expanded-editor-modal.js.map +1 -0
  426. package/dist/ui/field-context.d.ts +12 -0
  427. package/dist/ui/field-context.js +23 -0
  428. package/dist/ui/field-context.js.map +1 -0
  429. package/dist/ui/floating-panel.d.ts +152 -0
  430. package/dist/ui/floating-panel.js +928 -0
  431. package/dist/ui/floating-panel.js.map +1 -0
  432. package/dist/ui/index.d.ts +16 -0
  433. package/dist/ui/index.js +18 -0
  434. package/dist/ui/input.d.ts +78 -0
  435. package/dist/ui/input.js +250 -0
  436. package/dist/ui/input.js.map +1 -0
  437. package/dist/ui/mode-bar.d.ts +31 -0
  438. package/dist/ui/mode-bar.js +65 -0
  439. package/dist/ui/mode-bar.js.map +1 -0
  440. package/dist/ui/overlay.d.ts +195 -0
  441. package/dist/ui/overlay.js +697 -0
  442. package/dist/ui/overlay.js.map +1 -0
  443. package/dist/ui/path-crumbs.d.ts +90 -0
  444. package/dist/ui/path-crumbs.js +566 -0
  445. package/dist/ui/path-crumbs.js.map +1 -0
  446. package/dist/ui/presence.d.ts +16 -0
  447. package/dist/ui/presence.js +65 -0
  448. package/dist/ui/presence.js.map +1 -0
  449. package/dist/ui/select.d.ts +66 -0
  450. package/dist/ui/select.js +407 -0
  451. package/dist/ui/select.js.map +1 -0
  452. package/dist/ui/shortcut-hint.d.ts +14 -0
  453. package/dist/ui/shortcut-hint.js +35 -0
  454. package/dist/ui/shortcut-hint.js.map +1 -0
  455. package/dist/ui/spinner.d.ts +24 -0
  456. package/dist/ui/spinner.js +42 -0
  457. package/dist/ui/spinner.js.map +1 -0
  458. package/dist/ui/split-button.d.ts +32 -0
  459. package/dist/ui/split-button.js +60 -0
  460. package/dist/ui/split-button.js.map +1 -0
  461. package/dist/ui/surfaces.d.ts +23 -0
  462. package/dist/ui/surfaces.js +26 -0
  463. package/dist/ui/surfaces.js.map +1 -0
  464. package/dist/ui/tab.d.ts +38 -0
  465. package/dist/ui/tab.js +87 -0
  466. package/dist/ui/tab.js.map +1 -0
  467. package/dist/ui/toast.d.ts +20 -0
  468. package/dist/ui/toast.js +115 -0
  469. package/dist/ui/toast.js.map +1 -0
  470. package/dist/ui/tooltip-root.d.ts +13 -0
  471. package/dist/ui/tooltip-root.js +77 -0
  472. package/dist/ui/tooltip-root.js.map +1 -0
  473. package/dist/ui/variants.d.ts +15 -0
  474. package/dist/ui/variants.js +14 -0
  475. package/dist/ui/variants.js.map +1 -0
  476. package/package.json +80 -50
  477. package/LICENSE +0 -21
  478. package/dist/_chunks-cjs/_visual-editing.js +0 -5898
  479. package/dist/_chunks-cjs/refractor.js +0 -22
  480. package/dist/_chunks-es/_visual-editing.mjs +0 -5904
  481. package/dist/_chunks-es/refractor.mjs +0 -25
  482. package/dist/_color.d.mts +0 -119
  483. package/dist/_color.d.ts +0 -119
  484. package/dist/_color.js +0 -1412
  485. package/dist/_color.mjs +0 -1411
  486. package/dist/_visual-editing.d.mts +0 -1126
  487. package/dist/_visual-editing.d.ts +0 -1126
  488. package/dist/_visual-editing.js +0 -30
  489. package/dist/_visual-editing.mjs +0 -30
  490. package/dist/index.d.mts +0 -3140
  491. package/dist/index.mjs +0 -2044
  492. package/dist/theme.d.mts +0 -1506
  493. package/dist/theme.mjs +0 -4126
  494. package/exports/_visual-editing.ts +0 -31
  495. package/exports/index.ts +0 -1
  496. package/exports/theme.ts +0 -1
  497. package/src/color/index.d.mts +0 -119
  498. package/src/color/index.mjs +0 -1411
  499. package/src/core/__workshop__/constants.ts +0 -293
  500. package/src/core/_compat.ts +0 -264
  501. package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
  502. package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
  503. package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
  504. package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
  505. package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
  506. package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
  507. package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
  508. package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
  509. package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
  510. package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
  511. package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
  512. package/src/core/components/autocomplete/autocomplete.tsx +0 -767
  513. package/src/core/components/autocomplete/autocompleteOption.tsx +0 -45
  514. package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
  515. package/src/core/components/autocomplete/constants.ts +0 -28
  516. package/src/core/components/autocomplete/index.ts +0 -2
  517. package/src/core/components/autocomplete/types.ts +0 -108
  518. package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
  519. package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
  520. package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
  521. package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -51
  522. package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -133
  523. package/src/core/components/breadcrumbs/index.ts +0 -1
  524. package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
  525. package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
  526. package/src/core/components/dialog/__workshop__/index.ts +0 -19
  527. package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
  528. package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
  529. package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
  530. package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
  531. package/src/core/components/dialog/__workshop__/position.tsx +0 -30
  532. package/src/core/components/dialog/__workshop__/props.tsx +0 -75
  533. package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
  534. package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
  535. package/src/core/components/dialog/dialog.tsx +0 -430
  536. package/src/core/components/dialog/dialogContext.ts +0 -20
  537. package/src/core/components/dialog/dialogProvider.tsx +0 -35
  538. package/src/core/components/dialog/index.ts +0 -4
  539. package/src/core/components/dialog/styles.ts +0 -77
  540. package/src/core/components/dialog/useDialog.ts +0 -11
  541. package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
  542. package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
  543. package/src/core/components/hotkeys/hotkeys.test.tsx +0 -42
  544. package/src/core/components/hotkeys/hotkeys.tsx +0 -66
  545. package/src/core/components/hotkeys/index.ts +0 -1
  546. package/src/core/components/index.ts +0 -9
  547. package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
  548. package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
  549. package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
  550. package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
  551. package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
  552. package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
  553. package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
  554. package/src/core/components/menu/__workshop__/groups.tsx +0 -156
  555. package/src/core/components/menu/__workshop__/index.ts +0 -89
  556. package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
  557. package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -58
  558. package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
  559. package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
  560. package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
  561. package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
  562. package/src/core/components/menu/__workshop__/tones.tsx +0 -25
  563. package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
  564. package/src/core/components/menu/helpers.ts +0 -82
  565. package/src/core/components/menu/index.ts +0 -5
  566. package/src/core/components/menu/menu.spacing.test.tsx +0 -63
  567. package/src/core/components/menu/menu.test.tsx +0 -125
  568. package/src/core/components/menu/menu.tsx +0 -178
  569. package/src/core/components/menu/menuButton.tsx +0 -268
  570. package/src/core/components/menu/menuContext.ts +0 -18
  571. package/src/core/components/menu/menuDivider.ts +0 -23
  572. package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -63
  573. package/src/core/components/menu/menuGroup.tsx +0 -233
  574. package/src/core/components/menu/menuItem.spacing.test.tsx +0 -59
  575. package/src/core/components/menu/menuItem.tsx +0 -197
  576. package/src/core/components/menu/useMenu.ts +0 -21
  577. package/src/core/components/menu/useMenuController.ts +0 -231
  578. package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
  579. package/src/core/components/skeleton/__workshop__/index.ts +0 -11
  580. package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
  581. package/src/core/components/skeleton/index.ts +0 -2
  582. package/src/core/components/skeleton/skeleton.tsx +0 -57
  583. package/src/core/components/skeleton/styles.ts +0 -50
  584. package/src/core/components/skeleton/textSkeleton.tsx +0 -122
  585. package/src/core/components/tab/__workshop__/example.tsx +0 -79
  586. package/src/core/components/tab/__workshop__/index.ts +0 -14
  587. package/src/core/components/tab/index.ts +0 -3
  588. package/src/core/components/tab/tab.tsx +0 -101
  589. package/src/core/components/tab/tabList.test.tsx +0 -48
  590. package/src/core/components/tab/tabList.tsx +0 -70
  591. package/src/core/components/tab/tabPanel.tsx +0 -39
  592. package/src/core/components/toast/__workshop__/hook.tsx +0 -71
  593. package/src/core/components/toast/__workshop__/index.ts +0 -19
  594. package/src/core/components/toast/__workshop__/toast.tsx +0 -26
  595. package/src/core/components/toast/index.ts +0 -4
  596. package/src/core/components/toast/styles.ts +0 -77
  597. package/src/core/components/toast/toast.test.tsx +0 -101
  598. package/src/core/components/toast/toast.tsx +0 -198
  599. package/src/core/components/toast/toastContext.ts +0 -7
  600. package/src/core/components/toast/toastLayer.tsx +0 -51
  601. package/src/core/components/toast/toastProvider.tsx +0 -113
  602. package/src/core/components/toast/toastState.ts +0 -6
  603. package/src/core/components/toast/types.ts +0 -26
  604. package/src/core/components/toast/useToast.ts +0 -25
  605. package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
  606. package/src/core/components/tree/__workshop__/basic.tsx +0 -105
  607. package/src/core/components/tree/__workshop__/index.ts +0 -21
  608. package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
  609. package/src/core/components/tree/helpers.ts +0 -105
  610. package/src/core/components/tree/index.ts +0 -4
  611. package/src/core/components/tree/style.ts +0 -105
  612. package/src/core/components/tree/tree.test.tsx +0 -55
  613. package/src/core/components/tree/tree.tsx +0 -240
  614. package/src/core/components/tree/treeContext.ts +0 -10
  615. package/src/core/components/tree/treeGroup.tsx +0 -28
  616. package/src/core/components/tree/treeItem.test.tsx +0 -65
  617. package/src/core/components/tree/treeItem.tsx +0 -224
  618. package/src/core/components/tree/types.ts +0 -25
  619. package/src/core/components/tree/useTree.ts +0 -17
  620. package/src/core/constants.ts +0 -79
  621. package/src/core/helpers/animation.ts +0 -27
  622. package/src/core/helpers/element.ts +0 -55
  623. package/src/core/helpers/focus.ts +0 -100
  624. package/src/core/helpers/index.ts +0 -4
  625. package/src/core/helpers/scroll.ts +0 -15
  626. package/src/core/hooks/index.ts +0 -12
  627. package/src/core/hooks/useArrayProp.ts +0 -17
  628. package/src/core/hooks/useClickOutside.test.tsx +0 -482
  629. package/src/core/hooks/useClickOutside.ts +0 -118
  630. package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -115
  631. package/src/core/hooks/useClickOutsideEvent.ts +0 -73
  632. package/src/core/hooks/useCustomValidity.ts +0 -13
  633. package/src/core/hooks/useDelayed.test.ts +0 -88
  634. package/src/core/hooks/useDelayedState.ts +0 -36
  635. package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
  636. package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
  637. package/src/core/hooks/useElementRect/index.ts +0 -1
  638. package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
  639. package/src/core/hooks/useElementSize.ts +0 -19
  640. package/src/core/hooks/useForwardedRef.ts +0 -19
  641. package/src/core/hooks/useGlobalKeyDown.ts +0 -24
  642. package/src/core/hooks/useIsomorphicEffect.ts +0 -7
  643. package/src/core/hooks/useMatchMedia.ts +0 -28
  644. package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
  645. package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
  646. package/src/core/hooks/useMediaIndex/index.ts +0 -1
  647. package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -36
  648. package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
  649. package/src/core/hooks/useMounted.ts +0 -15
  650. package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
  651. package/src/core/hooks/usePrefersDark.test.tsx +0 -19
  652. package/src/core/hooks/usePrefersDark.ts +0 -16
  653. package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
  654. package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -19
  655. package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
  656. package/src/core/index.ts +0 -10
  657. package/src/core/lib/createGlobalScopedContext.ts +0 -36
  658. package/src/core/lib/globalScope.ts +0 -19
  659. package/src/core/lib/isRecord.ts +0 -3
  660. package/src/core/middleware/origin.ts +0 -47
  661. package/src/core/observers/elementSizeObserver.ts +0 -116
  662. package/src/core/observers/index.ts +0 -2
  663. package/src/core/observers/resizeObserver.ts +0 -9
  664. package/src/core/primitives/_selectable/index.ts +0 -1
  665. package/src/core/primitives/_selectable/selectable.tsx +0 -15
  666. package/src/core/primitives/_selectable/style.ts +0 -115
  667. package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
  668. package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
  669. package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
  670. package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
  671. package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
  672. package/src/core/primitives/avatar/avatar.tsx +0 -200
  673. package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
  674. package/src/core/primitives/avatar/avatarStack.tsx +0 -100
  675. package/src/core/primitives/avatar/index.ts +0 -4
  676. package/src/core/primitives/avatar/styles.ts +0 -167
  677. package/src/core/primitives/avatar/types.ts +0 -17
  678. package/src/core/primitives/badge/__workshop__/index.ts +0 -19
  679. package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
  680. package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
  681. package/src/core/primitives/badge/badge.test.tsx +0 -16
  682. package/src/core/primitives/badge/badge.tsx +0 -70
  683. package/src/core/primitives/badge/index.ts +0 -1
  684. package/src/core/primitives/badge/styles.ts +0 -20
  685. package/src/core/primitives/badge/types.ts +0 -8
  686. package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
  687. package/src/core/primitives/box/__workshop__/index.ts +0 -24
  688. package/src/core/primitives/box/__workshop__/props.tsx +0 -20
  689. package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
  690. package/src/core/primitives/box/box.test.tsx +0 -142
  691. package/src/core/primitives/box/box.tsx +0 -154
  692. package/src/core/primitives/box/index.ts +0 -1
  693. package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
  694. package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
  695. package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
  696. package/src/core/primitives/button/__workshop__/index.ts +0 -59
  697. package/src/core/primitives/button/__workshop__/labelUploadButton.tsx +0 -36
  698. package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
  699. package/src/core/primitives/button/__workshop__/props.tsx +0 -55
  700. package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
  701. package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
  702. package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
  703. package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
  704. package/src/core/primitives/button/button.test.tsx +0 -82
  705. package/src/core/primitives/button/button.tsx +0 -210
  706. package/src/core/primitives/button/index.ts +0 -1
  707. package/src/core/primitives/button/styles.ts +0 -117
  708. package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
  709. package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
  710. package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
  711. package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
  712. package/src/core/primitives/card/__workshop__/index.ts +0 -18
  713. package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
  714. package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
  715. package/src/core/primitives/card/__workshop__/props.tsx +0 -53
  716. package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
  717. package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
  718. package/src/core/primitives/card/card.tsx +0 -128
  719. package/src/core/primitives/card/index.ts +0 -2
  720. package/src/core/primitives/card/styles.ts +0 -147
  721. package/src/core/primitives/card/types.ts +0 -11
  722. package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
  723. package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
  724. package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
  725. package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
  726. package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
  727. package/src/core/primitives/checkbox/checkbox.tsx +0 -73
  728. package/src/core/primitives/checkbox/index.ts +0 -1
  729. package/src/core/primitives/checkbox/styles.ts +0 -128
  730. package/src/core/primitives/code/__workshop__/index.ts +0 -19
  731. package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
  732. package/src/core/primitives/code/__workshop__/props.tsx +0 -21
  733. package/src/core/primitives/code/code.tsx +0 -55
  734. package/src/core/primitives/code/index.ts +0 -1
  735. package/src/core/primitives/code/refractor.tsx +0 -20
  736. package/src/core/primitives/code/styles.ts +0 -77
  737. package/src/core/primitives/container/__workshop__/example.tsx +0 -20
  738. package/src/core/primitives/container/__workshop__/index.ts +0 -8
  739. package/src/core/primitives/container/container.tsx +0 -54
  740. package/src/core/primitives/container/index.ts +0 -2
  741. package/src/core/primitives/container/styles.ts +0 -23
  742. package/src/core/primitives/container/types.ts +0 -6
  743. package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
  744. package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
  745. package/src/core/primitives/flex/__workshop__/index.ts +0 -11
  746. package/src/core/primitives/flex/flex.tsx +0 -64
  747. package/src/core/primitives/flex/index.ts +0 -1
  748. package/src/core/primitives/grid/__workshop__/index.ts +0 -10
  749. package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
  750. package/src/core/primitives/grid/grid.test.tsx +0 -80
  751. package/src/core/primitives/grid/grid.tsx +0 -74
  752. package/src/core/primitives/grid/index.ts +0 -1
  753. package/src/core/primitives/heading/__workshop__/index.ts +0 -19
  754. package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
  755. package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
  756. package/src/core/primitives/heading/heading.tsx +0 -88
  757. package/src/core/primitives/heading/index.ts +0 -1
  758. package/src/core/primitives/heading/styles.ts +0 -64
  759. package/src/core/primitives/heading/types.ts +0 -7
  760. package/src/core/primitives/index.ts +0 -27
  761. package/src/core/primitives/inline/__workshop__/index.ts +0 -8
  762. package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
  763. package/src/core/primitives/inline/index.ts +0 -1
  764. package/src/core/primitives/inline/inline.test.tsx +0 -51
  765. package/src/core/primitives/inline/inline.tsx +0 -63
  766. package/src/core/primitives/inline/styles.ts +0 -32
  767. package/src/core/primitives/inline/types.ts +0 -6
  768. package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
  769. package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
  770. package/src/core/primitives/kbd/index.ts +0 -1
  771. package/src/core/primitives/kbd/kbd.tsx +0 -69
  772. package/src/core/primitives/label/__workshop__/index.ts +0 -19
  773. package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
  774. package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
  775. package/src/core/primitives/label/index.ts +0 -1
  776. package/src/core/primitives/label/label.tsx +0 -87
  777. package/src/core/primitives/label/styles.ts +0 -45
  778. package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
  779. package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
  780. package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
  781. package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
  782. package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
  783. package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
  784. package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
  785. package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
  786. package/src/core/primitives/popover/__workshop__/index.ts +0 -49
  787. package/src/core/primitives/popover/constants.ts +0 -22
  788. package/src/core/primitives/popover/floating-ui/size.ts +0 -99
  789. package/src/core/primitives/popover/helpers.ts +0 -31
  790. package/src/core/primitives/popover/index.ts +0 -2
  791. package/src/core/primitives/popover/popover.tsx +0 -511
  792. package/src/core/primitives/popover/popoverCard.tsx +0 -166
  793. package/src/core/primitives/popover/types.ts +0 -7
  794. package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
  795. package/src/core/primitives/radio/__workshop__/index.ts +0 -11
  796. package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
  797. package/src/core/primitives/radio/index.ts +0 -1
  798. package/src/core/primitives/radio/radio.tsx +0 -51
  799. package/src/core/primitives/radio/styles.ts +0 -117
  800. package/src/core/primitives/select/__workshop__/index.ts +0 -11
  801. package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
  802. package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
  803. package/src/core/primitives/select/index.ts +0 -1
  804. package/src/core/primitives/select/select.test.tsx +0 -52
  805. package/src/core/primitives/select/select.tsx +0 -94
  806. package/src/core/primitives/select/styles.ts +0 -166
  807. package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
  808. package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
  809. package/src/core/primitives/spinner/index.ts +0 -1
  810. package/src/core/primitives/spinner/spinner.tsx +0 -46
  811. package/src/core/primitives/stack/__workshop__/index.ts +0 -14
  812. package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
  813. package/src/core/primitives/stack/index.ts +0 -1
  814. package/src/core/primitives/stack/stack.test.tsx +0 -57
  815. package/src/core/primitives/stack/stack.tsx +0 -57
  816. package/src/core/primitives/stack/styles.ts +0 -32
  817. package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
  818. package/src/core/primitives/switch/__workshop__/index.ts +0 -11
  819. package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
  820. package/src/core/primitives/switch/index.ts +0 -1
  821. package/src/core/primitives/switch/styles.ts +0 -173
  822. package/src/core/primitives/switch/switch.tsx +0 -68
  823. package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
  824. package/src/core/primitives/text/__workshop__/example.tsx +0 -39
  825. package/src/core/primitives/text/__workshop__/index.ts +0 -24
  826. package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
  827. package/src/core/primitives/text/index.ts +0 -1
  828. package/src/core/primitives/text/styles.ts +0 -74
  829. package/src/core/primitives/text/text.tsx +0 -89
  830. package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
  831. package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
  832. package/src/core/primitives/textArea/index.ts +0 -1
  833. package/src/core/primitives/textArea/textArea.tsx +0 -120
  834. package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
  835. package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
  836. package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
  837. package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
  838. package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
  839. package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
  840. package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
  841. package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
  842. package/src/core/primitives/textInput/index.ts +0 -1
  843. package/src/core/primitives/textInput/textInput.test.tsx +0 -48
  844. package/src/core/primitives/textInput/textInput.tsx +0 -395
  845. package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
  846. package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
  847. package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
  848. package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
  849. package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
  850. package/src/core/primitives/tooltip/constants.ts +0 -23
  851. package/src/core/primitives/tooltip/index.ts +0 -2
  852. package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
  853. package/src/core/primitives/tooltip/tooltip.tsx +0 -495
  854. package/src/core/primitives/tooltip/tooltipCard.tsx +0 -109
  855. package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
  856. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
  857. package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
  858. package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
  859. package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
  860. package/src/core/primitives/types.ts +0 -179
  861. package/src/core/styles/border/borderStyle.ts +0 -56
  862. package/src/core/styles/border/index.ts +0 -2
  863. package/src/core/styles/border/types.ts +0 -10
  864. package/src/core/styles/box/boxStyle.ts +0 -69
  865. package/src/core/styles/box/index.ts +0 -2
  866. package/src/core/styles/box/types.ts +0 -11
  867. package/src/core/styles/card/_cardColorStyle.ts +0 -108
  868. package/src/core/styles/card/index.ts +0 -1
  869. package/src/core/styles/flex/flexItemStyle.ts +0 -27
  870. package/src/core/styles/flex/flexStyle.ts +0 -70
  871. package/src/core/styles/flex/index.ts +0 -3
  872. package/src/core/styles/flex/types.ts +0 -25
  873. package/src/core/styles/focusRing/index.ts +0 -25
  874. package/src/core/styles/font/codeFontStyle.ts +0 -13
  875. package/src/core/styles/font/headingFontStyle.ts +0 -13
  876. package/src/core/styles/font/index.ts +0 -6
  877. package/src/core/styles/font/labelFontStyle.ts +0 -13
  878. package/src/core/styles/font/responsiveFont.ts +0 -103
  879. package/src/core/styles/font/textAlignStyle.ts +0 -19
  880. package/src/core/styles/font/textFontStyle.ts +0 -13
  881. package/src/core/styles/font/types.ts +0 -35
  882. package/src/core/styles/grid/gridItemStyle.ts +0 -82
  883. package/src/core/styles/grid/gridStyle.ts +0 -108
  884. package/src/core/styles/grid/index.ts +0 -3
  885. package/src/core/styles/grid/types.ts +0 -37
  886. package/src/core/styles/helpers.ts +0 -72
  887. package/src/core/styles/index.ts +0 -5
  888. package/src/core/styles/input/index.ts +0 -2
  889. package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
  890. package/src/core/styles/input/textInputStyle.ts +0 -263
  891. package/src/core/styles/internal.ts +0 -12
  892. package/src/core/styles/margin/index.ts +0 -2
  893. package/src/core/styles/margin/marginStyle.ts +0 -21
  894. package/src/core/styles/margin/marginsStyle.test.ts +0 -33
  895. package/src/core/styles/margin/types.ts +0 -9
  896. package/src/core/styles/padding/index.ts +0 -2
  897. package/src/core/styles/padding/paddingStyle.test.ts +0 -33
  898. package/src/core/styles/padding/paddingStyle.ts +0 -21
  899. package/src/core/styles/padding/types.ts +0 -12
  900. package/src/core/styles/radius/index.ts +0 -2
  901. package/src/core/styles/radius/radiusStyle.ts +0 -23
  902. package/src/core/styles/radius/types.ts +0 -8
  903. package/src/core/styles/shadow/index.ts +0 -2
  904. package/src/core/styles/shadow/shadowStyle.ts +0 -29
  905. package/src/core/styles/shadow/types.ts +0 -6
  906. package/src/core/styles/types.ts +0 -8
  907. package/src/core/theme/__workshop__/build/Root.tsx +0 -367
  908. package/src/core/theme/__workshop__/build/helpers.ts +0 -46
  909. package/src/core/theme/__workshop__/build/story.tsx +0 -465
  910. package/src/core/theme/__workshop__/canvas.tsx +0 -352
  911. package/src/core/theme/__workshop__/color.tsx +0 -62
  912. package/src/core/theme/__workshop__/debug/story.tsx +0 -408
  913. package/src/core/theme/__workshop__/index.ts +0 -39
  914. package/src/core/theme/__workshop__/layer.tsx +0 -78
  915. package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
  916. package/src/core/theme/index.ts +0 -5
  917. package/src/core/theme/theme.test.tsx +0 -73
  918. package/src/core/theme/themeColorProvider.tsx +0 -29
  919. package/src/core/theme/themeContext.ts +0 -10
  920. package/src/core/theme/themeProvider.tsx +0 -62
  921. package/src/core/theme/types.ts +0 -12
  922. package/src/core/theme/useRootTheme.ts +0 -17
  923. package/src/core/theme/useTheme.ts +0 -16
  924. package/src/core/types/avatar.ts +0 -14
  925. package/src/core/types/badge.ts +0 -12
  926. package/src/core/types/box.ts +0 -19
  927. package/src/core/types/button.ts +0 -21
  928. package/src/core/types/card.ts +0 -6
  929. package/src/core/types/component.ts +0 -32
  930. package/src/core/types/dialog.ts +0 -4
  931. package/src/core/types/flex.ts +0 -30
  932. package/src/core/types/grid.ts +0 -14
  933. package/src/core/types/gridItem.ts +0 -29
  934. package/src/core/types/index.ts +0 -15
  935. package/src/core/types/placement.ts +0 -18
  936. package/src/core/types/popover.ts +0 -4
  937. package/src/core/types/radius.ts +0 -4
  938. package/src/core/types/selectable.ts +0 -6
  939. package/src/core/types/text.ts +0 -4
  940. package/src/core/utils/arrow/arrow.tsx +0 -123
  941. package/src/core/utils/arrow/cmds.ts +0 -91
  942. package/src/core/utils/arrow/index.ts +0 -1
  943. package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
  944. package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
  945. package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -100
  946. package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
  947. package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
  948. package/src/core/utils/boundaryElement/index.ts +0 -3
  949. package/src/core/utils/boundaryElement/types.ts +0 -7
  950. package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
  951. package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -21
  952. package/src/core/utils/conditionalWrapper/index.ts +0 -1
  953. package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
  954. package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
  955. package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
  956. package/src/core/utils/elementQuery/helpers.ts +0 -27
  957. package/src/core/utils/elementQuery/index.ts +0 -1
  958. package/src/core/utils/errorBoundary.tsx +0 -48
  959. package/src/core/utils/getElementRef.ts +0 -26
  960. package/src/core/utils/index.ts +0 -9
  961. package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
  962. package/src/core/utils/layer/__workshop__/index.ts +0 -24
  963. package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
  964. package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
  965. package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
  966. package/src/core/utils/layer/getLayerContext.test.ts +0 -30
  967. package/src/core/utils/layer/getLayerContext.ts +0 -21
  968. package/src/core/utils/layer/index.ts +0 -4
  969. package/src/core/utils/layer/layer.test.tsx +0 -108
  970. package/src/core/utils/layer/layer.tsx +0 -98
  971. package/src/core/utils/layer/layerContext.ts +0 -7
  972. package/src/core/utils/layer/layerProvider.tsx +0 -111
  973. package/src/core/utils/layer/types.ts +0 -9
  974. package/src/core/utils/layer/useLayer.ts +0 -26
  975. package/src/core/utils/portal/__workshop__/index.ts +0 -14
  976. package/src/core/utils/portal/__workshop__/named.tsx +0 -63
  977. package/src/core/utils/portal/index.ts +0 -4
  978. package/src/core/utils/portal/portal.test.tsx +0 -103
  979. package/src/core/utils/portal/portal.ts +0 -32
  980. package/src/core/utils/portal/portalContext.ts +0 -31
  981. package/src/core/utils/portal/portalProvider.tsx +0 -47
  982. package/src/core/utils/portal/types.ts +0 -9
  983. package/src/core/utils/portal/usePortal.ts +0 -25
  984. package/src/core/utils/spanWithTextOverflow.tsx +0 -10
  985. package/src/core/utils/srOnly/index.ts +0 -1
  986. package/src/core/utils/srOnly/srOnly.tsx +0 -36
  987. package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
  988. package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
  989. package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
  990. package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
  991. package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
  992. package/src/core/utils/virtualList/index.ts +0 -1
  993. package/src/core/utils/virtualList/virtualList.tsx +0 -200
  994. package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
  995. package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
  996. package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -22
  997. package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -55
  998. package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -60
  999. package/src/theme/build/_deprecated/color/color.test.ts +0 -63
  1000. package/src/theme/build/_deprecated/color/defaults.ts +0 -390
  1001. package/src/theme/build/_deprecated/color/factory.ts +0 -142
  1002. package/src/theme/build/_deprecated/color/index.ts +0 -1
  1003. package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -81
  1004. package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -54
  1005. package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -20
  1006. package/src/theme/build/buildColorTheme.test.ts +0 -183
  1007. package/src/theme/build/buildColorTheme.ts +0 -499
  1008. package/src/theme/build/buildTheme.test.ts +0 -87
  1009. package/src/theme/build/buildTheme.ts +0 -36
  1010. package/src/theme/build/colorToken/colorToken.ts +0 -19
  1011. package/src/theme/build/colorToken/compileColorToken.ts +0 -21
  1012. package/src/theme/build/colorToken/index.ts +0 -2
  1013. package/src/theme/build/colorToken/types.ts +0 -6
  1014. package/src/theme/build/index.ts +0 -3
  1015. package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
  1016. package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
  1017. package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
  1018. package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
  1019. package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -68
  1020. package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
  1021. package/src/theme/build/lib/color-fns/convert.ts +0 -150
  1022. package/src/theme/build/lib/color-fns/index.ts +0 -6
  1023. package/src/theme/build/lib/color-fns/parse.ts +0 -60
  1024. package/src/theme/build/lib/color-fns/rgba.ts +0 -10
  1025. package/src/theme/build/lib/color-fns/types.ts +0 -28
  1026. package/src/theme/build/lib/isRecord.ts +0 -3
  1027. package/src/theme/build/lib/lazy.ts +0 -30
  1028. package/src/theme/build/lib/utils.ts +0 -19
  1029. package/src/theme/build/merge.ts +0 -26
  1030. package/src/theme/build/mixThemeColor.test.ts +0 -21
  1031. package/src/theme/build/mixThemeColor.ts +0 -53
  1032. package/src/theme/build/renderColorTheme.ts +0 -532
  1033. package/src/theme/build/renderColorValue.ts +0 -85
  1034. package/src/theme/build/resolveColorTokens.ts +0 -268
  1035. package/src/theme/build/theme.test.ts +0 -27
  1036. package/src/theme/config/helpers.ts +0 -55
  1037. package/src/theme/config/index.ts +0 -4
  1038. package/src/theme/config/system.ts +0 -115
  1039. package/src/theme/config/tokens/color/index.ts +0 -1
  1040. package/src/theme/config/tokens/color/types.ts +0 -133
  1041. package/src/theme/config/tokens/index.ts +0 -4
  1042. package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
  1043. package/src/theme/config/tokens/parseTokenKey.ts +0 -67
  1044. package/src/theme/config/tokens/parseTokenValue.test.ts +0 -42
  1045. package/src/theme/config/tokens/parseTokenValue.ts +0 -133
  1046. package/src/theme/config/tokens/types.ts +0 -53
  1047. package/src/theme/config/types.ts +0 -46
  1048. package/src/theme/defaults/colorPalette.ts +0 -5
  1049. package/src/theme/defaults/colorTokens.ts +0 -648
  1050. package/src/theme/defaults/config.ts +0 -84
  1051. package/src/theme/defaults/fonts.ts +0 -227
  1052. package/src/theme/getScopedTheme.ts +0 -98
  1053. package/src/theme/index.ts +0 -5
  1054. package/src/theme/system/avatar.ts +0 -14
  1055. package/src/theme/system/color/_constants.ts +0 -45
  1056. package/src/theme/system/color/_helpers.ts +0 -24
  1057. package/src/theme/system/color/_system.ts +0 -40
  1058. package/src/theme/system/color/avatar.ts +0 -15
  1059. package/src/theme/system/color/badge.ts +0 -16
  1060. package/src/theme/system/color/button.ts +0 -17
  1061. package/src/theme/system/color/color.ts +0 -34
  1062. package/src/theme/system/color/index.ts +0 -13
  1063. package/src/theme/system/color/input.ts +0 -25
  1064. package/src/theme/system/color/kbd.ts +0 -8
  1065. package/src/theme/system/color/selectable.ts +0 -12
  1066. package/src/theme/system/color/shadow.ts +0 -7
  1067. package/src/theme/system/color/state.ts +0 -43
  1068. package/src/theme/system/color/syntax.ts +0 -41
  1069. package/src/theme/system/css.ts +0 -14
  1070. package/src/theme/system/focusRing.ts +0 -7
  1071. package/src/theme/system/font.ts +0 -52
  1072. package/src/theme/system/index.ts +0 -11
  1073. package/src/theme/system/input.ts +0 -33
  1074. package/src/theme/system/layer.ts +0 -8
  1075. package/src/theme/system/shadow.ts +0 -19
  1076. package/src/theme/system/styles.ts +0 -13
  1077. package/src/theme/system/theme.ts +0 -138
  1078. package/src/theme/system/v0/avatar.ts +0 -10
  1079. package/src/theme/system/v0/color/_generic.ts +0 -35
  1080. package/src/theme/system/v0/color/_system.ts +0 -17
  1081. package/src/theme/system/v0/color/base.ts +0 -21
  1082. package/src/theme/system/v0/color/button.ts +0 -42
  1083. package/src/theme/system/v0/color/card.ts +0 -19
  1084. package/src/theme/system/v0/color/color.ts +0 -40
  1085. package/src/theme/system/v0/color/index.ts +0 -11
  1086. package/src/theme/system/v0/color/input.ts +0 -34
  1087. package/src/theme/system/v0/color/muted.ts +0 -26
  1088. package/src/theme/system/v0/color/selectable.ts +0 -31
  1089. package/src/theme/system/v0/color/solid.ts +0 -26
  1090. package/src/theme/system/v0/color/spot.ts +0 -13
  1091. package/src/theme/system/v0/index.ts +0 -3
  1092. package/src/theme/system/v0/input.ts +0 -23
  1093. package/src/theme/versioning/getTheme_v2.ts +0 -57
  1094. package/src/theme/versioning/index.ts +0 -5
  1095. package/src/theme/versioning/is_v0.ts +0 -6
  1096. package/src/theme/versioning/is_v2.ts +0 -6
  1097. package/src/theme/versioning/themeColor_v0_v2.ts +0 -243
  1098. package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
  1099. package/src/theme/versioning/v0_v2.ts +0 -94
  1100. package/src/theme/versioning/v2_v0.ts +0 -135
@@ -0,0 +1,65 @@
1
+ //#region src/ui/presence.ts
2
+ /**
3
+ * Presence colour: ONE slot per person, the same everywhere they appear (field border, avatar ring, canvas pill, caret flag,
4
+ * History change bars). Slots are the `--kit-presence-1…8` tokens (D56); text on a presence fill is `--kit-presence-on`.
5
+ * Known people keep their earlier colours: priya → 1, daniel → 2, sujay → 3.
6
+ *
7
+ * D61: everyone else gets a slot at join, in join order, from the slots still free (all 8, not 5), so a real team rarely
8
+ * shares a colour; once all 8 are taken the least recently assigned slot is reused. Register the workspace roster with
9
+ * `registerPresenceRoster`. Someone not on the roster hashes stably into 4…8.
10
+ * AI agents never take a person's slot: they use `--kit-presence-agent` (`AGENT_PRESENCE`).
11
+ *
12
+ * src/index.css declares the tokens app-wide (light and dark), so presenceColor() needs no fallback.
13
+ */
14
+ var KNOWN = {
15
+ priya: 1,
16
+ daniel: 2,
17
+ sujay: 3
18
+ };
19
+ var SLOTS = 8;
20
+ /** D63: AI agents in History (change bars, outlines, tags): neutral violet-grey, never a person's slot. */
21
+ var AGENT_PRESENCE = "var(--kit-presence-agent)";
22
+ var keyOf = (person) => person.trim().toLowerCase().replace(/^u_/, "").split(/[\s@._-]+/)[0] ?? "";
23
+ /** roster assignments: key (first name, id or email head) → slot */
24
+ var assigned = /* @__PURE__ */ new Map();
25
+ /**
26
+ * Assign slots to a workspace's members in join order (stable: the same roster always gives the same colours).
27
+ * Each member is then found by id, full name or email.
28
+ */
29
+ function registerPresenceRoster(members) {
30
+ assigned.clear();
31
+ const order = [...members].sort((a, b) => a.joinedAt && b.joinedAt ? a.joinedAt.localeCompare(b.joinedAt) : 0);
32
+ const lastUse = /* @__PURE__ */ new Map();
33
+ Object.values(KNOWN).forEach((s, i) => lastUse.set(s, i));
34
+ let tick = 10;
35
+ for (const m of order) {
36
+ const keys = [
37
+ m.id.toLowerCase(),
38
+ keyOf(m.name),
39
+ m.email ? keyOf(m.email) : ""
40
+ ].filter(Boolean);
41
+ let slot = keys.map((k) => KNOWN[k]).find(Boolean);
42
+ if (!slot) slot = Array.from({ length: SLOTS }, (_, i) => i + 1).filter((s) => !lastUse.has(s))[0] ?? [...lastUse.entries()].sort((a, b) => a[1] - b[1])[0][0];
43
+ lastUse.set(slot, tick++);
44
+ for (const k of keys) assigned.set(k, slot);
45
+ }
46
+ }
47
+ /** Accepts a person id ("u_priya", "priya"), a full name ("Priya Nair") or an email; returns the slot 1…8. */
48
+ function presenceSlot(person) {
49
+ const whole = person.trim().toLowerCase();
50
+ const key = keyOf(person);
51
+ if (KNOWN[key]) return KNOWN[key];
52
+ const hit = assigned.get(whole) ?? assigned.get(key);
53
+ if (hit) return hit;
54
+ let h = 0;
55
+ for (let i = 0; i < key.length; i++) h = h * 31 + key.charCodeAt(i) >>> 0;
56
+ return 4 + h % 5;
57
+ }
58
+ /** `var(--kit-presence-n)` for that person: use as a CSS colour (border, ring, background with presence-on text). */
59
+ function presenceColor(person) {
60
+ return `var(--kit-presence-${presenceSlot(person)})`;
61
+ }
62
+ //#endregion
63
+ export { AGENT_PRESENCE, presenceColor, presenceSlot, registerPresenceRoster };
64
+
65
+ //# sourceMappingURL=presence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence.js","names":[],"sources":["../../src/ui/presence.ts"],"sourcesContent":["/**\n * Presence colour: ONE slot per person, the same everywhere they appear (field border, avatar ring, canvas pill, caret flag,\n * History change bars). Slots are the `--kit-presence-1…8` tokens (D56); text on a presence fill is `--kit-presence-on`.\n * Known people keep their earlier colours: priya → 1, daniel → 2, sujay → 3.\n *\n * D61: everyone else gets a slot at join, in join order, from the slots still free (all 8, not 5), so a real team rarely\n * shares a colour; once all 8 are taken the least recently assigned slot is reused. Register the workspace roster with\n * `registerPresenceRoster`. Someone not on the roster hashes stably into 4…8.\n * AI agents never take a person's slot: they use `--kit-presence-agent` (`AGENT_PRESENCE`).\n *\n * src/index.css declares the tokens app-wide (light and dark), so presenceColor() needs no fallback.\n */\nconst KNOWN: Record<string, number> = { priya: 1, daniel: 2, sujay: 3 };\nconst SLOTS = 8;\n\n/** D63: AI agents in History (change bars, outlines, tags): neutral violet-grey, never a person's slot. */\nexport const AGENT_PRESENCE = \"var(--kit-presence-agent)\";\n\nconst keyOf = (person: string) => person.trim().toLowerCase().replace(/^u_/, \"\").split(/[\\s@._-]+/)[0] ?? \"\";\n/** roster assignments: key (first name, id or email head) → slot */\nconst assigned = new Map<string, number>();\n\n/**\n * Assign slots to a workspace's members in join order (stable: the same roster always gives the same colours).\n * Each member is then found by id, full name or email.\n */\nexport function registerPresenceRoster(members: { id: string; name: string; email?: string; joinedAt?: string }[]) {\n assigned.clear();\n const order = [...members].sort((a, b) => (a.joinedAt && b.joinedAt ? a.joinedAt.localeCompare(b.joinedAt) : 0));\n const lastUse = new Map<number, number>(); // slot → assignment tick\n Object.values(KNOWN).forEach((s, i) => lastUse.set(s, i));\n let tick = 10;\n for (const m of order) {\n const keys = [m.id.toLowerCase(), keyOf(m.name), m.email ? keyOf(m.email) : \"\"].filter(Boolean);\n const known = keys.map((k) => KNOWN[k]).find(Boolean);\n let slot = known;\n if (!slot) {\n const free = Array.from({ length: SLOTS }, (_, i) => i + 1).filter((s) => !lastUse.has(s));\n // all 8 taken: reuse the least recently assigned slot\n slot = free[0] ?? [...lastUse.entries()].sort((a, b) => a[1] - b[1])[0][0];\n }\n lastUse.set(slot, tick++);\n for (const k of keys) assigned.set(k, slot);\n }\n}\n\n/** Accepts a person id (\"u_priya\", \"priya\"), a full name (\"Priya Nair\") or an email; returns the slot 1…8. */\nexport function presenceSlot(person: string): number {\n const whole = person.trim().toLowerCase();\n const key = keyOf(person);\n if (KNOWN[key]) return KNOWN[key];\n const hit = assigned.get(whole) ?? assigned.get(key);\n if (hit) return hit;\n let h = 0;\n for (let i = 0; i < key.length; i++) h = (h * 31 + key.charCodeAt(i)) >>> 0;\n return 4 + (h % (SLOTS - 3));\n}\n\n/** `var(--kit-presence-n)` for that person: use as a CSS colour (border, ring, background with presence-on text). */\nexport function presenceColor(person: string): string {\n const n = presenceSlot(person);\n return `var(--kit-presence-${n})`;\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,IAAM,QAAgC;CAAE,OAAO;CAAG,QAAQ;CAAG,OAAO;AAAE;AACtE,IAAM,QAAQ;;AAGd,IAAa,iBAAiB;AAE9B,IAAM,SAAS,WAAmB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,MAAM;;AAE1G,IAAM,2BAAW,IAAI,IAAoB;;;;;AAMzC,SAAgB,uBAAuB,SAA4E;CACjH,SAAS,MAAM;CACf,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,MAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,cAAc,EAAE,QAAQ,IAAI,CAAE;CAC/G,MAAM,0BAAU,IAAI,IAAoB;CACxC,OAAO,OAAO,KAAK,CAAC,CAAC,SAAS,GAAG,MAAM,QAAQ,IAAI,GAAG,CAAC,CAAC;CACxD,IAAI,OAAO;CACX,KAAK,MAAM,KAAK,OAAO;EACrB,MAAM,OAAO;GAAC,EAAE,GAAG,YAAY;GAAG,MAAM,EAAE,IAAI;GAAG,EAAE,QAAQ,MAAM,EAAE,KAAK,IAAI;EAAE,CAAC,CAAC,OAAO,OAAO;EAE9F,IAAI,OADU,KAAK,KAAK,MAAM,MAAM,EAAE,CAAC,CAAC,KAAK,OAClC;EACX,IAAI,CAAC,MAGH,OAFa,MAAM,KAAK,EAAE,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,QAAQ,IAAI,CAAC,CAEjF,CAAA,CAAK,MAAM,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;EAE1E,QAAQ,IAAI,MAAM,MAAM;EACxB,KAAK,MAAM,KAAK,MAAM,SAAS,IAAI,GAAG,IAAI;CAC5C;AACF;;AAGA,SAAgB,aAAa,QAAwB;CACnD,MAAM,QAAQ,OAAO,KAAK,CAAC,CAAC,YAAY;CACxC,MAAM,MAAM,MAAM,MAAM;CACxB,IAAI,MAAM,MAAM,OAAO,MAAM;CAC7B,MAAM,MAAM,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG;CACnD,IAAI,KAAK,OAAO;CAChB,IAAI,IAAI;CACR,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,IAAK,IAAI,KAAK,IAAI,WAAW,CAAC,MAAO;CAC1E,OAAO,IAAK,IAAK;AACnB;;AAGA,SAAgB,cAAc,QAAwB;CAEpD,OAAO,sBADG,aAAa,MACM,EAAE;AACjC"}
@@ -0,0 +1,66 @@
1
+ import * as React from "react";
2
+ export declare const SEARCH_THRESHOLD = 7;
3
+ export type SelectOption = {
4
+ value: string;
5
+ label: React.ReactNode;
6
+ /** leading visual (16px icon); ignored when `avatar` is set */
7
+ icon?: React.ReactNode;
8
+ /** a person: renders a 20px avatar before the label */
9
+ avatar?: {
10
+ name: string;
11
+ src?: string;
12
+ };
13
+ /** secondary line under the label (e.g. an email) — searchable */
14
+ description?: string;
15
+ /** muted right-aligned text (e.g. "UTC+1", a count) — searchable */
16
+ meta?: string;
17
+ /** extra words that should match (aliases, ids) */
18
+ keywords?: string[];
19
+ /** group heading; options with the same group render together, in first-seen order */
20
+ group?: string;
21
+ disabled?: boolean;
22
+ };
23
+ /** Plain text of a React node — lets `label` stay a ReactNode while still being searchable. */
24
+ export declare function nodeText(node: React.ReactNode): string;
25
+ /**
26
+ * Score how well `query` matches `text` (0 = no match). Every whitespace-separated term must match.
27
+ * Prefix > word start > substring > in-order characters ("nyk" → "New York").
28
+ */
29
+ export declare function matchScore(text: string, query: string, { fuzzy }?: {
30
+ fuzzy?: boolean;
31
+ }): number;
32
+ /** Character indexes of `text` to emphasise for `query` (substring per term, else in-order characters). */
33
+ export declare function matchPositions(text: string, query: string): Set<number>;
34
+ /** Renders `text` with the characters that match `query` emphasised. */
35
+ export declare function Highlight({ text, query }: {
36
+ text: string;
37
+ query: string;
38
+ }): import("react/jsx-runtime").JSX.Element;
39
+ /** Filter + rank options for `query` (stable within equal scores). */
40
+ export declare function filterOptions<T extends SelectOption>(options: T[], query: string): T[];
41
+ declare function triggerClass(variant: "filled" | "outline" | "ghost", size: "sm" | "md" | "lg"): string;
42
+ /** The Select trigger look, for controls that open their own picker but must read as a Select (D57: one look per job). */
43
+ export declare const selectTriggerClass: typeof triggerClass;
44
+ export interface SelectProps {
45
+ id?: string;
46
+ "aria-label"?: string;
47
+ value?: string;
48
+ /** uncontrolled starting value (leave `value` undefined) */
49
+ defaultValue?: string;
50
+ onValueChange?: (v: string) => void;
51
+ options: SelectOption[];
52
+ placeholder?: string;
53
+ size?: "sm" | "md" | "lg";
54
+ className?: string;
55
+ triggerClassName?: string;
56
+ variant?: "filled" | "outline" | "ghost";
57
+ align?: "start" | "center" | "end";
58
+ disabled?: boolean;
59
+ /** "auto" (default): search appears when there are more than 7 options. */
60
+ searchable?: boolean | "auto";
61
+ searchPlaceholder?: string;
62
+ /** popover width for the searchable menu (defaults to the trigger, at least 240px) */
63
+ menuClassName?: string;
64
+ }
65
+ export declare function Select(props: SelectProps): import("react/jsx-runtime").JSX.Element;
66
+ export {};
@@ -0,0 +1,407 @@
1
+ import { cn } from "../lib/cn.js";
2
+ import { useFieldId, useFieldLabelledBy, useLabelFor } from "./field-context.js";
3
+ import { KIT_SCOPE } from "./surfaces.js";
4
+ import { Avatar } from "./display.js";
5
+ import * as React from "react";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ import { IconCheck, IconChevronDown, IconSearch } from "@tabler/icons-react";
8
+ import { Select as Select$1 } from "@base-ui/react/select";
9
+ import { Combobox } from "@base-ui/react/combobox";
10
+ //#region src/ui/select.tsx
11
+ var SEARCH_THRESHOLD = 7;
12
+ /** Plain text of a React node — lets `label` stay a ReactNode while still being searchable. */
13
+ function nodeText(node) {
14
+ if (node == null || typeof node === "boolean") return "";
15
+ if (typeof node === "string" || typeof node === "number") return String(node);
16
+ if (Array.isArray(node)) return node.map(nodeText).join("");
17
+ if (React.isValidElement(node)) return nodeText(node.props.children);
18
+ return "";
19
+ }
20
+ var SEP = /[\s\-_/.(@+]/;
21
+ var norm = (s) => s.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase();
22
+ /**
23
+ * Score how well `query` matches `text` (0 = no match). Every whitespace-separated term must match.
24
+ * Prefix > word start > substring > in-order characters ("nyk" → "New York").
25
+ */
26
+ function matchScore(text, query, { fuzzy = true } = {}) {
27
+ const t = norm(text);
28
+ const terms = norm(query).trim().split(/\s+/).filter(Boolean);
29
+ if (!terms.length) return 1;
30
+ let score = 0;
31
+ for (const term of terms) {
32
+ const at = t.indexOf(term);
33
+ if (at === 0) score += 4;
34
+ else if (at > 0) score += SEP.test(t[at - 1]) ? 3 : 2;
35
+ else if (fuzzy && fuzzyPositions(t, term)) score += 1;
36
+ else return 0;
37
+ }
38
+ return score;
39
+ }
40
+ /** In-order characters of `term` in `t`, tight enough to be intended ("nyk" → New York, not across a paragraph). */
41
+ function fuzzyPositions(t, term) {
42
+ if (term.length < 2) return null;
43
+ for (let start = t.indexOf(term[0]); start >= 0; start = t.indexOf(term[0], start + 1)) {
44
+ if (start > 0 && !SEP.test(t[start - 1])) continue;
45
+ const out = [start];
46
+ let i = start + 1;
47
+ for (const ch of term.slice(1)) {
48
+ i = t.indexOf(ch, i);
49
+ if (i < 0) break;
50
+ out.push(i++);
51
+ }
52
+ if (out.length === term.length && out[out.length - 1] - start + 1 <= term.length * 3) return out;
53
+ }
54
+ return null;
55
+ }
56
+ /** Character indexes of `text` to emphasise for `query` (substring per term, else in-order characters). */
57
+ function matchPositions(text, query) {
58
+ const t = norm(text);
59
+ const hits = /* @__PURE__ */ new Set();
60
+ for (const term of norm(query).trim().split(/\s+/).filter(Boolean)) {
61
+ const at = t.indexOf(term);
62
+ if (at >= 0) for (let k = 0; k < term.length; k++) hits.add(at + k);
63
+ else fuzzyPositions(t, term)?.forEach((k) => hits.add(k));
64
+ }
65
+ return hits;
66
+ }
67
+ /** Renders `text` with the characters that match `query` emphasised. */
68
+ function Highlight({ text, query }) {
69
+ if (!query.trim()) return /* @__PURE__ */ jsx(Fragment, { children: text });
70
+ if (norm(text).length !== text.length) return /* @__PURE__ */ jsx(Fragment, { children: text });
71
+ const hits = matchPositions(text, query);
72
+ if (!hits.size) return /* @__PURE__ */ jsx(Fragment, { children: text });
73
+ const parts = [];
74
+ let run = "";
75
+ let on = false;
76
+ const flush = (k) => {
77
+ if (!run) return;
78
+ parts.push(on ? /* @__PURE__ */ jsx("mark", {
79
+ className: "rounded-[2px] bg-transparent font-semibold text-kit-fg",
80
+ children: run
81
+ }, k) : run);
82
+ run = "";
83
+ };
84
+ for (let k = 0; k < text.length; k++) {
85
+ const h = hits.has(k);
86
+ if (h !== on) {
87
+ flush(k);
88
+ on = h;
89
+ }
90
+ run += text[k];
91
+ }
92
+ flush(text.length);
93
+ return /* @__PURE__ */ jsx(Fragment, { children: parts });
94
+ }
95
+ /** Filter + rank options for `query` (stable within equal scores). */
96
+ function filterOptions(options, query) {
97
+ if (!query.trim()) return options;
98
+ return options.map((o, i) => {
99
+ const label = nodeText(o.label);
100
+ const main = matchScore(label, query);
101
+ const rest = matchScore([
102
+ label,
103
+ o.description,
104
+ o.meta,
105
+ ...o.keywords ?? []
106
+ ].filter(Boolean).join(" "), query, { fuzzy: false });
107
+ const exact = o.keywords?.some((k) => norm(k) === norm(query.trim())) ? 9 : 0;
108
+ return {
109
+ o,
110
+ i,
111
+ s: Math.max(main ? main * 2 + 1 : rest, exact),
112
+ len: label.length
113
+ };
114
+ }).filter((x) => x.s > 0).sort((a, b) => b.s - a.s || a.len - b.len || a.i - b.i).map((x) => x.o);
115
+ }
116
+ function grouped(options) {
117
+ if (!options.some((o) => o.group)) return [{ items: options }];
118
+ const out = [];
119
+ for (const o of options) {
120
+ const g = out.find((x) => x.group === o.group);
121
+ if (g) g.items.push(o);
122
+ else out.push({
123
+ group: o.group,
124
+ items: [o]
125
+ });
126
+ }
127
+ return out;
128
+ }
129
+ function triggerClass(variant, size) {
130
+ return cn("group inline-flex w-full min-w-0 items-center justify-between gap-2 rounded-kit-md border px-2.5 text-left text-kit-fg transition-colors data-[placeholder]:text-kit-fg-3 disabled:cursor-not-allowed disabled:opacity-60 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-60", variant === "filled" && "border-kit-field-border bg-kit-field-bg shadow-kit-field hover:border-kit-field-border-hover", variant === "outline" && "border-kit-line bg-kit-field-bg shadow-kit-xs hover:border-kit-line-strong", variant === "ghost" && "w-auto border-transparent bg-transparent px-2 text-kit-fg-2 hover:bg-kit-hover hover:text-kit-fg", size === "sm" ? "h-7 text-kit-sm" : size === "lg" ? "h-9 text-kit-base" : "h-8 text-kit-sm");
131
+ }
132
+ /** The Select trigger look, for controls that open their own picker but must read as a Select (D57: one look per job). */
133
+ var selectTriggerClass = triggerClass;
134
+ var itemClass = cn("relative flex cursor-pointer select-none items-center gap-2 rounded-kit-md py-1.5 pl-2 pr-8 text-kit-sm text-kit-fg outline-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-kit-fg-2", "data-[disabled]:pointer-events-none data-[disabled]:opacity-40 data-[highlighted]:bg-kit-hover");
135
+ var groupHeading = "px-2 pb-1 pt-2 text-kit-xs font-medium text-kit-fg-3";
136
+ function Lead({ o }) {
137
+ if (o.avatar) return /* @__PURE__ */ jsx(Avatar, {
138
+ name: o.avatar.name,
139
+ src: o.avatar.src,
140
+ size: 20,
141
+ decorative: true
142
+ });
143
+ return o.icon ? /* @__PURE__ */ jsx(Fragment, { children: o.icon }) : null;
144
+ }
145
+ function Select(props) {
146
+ const { searchable = "auto", options } = props;
147
+ return searchable === true || searchable === "auto" && options.length > 7 ? /* @__PURE__ */ jsx(SearchSelect, { ...props }) : /* @__PURE__ */ jsx(PlainSelect, { ...props });
148
+ }
149
+ function useTriggerA11y(id, ariaLabel, placeholder) {
150
+ const fieldId = useFieldId();
151
+ const labelledBy = useFieldLabelledBy();
152
+ const labelFor = useLabelFor(id ?? fieldId);
153
+ return {
154
+ id: id ?? fieldId,
155
+ "aria-label": ariaLabel ?? (fieldId || labelledBy || labelFor ? void 0 : typeof placeholder === "string" && placeholder !== "Select…" ? placeholder : void 0),
156
+ "aria-labelledby": ariaLabel ? void 0 : labelFor ?? (id || fieldId ? void 0 : labelledBy)
157
+ };
158
+ }
159
+ /** Value that is controlled when `value` is passed and internal otherwise. */
160
+ function useSelectValue(value, defaultValue, onValueChange) {
161
+ const [inner, setInner] = React.useState(defaultValue);
162
+ const controlled = value !== void 0;
163
+ const current = controlled ? value : inner;
164
+ const set = (v) => {
165
+ if (!controlled) setInner(v);
166
+ onValueChange?.(v);
167
+ };
168
+ return [current, set];
169
+ }
170
+ function PlainSelect({ value, defaultValue, onValueChange, options, placeholder = "Select…", size = "md", className, triggerClassName, variant = "filled", align = "start", disabled, id, "aria-label": ariaLabel }) {
171
+ const a11y = useTriggerA11y(id, ariaLabel, placeholder);
172
+ const [current, setCurrent] = useSelectValue(value, defaultValue, onValueChange);
173
+ const [open, setOpen] = React.useState(false);
174
+ const items = React.useMemo(() => options.map((o) => ({
175
+ value: o.value,
176
+ label: o.label
177
+ })), [options]);
178
+ const renderItem = (o) => /* @__PURE__ */ jsxs(Select$1.Item, {
179
+ value: o.value,
180
+ disabled: o.disabled,
181
+ className: itemClass,
182
+ children: [
183
+ /* @__PURE__ */ jsx(Lead, { o }),
184
+ /* @__PURE__ */ jsxs("div", {
185
+ className: "min-w-0 flex-1",
186
+ children: [/* @__PURE__ */ jsx(Select$1.ItemText, { children: o.label }), o.description ? /* @__PURE__ */ jsx("div", {
187
+ className: "text-kit-xs text-kit-fg-3",
188
+ children: o.description
189
+ }) : null]
190
+ }),
191
+ o.meta ? /* @__PURE__ */ jsx("span", {
192
+ className: "shrink-0 text-kit-xs tabular-nums text-kit-fg-3",
193
+ children: o.meta
194
+ }) : null,
195
+ /* @__PURE__ */ jsx(Select$1.ItemIndicator, {
196
+ className: "absolute right-2",
197
+ children: /* @__PURE__ */ jsx(IconCheck, { className: "size-4 text-kit-fg" })
198
+ })
199
+ ]
200
+ }, o.value);
201
+ return /* @__PURE__ */ jsxs(Select$1.Root, {
202
+ items,
203
+ value: current ?? null,
204
+ onValueChange: (v) => v != null && setCurrent(v),
205
+ onOpenChange: setOpen,
206
+ disabled,
207
+ children: [/* @__PURE__ */ jsxs(Select$1.Trigger, {
208
+ ...a11y,
209
+ "data-state": open ? "open" : "closed",
210
+ className: cn(triggerClass(variant, size), triggerClassName, className),
211
+ children: [/* @__PURE__ */ jsx("span", {
212
+ className: "flex min-w-0 items-center gap-2 truncate [&_svg]:size-4 [&_svg]:text-kit-fg-3",
213
+ children: /* @__PURE__ */ jsx(Select$1.Value, { placeholder })
214
+ }), /* @__PURE__ */ jsx(Select$1.Icon, { children: /* @__PURE__ */ jsx(IconChevronDown, { className: "size-3.5 text-kit-fg-3 transition-transform group-data-[popup-open]:rotate-180" }) })]
215
+ }), /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(Select$1.Positioner, {
216
+ align,
217
+ sideOffset: 6,
218
+ alignItemWithTrigger: false,
219
+ className: "z-[var(--kit-z-menu,80)]",
220
+ "data-floating-layer": "",
221
+ ...KIT_SCOPE,
222
+ children: /* @__PURE__ */ jsx(Select$1.Popup, {
223
+ className: "glass max-h-[min(360px,var(--available-height))] min-w-[var(--anchor-width)] overflow-y-auto rounded-kit-lg border p-1 data-[open]:animate-kit-pop-in",
224
+ children: /* @__PURE__ */ jsx(Select$1.List, { children: grouped(options).map((g, gi) => g.group ? /* @__PURE__ */ jsxs(Select$1.Group, { children: [/* @__PURE__ */ jsx(Select$1.GroupLabel, {
225
+ className: groupHeading,
226
+ children: g.group
227
+ }), g.items.map(renderItem)] }, g.group + gi) : g.items.map(renderItem)) })
228
+ })
229
+ }) })]
230
+ });
231
+ }
232
+ /** V2 scrollIntoContainer (block "nearest", 4px margin): scroll `el` into view inside `list` ONLY, never the shell behind it.
233
+ * Rects are transformed while the menu pops in (scaled), so measure in layout pixels. */
234
+ function revealInList(list, el, margin = 4) {
235
+ if (!el) return;
236
+ const br = list.getBoundingClientRect();
237
+ const er = el.getBoundingClientRect();
238
+ const k = list.offsetHeight ? br.height / list.offsetHeight || 1 : 1;
239
+ const top = (er.top - br.top) / k + list.scrollTop;
240
+ const h = er.height / k;
241
+ let next = list.scrollTop;
242
+ if (top < list.scrollTop) next = top - margin;
243
+ else if (top + h > list.scrollTop + list.clientHeight) next = top + h - list.clientHeight + margin;
244
+ next = Math.max(0, Math.min(next, list.scrollHeight - list.clientHeight));
245
+ if (Math.abs(next - list.scrollTop) > .5) list.scrollTop = next;
246
+ }
247
+ function SearchSelect({ value, defaultValue, onValueChange, options, placeholder = "Select…", size = "md", className, triggerClassName, variant = "filled", align = "start", disabled, id, "aria-label": ariaLabel, searchPlaceholder = "Search…", menuClassName }) {
248
+ const a11y = useTriggerA11y(id, ariaLabel, placeholder);
249
+ const [current, setCurrent] = useSelectValue(value, defaultValue, onValueChange);
250
+ const [open, setOpen] = React.useState(false);
251
+ const [query, setQuery] = React.useState("");
252
+ const selected = options.find((o) => o.value === current);
253
+ const shown = React.useMemo(() => filterOptions(options, query), [options, query]);
254
+ const shownValues = React.useMemo(() => shown.map((o) => o.value), [shown]);
255
+ const listRef = React.useRef(null);
256
+ React.useEffect(() => {
257
+ if (!open) return;
258
+ let raf = 0;
259
+ const reveal = (tries) => {
260
+ const list = listRef.current;
261
+ if (!(list && list.scrollHeight > list.clientHeight) && tries > 0) return void (raf = requestAnimationFrame(() => reveal(tries - 1)));
262
+ if (list) revealInList(list, list.querySelector("[data-checked=\"true\"]"));
263
+ };
264
+ reveal(6);
265
+ return () => cancelAnimationFrame(raf);
266
+ }, [open]);
267
+ const openWith = (q) => {
268
+ setQuery(q);
269
+ setOpen(true);
270
+ };
271
+ return /* @__PURE__ */ jsxs(Combobox.Root, {
272
+ value: current ?? null,
273
+ onValueChange: (v) => {
274
+ if (v == null) return;
275
+ setCurrent(v);
276
+ setOpen(false);
277
+ },
278
+ open,
279
+ onOpenChange: (o) => o ? openWith("") : setOpen(false),
280
+ inputValue: query,
281
+ onInputValueChange: (q, details) => {
282
+ if (details.reason === "input-change" || details.reason === "input-clear") setQuery(q);
283
+ },
284
+ items: shownValues,
285
+ filter: null,
286
+ autoHighlight: true,
287
+ loopFocus: true,
288
+ disabled,
289
+ children: [/* @__PURE__ */ jsxs(Combobox.Trigger, {
290
+ ...a11y,
291
+ "data-state": open ? "open" : "closed",
292
+ "data-placeholder": selected ? void 0 : "",
293
+ className: cn(triggerClass(variant, size), triggerClassName, className),
294
+ onKeyDown: (e) => {
295
+ if (e.metaKey || e.ctrlKey || e.altKey) return;
296
+ if (e.key.length === 1 && e.key !== " ") {
297
+ e.preventDefault();
298
+ e.preventBaseUIHandler();
299
+ openWith(e.key);
300
+ } else if (e.key === "ArrowDown" || e.key === "ArrowUp") {
301
+ e.preventDefault();
302
+ e.preventBaseUIHandler();
303
+ openWith("");
304
+ }
305
+ },
306
+ children: [/* @__PURE__ */ jsx("span", {
307
+ className: "flex min-w-0 items-center gap-2 truncate [&_svg]:size-4 [&_svg]:text-kit-fg-3",
308
+ children: selected ? /* @__PURE__ */ jsxs(Fragment, { children: [selected.avatar ? /* @__PURE__ */ jsx(Avatar, {
309
+ name: selected.avatar.name,
310
+ src: selected.avatar.src,
311
+ size: 16,
312
+ decorative: true
313
+ }) : null, /* @__PURE__ */ jsx("span", {
314
+ className: "truncate",
315
+ children: selected.label
316
+ })] }) : /* @__PURE__ */ jsx("span", {
317
+ className: "truncate",
318
+ children: placeholder
319
+ })
320
+ }), /* @__PURE__ */ jsx(IconChevronDown, {
321
+ "aria-hidden": true,
322
+ className: "size-3.5 shrink-0 text-kit-fg-3 transition-transform group-data-[popup-open]:rotate-180"
323
+ })]
324
+ }), /* @__PURE__ */ jsx(Combobox.Portal, { children: /* @__PURE__ */ jsx(Combobox.Positioner, {
325
+ align,
326
+ sideOffset: 6,
327
+ collisionPadding: 12,
328
+ className: "z-[var(--kit-z-menu,80)]",
329
+ "data-floating-layer": "",
330
+ ...KIT_SCOPE,
331
+ children: /* @__PURE__ */ jsx(Combobox.Popup, {
332
+ className: cn("glass flex max-h-[min(400px,var(--available-height))] w-[max(var(--anchor-width),240px)] max-w-[min(400px,calc(100vw-24px))] flex-col overflow-hidden rounded-kit-lg border text-kit-fg outline-none data-[open]:animate-kit-pop-in", menuClassName),
333
+ children: /* @__PURE__ */ jsxs("div", {
334
+ className: "flex min-h-0 flex-1 flex-col",
335
+ children: [
336
+ /* @__PURE__ */ jsxs("div", {
337
+ className: "flex h-9 shrink-0 items-center gap-2 border-b border-kit-line-subtle px-2.5 text-kit-fg-3",
338
+ children: [/* @__PURE__ */ jsx(IconSearch, {
339
+ "aria-hidden": true,
340
+ className: "size-4 shrink-0"
341
+ }), /* @__PURE__ */ jsx(Combobox.Input, {
342
+ "aria-label": typeof a11y["aria-label"] === "string" ? a11y["aria-label"] : "Options",
343
+ placeholder: searchPlaceholder,
344
+ className: "h-full min-w-0 flex-1 bg-transparent text-kit-sm text-kit-fg outline-none placeholder:text-kit-fg-4"
345
+ })]
346
+ }),
347
+ shown.length === 0 ? /* @__PURE__ */ jsx("div", {
348
+ className: "px-2 py-6 text-center text-kit-sm text-kit-fg-3",
349
+ children: "No matches"
350
+ }) : null,
351
+ /* @__PURE__ */ jsx(Combobox.List, {
352
+ ref: listRef,
353
+ className: "min-h-0 flex-1 overflow-y-auto overscroll-contain p-1 empty:hidden",
354
+ children: grouped(shown).map((g, gi) => {
355
+ const items = g.items.map((o) => {
356
+ const text = nodeText(o.label);
357
+ const checked = o.value === current;
358
+ return /* @__PURE__ */ jsxs(Combobox.Item, {
359
+ value: o.value,
360
+ disabled: o.disabled,
361
+ "data-checked": checked,
362
+ className: itemClass,
363
+ children: [
364
+ /* @__PURE__ */ jsx(Lead, { o }),
365
+ /* @__PURE__ */ jsxs("div", {
366
+ className: "min-w-0 flex-1",
367
+ children: [/* @__PURE__ */ jsx("div", {
368
+ className: "truncate",
369
+ children: typeof o.label === "string" ? /* @__PURE__ */ jsx(Highlight, {
370
+ text,
371
+ query
372
+ }) : o.label
373
+ }), o.description ? /* @__PURE__ */ jsx("div", {
374
+ className: "truncate text-kit-xs text-kit-fg-3",
375
+ children: /* @__PURE__ */ jsx(Highlight, {
376
+ text: o.description,
377
+ query
378
+ })
379
+ }) : null]
380
+ }),
381
+ o.meta ? /* @__PURE__ */ jsx("span", {
382
+ className: "shrink-0 text-kit-xs tabular-nums text-kit-fg-3",
383
+ children: o.meta
384
+ }) : null,
385
+ checked ? /* @__PURE__ */ jsx(IconCheck, {
386
+ "aria-hidden": true,
387
+ className: "absolute right-2 size-4 !text-kit-fg"
388
+ }) : null
389
+ ]
390
+ }, o.value);
391
+ });
392
+ return g.group ? /* @__PURE__ */ jsxs(Combobox.Group, { children: [/* @__PURE__ */ jsx(Combobox.GroupLabel, {
393
+ className: groupHeading,
394
+ children: g.group
395
+ }), items] }, g.group + gi) : /* @__PURE__ */ jsx(React.Fragment, { children: items }, "g" + gi);
396
+ })
397
+ })
398
+ ]
399
+ })
400
+ })
401
+ }) })]
402
+ });
403
+ }
404
+ //#endregion
405
+ export { Highlight, SEARCH_THRESHOLD, Select, filterOptions, matchPositions, matchScore, nodeText, selectTriggerClass };
406
+
407
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","names":[],"sources":["../../src/ui/select.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\";\nimport type { BaseUIEvent } from \"@base-ui/react/types\";\nimport { IconCheck, IconChevronDown, IconSearch } from \"@tabler/icons-react\";\nimport { cn } from \"../lib/cn\";\nimport { useFieldId, useFieldLabelledBy, useLabelFor } from \"./field-context\";\nimport { Avatar } from \"./display\";\nimport { KIT_SCOPE } from \"./surfaces\";\n\n/* ── Select ─────────────────────────────────────────────────────────────────\n D34 — one Select for every dropdown. Up to SEARCH_THRESHOLD options it is a plain Base UI Select; past that (or\n with `searchable`) the same trigger opens a Base UI Combobox: sticky search at the top, type-to-filter with\n fuzzy-ish matching and highlighted matches, ↑↓ / Enter / Esc, typing on the closed trigger starts a search,\n groups, avatars / icons, secondary text, \"No matches\". Call sites don't change — long lists just get search. */\n\nexport const SEARCH_THRESHOLD = 7;\n\nexport type SelectOption = {\n value: string;\n label: React.ReactNode;\n /** leading visual (16px icon); ignored when `avatar` is set */\n icon?: React.ReactNode;\n /** a person: renders a 20px avatar before the label */\n avatar?: { name: string; src?: string };\n /** secondary line under the label (e.g. an email) — searchable */\n description?: string;\n /** muted right-aligned text (e.g. \"UTC+1\", a count) — searchable */\n meta?: string;\n /** extra words that should match (aliases, ids) */\n keywords?: string[];\n /** group heading; options with the same group render together, in first-seen order */\n group?: string;\n disabled?: boolean;\n};\n\n/* ── Matching (exported so custom pickers can share it) ─────────────────── */\n\n/** Plain text of a React node — lets `label` stay a ReactNode while still being searchable. */\nexport function nodeText(node: React.ReactNode): string {\n if (node == null || typeof node === \"boolean\") return \"\";\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(nodeText).join(\"\");\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) return nodeText(node.props.children);\n return \"\";\n}\n\nconst SEP = /[\\s\\-_/.(@+]/;\nconst norm = (s: string) => s.normalize(\"NFD\").replace(/[̀-ͯ]/g, \"\").toLowerCase();\n\n/**\n * Score how well `query` matches `text` (0 = no match). Every whitespace-separated term must match.\n * Prefix > word start > substring > in-order characters (\"nyk\" → \"New York\").\n */\nexport function matchScore(text: string, query: string, { fuzzy = true }: { fuzzy?: boolean } = {}): number {\n const t = norm(text);\n const terms = norm(query).trim().split(/\\s+/).filter(Boolean);\n if (!terms.length) return 1;\n let score = 0;\n for (const term of terms) {\n const at = t.indexOf(term);\n if (at === 0) score += 4;\n else if (at > 0) score += SEP.test(t[at - 1]) ? 3 : 2;\n else if (fuzzy && fuzzyPositions(t, term)) score += 1;\n else return 0;\n }\n return score;\n}\n\n/** In-order characters of `term` in `t`, tight enough to be intended (\"nyk\" → New York, not across a paragraph). */\nfunction fuzzyPositions(t: string, term: string): number[] | null {\n if (term.length < 2) return null;\n // start at a word boundary (\"nyk\" → New York, not \"krasnoyarsk\"); try each so a tighter run wins\n for (let start = t.indexOf(term[0]); start >= 0; start = t.indexOf(term[0], start + 1)) {\n if (start > 0 && !SEP.test(t[start - 1])) continue;\n const out = [start];\n let i = start + 1;\n for (const ch of term.slice(1)) {\n i = t.indexOf(ch, i);\n if (i < 0) break;\n out.push(i++);\n }\n if (out.length === term.length && out[out.length - 1] - start + 1 <= term.length * 3) return out;\n }\n return null;\n}\n\n/** Character indexes of `text` to emphasise for `query` (substring per term, else in-order characters). */\nexport function matchPositions(text: string, query: string): Set<number> {\n const t = norm(text);\n const hits = new Set<number>();\n for (const term of norm(query).trim().split(/\\s+/).filter(Boolean)) {\n const at = t.indexOf(term);\n if (at >= 0) for (let k = 0; k < term.length; k++) hits.add(at + k);\n else fuzzyPositions(t, term)?.forEach((k) => hits.add(k));\n }\n return hits;\n}\n\n/** Renders `text` with the characters that match `query` emphasised. */\nexport function Highlight({ text, query }: { text: string; query: string }) {\n if (!query.trim()) return <>{text}</>;\n // NFD normalisation can change length for accented text; only highlight when indexes line up.\n if (norm(text).length !== text.length) return <>{text}</>;\n const hits = matchPositions(text, query);\n if (!hits.size) return <>{text}</>;\n const parts: React.ReactNode[] = [];\n let run = \"\";\n let on = false;\n const flush = (k: number) => {\n if (!run) return;\n parts.push(on ? <mark key={k} className=\"rounded-[2px] bg-transparent font-semibold text-kit-fg\">{run}</mark> : run);\n run = \"\";\n };\n for (let k = 0; k < text.length; k++) {\n const h = hits.has(k);\n if (h !== on) {\n flush(k);\n on = h;\n }\n run += text[k];\n }\n flush(text.length);\n return <>{parts}</>;\n}\n\n/** Filter + rank options for `query` (stable within equal scores). */\nexport function filterOptions<T extends SelectOption>(options: T[], query: string): T[] {\n if (!query.trim()) return options;\n return options\n .map((o, i) => {\n const label = nodeText(o.label);\n const main = matchScore(label, query);\n // secondary text (email, region, aliases) matches on whole substrings only — fuzzy there is noise\n const rest = matchScore([label, o.description, o.meta, ...(o.keywords ?? [])].filter(Boolean).join(\" \"), query, { fuzzy: false });\n // a hit in the label outranks a hit only in secondary text\n // an alias typed exactly (\"IST\", \"PT\", a tag) is as good as a label prefix\n const exact = o.keywords?.some((k) => norm(k) === norm(query.trim())) ? 9 : 0;\n return { o, i, s: Math.max(main ? main * 2 + 1 : rest, exact), len: label.length };\n })\n .filter((x) => x.s > 0)\n .sort((a, b) => b.s - a.s || a.len - b.len || a.i - b.i)\n .map((x) => x.o);\n}\n\nfunction grouped<T extends SelectOption>(options: T[]): { group?: string; items: T[] }[] {\n if (!options.some((o) => o.group)) return [{ items: options }];\n const out: { group?: string; items: T[] }[] = [];\n for (const o of options) {\n const g = out.find((x) => x.group === o.group);\n if (g) g.items.push(o);\n else out.push({ group: o.group, items: [o] });\n }\n return out;\n}\n\n/* ── Shared look ────────────────────────────────────────────────────────── */\n\nfunction triggerClass(variant: \"filled\" | \"outline\" | \"ghost\", size: \"sm\" | \"md\" | \"lg\") {\n const h = size === \"sm\" ? \"h-7 text-kit-sm\" : size === \"lg\" ? \"h-9 text-kit-base\" : \"h-8 text-kit-sm\";\n return cn(\n \"group inline-flex w-full min-w-0 items-center justify-between gap-2 rounded-kit-md border px-2.5 text-left text-kit-fg transition-colors data-[placeholder]:text-kit-fg-3 disabled:cursor-not-allowed disabled:opacity-60 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-60\",\n variant === \"filled\" && \"border-kit-field-border bg-kit-field-bg shadow-kit-field hover:border-kit-field-border-hover\",\n variant === \"outline\" && \"border-kit-line bg-kit-field-bg shadow-kit-xs hover:border-kit-line-strong\",\n variant === \"ghost\" && \"w-auto border-transparent bg-transparent px-2 text-kit-fg-2 hover:bg-kit-hover hover:text-kit-fg\",\n h,\n );\n}\n\n/** The Select trigger look, for controls that open their own picker but must read as a Select (D57: one look per job). */\nexport const selectTriggerClass = triggerClass;\n\n/* V2 select.tsx:174-178. Base UI marks the highlighted and disabled rows of both the Select and the Combobox with\n data-highlighted / data-disabled, so the two lists share itemClass (V2's cmdk list used data-selected=true). */\nconst itemBase =\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-kit-md py-1.5 pl-2 pr-8 text-kit-sm text-kit-fg outline-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-kit-fg-2\";\nconst itemClass = cn(itemBase, \"data-[disabled]:pointer-events-none data-[disabled]:opacity-40 data-[highlighted]:bg-kit-hover\");\n\nconst groupHeading = \"px-2 pb-1 pt-2 text-kit-xs font-medium text-kit-fg-3\";\n\nfunction Lead({ o }: { o: SelectOption }) {\n if (o.avatar) return <Avatar name={o.avatar.name} src={o.avatar.src} size={20} decorative />;\n return o.icon ? <>{o.icon}</> : null;\n}\n\n/* ── Select ─────────────────────────────────────────────────────────────── */\n\nexport interface SelectProps {\n id?: string;\n \"aria-label\"?: string;\n value?: string;\n /** uncontrolled starting value (leave `value` undefined) */\n defaultValue?: string;\n onValueChange?: (v: string) => void;\n options: SelectOption[];\n placeholder?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n triggerClassName?: string;\n variant?: \"filled\" | \"outline\" | \"ghost\";\n align?: \"start\" | \"center\" | \"end\";\n disabled?: boolean;\n /** \"auto\" (default): search appears when there are more than 7 options. */\n searchable?: boolean | \"auto\";\n searchPlaceholder?: string;\n /** popover width for the searchable menu (defaults to the trigger, at least 240px) */\n menuClassName?: string;\n}\n\nexport function Select(props: SelectProps) {\n const { searchable = \"auto\", options } = props;\n const search = searchable === true || (searchable === \"auto\" && options.length > SEARCH_THRESHOLD);\n return search ? <SearchSelect {...props} /> : <PlainSelect {...props} />;\n}\n\nfunction useTriggerA11y(id: string | undefined, ariaLabel: string | undefined, placeholder: React.ReactNode) {\n const fieldId = useFieldId();\n const labelledBy = useFieldLabelledBy();\n const labelFor = useLabelFor(id ?? fieldId);\n return {\n id: id ?? fieldId,\n \"aria-label\": ariaLabel ?? (fieldId || labelledBy || labelFor ? undefined : typeof placeholder === \"string\" && placeholder !== \"Select…\" ? placeholder : undefined),\n \"aria-labelledby\": ariaLabel ? undefined : (labelFor ?? (id || fieldId ? undefined : labelledBy)),\n };\n}\n\n/** Value that is controlled when `value` is passed and internal otherwise. */\nfunction useSelectValue(value: string | undefined, defaultValue: string | undefined, onValueChange?: (v: string) => void) {\n const [inner, setInner] = React.useState(defaultValue);\n const controlled = value !== undefined;\n const current = controlled ? value : inner;\n const set = (v: string) => {\n if (!controlled) setInner(v);\n onValueChange?.(v);\n };\n return [current, set] as const;\n}\n\nfunction PlainSelect({\n value,\n defaultValue,\n onValueChange,\n options,\n placeholder = \"Select…\",\n size = \"md\",\n className,\n triggerClassName,\n variant = \"filled\",\n align = \"start\",\n disabled,\n id,\n \"aria-label\": ariaLabel,\n}: SelectProps) {\n const a11y = useTriggerA11y(id, ariaLabel, placeholder);\n const [current, setCurrent] = useSelectValue(value, defaultValue, onValueChange);\n const [open, setOpen] = React.useState(false);\n const items = React.useMemo(() => options.map((o) => ({ value: o.value, label: o.label })), [options]);\n const renderItem = (o: SelectOption) => (\n <SelectPrimitive.Item key={o.value} value={o.value} disabled={o.disabled} className={itemClass}>\n <Lead o={o} />\n <div className=\"min-w-0 flex-1\">\n <SelectPrimitive.ItemText>{o.label}</SelectPrimitive.ItemText>\n {o.description ? <div className=\"text-kit-xs text-kit-fg-3\">{o.description}</div> : null}\n </div>\n {o.meta ? <span className=\"shrink-0 text-kit-xs tabular-nums text-kit-fg-3\">{o.meta}</span> : null}\n <SelectPrimitive.ItemIndicator className=\"absolute right-2\">\n <IconCheck className=\"size-4 text-kit-fg\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n return (\n <SelectPrimitive.Root<string>\n items={items}\n value={current ?? null}\n onValueChange={(v) => v != null && setCurrent(v)}\n onOpenChange={setOpen}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n {...a11y}\n data-state={open ? \"open\" : \"closed\"}\n className={cn(triggerClass(variant, size), triggerClassName, className)}\n >\n <span className=\"flex min-w-0 items-center gap-2 truncate [&_svg]:size-4 [&_svg]:text-kit-fg-3\">\n <SelectPrimitive.Value placeholder={placeholder} />\n </span>\n <SelectPrimitive.Icon>\n <IconChevronDown className=\"size-3.5 text-kit-fg-3 transition-transform group-data-[popup-open]:rotate-180\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner align={align} sideOffset={6} alignItemWithTrigger={false} className=\"z-[var(--kit-z-menu,80)]\" data-floating-layer=\"\" {...KIT_SCOPE}>\n <SelectPrimitive.Popup\n className=\"glass max-h-[min(360px,var(--available-height))] min-w-[var(--anchor-width)] overflow-y-auto rounded-kit-lg border p-1 data-[open]:animate-kit-pop-in\"\n >\n <SelectPrimitive.List>\n {grouped(options).map((g, gi) =>\n g.group ? (\n <SelectPrimitive.Group key={g.group + gi}>\n <SelectPrimitive.GroupLabel className={groupHeading}>{g.group}</SelectPrimitive.GroupLabel>\n {g.items.map(renderItem)}\n </SelectPrimitive.Group>\n ) : (\n g.items.map(renderItem)\n ),\n )}\n </SelectPrimitive.List>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n );\n}\n\n/** V2 scrollIntoContainer (block \"nearest\", 4px margin): scroll `el` into view inside `list` ONLY, never the shell behind it.\n * Rects are transformed while the menu pops in (scaled), so measure in layout pixels. */\nfunction revealInList(list: HTMLElement, el: HTMLElement | null, margin = 4) {\n if (!el) return;\n const br = list.getBoundingClientRect();\n const er = el.getBoundingClientRect();\n const k = list.offsetHeight ? br.height / list.offsetHeight || 1 : 1;\n const top = (er.top - br.top) / k + list.scrollTop;\n const h = er.height / k;\n let next = list.scrollTop;\n if (top < list.scrollTop) next = top - margin;\n else if (top + h > list.scrollTop + list.clientHeight) next = top + h - list.clientHeight + margin;\n next = Math.max(0, Math.min(next, list.scrollHeight - list.clientHeight));\n if (Math.abs(next - list.scrollTop) > 0.5) list.scrollTop = next;\n}\n\nfunction SearchSelect({\n value,\n defaultValue,\n onValueChange,\n options,\n placeholder = \"Select…\",\n size = \"md\",\n className,\n triggerClassName,\n variant = \"filled\",\n align = \"start\",\n disabled,\n id,\n \"aria-label\": ariaLabel,\n searchPlaceholder = \"Search…\",\n menuClassName,\n}: SelectProps) {\n const a11y = useTriggerA11y(id, ariaLabel, placeholder);\n const [current, setCurrent] = useSelectValue(value, defaultValue, onValueChange);\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState(\"\");\n const selected = options.find((o) => o.value === current);\n const shown = React.useMemo(() => filterOptions(options, query), [options, query]);\n const shownValues = React.useMemo(() => shown.map((o) => o.value), [shown]);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n /* Reveal the current option on open, inside the list only: scrollIntoView would also scroll the app shell behind the\n menu (V2 S1). The popup sizes itself a frame or two after it opens, so wait until the list is constrained (it\n scrolls) before revealing (the list portals in, so it may not exist on the first frame either). */\n React.useEffect(() => {\n if (!open) return;\n let raf = 0;\n const reveal = (tries: number) => {\n const list = listRef.current;\n const settled = list && list.scrollHeight > list.clientHeight;\n if (!settled && tries > 0) return void (raf = requestAnimationFrame(() => reveal(tries - 1)));\n if (list) revealInList(list, list.querySelector<HTMLElement>('[data-checked=\"true\"]'));\n };\n reveal(6);\n return () => cancelAnimationFrame(raf);\n }, [open]);\n\n const openWith = (q: string) => {\n setQuery(q);\n setOpen(true);\n };\n\n return (\n <ComboboxPrimitive.Root<string>\n value={current ?? null}\n onValueChange={(v) => {\n if (v == null) return;\n setCurrent(v);\n setOpen(false);\n }}\n open={open}\n onOpenChange={(o) => (o ? openWith(\"\") : setOpen(false))}\n inputValue={query}\n onInputValueChange={(q, details) => {\n // only typing filters; Base UI also writes the picked option's value into the input on selection\n if (details.reason === \"input-change\" || details.reason === \"input-clear\") setQuery(q);\n }}\n items={shownValues}\n filter={null}\n autoHighlight\n loopFocus\n disabled={disabled}\n >\n <ComboboxPrimitive.Trigger\n {...a11y}\n data-state={open ? \"open\" : \"closed\"}\n data-placeholder={selected ? undefined : \"\"}\n className={cn(triggerClass(variant, size), triggerClassName, className)}\n onKeyDown={(e: BaseUIEvent<React.KeyboardEvent<HTMLButtonElement>>) => {\n if (e.metaKey || e.ctrlKey || e.altKey) return;\n if (e.key.length === 1 && e.key !== \" \") {\n e.preventDefault();\n e.preventBaseUIHandler();\n openWith(e.key); // typing on the closed trigger starts a search\n } else if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n e.preventBaseUIHandler();\n openWith(\"\");\n }\n }}\n >\n <span className=\"flex min-w-0 items-center gap-2 truncate [&_svg]:size-4 [&_svg]:text-kit-fg-3\">\n {selected ? (\n <>\n {selected.avatar ? <Avatar name={selected.avatar.name} src={selected.avatar.src} size={16} decorative /> : null}\n <span className=\"truncate\">{selected.label}</span>\n </>\n ) : (\n <span className=\"truncate\">{placeholder}</span>\n )}\n </span>\n <IconChevronDown aria-hidden className=\"size-3.5 shrink-0 text-kit-fg-3 transition-transform group-data-[popup-open]:rotate-180\" />\n </ComboboxPrimitive.Trigger>\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner align={align} sideOffset={6} collisionPadding={12} className=\"z-[var(--kit-z-menu,80)]\" data-floating-layer=\"\" {...KIT_SCOPE}>\n <ComboboxPrimitive.Popup\n className={cn(\n \"glass flex max-h-[min(400px,var(--available-height))] w-[max(var(--anchor-width),240px)] max-w-[min(400px,calc(100vw-24px))] flex-col overflow-hidden rounded-kit-lg border text-kit-fg outline-none data-[open]:animate-kit-pop-in\",\n menuClassName,\n )}\n >\n {/* V2's <Command> root (select.tsx:403) */}\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <div className=\"flex h-9 shrink-0 items-center gap-2 border-b border-kit-line-subtle px-2.5 text-kit-fg-3\">\n <IconSearch aria-hidden className=\"size-4 shrink-0\" />\n <ComboboxPrimitive.Input\n aria-label={typeof a11y[\"aria-label\"] === \"string\" ? a11y[\"aria-label\"] : \"Options\"}\n placeholder={searchPlaceholder}\n className=\"h-full min-w-0 flex-1 bg-transparent text-kit-sm text-kit-fg outline-none placeholder:text-kit-fg-4\"\n />\n </div>\n {shown.length === 0 ? <div className=\"px-2 py-6 text-center text-kit-sm text-kit-fg-3\">No matches</div> : null}\n <ComboboxPrimitive.List ref={listRef} className=\"min-h-0 flex-1 overflow-y-auto overscroll-contain p-1 empty:hidden\">\n {grouped(shown).map((g, gi) => {\n const items = g.items.map((o) => {\n const text = nodeText(o.label);\n const checked = o.value === current;\n return (\n <ComboboxPrimitive.Item key={o.value} value={o.value} disabled={o.disabled} data-checked={checked} className={itemClass}>\n <Lead o={o} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate\">{typeof o.label === \"string\" ? <Highlight text={text} query={query} /> : o.label}</div>\n {o.description ? (\n <div className=\"truncate text-kit-xs text-kit-fg-3\">\n <Highlight text={o.description} query={query} />\n </div>\n ) : null}\n </div>\n {o.meta ? <span className=\"shrink-0 text-kit-xs tabular-nums text-kit-fg-3\">{o.meta}</span> : null}\n {checked ? <IconCheck aria-hidden className=\"absolute right-2 size-4 !text-kit-fg\" /> : null}\n </ComboboxPrimitive.Item>\n );\n });\n return g.group ? (\n <ComboboxPrimitive.Group key={g.group + gi}>\n <ComboboxPrimitive.GroupLabel className={groupHeading}>{g.group}</ComboboxPrimitive.GroupLabel>\n {items}\n </ComboboxPrimitive.Group>\n ) : (\n <React.Fragment key={\"g\" + gi}>{items}</React.Fragment>\n );\n })}\n </ComboboxPrimitive.List>\n </div>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n}\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,mBAAmB;;AAuBhC,SAAgB,SAAS,MAA+B;CACtD,IAAI,QAAQ,QAAQ,OAAO,SAAS,WAAW,OAAO;CACtD,IAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU,OAAO,OAAO,IAAI;CAC5E,IAAI,MAAM,QAAQ,IAAI,GAAG,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,KAAK,EAAE;CAC1D,IAAI,MAAM,eAA+C,IAAI,GAAG,OAAO,SAAS,KAAK,MAAM,QAAQ;CACnG,OAAO;AACT;AAEA,IAAM,MAAM;AACZ,IAAM,QAAQ,MAAc,EAAE,UAAU,KAAK,CAAC,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC,YAAY;;;;;AAMjF,SAAgB,WAAW,MAAc,OAAe,EAAE,QAAQ,SAA8B,CAAC,GAAW;CAC1G,MAAM,IAAI,KAAK,IAAI;CACnB,MAAM,QAAQ,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;CAC5D,IAAI,CAAC,MAAM,QAAQ,OAAO;CAC1B,IAAI,QAAQ;CACZ,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,KAAK,EAAE,QAAQ,IAAI;EACzB,IAAI,OAAO,GAAG,SAAS;OAClB,IAAI,KAAK,GAAG,SAAS,IAAI,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI;OAC/C,IAAI,SAAS,eAAe,GAAG,IAAI,GAAG,SAAS;OAC/C,OAAO;CACd;CACA,OAAO;AACT;;AAGA,SAAS,eAAe,GAAW,MAA+B;CAChE,IAAI,KAAK,SAAS,GAAG,OAAO;CAE5B,KAAK,IAAI,QAAQ,EAAE,QAAQ,KAAK,EAAE,GAAG,SAAS,GAAG,QAAQ,EAAE,QAAQ,KAAK,IAAI,QAAQ,CAAC,GAAG;EACtF,IAAI,QAAQ,KAAK,CAAC,IAAI,KAAK,EAAE,QAAQ,EAAE,GAAG;EAC1C,MAAM,MAAM,CAAC,KAAK;EAClB,IAAI,IAAI,QAAQ;EAChB,KAAK,MAAM,MAAM,KAAK,MAAM,CAAC,GAAG;GAC9B,IAAI,EAAE,QAAQ,IAAI,CAAC;GACnB,IAAI,IAAI,GAAG;GACX,IAAI,KAAK,GAAG;EACd;EACA,IAAI,IAAI,WAAW,KAAK,UAAU,IAAI,IAAI,SAAS,KAAK,QAAQ,KAAK,KAAK,SAAS,GAAG,OAAO;CAC/F;CACA,OAAO;AACT;;AAGA,SAAgB,eAAe,MAAc,OAA4B;CACvE,MAAM,IAAI,KAAK,IAAI;CACnB,MAAM,uBAAO,IAAI,IAAY;CAC7B,KAAK,MAAM,QAAQ,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO,GAAG;EAClE,MAAM,KAAK,EAAE,QAAQ,IAAI;EACzB,IAAI,MAAM,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC;OAC7D,eAAe,GAAG,IAAI,CAAC,EAAE,SAAS,MAAM,KAAK,IAAI,CAAC,CAAC;CAC1D;CACA,OAAO;AACT;;AAGA,SAAgB,UAAU,EAAE,MAAM,SAA0C;CAC1E,IAAI,CAAC,MAAM,KAAK,GAAG,OAAO,oBAAA,UAAA,EAAA,UAAG,KAAO,CAAA;CAEpC,IAAI,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,QAAQ,OAAO,oBAAA,UAAA,EAAA,UAAG,KAAO,CAAA;CACxD,MAAM,OAAO,eAAe,MAAM,KAAK;CACvC,IAAI,CAAC,KAAK,MAAM,OAAO,oBAAA,UAAA,EAAA,UAAG,KAAO,CAAA;CACjC,MAAM,QAA2B,CAAC;CAClC,IAAI,MAAM;CACV,IAAI,KAAK;CACT,MAAM,SAAS,MAAc;EAC3B,IAAI,CAAC,KAAK;EACV,MAAM,KAAK,KAAK,oBAAC,QAAD;GAAc,WAAU;GAA0D,UAAA;EAAU,GAAjF,CAAiF,IAAI,GAAG;EACnH,MAAM;CACR;CACA,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,IAAI,KAAK,IAAI,CAAC;EACpB,IAAI,MAAM,IAAI;GACZ,MAAM,CAAC;GACP,KAAK;EACP;EACA,OAAO,KAAK;CACd;CACA,MAAM,KAAK,MAAM;CACjB,OAAO,oBAAA,UAAA,EAAA,UAAG,MAAQ,CAAA;AACpB;;AAGA,SAAgB,cAAsC,SAAc,OAAoB;CACtF,IAAI,CAAC,MAAM,KAAK,GAAG,OAAO;CAC1B,OAAO,QACJ,KAAK,GAAG,MAAM;EACb,MAAM,QAAQ,SAAS,EAAE,KAAK;EAC9B,MAAM,OAAO,WAAW,OAAO,KAAK;EAEpC,MAAM,OAAO,WAAW;GAAC;GAAO,EAAE;GAAa,EAAE;GAAM,GAAI,EAAE,YAAY,CAAC;EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,GAAG,OAAO,EAAE,OAAO,MAAM,CAAC;EAGhI,MAAM,QAAQ,EAAE,UAAU,MAAM,MAAM,KAAK,CAAC,MAAM,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI;EAC5E,OAAO;GAAE;GAAG;GAAG,GAAG,KAAK,IAAI,OAAO,OAAO,IAAI,IAAI,MAAM,KAAK;GAAG,KAAK,MAAM;EAAO;CACnF,CAAC,CAAC,CACD,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,CACtB,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACvD,KAAK,MAAM,EAAE,CAAC;AACnB;AAEA,SAAS,QAAgC,SAAgD;CACvF,IAAI,CAAC,QAAQ,MAAM,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE,OAAO,QAAQ,CAAC;CAC7D,MAAM,MAAwC,CAAC;CAC/C,KAAK,MAAM,KAAK,SAAS;EACvB,MAAM,IAAI,IAAI,MAAM,MAAM,EAAE,UAAU,EAAE,KAAK;EAC7C,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;OAChB,IAAI,KAAK;GAAE,OAAO,EAAE;GAAO,OAAO,CAAC,CAAC;EAAE,CAAC;CAC9C;CACA,OAAO;AACT;AAIA,SAAS,aAAa,SAAyC,MAA0B;CAEvF,OAAO,GACL,2RACA,YAAY,YAAY,gGACxB,YAAY,aAAa,8EACzB,YAAY,WAAW,oGALf,SAAS,OAAO,oBAAoB,SAAS,OAAO,sBAAsB,iBAOpF;AACF;;AAGA,IAAa,qBAAqB;AAMlC,IAAM,YAAY,GAAG,0LAAU,gGAAgG;AAE/H,IAAM,eAAe;AAErB,SAAS,KAAK,EAAE,KAA0B;CACxC,IAAI,EAAE,QAAQ,OAAO,oBAAC,QAAD;EAAQ,MAAM,EAAE,OAAO;EAAM,KAAK,EAAE,OAAO;EAAK,MAAM;EAAI,YAAA;CAAY,CAAA;CAC3F,OAAO,EAAE,OAAO,oBAAA,UAAA,EAAA,UAAG,EAAE,KAAO,CAAA,IAAI;AAClC;AA0BA,SAAgB,OAAO,OAAoB;CACzC,MAAM,EAAE,aAAa,QAAQ,YAAY;CAEzC,OADe,eAAe,QAAS,eAAe,UAAU,QAAQ,SAAA,IACxD,oBAAC,cAAD,EAAc,GAAI,MAAQ,CAAA,IAAI,oBAAC,aAAD,EAAa,GAAI,MAAQ,CAAA;AACzE;AAEA,SAAS,eAAe,IAAwB,WAA+B,aAA8B;CAC3G,MAAM,UAAU,WAAW;CAC3B,MAAM,aAAa,mBAAmB;CACtC,MAAM,WAAW,YAAY,MAAM,OAAO;CAC1C,OAAO;EACL,IAAI,MAAM;EACV,cAAc,cAAc,WAAW,cAAc,WAAW,KAAA,IAAY,OAAO,gBAAgB,YAAY,gBAAgB,YAAY,cAAc,KAAA;EACzJ,mBAAmB,YAAY,KAAA,IAAa,aAAa,MAAM,UAAU,KAAA,IAAY;CACvF;AACF;;AAGA,SAAS,eAAe,OAA2B,cAAkC,eAAqC;CACxH,MAAM,CAAC,OAAO,YAAY,MAAM,SAAS,YAAY;CACrD,MAAM,aAAa,UAAU,KAAA;CAC7B,MAAM,UAAU,aAAa,QAAQ;CACrC,MAAM,OAAO,MAAc;EACzB,IAAI,CAAC,YAAY,SAAS,CAAC;EAC3B,gBAAgB,CAAC;CACnB;CACA,OAAO,CAAC,SAAS,GAAG;AACtB;AAEA,SAAS,YAAY,EACnB,OACA,cACA,eACA,SACA,cAAc,WACd,OAAO,MACP,WACA,kBACA,UAAU,UACV,QAAQ,SACR,UACA,IACA,cAAc,aACA;CACd,MAAM,OAAO,eAAe,IAAI,WAAW,WAAW;CACtD,MAAM,CAAC,SAAS,cAAc,eAAe,OAAO,cAAc,aAAa;CAC/E,MAAM,CAAC,MAAM,WAAW,MAAM,SAAS,KAAK;CAC5C,MAAM,QAAQ,MAAM,cAAc,QAAQ,KAAK,OAAO;EAAE,OAAO,EAAE;EAAO,OAAO,EAAE;CAAM,EAAE,GAAG,CAAC,OAAO,CAAC;CACrG,MAAM,cAAc,MAClB,qBAAC,SAAgB,MAAjB;EAAoC,OAAO,EAAE;EAAO,UAAU,EAAE;EAAU,WAAW;EAArF,UAAA;GACE,oBAAC,MAAD,EAAS,EAAI,CAAA;GACb,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,oBAAC,SAAgB,UAAjB,EAAA,UAA2B,EAAE,MAAgC,CAAA,GAC5D,EAAE,cAAc,oBAAC,OAAD;KAAK,WAAU;KAA6B,UAAA,EAAE;IAAiB,CAAA,IAAI,IACjF;;GACJ,EAAE,OAAO,oBAAC,QAAD;IAAM,WAAU;IAAmD,UAAA,EAAE;GAAW,CAAA,IAAI;GAC9F,oBAAC,SAAgB,eAAjB;IAA+B,WAAU;IACvC,UAAA,oBAAC,WAAD,EAAW,WAAU,qBAAsB,CAAA;GACd,CAAA;EACX;CAVK,GAAA,EAAE,KAUP;CAExB,OACE,qBAAC,SAAgB,MAAjB;EACS;EACP,OAAO,WAAW;EAClB,gBAAgB,MAAM,KAAK,QAAQ,WAAW,CAAC;EAC/C,cAAc;EACJ;EALZ,UAAA,CAOE,qBAAC,SAAgB,SAAjB;GACE,GAAI;GACJ,cAAY,OAAO,SAAS;GAC5B,WAAW,GAAG,aAAa,SAAS,IAAI,GAAG,kBAAkB,SAAS;GAHxE,UAAA,CAKE,oBAAC,QAAD;IAAM,WAAU;IACd,UAAA,oBAAC,SAAgB,OAAjB,EAAoC,YAAc,CAAA;GAC9C,CAAA,GACN,oBAAC,SAAgB,MAAjB,EAAA,UACE,oBAAC,iBAAD,EAAiB,WAAU,iFAAkF,CAAA,EACzF,CAAA,CACC;EACzB,CAAA,GAAA,oBAAC,SAAgB,QAAjB,EAAA,UACE,oBAAC,SAAgB,YAAjB;GAAmC;GAAO,YAAY;GAAG,sBAAsB;GAAO,WAAU;GAA2B,uBAAoB;GAAG,GAAI;GACpJ,UAAA,oBAAC,SAAgB,OAAjB;IACE,WAAU;IAEV,UAAA,oBAAC,SAAgB,MAAjB,EAAA,UACG,QAAQ,OAAO,CAAC,CAAC,KAAK,GAAG,OACxB,EAAE,QACA,qBAAC,SAAgB,OAAjB,EAAA,UAAA,CACE,oBAAC,SAAgB,YAAjB;KAA4B,WAAW;KAAe,UAAA,EAAE;IAAkC,CAAA,GACzF,EAAE,MAAM,IAAI,UAAU,CACF,EAAA,GAHK,EAAE,QAAQ,EAGf,IAEvB,EAAE,MAAM,IAAI,UAAU,CAE1B,EACoB,CAAA;GACD,CAAA;EACG,CAAA,EACN,CAAA,CACJ;;AAE1B;;;AAIA,SAAS,aAAa,MAAmB,IAAwB,SAAS,GAAG;CAC3E,IAAI,CAAC,IAAI;CACT,MAAM,KAAK,KAAK,sBAAsB;CACtC,MAAM,KAAK,GAAG,sBAAsB;CACpC,MAAM,IAAI,KAAK,eAAe,GAAG,SAAS,KAAK,gBAAgB,IAAI;CACnE,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,IAAI,KAAK;CACzC,MAAM,IAAI,GAAG,SAAS;CACtB,IAAI,OAAO,KAAK;CAChB,IAAI,MAAM,KAAK,WAAW,OAAO,MAAM;MAClC,IAAI,MAAM,IAAI,KAAK,YAAY,KAAK,cAAc,OAAO,MAAM,IAAI,KAAK,eAAe;CAC5F,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,KAAK,eAAe,KAAK,YAAY,CAAC;CACxE,IAAI,KAAK,IAAI,OAAO,KAAK,SAAS,IAAI,IAAK,KAAK,YAAY;AAC9D;AAEA,SAAS,aAAa,EACpB,OACA,cACA,eACA,SACA,cAAc,WACd,OAAO,MACP,WACA,kBACA,UAAU,UACV,QAAQ,SACR,UACA,IACA,cAAc,WACd,oBAAoB,WACpB,iBACc;CACd,MAAM,OAAO,eAAe,IAAI,WAAW,WAAW;CACtD,MAAM,CAAC,SAAS,cAAc,eAAe,OAAO,cAAc,aAAa;CAC/E,MAAM,CAAC,MAAM,WAAW,MAAM,SAAS,KAAK;CAC5C,MAAM,CAAC,OAAO,YAAY,MAAM,SAAS,EAAE;CAC3C,MAAM,WAAW,QAAQ,MAAM,MAAM,EAAE,UAAU,OAAO;CACxD,MAAM,QAAQ,MAAM,cAAc,cAAc,SAAS,KAAK,GAAG,CAAC,SAAS,KAAK,CAAC;CACjF,MAAM,cAAc,MAAM,cAAc,MAAM,KAAK,MAAM,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;CAC1E,MAAM,UAAU,MAAM,OAAuB,IAAI;CAKjD,MAAM,gBAAgB;EACpB,IAAI,CAAC,MAAM;EACX,IAAI,MAAM;EACV,MAAM,UAAU,UAAkB;GAChC,MAAM,OAAO,QAAQ;GAErB,IAAI,EADY,QAAQ,KAAK,eAAe,KAAK,iBACjC,QAAQ,GAAG,OAAO,MAAM,MAAM,4BAA4B,OAAO,QAAQ,CAAC,CAAC;GAC3F,IAAI,MAAM,aAAa,MAAM,KAAK,cAA2B,yBAAuB,CAAC;EACvF;EACA,OAAO,CAAC;EACR,aAAa,qBAAqB,GAAG;CACvC,GAAG,CAAC,IAAI,CAAC;CAET,MAAM,YAAY,MAAc;EAC9B,SAAS,CAAC;EACV,QAAQ,IAAI;CACd;CAEA,OACE,qBAAC,SAAkB,MAAnB;EACE,OAAO,WAAW;EAClB,gBAAgB,MAAM;GACpB,IAAI,KAAK,MAAM;GACf,WAAW,CAAC;GACZ,QAAQ,KAAK;EACf;EACM;EACN,eAAe,MAAO,IAAI,SAAS,EAAE,IAAI,QAAQ,KAAK;EACtD,YAAY;EACZ,qBAAqB,GAAG,YAAY;GAElC,IAAI,QAAQ,WAAW,kBAAkB,QAAQ,WAAW,eAAe,SAAS,CAAC;EACvF;EACA,OAAO;EACP,QAAQ;EACR,eAAA;EACA,WAAA;EACU;EAlBZ,UAAA,CAoBE,qBAAC,SAAkB,SAAnB;GACE,GAAI;GACJ,cAAY,OAAO,SAAS;GAC5B,oBAAkB,WAAW,KAAA,IAAY;GACzC,WAAW,GAAG,aAAa,SAAS,IAAI,GAAG,kBAAkB,SAAS;GACtE,YAAY,MAA2D;IACrE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ;IACxC,IAAI,EAAE,IAAI,WAAW,KAAK,EAAE,QAAQ,KAAK;KACvC,EAAE,eAAe;KACjB,EAAE,qBAAqB;KACvB,SAAS,EAAE,GAAG;IAChB,OAAO,IAAI,EAAE,QAAQ,eAAe,EAAE,QAAQ,WAAW;KACvD,EAAE,eAAe;KACjB,EAAE,qBAAqB;KACvB,SAAS,EAAE;IACb;GACF;GAhBF,UAAA,CAkBE,oBAAC,QAAD;IAAM,WAAU;IACb,UAAA,WACC,qBAAA,UAAA,EAAA,UAAA,CACG,SAAS,SAAS,oBAAC,QAAD;KAAQ,MAAM,SAAS,OAAO;KAAM,KAAK,SAAS,OAAO;KAAK,MAAM;KAAI,YAAA;IAAY,CAAA,IAAI,MAC3G,oBAAC,QAAD;KAAM,WAAU;KAAY,UAAA,SAAS;IAAY,CAAA,CACjD,EAAA,CAAA,IAEF,oBAAC,QAAD;KAAM,WAAU;KAAY,UAAA;IAAkB,CAAA;GAE5C,CAAA,GACN,oBAAC,iBAAD;IAAiB,eAAA;IAAY,WAAU;GAA2F,CAAA,CACzG;EAC3B,CAAA,GAAA,oBAAC,SAAkB,QAAnB,EAAA,UACE,oBAAC,SAAkB,YAAnB;GAAqC;GAAO,YAAY;GAAG,kBAAkB;GAAI,WAAU;GAA2B,uBAAoB;GAAG,GAAI;GAC/I,UAAA,oBAAC,SAAkB,OAAnB;IACE,WAAW,GACT,uOACA,aACF;IAGA,UAAA,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACE,qBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,oBAAC,YAAD;QAAY,eAAA;QAAY,WAAU;OAAmB,CAAA,GACrD,oBAAC,SAAkB,OAAnB;QACE,cAAY,OAAO,KAAK,kBAAkB,WAAW,KAAK,gBAAgB;QAC1E,aAAa;QACb,WAAU;OACX,CAAA,CACE;;MACJ,MAAM,WAAW,IAAI,oBAAC,OAAD;OAAK,WAAU;OAAkD,UAAA;MAAe,CAAA,IAAI;MAC1G,oBAAC,SAAkB,MAAnB;OAAwB,KAAK;OAAS,WAAU;OAC7C,UAAA,QAAQ,KAAK,CAAC,CAAC,KAAK,GAAG,OAAO;QAC7B,MAAM,QAAQ,EAAE,MAAM,KAAK,MAAM;SAC/B,MAAM,OAAO,SAAS,EAAE,KAAK;SAC7B,MAAM,UAAU,EAAE,UAAU;SAC5B,OACE,qBAAC,SAAkB,MAAnB;UAAsC,OAAO,EAAE;UAAO,UAAU,EAAE;UAAU,gBAAc;UAAS,WAAW;UAA9G,UAAA;WACE,oBAAC,MAAD,EAAS,EAAI,CAAA;WACb,qBAAC,OAAD;YAAK,WAAU;YAAf,UAAA,CACE,oBAAC,OAAD;aAAK,WAAU;aAAY,UAAA,OAAO,EAAE,UAAU,WAAW,oBAAC,WAAD;cAAiB;cAAa;aAAQ,CAAA,IAAI,EAAE;YAAW,CAAA,GAC/G,EAAE,cACD,oBAAC,OAAD;aAAK,WAAU;aACb,UAAA,oBAAC,WAAD;cAAW,MAAM,EAAE;cAAoB;aAAQ,CAAA;YAC5C,CAAA,IACH,IACD;;WACJ,EAAE,OAAO,oBAAC,QAAD;YAAM,WAAU;YAAmD,UAAA,EAAE;WAAW,CAAA,IAAI;WAC7F,UAAU,oBAAC,WAAD;YAAW,eAAA;YAAY,WAAU;WAAwC,CAAA,IAAI;UAClE;SAZK,GAAA,EAAE,KAYP;QAE5B,CAAC;QACD,OAAO,EAAE,QACP,qBAAC,SAAkB,OAAnB,EAAA,UAAA,CACE,oBAAC,SAAkB,YAAnB;SAA8B,WAAW;SAAe,UAAA,EAAE;QAAoC,CAAA,GAC7F,KACsB,EAAA,GAHK,EAAE,QAAQ,EAGf,IAEzB,oBAAC,MAAM,UAAP,EAAA,UAAgC,MAAsB,GAAjC,MAAM,EAA2B;OAE1D,CAAC;MACqB,CAAA;KACrB;;GACkB,CAAA;EACG,CAAA,EACN,CAAA,CACJ;;AAE5B"}
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ export declare function ShortcutHintsProvider({ on, children }: {
3
+ on?: boolean;
4
+ children: React.ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export declare function useShortcutHints(): boolean;
7
+ /** Non-hook read for toasts and other imperative call sites. */
8
+ export declare function shortcutHintsOn(): boolean;
9
+ type Props = React.HTMLAttributes<HTMLElement> & {
10
+ as?: "span" | "div" | "p" | "li" | "fragment";
11
+ children: React.ReactNode;
12
+ };
13
+ export declare function ShortcutHint({ as, children, ...rest }: Props): import("react/jsx-runtime").JSX.Element | null;
14
+ export {};