@vielzeug/refine 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (829) hide show
  1. package/README.md +5 -12
  2. package/dist/_dev.cjs +1 -1
  3. package/dist/_dev.cjs.map +1 -1
  4. package/dist/_dev.js +2 -5
  5. package/dist/_dev.js.map +1 -1
  6. package/dist/_virtual/_rolldown/runtime.cjs +1 -1
  7. package/dist/accordion-item.cjs +26 -24
  8. package/dist/accordion-item.cjs.map +1 -1
  9. package/dist/accordion-item.js +53 -51
  10. package/dist/accordion-item.js.map +1 -1
  11. package/dist/accordion.cjs +3 -1
  12. package/dist/accordion.cjs.map +1 -1
  13. package/dist/accordion.js +5 -3
  14. package/dist/accordion.js.map +1 -1
  15. package/dist/alert.cjs +1 -1
  16. package/dist/alert.cjs.map +1 -1
  17. package/dist/alert.js +1 -1
  18. package/dist/alert.js.map +1 -1
  19. package/dist/async.cjs +14 -12
  20. package/dist/async.cjs.map +1 -1
  21. package/dist/async.js +5 -4
  22. package/dist/async.js.map +1 -1
  23. package/dist/avatar-group.cjs +7 -0
  24. package/dist/avatar-group.cjs.map +1 -0
  25. package/dist/avatar-group.js +34 -0
  26. package/dist/avatar-group.js.map +1 -0
  27. package/dist/avatar.cjs +21 -16
  28. package/dist/avatar.cjs.map +1 -1
  29. package/dist/avatar.js +38 -54
  30. package/dist/avatar.js.map +1 -1
  31. package/dist/badge.cjs +4 -2
  32. package/dist/badge.cjs.map +1 -1
  33. package/dist/badge.js +6 -4
  34. package/dist/badge.js.map +1 -1
  35. package/dist/box.cjs +3 -1
  36. package/dist/box.cjs.map +1 -1
  37. package/dist/box.js +24 -18
  38. package/dist/box.js.map +1 -1
  39. package/dist/breadcrumb.cjs +4 -4
  40. package/dist/breadcrumb.cjs.map +1 -1
  41. package/dist/breadcrumb.js +4 -4
  42. package/dist/breadcrumb.js.map +1 -1
  43. package/dist/button-group.cjs +3 -3
  44. package/dist/button-group.cjs.map +1 -1
  45. package/dist/button-group.js +18 -16
  46. package/dist/button-group.js.map +1 -1
  47. package/dist/button.cjs +16 -12
  48. package/dist/button.cjs.map +1 -1
  49. package/dist/button.js +31 -28
  50. package/dist/button.js.map +1 -1
  51. package/dist/calendar.cjs +94 -69
  52. package/dist/calendar.cjs.map +1 -1
  53. package/dist/calendar.js +131 -99
  54. package/dist/calendar.js.map +1 -1
  55. package/dist/card.cjs +7 -7
  56. package/dist/card.cjs.map +1 -1
  57. package/dist/card.js +53 -49
  58. package/dist/card.js.map +1 -1
  59. package/dist/carousel.cjs +65 -57
  60. package/dist/carousel.cjs.map +1 -1
  61. package/dist/carousel.js +157 -201
  62. package/dist/carousel.js.map +1 -1
  63. package/dist/chat-message.cjs +21 -19
  64. package/dist/chat-message.cjs.map +1 -1
  65. package/dist/chat-message.js +18 -15
  66. package/dist/chat-message.js.map +1 -1
  67. package/dist/checkbox-group.cjs +12 -10
  68. package/dist/checkbox-group.cjs.map +1 -1
  69. package/dist/checkbox-group.js +75 -77
  70. package/dist/checkbox-group.js.map +1 -1
  71. package/dist/checkbox.cjs +4 -4
  72. package/dist/checkbox.cjs.map +1 -1
  73. package/dist/checkbox.js +55 -55
  74. package/dist/checkbox.js.map +1 -1
  75. package/dist/chip.cjs +22 -20
  76. package/dist/chip.cjs.map +1 -1
  77. package/dist/chip.js +15 -12
  78. package/dist/chip.js.map +1 -1
  79. package/dist/code-window.cjs +11 -5
  80. package/dist/code-window.cjs.map +1 -1
  81. package/dist/code-window.js +9 -4
  82. package/dist/code-window.js.map +1 -1
  83. package/dist/combobox.cjs +63 -58
  84. package/dist/combobox.cjs.map +1 -1
  85. package/dist/combobox.js +199 -197
  86. package/dist/combobox.js.map +1 -1
  87. package/dist/command-palette.cjs +49 -29
  88. package/dist/command-palette.cjs.map +1 -1
  89. package/dist/command-palette.js +150 -119
  90. package/dist/command-palette.js.map +1 -1
  91. package/dist/content/avatar/avatar-group.d.ts +33 -0
  92. package/dist/content/avatar/avatar-group.d.ts.map +1 -0
  93. package/dist/content/avatar/avatar.d.ts +0 -32
  94. package/dist/content/avatar/avatar.d.ts.map +1 -1
  95. package/dist/content/card/card.css.cjs +1 -1
  96. package/dist/content/card/card.css.cjs.map +1 -1
  97. package/dist/content/card/card.css.js +1 -1
  98. package/dist/content/card/card.css.js.map +1 -1
  99. package/dist/content/card/card.d.ts.map +1 -1
  100. package/dist/content/carousel/carousel-slide.cjs +3 -1
  101. package/dist/content/carousel/carousel-slide.cjs.map +1 -1
  102. package/dist/content/carousel/carousel-slide.css.cjs +1 -1
  103. package/dist/content/carousel/carousel-slide.css.cjs.map +1 -1
  104. package/dist/content/carousel/carousel-slide.css.js +1 -1
  105. package/dist/content/carousel/carousel-slide.css.js.map +1 -1
  106. package/dist/content/carousel/carousel-slide.js +3 -1
  107. package/dist/content/carousel/carousel-slide.js.map +1 -1
  108. package/dist/content/carousel/carousel.css.cjs +1 -1
  109. package/dist/content/carousel/carousel.css.cjs.map +1 -1
  110. package/dist/content/carousel/carousel.css.js +1 -1
  111. package/dist/content/carousel/carousel.css.js.map +1 -1
  112. package/dist/content/carousel/carousel.d.ts +5 -19
  113. package/dist/content/carousel/carousel.d.ts.map +1 -1
  114. package/dist/content/chat-message/chat-message.d.ts.map +1 -1
  115. package/dist/content/code-window/code-window.d.ts.map +1 -1
  116. package/dist/content/icon/icon.d.ts.map +1 -1
  117. package/dist/content/index.d.ts +10 -2
  118. package/dist/content/index.d.ts.map +1 -1
  119. package/dist/content/list/_list-item-reveal.cjs +1 -1
  120. package/dist/content/list/_list-item-reveal.cjs.map +1 -1
  121. package/dist/content/list/_list-item-reveal.d.ts +2 -2
  122. package/dist/content/list/_list-item-reveal.d.ts.map +1 -1
  123. package/dist/content/list/_list-item-reveal.js +2 -2
  124. package/dist/content/list/_list-item-reveal.js.map +1 -1
  125. package/dist/content/list/list.d.ts.map +1 -1
  126. package/dist/content/marquee/index.d.ts +2 -0
  127. package/dist/content/marquee/index.d.ts.map +1 -0
  128. package/dist/content/marquee/marquee.css.cjs +2 -0
  129. package/dist/content/marquee/marquee.css.cjs.map +1 -0
  130. package/dist/content/marquee/marquee.css.js +6 -0
  131. package/dist/content/marquee/marquee.css.js.map +1 -0
  132. package/dist/content/marquee/marquee.d.ts +44 -0
  133. package/dist/content/marquee/marquee.d.ts.map +1 -0
  134. package/dist/content/stepper/_is-step-navigable.cjs +2 -0
  135. package/dist/content/stepper/_is-step-navigable.cjs.map +1 -0
  136. package/dist/content/stepper/_is-step-navigable.d.ts +14 -0
  137. package/dist/content/stepper/_is-step-navigable.d.ts.map +1 -0
  138. package/dist/content/stepper/_is-step-navigable.js +8 -0
  139. package/dist/content/stepper/_is-step-navigable.js.map +1 -0
  140. package/dist/content/stepper/step.css.cjs +2 -0
  141. package/dist/content/stepper/step.css.cjs.map +1 -0
  142. package/dist/content/stepper/step.css.js +6 -0
  143. package/dist/content/stepper/step.css.js.map +1 -0
  144. package/dist/content/stepper/step.d.ts +63 -0
  145. package/dist/content/stepper/step.d.ts.map +1 -0
  146. package/dist/content/stepper/stepper.css.cjs +2 -0
  147. package/dist/content/stepper/stepper.css.cjs.map +1 -0
  148. package/dist/content/stepper/stepper.css.js +6 -0
  149. package/dist/content/stepper/stepper.css.js.map +1 -0
  150. package/dist/content/stepper/stepper.d.ts +88 -0
  151. package/dist/content/stepper/stepper.d.ts.map +1 -0
  152. package/dist/copy-command.cjs +9 -3
  153. package/dist/copy-command.cjs.map +1 -1
  154. package/dist/copy-command.js +9 -3
  155. package/dist/copy-command.js.map +1 -1
  156. package/dist/{headless → core}/_internal.d.ts +3 -5
  157. package/dist/core/_internal.d.ts.map +1 -0
  158. package/dist/core/announcer.cjs.map +1 -0
  159. package/dist/core/announcer.d.ts.map +1 -0
  160. package/dist/{headless → core}/announcer.js +1 -1
  161. package/dist/core/announcer.js.map +1 -0
  162. package/dist/core/aria-reflection.cjs.map +1 -0
  163. package/dist/core/aria-reflection.d.ts.map +1 -0
  164. package/dist/{headless → core}/aria-reflection.js +1 -1
  165. package/dist/core/aria-reflection.js.map +1 -0
  166. package/dist/core/auto-resize.cjs.map +1 -0
  167. package/dist/core/auto-resize.d.ts.map +1 -0
  168. package/dist/{headless → core}/auto-resize.js +1 -1
  169. package/dist/core/auto-resize.js.map +1 -0
  170. package/dist/core/checkable.cjs.map +1 -0
  171. package/dist/core/checkable.d.ts.map +1 -0
  172. package/dist/{headless → core}/checkable.js +1 -1
  173. package/dist/core/checkable.js.map +1 -0
  174. package/dist/core/choice-field.cjs +2 -0
  175. package/dist/core/choice-field.cjs.map +1 -0
  176. package/dist/core/choice-field.d.ts.map +1 -0
  177. package/dist/{headless → core}/choice-field.js +3 -2
  178. package/dist/core/choice-field.js.map +1 -0
  179. package/dist/core/composer.cjs.map +1 -0
  180. package/dist/core/composer.d.ts.map +1 -0
  181. package/dist/{headless → core}/composer.js +1 -1
  182. package/dist/core/composer.js.map +1 -0
  183. package/dist/{headless → core}/date-picker.cjs +1 -1
  184. package/dist/core/date-picker.cjs.map +1 -0
  185. package/dist/core/date-picker.d.ts.map +1 -0
  186. package/dist/{headless → core}/date-picker.js +3 -3
  187. package/dist/core/date-picker.js.map +1 -0
  188. package/dist/core/direction.cjs.map +1 -0
  189. package/dist/core/direction.d.ts.map +1 -0
  190. package/dist/{headless → core}/direction.js +1 -1
  191. package/dist/core/direction.js.map +1 -0
  192. package/dist/core/field-base.cjs +2 -0
  193. package/dist/core/field-base.cjs.map +1 -0
  194. package/dist/{headless → core}/field-base.d.ts +3 -3
  195. package/dist/core/field-base.d.ts.map +1 -0
  196. package/dist/core/field-base.js +66 -0
  197. package/dist/core/field-base.js.map +1 -0
  198. package/dist/core/focus.cjs.map +1 -0
  199. package/dist/core/focus.d.ts.map +1 -0
  200. package/dist/{headless → core}/focus.js +1 -1
  201. package/dist/core/focus.js.map +1 -0
  202. package/dist/{headless → core}/index.d.ts +7 -6
  203. package/dist/core/index.d.ts.map +1 -0
  204. package/dist/{headless → core}/keyboard.cjs +1 -1
  205. package/dist/core/keyboard.cjs.map +1 -0
  206. package/dist/core/keyboard.d.ts.map +1 -0
  207. package/dist/{headless → core}/keyboard.js +2 -2
  208. package/dist/core/keyboard.js.map +1 -0
  209. package/dist/core/light-dom.cjs.map +1 -0
  210. package/dist/core/light-dom.d.ts.map +1 -0
  211. package/dist/{headless → core}/light-dom.js +1 -1
  212. package/dist/core/light-dom.js.map +1 -0
  213. package/dist/core/nav.cjs.map +1 -0
  214. package/dist/core/nav.d.ts.map +1 -0
  215. package/dist/{headless → core}/nav.js +1 -1
  216. package/dist/core/nav.js.map +1 -0
  217. package/dist/core/numbers.cjs.map +1 -0
  218. package/dist/core/numbers.d.ts.map +1 -0
  219. package/dist/{headless → core}/numbers.js +1 -1
  220. package/dist/core/numbers.js.map +1 -0
  221. package/dist/core/option-list.cjs +2 -0
  222. package/dist/core/option-list.cjs.map +1 -0
  223. package/dist/core/option-list.d.ts +49 -0
  224. package/dist/core/option-list.d.ts.map +1 -0
  225. package/dist/core/option-list.js +65 -0
  226. package/dist/core/option-list.js.map +1 -0
  227. package/dist/core/ore.cjs.map +1 -0
  228. package/dist/{headless → core}/ore.d.ts +2 -2
  229. package/dist/core/ore.d.ts.map +1 -0
  230. package/dist/{headless → core}/ore.js +1 -1
  231. package/dist/core/ore.js.map +1 -0
  232. package/dist/core/overlay.cjs +2 -0
  233. package/dist/core/overlay.cjs.map +1 -0
  234. package/dist/core/overlay.d.ts +41 -0
  235. package/dist/core/overlay.d.ts.map +1 -0
  236. package/dist/core/overlay.js +17 -0
  237. package/dist/core/overlay.js.map +1 -0
  238. package/dist/core/paginated-list.d.ts.map +1 -0
  239. package/dist/core/parse.cjs.map +1 -0
  240. package/dist/core/parse.d.ts.map +1 -0
  241. package/dist/{headless → core}/parse.js +1 -1
  242. package/dist/core/parse.js.map +1 -0
  243. package/dist/core/positioner.cjs +2 -0
  244. package/dist/core/positioner.cjs.map +1 -0
  245. package/dist/core/positioner.d.ts.map +1 -0
  246. package/dist/{headless → core}/positioner.js +7 -7
  247. package/dist/core/positioner.js.map +1 -0
  248. package/dist/core/ref-callback.cjs +2 -0
  249. package/dist/core/ref-callback.cjs.map +1 -0
  250. package/dist/core/ref-callback.d.ts.map +1 -0
  251. package/dist/{headless → core}/ref-callback.js +2 -2
  252. package/dist/core/ref-callback.js.map +1 -0
  253. package/dist/core/signals.cjs +2 -0
  254. package/dist/core/signals.cjs.map +1 -0
  255. package/dist/core/signals.d.ts.map +1 -0
  256. package/dist/{headless → core}/signals.js +3 -2
  257. package/dist/core/signals.js.map +1 -0
  258. package/dist/core/slider.cjs +2 -0
  259. package/dist/core/slider.cjs.map +1 -0
  260. package/dist/core/slider.d.ts.map +1 -0
  261. package/dist/{headless → core}/slider.js +3 -3
  262. package/dist/{headless/slider.cjs.map → core/slider.js.map} +1 -1
  263. package/dist/core/spinner.cjs +2 -0
  264. package/dist/core/spinner.cjs.map +1 -0
  265. package/dist/core/spinner.d.ts.map +1 -0
  266. package/dist/{headless → core}/spinner.js +3 -3
  267. package/dist/{headless/spinner.cjs.map → core/spinner.js.map} +1 -1
  268. package/dist/core/swipe.cjs.map +1 -0
  269. package/dist/core/swipe.d.ts.map +1 -0
  270. package/dist/{headless → core}/swipe.js +1 -1
  271. package/dist/core/swipe.js.map +1 -0
  272. package/dist/core/text-field.cjs.map +1 -0
  273. package/dist/core/text-field.d.ts.map +1 -0
  274. package/dist/{headless → core}/text-field.js +1 -1
  275. package/dist/core/text-field.js.map +1 -0
  276. package/dist/core/typeahead.cjs.map +1 -0
  277. package/dist/core/typeahead.d.ts.map +1 -0
  278. package/dist/{headless → core}/typeahead.js +1 -1
  279. package/dist/core/typeahead.js.map +1 -0
  280. package/dist/custom-elements.json +4433 -3949
  281. package/dist/datagrid.cjs +320 -271
  282. package/dist/datagrid.cjs.map +1 -1
  283. package/dist/datagrid.js +489 -435
  284. package/dist/datagrid.js.map +1 -1
  285. package/dist/date-picker.cjs +77 -62
  286. package/dist/date-picker.cjs.map +1 -1
  287. package/dist/date-picker.js +169 -146
  288. package/dist/date-picker.js.map +1 -1
  289. package/dist/dialog.cjs +3 -3
  290. package/dist/dialog.cjs.map +1 -1
  291. package/dist/dialog.js +18 -7
  292. package/dist/dialog.js.map +1 -1
  293. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -1
  294. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  295. package/dist/drawer.cjs +5 -5
  296. package/dist/drawer.cjs.map +1 -1
  297. package/dist/drawer.js +52 -47
  298. package/dist/drawer.js.map +1 -1
  299. package/dist/errors.cjs.map +1 -1
  300. package/dist/errors.js.map +1 -1
  301. package/dist/feedback/async/async.d.ts.map +1 -1
  302. package/dist/feedback/chip/chip.d.ts.map +1 -1
  303. package/dist/feedback/progress/progress.d.ts.map +1 -1
  304. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -1
  305. package/dist/feedback/toast/index.d.ts +1 -1
  306. package/dist/feedback/toast/index.d.ts.map +1 -1
  307. package/dist/feedback/toast/toast.d.ts +16 -68
  308. package/dist/feedback/toast/toast.d.ts.map +1 -1
  309. package/dist/feedback/typing-indicator/typing-indicator.d.ts +1 -1
  310. package/dist/file-input.cjs +111 -78
  311. package/dist/file-input.cjs.map +1 -1
  312. package/dist/file-input.js +220 -184
  313. package/dist/file-input.js.map +1 -1
  314. package/dist/grid-item.cjs +3 -1
  315. package/dist/grid-item.cjs.map +1 -1
  316. package/dist/grid-item.js +3 -1
  317. package/dist/grid-item.js.map +1 -1
  318. package/dist/grid.cjs +3 -1
  319. package/dist/grid.cjs.map +1 -1
  320. package/dist/grid.js +6 -5
  321. package/dist/grid.js.map +1 -1
  322. package/dist/icon.cjs +5 -1
  323. package/dist/icon.cjs.map +1 -1
  324. package/dist/icon.js +50 -47
  325. package/dist/icon.js.map +1 -1
  326. package/dist/index.cjs +1 -1
  327. package/dist/index.d.ts +7 -8
  328. package/dist/index.d.ts.map +1 -1
  329. package/dist/index.js +2 -67
  330. package/dist/input.cjs +44 -40
  331. package/dist/input.cjs.map +1 -1
  332. package/dist/input.js +132 -130
  333. package/dist/input.js.map +1 -1
  334. package/dist/inputs/button-group/button-group.css.cjs +1 -1
  335. package/dist/inputs/button-group/button-group.css.cjs.map +1 -1
  336. package/dist/inputs/button-group/button-group.css.js +1 -1
  337. package/dist/inputs/button-group/button-group.css.js.map +1 -1
  338. package/dist/inputs/button-group/button-group.d.ts +6 -3
  339. package/dist/inputs/button-group/button-group.d.ts.map +1 -1
  340. package/dist/inputs/calendar/calendar.d.ts.map +1 -1
  341. package/dist/inputs/checkbox/checkbox.d.ts +6 -5
  342. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -1
  343. package/dist/inputs/checkbox-group/checkbox-group.d.ts +1 -1
  344. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -1
  345. package/dist/inputs/combobox/combobox.d.ts +4 -2
  346. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  347. package/dist/inputs/combobox/combobox.types.d.ts +5 -7
  348. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
  349. package/dist/inputs/datagrid/datagrid-column.cjs +1 -1
  350. package/dist/inputs/datagrid/datagrid-column.cjs.map +1 -1
  351. package/dist/inputs/datagrid/datagrid-column.d.ts +1 -1
  352. package/dist/inputs/datagrid/datagrid-column.d.ts.map +1 -1
  353. package/dist/inputs/datagrid/datagrid-column.js +5 -5
  354. package/dist/inputs/datagrid/datagrid-column.js.map +1 -1
  355. package/dist/inputs/datagrid/datagrid-model.cjs +2 -0
  356. package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -0
  357. package/dist/inputs/datagrid/datagrid-model.d.ts +101 -0
  358. package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -0
  359. package/dist/inputs/datagrid/datagrid-model.js +202 -0
  360. package/dist/inputs/datagrid/datagrid-model.js.map +1 -0
  361. package/dist/inputs/datagrid/datagrid-nav.cjs.map +1 -1
  362. package/dist/inputs/datagrid/datagrid.d.ts +44 -45
  363. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  364. package/dist/inputs/date-picker/date-picker.d.ts +4 -4
  365. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -1
  366. package/dist/inputs/file-input/file-input-upload.cjs +1 -1
  367. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  368. package/dist/inputs/file-input/file-input-upload.d.ts.map +1 -1
  369. package/dist/inputs/file-input/file-input-upload.js +6 -3
  370. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  371. package/dist/inputs/file-input/file-input.d.ts.map +1 -1
  372. package/dist/inputs/index.d.ts +0 -4
  373. package/dist/inputs/index.d.ts.map +1 -1
  374. package/dist/inputs/input/input.d.ts +4 -10
  375. package/dist/inputs/input/input.d.ts.map +1 -1
  376. package/dist/inputs/message-composer/message-composer.d.ts +6 -10
  377. package/dist/inputs/message-composer/message-composer.d.ts.map +1 -1
  378. package/dist/inputs/number-input/number-input.d.ts +4 -10
  379. package/dist/inputs/number-input/number-input.d.ts.map +1 -1
  380. package/dist/inputs/otp-input/otp-input.d.ts +4 -6
  381. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -1
  382. package/dist/inputs/radio/radio.d.ts +4 -3
  383. package/dist/inputs/radio/radio.d.ts.map +1 -1
  384. package/dist/inputs/radio-group/radio-group.d.ts +1 -1
  385. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -1
  386. package/dist/inputs/rating/rating.d.ts +4 -5
  387. package/dist/inputs/rating/rating.d.ts.map +1 -1
  388. package/dist/inputs/select/select.d.ts +7 -9
  389. package/dist/inputs/select/select.d.ts.map +1 -1
  390. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  391. package/dist/inputs/shared/field-binding.d.ts +1 -1
  392. package/dist/inputs/shared/field-binding.js.map +1 -1
  393. package/dist/inputs/shared/index.d.ts +0 -1
  394. package/dist/inputs/shared/index.d.ts.map +1 -1
  395. package/dist/inputs/shared/native-field-event.cjs +2 -0
  396. package/dist/inputs/shared/native-field-event.cjs.map +1 -0
  397. package/dist/inputs/shared/native-field-event.d.ts +6 -0
  398. package/dist/inputs/shared/native-field-event.d.ts.map +1 -0
  399. package/dist/inputs/shared/native-field-event.js +29 -0
  400. package/dist/inputs/shared/native-field-event.js.map +1 -0
  401. package/dist/inputs/shared/templates.cjs +18 -12
  402. package/dist/inputs/shared/templates.cjs.map +1 -1
  403. package/dist/inputs/shared/templates.d.ts +1 -1
  404. package/dist/inputs/shared/templates.d.ts.map +1 -1
  405. package/dist/inputs/shared/templates.js +19 -13
  406. package/dist/inputs/shared/templates.js.map +1 -1
  407. package/dist/inputs/slider/slider.css.cjs +1 -1
  408. package/dist/inputs/slider/slider.css.cjs.map +1 -1
  409. package/dist/inputs/slider/slider.css.js +1 -1
  410. package/dist/inputs/slider/slider.css.js.map +1 -1
  411. package/dist/inputs/slider/slider.d.ts +7 -10
  412. package/dist/inputs/slider/slider.d.ts.map +1 -1
  413. package/dist/inputs/switch/switch.d.ts +4 -3
  414. package/dist/inputs/switch/switch.d.ts.map +1 -1
  415. package/dist/inputs/textarea/textarea.d.ts +4 -10
  416. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  417. package/dist/inputs/time-picker/time-picker.d.ts +4 -4
  418. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -1
  419. package/dist/layout/box/box.d.ts.map +1 -1
  420. package/dist/layout/navbar/navbar.css.cjs +1 -1
  421. package/dist/layout/navbar/navbar.css.cjs.map +1 -1
  422. package/dist/layout/navbar/navbar.css.js +1 -1
  423. package/dist/layout/navbar/navbar.css.js.map +1 -1
  424. package/dist/layout/navbar/navbar.d.ts +10 -0
  425. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  426. package/dist/layout/sidebar/sidebar-item.css.cjs +1 -1
  427. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -1
  428. package/dist/layout/sidebar/sidebar-item.css.js +1 -1
  429. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -1
  430. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  431. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  432. package/dist/layout/sidebar/sidebar.css.js +1 -1
  433. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  434. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  435. package/dist/list-item.cjs +2 -2
  436. package/dist/list-item.cjs.map +1 -1
  437. package/dist/list-item.js +4 -4
  438. package/dist/list-item.js.map +1 -1
  439. package/dist/list.cjs +3 -1
  440. package/dist/list.cjs.map +1 -1
  441. package/dist/list.js +28 -25
  442. package/dist/list.js.map +1 -1
  443. package/dist/marquee.cjs +32 -0
  444. package/dist/marquee.cjs.map +1 -0
  445. package/dist/marquee.js +93 -0
  446. package/dist/marquee.js.map +1 -0
  447. package/dist/menu.cjs +7 -7
  448. package/dist/menu.cjs.map +1 -1
  449. package/dist/menu.js +135 -103
  450. package/dist/menu.js.map +1 -1
  451. package/dist/message-composer.cjs +33 -31
  452. package/dist/message-composer.cjs.map +1 -1
  453. package/dist/message-composer.js +123 -123
  454. package/dist/message-composer.js.map +1 -1
  455. package/dist/navbar.cjs +17 -15
  456. package/dist/navbar.cjs.map +1 -1
  457. package/dist/navbar.js +108 -89
  458. package/dist/navbar.js.map +1 -1
  459. package/dist/number-input.cjs +19 -19
  460. package/dist/number-input.cjs.map +1 -1
  461. package/dist/number-input.js +94 -97
  462. package/dist/number-input.js.map +1 -1
  463. package/dist/otp-input.cjs +15 -13
  464. package/dist/otp-input.cjs.map +1 -1
  465. package/dist/otp-input.js +83 -82
  466. package/dist/otp-input.js.map +1 -1
  467. package/dist/overlay/command-palette/command-palette.d.ts +2 -2
  468. package/dist/overlay/command-palette/command-palette.d.ts.map +1 -1
  469. package/dist/overlay/command-palette/command-palette.types.d.ts +4 -5
  470. package/dist/overlay/command-palette/command-palette.types.d.ts.map +1 -1
  471. package/dist/overlay/dialog/dialog.d.ts +7 -6
  472. package/dist/overlay/dialog/dialog.d.ts.map +1 -1
  473. package/dist/overlay/drawer/drawer.d.ts +7 -10
  474. package/dist/overlay/drawer/drawer.d.ts.map +1 -1
  475. package/dist/overlay/index.d.ts +1 -1
  476. package/dist/overlay/index.d.ts.map +1 -1
  477. package/dist/overlay/menu/menu.d.ts +9 -7
  478. package/dist/overlay/menu/menu.d.ts.map +1 -1
  479. package/dist/overlay/popover/popover.d.ts +6 -11
  480. package/dist/overlay/popover/popover.d.ts.map +1 -1
  481. package/dist/overlay/shared/await-exit.cjs +1 -1
  482. package/dist/overlay/shared/await-exit.cjs.map +1 -1
  483. package/dist/overlay/shared/await-exit.js +1 -1
  484. package/dist/overlay/shared/await-exit.js.map +1 -1
  485. package/dist/overlay/shared/use-dialog.cjs +1 -1
  486. package/dist/overlay/shared/use-dialog.cjs.map +1 -1
  487. package/dist/overlay/shared/use-dialog.d.ts +13 -3
  488. package/dist/overlay/shared/use-dialog.d.ts.map +1 -1
  489. package/dist/overlay/shared/use-dialog.js +80 -72
  490. package/dist/overlay/shared/use-dialog.js.map +1 -1
  491. package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
  492. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
  493. package/dist/overlay/shared/use-floating-trigger.d.ts +3 -1
  494. package/dist/overlay/shared/use-floating-trigger.d.ts.map +1 -1
  495. package/dist/overlay/shared/use-floating-trigger.js +64 -70
  496. package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
  497. package/dist/overlay/tooltip/tooltip.d.ts +9 -0
  498. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -1
  499. package/dist/pagination.cjs +69 -55
  500. package/dist/pagination.cjs.map +1 -1
  501. package/dist/pagination.js +70 -56
  502. package/dist/pagination.js.map +1 -1
  503. package/dist/password-strength.cjs +6 -4
  504. package/dist/password-strength.cjs.map +1 -1
  505. package/dist/password-strength.js +6 -4
  506. package/dist/password-strength.js.map +1 -1
  507. package/dist/popover.cjs +4 -4
  508. package/dist/popover.cjs.map +1 -1
  509. package/dist/popover.js +28 -17
  510. package/dist/popover.js.map +1 -1
  511. package/dist/progress.cjs +25 -17
  512. package/dist/progress.cjs.map +1 -1
  513. package/dist/progress.js +29 -22
  514. package/dist/progress.js.map +1 -1
  515. package/dist/radio-group.cjs +14 -12
  516. package/dist/radio-group.cjs.map +1 -1
  517. package/dist/radio-group.js +88 -90
  518. package/dist/radio-group.js.map +1 -1
  519. package/dist/radio.cjs +4 -4
  520. package/dist/radio.cjs.map +1 -1
  521. package/dist/radio.js +90 -90
  522. package/dist/radio.js.map +1 -1
  523. package/dist/rating.cjs +18 -16
  524. package/dist/rating.cjs.map +1 -1
  525. package/dist/rating.js +69 -69
  526. package/dist/rating.js.map +1 -1
  527. package/dist/refine.cjs +1670 -1325
  528. package/dist/refine.cjs.map +1 -1
  529. package/dist/refine.iife.js +1673 -1328
  530. package/dist/refine.iife.js.map +1 -1
  531. package/dist/refine.js +1758 -1413
  532. package/dist/refine.js.map +1 -1
  533. package/dist/register.d.ts +21 -0
  534. package/dist/register.d.ts.map +1 -0
  535. package/dist/select.cjs +59 -51
  536. package/dist/select.cjs.map +1 -1
  537. package/dist/select.js +189 -182
  538. package/dist/select.js.map +1 -1
  539. package/dist/separator.cjs +9 -9
  540. package/dist/separator.cjs.map +1 -1
  541. package/dist/separator.js +9 -9
  542. package/dist/separator.js.map +1 -1
  543. package/dist/shared/index.d.ts +1 -1
  544. package/dist/shared/prop-bundles.cjs +1 -1
  545. package/dist/shared/prop-bundles.cjs.map +1 -1
  546. package/dist/shared/prop-bundles.js +4 -2
  547. package/dist/shared/prop-bundles.js.map +1 -1
  548. package/dist/shared/size-presets.cjs +1 -1
  549. package/dist/shared/size-presets.cjs.map +1 -1
  550. package/dist/shared/size-presets.d.ts +3 -0
  551. package/dist/shared/size-presets.d.ts.map +1 -1
  552. package/dist/shared/size-presets.js +4 -1
  553. package/dist/shared/size-presets.js.map +1 -1
  554. package/dist/sidebar.cjs +8 -8
  555. package/dist/sidebar.cjs.map +1 -1
  556. package/dist/sidebar.js +25 -25
  557. package/dist/sidebar.js.map +1 -1
  558. package/dist/skeleton.cjs +4 -6
  559. package/dist/skeleton.cjs.map +1 -1
  560. package/dist/skeleton.js +21 -22
  561. package/dist/skeleton.js.map +1 -1
  562. package/dist/slider.cjs +14 -14
  563. package/dist/slider.cjs.map +1 -1
  564. package/dist/slider.js +160 -168
  565. package/dist/slider.js.map +1 -1
  566. package/dist/step.cjs +47 -0
  567. package/dist/step.cjs.map +1 -0
  568. package/dist/step.js +127 -0
  569. package/dist/step.js.map +1 -0
  570. package/dist/stepper.cjs +8 -0
  571. package/dist/stepper.cjs.map +1 -0
  572. package/dist/stepper.js +101 -0
  573. package/dist/stepper.js.map +1 -0
  574. package/dist/styles/index.d.ts +0 -28
  575. package/dist/styles/index.d.ts.map +1 -1
  576. package/dist/styles/mixins/shape.css.cjs +2 -2
  577. package/dist/styles/mixins/shape.css.cjs.map +1 -1
  578. package/dist/styles/mixins/shape.css.js +6 -6
  579. package/dist/styles/mixins/shape.css.js.map +1 -1
  580. package/dist/styles/tokens.css +4 -0
  581. package/dist/switch.cjs +4 -4
  582. package/dist/switch.cjs.map +1 -1
  583. package/dist/switch.js +44 -44
  584. package/dist/switch.js.map +1 -1
  585. package/dist/tab-item.cjs +3 -3
  586. package/dist/tab-item.cjs.map +1 -1
  587. package/dist/tab-item.js +24 -24
  588. package/dist/tab-item.js.map +1 -1
  589. package/dist/tab-panel.cjs +9 -7
  590. package/dist/tab-panel.cjs.map +1 -1
  591. package/dist/tab-panel.js +15 -14
  592. package/dist/tab-panel.js.map +1 -1
  593. package/dist/table.cjs +3 -1
  594. package/dist/table.cjs.map +1 -1
  595. package/dist/table.js +3 -1
  596. package/dist/table.js.map +1 -1
  597. package/dist/tabs.cjs +6 -6
  598. package/dist/tabs.cjs.map +1 -1
  599. package/dist/tabs.js +30 -29
  600. package/dist/tabs.js.map +1 -1
  601. package/dist/text.cjs +3 -1
  602. package/dist/text.cjs.map +1 -1
  603. package/dist/text.js +3 -1
  604. package/dist/text.js.map +1 -1
  605. package/dist/textarea.cjs +22 -22
  606. package/dist/textarea.cjs.map +1 -1
  607. package/dist/textarea.js +110 -112
  608. package/dist/textarea.js.map +1 -1
  609. package/dist/time-picker.cjs +69 -61
  610. package/dist/time-picker.cjs.map +1 -1
  611. package/dist/time-picker.js +146 -132
  612. package/dist/time-picker.js.map +1 -1
  613. package/dist/toast.cjs +22 -22
  614. package/dist/toast.cjs.map +1 -1
  615. package/dist/toast.js +280 -173
  616. package/dist/toast.js.map +1 -1
  617. package/dist/tooltip.cjs +5 -5
  618. package/dist/tooltip.cjs.map +1 -1
  619. package/dist/tooltip.js +61 -51
  620. package/dist/tooltip.js.map +1 -1
  621. package/dist/typing-indicator.cjs +1 -1
  622. package/dist/typing-indicator.cjs.map +1 -1
  623. package/dist/typing-indicator.js +5 -5
  624. package/dist/typing-indicator.js.map +1 -1
  625. package/dist/utils/link.cjs.map +1 -1
  626. package/dist/utils/link.d.ts +2 -2
  627. package/package.json +36 -117
  628. package/dist/form.cjs +0 -11
  629. package/dist/form.cjs.map +0 -1
  630. package/dist/form.js +0 -59
  631. package/dist/form.js.map +0 -1
  632. package/dist/headless/_internal.d.ts.map +0 -1
  633. package/dist/headless/announcer.cjs.map +0 -1
  634. package/dist/headless/announcer.d.ts.map +0 -1
  635. package/dist/headless/announcer.js.map +0 -1
  636. package/dist/headless/aria-reflection.cjs.map +0 -1
  637. package/dist/headless/aria-reflection.d.ts.map +0 -1
  638. package/dist/headless/aria-reflection.js.map +0 -1
  639. package/dist/headless/auto-resize.cjs.map +0 -1
  640. package/dist/headless/auto-resize.d.ts.map +0 -1
  641. package/dist/headless/auto-resize.js.map +0 -1
  642. package/dist/headless/checkable.cjs.map +0 -1
  643. package/dist/headless/checkable.d.ts.map +0 -1
  644. package/dist/headless/checkable.js.map +0 -1
  645. package/dist/headless/choice-field.cjs +0 -2
  646. package/dist/headless/choice-field.cjs.map +0 -1
  647. package/dist/headless/choice-field.d.ts.map +0 -1
  648. package/dist/headless/choice-field.js.map +0 -1
  649. package/dist/headless/composer.cjs.map +0 -1
  650. package/dist/headless/composer.d.ts.map +0 -1
  651. package/dist/headless/composer.js.map +0 -1
  652. package/dist/headless/datagrid.cjs +0 -2
  653. package/dist/headless/datagrid.cjs.map +0 -1
  654. package/dist/headless/datagrid.d.ts +0 -158
  655. package/dist/headless/datagrid.d.ts.map +0 -1
  656. package/dist/headless/datagrid.js +0 -55
  657. package/dist/headless/datagrid.js.map +0 -1
  658. package/dist/headless/date-picker.cjs.map +0 -1
  659. package/dist/headless/date-picker.d.ts.map +0 -1
  660. package/dist/headless/date-picker.js.map +0 -1
  661. package/dist/headless/direction.cjs.map +0 -1
  662. package/dist/headless/direction.d.ts.map +0 -1
  663. package/dist/headless/direction.js.map +0 -1
  664. package/dist/headless/field-base.cjs +0 -2
  665. package/dist/headless/field-base.cjs.map +0 -1
  666. package/dist/headless/field-base.d.ts.map +0 -1
  667. package/dist/headless/field-base.js +0 -72
  668. package/dist/headless/field-base.js.map +0 -1
  669. package/dist/headless/focus.cjs.map +0 -1
  670. package/dist/headless/focus.d.ts.map +0 -1
  671. package/dist/headless/focus.js.map +0 -1
  672. package/dist/headless/index.d.ts.map +0 -1
  673. package/dist/headless/keyboard.cjs.map +0 -1
  674. package/dist/headless/keyboard.d.ts.map +0 -1
  675. package/dist/headless/keyboard.js.map +0 -1
  676. package/dist/headless/light-dom.cjs.map +0 -1
  677. package/dist/headless/light-dom.d.ts.map +0 -1
  678. package/dist/headless/light-dom.js.map +0 -1
  679. package/dist/headless/nav.cjs.map +0 -1
  680. package/dist/headless/nav.d.ts.map +0 -1
  681. package/dist/headless/nav.js.map +0 -1
  682. package/dist/headless/numbers.cjs.map +0 -1
  683. package/dist/headless/numbers.d.ts.map +0 -1
  684. package/dist/headless/numbers.js.map +0 -1
  685. package/dist/headless/option-list.cjs +0 -2
  686. package/dist/headless/option-list.cjs.map +0 -1
  687. package/dist/headless/option-list.d.ts +0 -107
  688. package/dist/headless/option-list.d.ts.map +0 -1
  689. package/dist/headless/option-list.js +0 -66
  690. package/dist/headless/option-list.js.map +0 -1
  691. package/dist/headless/ore.cjs.map +0 -1
  692. package/dist/headless/ore.d.ts.map +0 -1
  693. package/dist/headless/ore.js.map +0 -1
  694. package/dist/headless/overlay.cjs +0 -2
  695. package/dist/headless/overlay.cjs.map +0 -1
  696. package/dist/headless/overlay.d.ts +0 -64
  697. package/dist/headless/overlay.d.ts.map +0 -1
  698. package/dist/headless/overlay.js +0 -32
  699. package/dist/headless/overlay.js.map +0 -1
  700. package/dist/headless/paginated-list.cjs +0 -2
  701. package/dist/headless/paginated-list.cjs.map +0 -1
  702. package/dist/headless/paginated-list.d.ts.map +0 -1
  703. package/dist/headless/paginated-list.js +0 -34
  704. package/dist/headless/paginated-list.js.map +0 -1
  705. package/dist/headless/parse.cjs.map +0 -1
  706. package/dist/headless/parse.d.ts.map +0 -1
  707. package/dist/headless/parse.js.map +0 -1
  708. package/dist/headless/positioner.cjs +0 -2
  709. package/dist/headless/positioner.cjs.map +0 -1
  710. package/dist/headless/positioner.d.ts.map +0 -1
  711. package/dist/headless/positioner.js.map +0 -1
  712. package/dist/headless/ref-callback.cjs +0 -2
  713. package/dist/headless/ref-callback.cjs.map +0 -1
  714. package/dist/headless/ref-callback.d.ts.map +0 -1
  715. package/dist/headless/ref-callback.js.map +0 -1
  716. package/dist/headless/selection-control.cjs +0 -2
  717. package/dist/headless/selection-control.cjs.map +0 -1
  718. package/dist/headless/selection-control.d.ts +0 -30
  719. package/dist/headless/selection-control.d.ts.map +0 -1
  720. package/dist/headless/selection-control.js +0 -44
  721. package/dist/headless/selection-control.js.map +0 -1
  722. package/dist/headless/signals.cjs +0 -2
  723. package/dist/headless/signals.cjs.map +0 -1
  724. package/dist/headless/signals.d.ts.map +0 -1
  725. package/dist/headless/signals.js.map +0 -1
  726. package/dist/headless/slider.cjs +0 -2
  727. package/dist/headless/slider.d.ts.map +0 -1
  728. package/dist/headless/slider.js.map +0 -1
  729. package/dist/headless/sort-control.cjs +0 -2
  730. package/dist/headless/sort-control.cjs.map +0 -1
  731. package/dist/headless/sort-control.d.ts +0 -22
  732. package/dist/headless/sort-control.d.ts.map +0 -1
  733. package/dist/headless/sort-control.js +0 -36
  734. package/dist/headless/sort-control.js.map +0 -1
  735. package/dist/headless/spinner.cjs +0 -2
  736. package/dist/headless/spinner.d.ts.map +0 -1
  737. package/dist/headless/spinner.js.map +0 -1
  738. package/dist/headless/swipe.cjs.map +0 -1
  739. package/dist/headless/swipe.d.ts.map +0 -1
  740. package/dist/headless/swipe.js.map +0 -1
  741. package/dist/headless/text-field.cjs.map +0 -1
  742. package/dist/headless/text-field.d.ts.map +0 -1
  743. package/dist/headless/text-field.js.map +0 -1
  744. package/dist/headless/typeahead.cjs.map +0 -1
  745. package/dist/headless/typeahead.d.ts.map +0 -1
  746. package/dist/headless/typeahead.js.map +0 -1
  747. package/dist/headless.cjs +0 -1
  748. package/dist/headless.js +0 -30
  749. package/dist/inputs/datagrid/datagrid-controls.cjs +0 -2
  750. package/dist/inputs/datagrid/datagrid-controls.cjs.map +0 -1
  751. package/dist/inputs/datagrid/datagrid-controls.d.ts +0 -98
  752. package/dist/inputs/datagrid/datagrid-controls.d.ts.map +0 -1
  753. package/dist/inputs/datagrid/datagrid-controls.js +0 -147
  754. package/dist/inputs/datagrid/datagrid-controls.js.map +0 -1
  755. package/dist/inputs/form/form.css.cjs +0 -2
  756. package/dist/inputs/form/form.css.cjs.map +0 -1
  757. package/dist/inputs/form/form.css.js +0 -6
  758. package/dist/inputs/form/form.css.js.map +0 -1
  759. package/dist/inputs/form/form.d.ts +0 -59
  760. package/dist/inputs/form/form.d.ts.map +0 -1
  761. package/dist/inputs/shared/form-context.cjs +0 -2
  762. package/dist/inputs/shared/form-context.cjs.map +0 -1
  763. package/dist/inputs/shared/form-context.d.ts +0 -55
  764. package/dist/inputs/shared/form-context.d.ts.map +0 -1
  765. package/dist/inputs/shared/form-context.js +0 -15
  766. package/dist/inputs/shared/form-context.js.map +0 -1
  767. package/dist/keymap/dist/_dev.cjs +0 -2
  768. package/dist/keymap/dist/_dev.cjs.map +0 -1
  769. package/dist/keymap/dist/_dev.js +0 -4
  770. package/dist/keymap/dist/_dev.js.map +0 -1
  771. package/dist/keymap/dist/format.cjs +0 -1
  772. package/dist/keymap/dist/format.js +0 -1
  773. package/dist/keymap/dist/index.cjs +0 -1
  774. package/dist/keymap/dist/index.js +0 -4
  775. package/dist/keymap/dist/keymap.cjs +0 -2
  776. package/dist/keymap/dist/keymap.cjs.map +0 -1
  777. package/dist/keymap/dist/keymap.js +0 -221
  778. package/dist/keymap/dist/keymap.js.map +0 -1
  779. package/dist/keymap/dist/layer.cjs +0 -1
  780. package/dist/keymap/dist/layer.js +0 -1
  781. package/dist/styles/index.cjs +0 -2
  782. package/dist/styles/index.cjs.map +0 -1
  783. package/dist/styles/index.js +0 -25
  784. package/dist/styles/index.js.map +0 -1
  785. package/dist/styles/styles.css +0 -5
  786. package/dist/testing/index.d.ts +0 -233
  787. package/dist/testing/index.d.ts.map +0 -1
  788. package/dist/testing.cjs +0 -2
  789. package/dist/testing.cjs.map +0 -1
  790. package/dist/testing.js +0 -43
  791. package/dist/testing.js.map +0 -1
  792. /package/dist/{headless → core}/announcer.cjs +0 -0
  793. /package/dist/{headless → core}/announcer.d.ts +0 -0
  794. /package/dist/{headless → core}/aria-reflection.cjs +0 -0
  795. /package/dist/{headless → core}/aria-reflection.d.ts +0 -0
  796. /package/dist/{headless → core}/auto-resize.cjs +0 -0
  797. /package/dist/{headless → core}/auto-resize.d.ts +0 -0
  798. /package/dist/{headless → core}/checkable.cjs +0 -0
  799. /package/dist/{headless → core}/checkable.d.ts +0 -0
  800. /package/dist/{headless → core}/choice-field.d.ts +0 -0
  801. /package/dist/{headless → core}/composer.cjs +0 -0
  802. /package/dist/{headless → core}/composer.d.ts +0 -0
  803. /package/dist/{headless → core}/date-picker.d.ts +0 -0
  804. /package/dist/{headless → core}/direction.cjs +0 -0
  805. /package/dist/{headless → core}/direction.d.ts +0 -0
  806. /package/dist/{headless → core}/focus.cjs +0 -0
  807. /package/dist/{headless → core}/focus.d.ts +0 -0
  808. /package/dist/{headless → core}/keyboard.d.ts +0 -0
  809. /package/dist/{headless → core}/light-dom.cjs +0 -0
  810. /package/dist/{headless → core}/light-dom.d.ts +0 -0
  811. /package/dist/{headless → core}/nav.cjs +0 -0
  812. /package/dist/{headless → core}/nav.d.ts +0 -0
  813. /package/dist/{headless → core}/numbers.cjs +0 -0
  814. /package/dist/{headless → core}/numbers.d.ts +0 -0
  815. /package/dist/{headless → core}/ore.cjs +0 -0
  816. /package/dist/{headless → core}/paginated-list.d.ts +0 -0
  817. /package/dist/{headless → core}/parse.cjs +0 -0
  818. /package/dist/{headless → core}/parse.d.ts +0 -0
  819. /package/dist/{headless → core}/positioner.d.ts +0 -0
  820. /package/dist/{headless → core}/ref-callback.d.ts +0 -0
  821. /package/dist/{headless → core}/signals.d.ts +0 -0
  822. /package/dist/{headless → core}/slider.d.ts +0 -0
  823. /package/dist/{headless → core}/spinner.d.ts +0 -0
  824. /package/dist/{headless → core}/swipe.cjs +0 -0
  825. /package/dist/{headless → core}/swipe.d.ts +0 -0
  826. /package/dist/{headless → core}/text-field.cjs +0 -0
  827. /package/dist/{headless → core}/text-field.d.ts +0 -0
  828. /package/dist/{headless → core}/typeahead.cjs +0 -0
  829. /package/dist/{headless → core}/typeahead.d.ts +0 -0
package/dist/menu.js CHANGED
@@ -1,27 +1,30 @@
1
- import { sizeVariantMixin as e } from "./styles/mixins/shape.css.js";
2
- import { colorThemeMixin as t, forcedColorsMixin as n } from "./styles/mixins/theme.css.js";
3
- import { disablableBundle as r, sizableBundle as i } from "./shared/prop-bundles.js";
4
- import { MENU_SIZE_PRESET as a } from "./shared/size-presets.js";
5
- import { lifecycleSignal as o } from "./headless/ore.js";
6
- import { createInteraction as s } from "./headless/keyboard.js";
7
- import { createOptionList as c } from "./headless/option-list.js";
8
- import l from "./overlay/menu/menu-item.css.js";
9
- import u from "./overlay/menu/menu-separator.css.js";
10
- import d from "./overlay/menu/menu.css.js";
11
- import { aria as f, bind as p, createStableId as m, define as h, getHost as g, html as _, onCleanup as v, onMounted as y, prop as b, useEmit as x, useSlots as S, watchEffect as C } from "@vielzeug/ore";
12
- import { computed as w, watch as T } from "@vielzeug/ripple";
1
+ import { lifecycleSignal as e } from "./core/ore.js";
2
+ import { createInteraction as t } from "./core/keyboard.js";
3
+ import { sizeVariantMixin as n } from "./styles/mixins/shape.css.js";
4
+ import { colorThemeMixin as r, forcedColorsMixin as i } from "./styles/mixins/theme.css.js";
5
+ import { createDropdownPositioner as a } from "./core/positioner.js";
6
+ import { createListControl as o } from "./core/nav.js";
7
+ import { disablableBundle as s, sizableBundle as c } from "./shared/prop-bundles.js";
8
+ import { MENU_SIZE_PRESET as l } from "./shared/size-presets.js";
9
+ import { createOutsidePointerDismissal as u, restoreFocus as d } from "./core/overlay.js";
10
+ import f from "./overlay/menu/menu-item.css.js";
11
+ import p from "./overlay/menu/menu-separator.css.js";
12
+ import m from "./overlay/menu/menu.css.js";
13
+ import { bind as h, createStableId as g, define as _, getHost as v, html as y, onCleanup as b, onMounted as x, prop as S, useEmit as C, useSlots as w, watchEffect as T } from "@vielzeug/ore";
14
+ import { computed as E, signal as D } from "@vielzeug/ripple";
15
+ import { watch as O } from "@vielzeug/ripple/watch";
13
16
  //#region src/overlay/menu/menu.ts
14
- var E = "ore-menu-item";
15
- h(E, {
17
+ var k = "ore-menu-item";
18
+ _(k, {
16
19
  props: {
17
- checked: b.bool(!1),
18
- disabled: b.bool(!1),
19
- type: b.string(),
20
- value: b.string()
20
+ checked: S.bool(!1),
21
+ disabled: S.bool(!1),
22
+ type: S.string(),
23
+ value: S.string()
21
24
  },
22
25
  setup(e) {
23
26
  let t = () => e.type.value === "checkbox" || e.type.value === "radio", n = () => t() && e.checked.value;
24
- return t() ? _`
27
+ return t() ? y`
25
28
  <div
26
29
  class="${() => {
27
30
  let t = e.type.value;
@@ -40,28 +43,33 @@ h(E, {
40
43
  <span class="icon-slot"><slot name="icon"></slot></span>
41
44
  <span class="item-label"><slot></slot></span>
42
45
  </div>
43
- ` : _`
46
+ ` : y`
44
47
  <div class="item" tabindex="-1" role="menuitem" aria-disabled="${e.disabled}">
45
48
  <span class="icon-slot"><slot name="icon"></slot></span>
46
49
  <span class="item-label"><slot></slot></span>
47
50
  </div>
48
51
  `;
49
52
  },
50
- styles: [t, l]
53
+ styles: [r, f]
51
54
  });
52
- var D = "ore-menu-separator";
53
- h(D, {
55
+ var A = "ore-menu-separator";
56
+ _(A, {
54
57
  setup() {
55
- return _``;
58
+ return y``;
56
59
  },
57
- styles: [u]
60
+ styles: [p]
58
61
  });
59
- var O = (e) => e === "checkbox" || e === "radio", k = "ore-menu";
60
- h(k, {
62
+ var j = (e) => e === "checkbox" || e === "radio", M = (e) => e == null ? void 0 : e === "" || e === "true", N = "ore-menu";
63
+ _(N, {
61
64
  props: {
62
- ...i,
63
- ...r,
64
- placement: b.oneOf([
65
+ ...c,
66
+ ...s,
67
+ "default-open": S.bool(!1),
68
+ open: {
69
+ default: void 0,
70
+ parse: M
71
+ },
72
+ placement: S.oneOf([
65
73
  "bottom",
66
74
  "bottom-start",
67
75
  "bottom-end",
@@ -70,129 +78,153 @@ h(k, {
70
78
  "top-end"
71
79
  ], "bottom-start")
72
80
  },
73
- setup(e) {
74
- let t = g(), n = x(), r = S(), i = C, a = m("menu"), l = w(() => !!e.disabled.value), u = o(v), d = null, h = null, b = null;
75
- function E() {
76
- return Array.from(t.querySelectorAll("ore-menu-item:not([disabled])"));
81
+ setup(n) {
82
+ let r = v(), i = C(), s = w(), c = T, l = g("menu"), f = E(() => !!n.disabled.value), p = e(b), m = null, _ = null, S = null;
83
+ function k() {
84
+ return Array.from(r.querySelectorAll("ore-menu-item:not([disabled])"));
77
85
  }
78
- function D(e) {
86
+ function A(e) {
79
87
  return e ? e.shadowRoot?.querySelector("[role^=\"menuitem\"]") ?? e : null;
80
88
  }
81
- function k() {
82
- return E().findIndex((e) => {
83
- let t = D(e);
89
+ function M() {
90
+ return k().findIndex((e) => {
91
+ let t = A(e);
84
92
  return e === document.activeElement || t === document.activeElement;
85
93
  });
86
94
  }
87
- let A = c({
88
- getBoundary: () => t,
89
- getItems: E,
90
- getPanel: () => h,
91
- getReference: () => d,
92
- getTrigger: () => d,
93
- isDisabled: () => l.value,
95
+ let N = D(!1), P = null, F = a({
96
+ getFloating: () => _,
97
+ getPlacement: () => n.placement.value ?? "bottom-start",
98
+ getReference: () => m,
99
+ matchWidth: !1,
100
+ offsetPx: 4,
101
+ padding: 6
102
+ }), I = o({
103
+ disabled: E(() => !N.value),
104
+ getItems: k,
94
105
  isItemDisabled: (e) => e.hasAttribute("disabled"),
95
- onClose: (e) => n("close", { reason: e }),
96
106
  onNavigate: (e, t) => {
97
- let n = E()[t];
98
- D(n)?.focus();
99
- },
100
- onOpen: (e) => n("open", { reason: e }),
101
- positioning: {
102
- getPlacement: () => e.placement.value ?? "bottom-start",
103
- matchWidth: !1,
104
- offsetPx: 4,
105
- padding: 6
107
+ let n = k()[t];
108
+ A(n)?.focus();
106
109
  },
107
- signal: u
108
- }), { isOpen: j } = A, M = (e) => {
109
- let r = e.getAttribute("type"), i = O(r);
110
- if (r === "checkbox") e.toggleAttribute("checked", !e.hasAttribute("checked"));
111
- else if (r === "radio") for (let n of t.querySelectorAll("ore-menu-item[type=\"radio\"]")) n.toggleAttribute("checked", n === e);
112
- let a = e.getAttribute("value") ?? "", o = i ? e.hasAttribute("checked") : void 0;
113
- n("select", {
110
+ signal: p
111
+ }), L = (e = "programmatic", t = !0) => {
112
+ N.value && (N.value = !1, I.reset(), P?.(), P = null, t && d(() => m), i("open-change", {
113
+ open: !1,
114
+ reason: e
115
+ }));
116
+ }, R = (e = "programmatic") => {
117
+ f.value || N.value || (N.value = !0, F.update(), P = F.startAutoUpdate?.() ?? null, i("open-change", {
118
+ open: !0,
119
+ reason: e
120
+ }));
121
+ }, z = () => {
122
+ N.value ? L("trigger") : R("click");
123
+ };
124
+ u({
125
+ getTargets: () => [r, _],
126
+ isActive: () => N.value,
127
+ onDismiss: () => L("outsideClick"),
128
+ signal: p
129
+ });
130
+ let B = !1;
131
+ O(n.open, (e) => {
132
+ e === void 0 ? B ? L("programmatic") : n["default-open"].value && R("programmatic") : e ? R("programmatic") : L("programmatic"), B = !0;
133
+ }, { immediate: !0 }), p.addEventListener("abort", () => {
134
+ N.value && (N.value = !1, I.reset(), P?.(), P = null);
135
+ }, { once: !0 });
136
+ let V = (e) => {
137
+ let t = e.getAttribute("type"), n = j(t);
138
+ if (t === "checkbox") e.toggleAttribute("checked", !e.hasAttribute("checked"));
139
+ else if (t === "radio") for (let t of r.querySelectorAll("ore-menu-item[type=\"radio\"]")) t.toggleAttribute("checked", t === e);
140
+ let a = e.getAttribute("value") ?? "", o = n ? e.hasAttribute("checked") : void 0;
141
+ i("select", {
114
142
  checked: o,
115
143
  value: a
116
- }), i || A.close("programmatic");
117
- }, N = s({
144
+ }), n || L("programmatic");
145
+ }, H = t({
118
146
  keys: [
119
147
  "Enter",
120
148
  " ",
121
149
  "ArrowDown"
122
150
  ],
123
151
  onPress: () => {
124
- A.open("keyboard"), requestAnimationFrame(() => A.set(0));
152
+ R("keyboard"), requestAnimationFrame(() => I.set(0));
125
153
  }
126
- }), P = s({ onPress: () => {
127
- let e = A.getActiveItem();
128
- e && M(e);
154
+ }), U = t({ onPress: () => {
155
+ let e = I.getActiveItem();
156
+ e && V(e);
129
157
  } });
130
- function F(e) {
131
- if (l.value) return;
132
- if (!j.value) {
133
- N.handleKeydown(e);
158
+ function W(e) {
159
+ if (f.value) return;
160
+ if (!N.value) {
161
+ H.handleKeydown(e);
162
+ return;
163
+ }
164
+ let t = M();
165
+ if (t >= 0 && I.set(t), e.key === "Escape") {
166
+ e.preventDefault(), L("escape");
134
167
  return;
135
168
  }
136
- let t = k();
137
- if (t >= 0 && A.set(t), !A.handleKeydown(e)) {
169
+ if (!I.handleKeydown(e)) {
138
170
  if (e.key === " " || e.key === "Enter") {
139
- P.handleKeydown(e);
171
+ U.handleKeydown(e);
140
172
  return;
141
173
  }
142
- e.key === "Tab" && A.close("programmatic");
174
+ e.key === "Tab" && L("programmatic");
143
175
  }
144
176
  }
145
- p({ on: { click: (e) => {
177
+ h({ on: { click: (e) => {
146
178
  let t = e.composedPath();
147
- if (!j.value) return;
179
+ if (!N.value) return;
148
180
  let n = t.find((e) => e instanceof HTMLElement && e.tagName === "ORE-MENU-ITEM") ?? e.target?.closest("ore-menu-item") ?? null;
149
- !n || n.hasAttribute("disabled") || M(n);
150
- } } }), i(() => {
151
- let e = j.value;
152
- h && h.toggleAttribute("data-open", e);
181
+ !n || n.hasAttribute("disabled") || V(n);
182
+ } } }), c(() => {
183
+ let e = N.value;
184
+ _ && _.toggleAttribute("data-open", e);
153
185
  });
154
- function I() {
155
- if (b?.(), b = null, d = r.elements("trigger").value?.[0] ?? null, !d) return;
156
- let e = [], t = f(d, {
157
- controls: () => a,
158
- disabled: () => l.value,
159
- expanded: () => String(j.value),
186
+ function G() {
187
+ if (S?.(), S = null, m = s.elements("trigger").value?.[0] ?? null, !m) return;
188
+ let e = [], t = h({ aria: {
189
+ controls: () => l,
190
+ disabled: () => f.value,
191
+ expanded: () => String(N.value),
160
192
  haspopup: "menu"
161
- }), n = (e) => {
162
- e.stopPropagation(), !l.value && A.toggle();
163
- }, i = (e) => {
164
- F(e);
193
+ } }, { target: m }), n = (e) => {
194
+ e.stopPropagation(), !f.value && z();
195
+ }, r = (e) => {
196
+ W(e);
165
197
  };
166
- d.addEventListener("click", n), d.addEventListener("keydown", i), e.push(() => d?.removeEventListener("click", n)), e.push(() => d?.removeEventListener("keydown", i)), b = () => {
198
+ m.addEventListener("click", n), m.addEventListener("keydown", r), e.push(() => m?.removeEventListener("click", n)), e.push(() => m?.removeEventListener("keydown", r)), S = () => {
167
199
  t();
168
200
  for (let t of e) t();
169
201
  };
170
202
  }
171
- return T(r.elements("trigger"), I, { immediate: !0 }), y(() => () => {
172
- b?.(), b = null;
173
- }), _`
203
+ return O(s.elements("trigger"), G, { immediate: !0 }), x(() => () => {
204
+ S?.(), S = null;
205
+ }), y`
174
206
  <slot name="trigger"></slot>
175
207
  <div
176
208
  class="menu-panel"
177
209
  part="panel"
178
- id="${a}"
210
+ id="${l}"
179
211
  role="menu"
180
212
  aria-orientation="vertical"
181
- @keydown="${F}"
213
+ @keydown="${W}"
182
214
  ref="${(e) => {
183
- h = e;
215
+ _ = e, _?.toggleAttribute("data-open", N.value);
184
216
  }}">
185
217
  <slot></slot>
186
218
  </div>
187
219
  `;
188
220
  },
189
221
  styles: [
190
- d,
191
- e(a),
192
- n
222
+ m,
223
+ n(l),
224
+ i
193
225
  ]
194
226
  });
195
227
  //#endregion
196
- export { E as MENU_ITEM_TAG, k as MENU_TAG, D as SEPARATOR_TAG };
228
+ export { k as MENU_ITEM_TAG, N as MENU_TAG, A as SEPARATOR_TAG };
197
229
 
198
230
  //# sourceMappingURL=menu.js.map
package/dist/menu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","names":[],"sources":["../src/overlay/menu/menu.ts"],"sourcesContent":["import type { Placement } from '@vielzeug/orbit';\n\nimport {\n createStableId,\n define,\n html,\n prop,\n aria,\n bind,\n getHost,\n onCleanup,\n onMounted,\n useEmit,\n useSlots,\n watchEffect,\n} from '@vielzeug/ore';\nimport { computed, watch as rippleWatch } from '@vielzeug/ripple';\n\nimport type { ComponentSize } from '../../types';\n\nimport {\n lifecycleSignal,\n createInteraction,\n createOptionList,\n type DropdownCloseReason,\n type OverlayOpenDetail,\n} from '../../headless';\nimport { disablableBundle, MENU_SIZE_PRESET, sizableBundle } from '../../shared';\nimport { colorThemeMixin, forcedColorsMixin, sizeVariantMixin } from '../../styles';\nimport menuItemStyles from './menu-item.css?inline';\nimport menuSeparatorStyles from './menu-separator.css?inline';\nimport componentStyles from './menu.css?inline';\n\n// ── Types ─────────────────────────────────────────────────────────────\n\nexport interface MenuSelectDetail {\n value: string;\n checked?: boolean;\n}\n\nexport type OreMenuItemType = 'checkbox' | 'radio';\n\nexport type OreMenuEvents = {\n close: { reason: DropdownCloseReason };\n open: OverlayOpenDetail;\n select: MenuSelectDetail;\n};\n\nexport type OreMenuItemProps = {\n checked?: boolean;\n disabled?: boolean;\n type?: OreMenuItemType;\n value?: string;\n};\n\nexport type OreMenuProps = {\n disabled?: boolean;\n placement?: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end';\n size?: ComponentSize;\n};\n\n// ── Styles ─────────────────────────────────────────────────────────────\n\n// ── Menu Item Component ─────────────────────────────────────────────────────────────\n\n/**\n * A selectable action item used inside `<ore-menu>`.\n *\n * @element ore-menu-item\n *\n * @attr {boolean} checked - Checked state for `checkbox` and `radio` item types\n * @attr {boolean} disabled - Disables selection and pointer interaction\n * @attr {'checkbox'|'radio'} type - Optional checkable menu item mode\n * @attr {string} value - Value emitted by parent menu on selection\n *\n * @slot - Item label/content\n * @slot icon - Optional leading icon content\n *\n * @cssprop --menu-item-hover-bg - Background on hover\n * @cssprop --menu-item-focus-color - Text color when keyboard-focused\n * @cssprop --menu-item-focus-bg - Background when keyboard-focused\n * @cssprop --menu-item-selection-bg - Background for checkbox/radio items (unselected)\n * @cssprop --menu-item-checked-color - Text color when checked\n * @cssprop --menu-item-checked-bg - Background when checked\n *\n * @part item - Root item container element.\n * @part item-label - Label text container.\n * @part icon-slot - Leading icon slot container.\n *\n * @example\n * ```html\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\" disabled>Delete</ore-menu-item>\n * <ore-menu-item type=\"checkbox\" value=\"wrap\" checked>Word wrap</ore-menu-item>\n * <ore-menu-item type=\"radio\" value=\"left\">Align left</ore-menu-item>\n * ```\n */\nexport const MENU_ITEM_TAG = 'ore-menu-item' as const;\ndefine<OreMenuItemProps>(MENU_ITEM_TAG, {\n props: {\n checked: prop.bool(false),\n disabled: prop.bool(false),\n type: prop.string<OreMenuItemType>(),\n value: prop.string(),\n },\n setup(props) {\n const isCheckable = () => props.type.value === 'checkbox' || props.type.value === 'radio';\n const isChecked = () => isCheckable() && props.checked.value;\n const itemRole = () => {\n if (props.type.value === 'checkbox') return 'menuitemcheckbox';\n\n if (props.type.value === 'radio') return 'menuitemradio';\n\n return 'menuitem';\n };\n const itemClass = () => {\n const type = props.type.value;\n\n return [\n 'item',\n type === 'checkbox' ? 'is-checkbox' : '',\n type === 'radio' ? 'is-radio' : '',\n isChecked() ? 'is-checked' : '',\n ]\n .filter(Boolean)\n .join(' ');\n };\n\n return isCheckable()\n ? html`\n <div\n class=\"${itemClass}\"\n tabindex=\"-1\"\n role=\"${itemRole}\"\n aria-checked=\"${() => String(isChecked())}\"\n aria-disabled=\"${props.disabled}\">\n <span class=\"item-check\" aria-hidden=\"true\"></span>\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `\n : html`\n <div class=\"item\" tabindex=\"-1\" role=\"menuitem\" aria-disabled=\"${props.disabled}\">\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `;\n },\n styles: [colorThemeMixin, menuItemStyles],\n});\n\n// ── Menu Separator ─────────────────────────────────────────────────────────────\n\n/**\n * Visual separator used to group menu items inside `<ore-menu>`.\n *\n * @element ore-menu-separator\n *\n * @example\n * ```html\n * <ore-menu-item value=\"cut\">Cut</ore-menu-item>\n * <ore-menu-separator></ore-menu-separator>\n * <ore-menu-item value=\"paste\">Paste</ore-menu-item>\n * ```\n */\nexport const SEPARATOR_TAG = 'ore-menu-separator' as const;\ndefine(SEPARATOR_TAG, {\n setup() {\n return html``;\n },\n styles: [menuSeparatorStyles],\n});\n\n// ── Menu Component ─────────────────────────────────────────────────────────────\n\nconst isCheckableItemType = (value: string | null): value is OreMenuItemType =>\n value === 'checkbox' || value === 'radio';\n\n/**\n * Action dropdown menu triggered by a slotted trigger element.\n *\n * @element ore-menu\n * @element ore-menu-item - Clickable menu option (place in default slot)\n * @element ore-menu-separator - Visual divider between menu groups\n *\n * @attr {boolean} disabled - Disables opening and keyboard interaction\n * @attr {string} placement - Panel placement: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end' (default: 'bottom-start')\n * @attr {string} size - Size: 'sm' | 'md' | 'lg'\n *\n * @fires open - Fired when the menu opens. detail: { reason: 'trigger' | 'programmatic' }\n * @fires close - Fired when the menu closes. detail: { reason: 'escape' | 'outsideClick' | 'programmatic' | 'trigger' }\n * @fires select - Fired when an item is selected. detail: { value: string, checked?: boolean }\n *\n * @slot trigger - Trigger element that toggles menu visibility\n * @slot - Menu content (`<ore-menu-item>` and `<ore-menu-separator>`)\n *\n * @part panel - Floating menu panel container\n *\n * @cssprop --menu-panel-bg - Background of the floating panel\n * @cssprop --menu-panel-border-color - Border color of the floating panel\n * @cssprop --menu-panel-shadow - Box shadow of the floating panel\n * @cssprop --menu-panel-blur - Backdrop blur amount for the floating panel\n * @cssprop --menu-panel-min-width - Minimum width of the floating panel\n * @cssprop --menu-panel-max-height - Maximum height of the floating panel before it scrolls\n * @cssprop --menu-panel-radius - Border radius of the floating panel\n *\n * @example\n * ```html\n * <ore-menu>\n * <button slot=\"trigger\">Actions</button>\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\">Delete</ore-menu-item>\n * </ore-menu>\n * ```\n */\nexport const MENU_TAG = 'ore-menu' as const;\ndefine<OreMenuProps>(MENU_TAG, {\n props: {\n ...sizableBundle,\n ...disablableBundle,\n placement: prop.oneOf(\n ['bottom', 'bottom-start', 'bottom-end', 'top', 'top-start', 'top-end'] as const,\n 'bottom-start',\n ),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreMenuEvents>();\n const slots = useSlots();\n const watch = watchEffect;\n\n const menuId = createStableId('menu');\n const isDisabled = computed(() => Boolean(props.disabled.value));\n const abortSignal = lifecycleSignal(onCleanup);\n let triggerEl: HTMLElement | null = null;\n let panelEl: HTMLElement | null = null;\n let cleanupTrigger: (() => void) | null = null;\n\n // ── Helpers ───────────────────────────────────────────────────────────────\n function getItems(): HTMLElement[] {\n return Array.from(el.querySelectorAll<HTMLElement>('ore-menu-item:not([disabled])'));\n }\n\n function getItemFocusable(item: HTMLElement | null | undefined): HTMLElement | null {\n if (!item) return null;\n\n return item.shadowRoot?.querySelector<HTMLElement>('[role^=\"menuitem\"]') ?? item;\n }\n\n function getFocusedItemIndex(): number {\n const items = getItems();\n\n return items.findIndex((item) => {\n const focusable = getItemFocusable(item);\n\n return item === document.activeElement || focusable === document.activeElement;\n });\n }\n\n const optionList = createOptionList<HTMLElement>({\n getBoundary: () => el,\n getItems: getItems,\n getPanel: () => panelEl,\n getReference: () => triggerEl,\n getTrigger: () => triggerEl,\n isDisabled: () => isDisabled.value,\n isItemDisabled: (item) => item.hasAttribute('disabled'),\n onClose: (reason) => emit('close', { reason }),\n onNavigate: (_action, index) => {\n const nextItem = getItems()[index];\n\n getItemFocusable(nextItem)?.focus();\n },\n onOpen: (reason) => emit('open', { reason }),\n positioning: {\n getPlacement: () => (props.placement.value ?? 'bottom-start') as Placement,\n matchWidth: false,\n offsetPx: 4,\n padding: 6,\n },\n signal: abortSignal,\n });\n const { isOpen: isOpenSignal } = optionList;\n\n const activateItem = (item: HTMLElement): void => {\n const type = item.getAttribute('type');\n const isCheckable = isCheckableItemType(type);\n\n if (type === 'checkbox') {\n item.toggleAttribute('checked', !item.hasAttribute('checked'));\n } else if (type === 'radio') {\n for (const radio of el.querySelectorAll<HTMLElement>('ore-menu-item[type=\"radio\"]')) {\n radio.toggleAttribute('checked', radio === item);\n }\n }\n\n const value = item.getAttribute('value') ?? '';\n const checked = isCheckable ? item.hasAttribute('checked') : undefined;\n\n emit('select', { checked, value });\n\n if (!isCheckable) {\n optionList.close('programmatic');\n }\n };\n\n const openFromKeyboardPress = createInteraction({\n keys: ['Enter', ' ', 'ArrowDown'],\n onPress: () => {\n optionList.open('keyboard');\n requestAnimationFrame(() => optionList.set(0));\n },\n });\n\n const activateFocusedFromKeyboardPress = createInteraction({\n onPress: () => {\n const focused = optionList.getActiveItem();\n\n if (focused) activateItem(focused);\n },\n });\n\n // ── Keyboard Navigation ───────────────────────────────────────────────────\n function handleMenuKeydown(e: KeyboardEvent) {\n if (isDisabled.value) return;\n\n const open = isOpenSignal.value;\n\n // When closed: open on Enter / Space / ArrowDown\n if (!open) {\n openFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n const currentFocusedIndex = getFocusedItemIndex();\n\n if (currentFocusedIndex >= 0) optionList.set(currentFocusedIndex);\n\n if (optionList.handleKeydown(e)) return;\n\n // When open: navigate and activate\n if (e.key === ' ' || e.key === 'Enter') {\n activateFocusedFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n if (e.key === 'Tab') {\n optionList.close('programmatic');\n }\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n bind({\n on: {\n click: (e: MouseEvent) => {\n const path = e.composedPath();\n\n if (!isOpenSignal.value) return;\n\n const itemFromPath = path.find(\n (node): node is HTMLElement => node instanceof HTMLElement && node.tagName === 'ORE-MENU-ITEM',\n );\n const item = itemFromPath ?? (e.target as HTMLElement | null)?.closest<HTMLElement>('ore-menu-item') ?? null;\n\n if (!item || item.hasAttribute('disabled')) return;\n\n activateItem(item);\n },\n },\n });\n\n watch(() => {\n const open = isOpenSignal.value;\n\n if (!panelEl) return;\n\n panelEl.toggleAttribute('data-open', open);\n });\n\n function resolveTrigger() {\n cleanupTrigger?.();\n cleanupTrigger = null;\n\n const assigned = slots.elements('trigger').value;\n\n triggerEl = (assigned?.[0] as HTMLElement | undefined) ?? null;\n\n if (!triggerEl) return;\n\n const cleanups: Array<() => void> = [];\n const removeAria = aria(triggerEl, {\n controls: () => menuId,\n disabled: () => isDisabled.value,\n expanded: () => String(isOpenSignal.value),\n haspopup: 'menu',\n });\n\n const onTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n\n if (isDisabled.value) return;\n\n optionList.toggle();\n };\n const onTriggerKeydown = (event: KeyboardEvent) => {\n handleMenuKeydown(event);\n };\n\n triggerEl.addEventListener('click', onTriggerClick);\n triggerEl.addEventListener('keydown', onTriggerKeydown);\n cleanups.push(() => triggerEl?.removeEventListener('click', onTriggerClick));\n cleanups.push(() => triggerEl?.removeEventListener('keydown', onTriggerKeydown));\n\n cleanupTrigger = () => {\n removeAria();\n\n for (const cleanup of cleanups) cleanup();\n };\n }\n\n rippleWatch(slots.elements('trigger'), resolveTrigger, { immediate: true });\n\n onMounted(() => {\n return () => {\n cleanupTrigger?.();\n cleanupTrigger = null;\n };\n });\n\n return html`\n <slot name=\"trigger\"></slot>\n <div\n class=\"menu-panel\"\n part=\"panel\"\n id=\"${menuId}\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n @keydown=\"${handleMenuKeydown}\"\n ref=\"${(el: HTMLElement | null) => {\n panelEl = el;\n }}\">\n <slot></slot>\n </div>\n `;\n },\n styles: [componentStyles, sizeVariantMixin(MENU_SIZE_PRESET), forcedColorsMixin],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","names":[],"sources":["../src/overlay/menu/menu.ts"],"sourcesContent":["import type { Placement } from '@vielzeug/orbit';\n\nimport {\n createStableId,\n define,\n html,\n prop,\n bind,\n getHost,\n onCleanup,\n onMounted,\n useEmit,\n useSlots,\n watchEffect,\n} from '@vielzeug/ore';\nimport { computed, signal } from '@vielzeug/ripple';\nimport { watch as rippleWatch } from '@vielzeug/ripple/watch';\n\nimport type { ComponentSize } from '../../types';\n\nimport {\n lifecycleSignal,\n createInteraction,\n type DropdownCloseReason,\n type OverlayOpenChangeDetail,\n type OverlayOpenReason,\n} from '../../core';\nimport { createListControl, createDropdownPositioner } from '../../core/_internal';\nimport { createOutsidePointerDismissal, restoreFocus } from '../../core/overlay';\nimport { disablableBundle, MENU_SIZE_PRESET, sizableBundle } from '../../shared';\nimport { colorThemeMixin, forcedColorsMixin, sizeVariantMixin } from '../../styles';\nimport menuItemStyles from './menu-item.css?inline';\nimport menuSeparatorStyles from './menu-separator.css?inline';\nimport componentStyles from './menu.css?inline';\n\n// ── Types ─────────────────────────────────────────────────────────────\n\nexport interface MenuSelectDetail {\n value: string;\n checked?: boolean;\n}\n\nexport type OreMenuItemType = 'checkbox' | 'radio';\n\nexport type OreMenuEvents = {\n 'open-change': OverlayOpenChangeDetail;\n select: MenuSelectDetail;\n};\n\nexport type OreMenuItemProps = {\n checked?: boolean;\n disabled?: boolean;\n type?: OreMenuItemType;\n value?: string;\n};\n\nexport type OreMenuProps = {\n /** Initial uncontrolled open state. Ignored when `open` is set. */\n 'default-open'?: boolean;\n disabled?: boolean;\n /** Controlled open state. */\n open?: boolean;\n placement?: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end';\n size?: ComponentSize;\n};\n\n// ── Styles ─────────────────────────────────────────────────────────────\n\n// ── Menu Item Component ─────────────────────────────────────────────────────────────\n\n/**\n * A selectable action item used inside `<ore-menu>`.\n *\n * @element ore-menu-item\n *\n * @attr {boolean} checked - Checked state for `checkbox` and `radio` item types\n * @attr {boolean} disabled - Disables selection and pointer interaction\n * @attr {'checkbox'|'radio'} type - Optional checkable menu item mode\n * @attr {string} value - Value emitted by parent menu on selection\n *\n * @slot - Item label/content\n * @slot icon - Optional leading icon content\n *\n * @cssprop --menu-item-hover-bg - Background on hover\n * @cssprop --menu-item-focus-color - Text color when keyboard-focused\n * @cssprop --menu-item-focus-bg - Background when keyboard-focused\n * @cssprop --menu-item-selection-bg - Background for checkbox/radio items (unselected)\n * @cssprop --menu-item-checked-color - Text color when checked\n * @cssprop --menu-item-checked-bg - Background when checked\n *\n * @part item - Root item container element.\n * @part item-label - Label text container.\n * @part icon-slot - Leading icon slot container.\n *\n * @example\n * ```html\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\" disabled>Delete</ore-menu-item>\n * <ore-menu-item type=\"checkbox\" value=\"wrap\" checked>Word wrap</ore-menu-item>\n * <ore-menu-item type=\"radio\" value=\"left\">Align left</ore-menu-item>\n * ```\n */\nexport const MENU_ITEM_TAG = 'ore-menu-item' as const;\ndefine<OreMenuItemProps>(MENU_ITEM_TAG, {\n props: {\n checked: prop.bool(false),\n disabled: prop.bool(false),\n type: prop.string<OreMenuItemType>(),\n value: prop.string(),\n },\n setup(props) {\n const isCheckable = () => props.type.value === 'checkbox' || props.type.value === 'radio';\n const isChecked = () => isCheckable() && props.checked.value;\n const itemRole = () => {\n if (props.type.value === 'checkbox') return 'menuitemcheckbox';\n\n if (props.type.value === 'radio') return 'menuitemradio';\n\n return 'menuitem';\n };\n const itemClass = () => {\n const type = props.type.value;\n\n return [\n 'item',\n type === 'checkbox' ? 'is-checkbox' : '',\n type === 'radio' ? 'is-radio' : '',\n isChecked() ? 'is-checked' : '',\n ]\n .filter(Boolean)\n .join(' ');\n };\n\n return isCheckable()\n ? html`\n <div\n class=\"${itemClass}\"\n tabindex=\"-1\"\n role=\"${itemRole}\"\n aria-checked=\"${() => String(isChecked())}\"\n aria-disabled=\"${props.disabled}\">\n <span class=\"item-check\" aria-hidden=\"true\"></span>\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `\n : html`\n <div class=\"item\" tabindex=\"-1\" role=\"menuitem\" aria-disabled=\"${props.disabled}\">\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `;\n },\n styles: [colorThemeMixin, menuItemStyles],\n});\n\n// ── Menu Separator ─────────────────────────────────────────────────────────────\n\n/**\n * Visual separator used to group menu items inside `<ore-menu>`.\n *\n * @element ore-menu-separator\n *\n * @example\n * ```html\n * <ore-menu-item value=\"cut\">Cut</ore-menu-item>\n * <ore-menu-separator></ore-menu-separator>\n * <ore-menu-item value=\"paste\">Paste</ore-menu-item>\n * ```\n */\nexport const SEPARATOR_TAG = 'ore-menu-separator' as const;\ndefine(SEPARATOR_TAG, {\n setup() {\n return html``;\n },\n styles: [menuSeparatorStyles],\n});\n\n// ── Menu Component ─────────────────────────────────────────────────────────────\n\nconst isCheckableItemType = (value: string | null): value is OreMenuItemType =>\n value === 'checkbox' || value === 'radio';\n\nconst parseOptionalBool = (value: string | null): boolean | undefined =>\n value == null ? undefined : value === '' || value === 'true';\n\n/**\n * Action dropdown menu triggered by a slotted trigger element.\n *\n * @element ore-menu\n * @element ore-menu-item - Clickable menu option (place in default slot)\n * @element ore-menu-separator - Visual divider between menu groups\n *\n * @attr {boolean} disabled - Disables opening and keyboard interaction\n * @attr {boolean} open - Controlled open state\n * @attr {boolean} default-open - Initial uncontrolled open state\n * @attr {string} placement - Panel placement: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end' (default: 'bottom-start')\n * @attr {string} size - Size: 'sm' | 'md' | 'lg'\n *\n * @fires open-change - Fired when the menu state changes. detail: { open, reason }\n * @fires select - Fired when an item is selected. detail: { value: string, checked?: boolean }\n *\n * @slot trigger - Trigger element that toggles menu visibility\n * @slot - Menu content (`<ore-menu-item>` and `<ore-menu-separator>`)\n *\n * @part panel - Floating menu panel container\n *\n * @cssprop --menu-panel-bg - Background of the floating panel\n * @cssprop --menu-panel-border-color - Border color of the floating panel\n * @cssprop --menu-panel-shadow - Box shadow of the floating panel\n * @cssprop --menu-panel-blur - Backdrop blur amount for the floating panel\n * @cssprop --menu-panel-min-width - Minimum width of the floating panel\n * @cssprop --menu-panel-max-height - Maximum height of the floating panel before it scrolls\n * @cssprop --menu-panel-radius - Border radius of the floating panel\n *\n * @example\n * ```html\n * <ore-menu>\n * <button slot=\"trigger\">Actions</button>\n * <ore-menu-item value=\"edit\">Edit</ore-menu-item>\n * <ore-menu-item value=\"delete\">Delete</ore-menu-item>\n * </ore-menu>\n * ```\n */\nexport const MENU_TAG = 'ore-menu' as const;\ndefine<OreMenuProps>(MENU_TAG, {\n props: {\n ...sizableBundle,\n ...disablableBundle,\n 'default-open': prop.bool(false),\n open: { default: undefined as boolean | undefined, parse: parseOptionalBool },\n placement: prop.oneOf(\n ['bottom', 'bottom-start', 'bottom-end', 'top', 'top-start', 'top-end'] as const,\n 'bottom-start',\n ),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreMenuEvents>();\n const slots = useSlots();\n const watch = watchEffect;\n\n const menuId = createStableId('menu');\n const isDisabled = computed(() => Boolean(props.disabled.value));\n const abortSignal = lifecycleSignal(onCleanup);\n let triggerEl: HTMLElement | null = null;\n let panelEl: HTMLElement | null = null;\n let cleanupTrigger: (() => void) | null = null;\n\n // ── Helpers ───────────────────────────────────────────────────────────────\n function getItems(): HTMLElement[] {\n return Array.from(el.querySelectorAll<HTMLElement>('ore-menu-item:not([disabled])'));\n }\n\n function getItemFocusable(item: HTMLElement | null | undefined): HTMLElement | null {\n if (!item) return null;\n\n return item.shadowRoot?.querySelector<HTMLElement>('[role^=\"menuitem\"]') ?? item;\n }\n\n function getFocusedItemIndex(): number {\n const items = getItems();\n\n return items.findIndex((item) => {\n const focusable = getItemFocusable(item);\n\n return item === document.activeElement || focusable === document.activeElement;\n });\n }\n\n const isOpenSignal = signal(false);\n let stopPositioning: (() => void) | null = null;\n const positioner = createDropdownPositioner({\n getFloating: () => panelEl,\n getPlacement: () => (props.placement.value ?? 'bottom-start') as Placement,\n getReference: () => triggerEl,\n matchWidth: false,\n offsetPx: 4,\n padding: 6,\n });\n const list = createListControl<HTMLElement>({\n disabled: computed(() => !isOpenSignal.value),\n getItems: getItems,\n isItemDisabled: (item) => item.hasAttribute('disabled'),\n onNavigate: (_action, index) => {\n const nextItem = getItems()[index];\n\n getItemFocusable(nextItem)?.focus();\n },\n signal: abortSignal,\n });\n\n const close = (reason: DropdownCloseReason = 'programmatic', shouldRestoreFocus = true): void => {\n if (!isOpenSignal.value) return;\n\n isOpenSignal.value = false;\n list.reset();\n stopPositioning?.();\n stopPositioning = null;\n\n if (shouldRestoreFocus) restoreFocus(() => triggerEl);\n\n emit('open-change', { open: false, reason });\n };\n\n const open = (reason: OverlayOpenReason = 'programmatic'): void => {\n if (isDisabled.value || isOpenSignal.value) return;\n\n isOpenSignal.value = true;\n positioner.update();\n stopPositioning = positioner.startAutoUpdate?.() ?? null;\n emit('open-change', { open: true, reason });\n };\n\n const toggle = (): void => {\n if (isOpenSignal.value) close('trigger');\n else open('click');\n };\n\n createOutsidePointerDismissal({\n getTargets: () => [el, panelEl],\n isActive: () => isOpenSignal.value,\n onDismiss: () => close('outsideClick'),\n signal: abortSignal,\n });\n\n let initialized = false;\n\n rippleWatch(\n props.open,\n (value) => {\n if (value === undefined) {\n if (!initialized) {\n if (props['default-open'].value) open('programmatic');\n } else {\n close('programmatic');\n }\n } else if (value) {\n open('programmatic');\n } else {\n close('programmatic');\n }\n\n initialized = true;\n },\n { immediate: true },\n );\n abortSignal.addEventListener(\n 'abort',\n () => {\n if (!isOpenSignal.value) return;\n\n isOpenSignal.value = false;\n list.reset();\n stopPositioning?.();\n stopPositioning = null;\n },\n { once: true },\n );\n\n const activateItem = (item: HTMLElement): void => {\n const type = item.getAttribute('type');\n const isCheckable = isCheckableItemType(type);\n\n if (type === 'checkbox') {\n item.toggleAttribute('checked', !item.hasAttribute('checked'));\n } else if (type === 'radio') {\n for (const radio of el.querySelectorAll<HTMLElement>('ore-menu-item[type=\"radio\"]')) {\n radio.toggleAttribute('checked', radio === item);\n }\n }\n\n const value = item.getAttribute('value') ?? '';\n const checked = isCheckable ? item.hasAttribute('checked') : undefined;\n\n emit('select', { checked, value });\n\n if (!isCheckable) {\n close('programmatic');\n }\n };\n\n const openFromKeyboardPress = createInteraction({\n keys: ['Enter', ' ', 'ArrowDown'],\n onPress: () => {\n open('keyboard');\n requestAnimationFrame(() => list.set(0));\n },\n });\n\n const activateFocusedFromKeyboardPress = createInteraction({\n onPress: () => {\n const focused = list.getActiveItem();\n\n if (focused) activateItem(focused);\n },\n });\n\n // ── Keyboard Navigation ───────────────────────────────────────────────────\n function handleMenuKeydown(e: KeyboardEvent) {\n if (isDisabled.value) return;\n\n const open = isOpenSignal.value;\n\n // When closed: open on Enter / Space / ArrowDown\n if (!open) {\n openFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n const currentFocusedIndex = getFocusedItemIndex();\n\n if (currentFocusedIndex >= 0) list.set(currentFocusedIndex);\n\n if (e.key === 'Escape') {\n e.preventDefault();\n close('escape');\n\n return;\n }\n\n if (list.handleKeydown(e)) return;\n\n // When open: navigate and activate\n if (e.key === ' ' || e.key === 'Enter') {\n activateFocusedFromKeyboardPress.handleKeydown(e);\n\n return;\n }\n\n if (e.key === 'Tab') {\n close('programmatic');\n }\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n bind({\n on: {\n click: (e: MouseEvent) => {\n const path = e.composedPath();\n\n if (!isOpenSignal.value) return;\n\n const itemFromPath = path.find(\n (node): node is HTMLElement => node instanceof HTMLElement && node.tagName === 'ORE-MENU-ITEM',\n );\n const item = itemFromPath ?? (e.target as HTMLElement | null)?.closest<HTMLElement>('ore-menu-item') ?? null;\n\n if (!item || item.hasAttribute('disabled')) return;\n\n activateItem(item);\n },\n },\n });\n\n watch(() => {\n const open = isOpenSignal.value;\n\n if (!panelEl) return;\n\n panelEl.toggleAttribute('data-open', open);\n });\n\n function resolveTrigger() {\n cleanupTrigger?.();\n cleanupTrigger = null;\n\n const assigned = slots.elements('trigger').value;\n\n triggerEl = (assigned?.[0] as HTMLElement | undefined) ?? null;\n\n if (!triggerEl) return;\n\n const cleanups: Array<() => void> = [];\n const removeAria = bind(\n {\n aria: {\n controls: () => menuId,\n disabled: () => isDisabled.value,\n expanded: () => String(isOpenSignal.value),\n haspopup: 'menu',\n },\n },\n { target: triggerEl },\n );\n\n const onTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n\n if (isDisabled.value) return;\n\n toggle();\n };\n const onTriggerKeydown = (event: KeyboardEvent) => {\n handleMenuKeydown(event);\n };\n\n triggerEl.addEventListener('click', onTriggerClick);\n triggerEl.addEventListener('keydown', onTriggerKeydown);\n cleanups.push(() => triggerEl?.removeEventListener('click', onTriggerClick));\n cleanups.push(() => triggerEl?.removeEventListener('keydown', onTriggerKeydown));\n\n cleanupTrigger = () => {\n removeAria();\n\n for (const cleanup of cleanups) cleanup();\n };\n }\n\n rippleWatch(slots.elements('trigger'), resolveTrigger, { immediate: true });\n\n onMounted(() => {\n return () => {\n cleanupTrigger?.();\n cleanupTrigger = null;\n };\n });\n\n return html`\n <slot name=\"trigger\"></slot>\n <div\n class=\"menu-panel\"\n part=\"panel\"\n id=\"${menuId}\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n @keydown=\"${handleMenuKeydown}\"\n ref=\"${(el: HTMLElement | null) => {\n panelEl = el;\n panelEl?.toggleAttribute('data-open', isOpenSignal.value);\n }}\">\n <slot></slot>\n </div>\n `;\n },\n styles: [componentStyles, sizeVariantMixin(MENU_SIZE_PRESET), forcedColorsMixin],\n});\n"],"mappings":"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"}
@@ -1,23 +1,23 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./styles/mixins/shape.css.cjs"),n=require("./styles/mixins/states.css.cjs"),r=require("./styles/mixins/theme.css.cjs"),i=require("./styles/mixins/field-variants.css.cjs"),a=require("./shared/prop-bundles.cjs"),o=require("./shared/size-presets.cjs"),s=require("./headless/ore.cjs"),c=require("./headless/auto-resize.cjs"),l=require("./headless/ref-callback.cjs"),u=require("./headless/text-field.cjs"),d=require("./headless/composer.cjs"),f=require("./inputs/shared/field-binding.cjs"),p=require("./inputs/shared/form-context.cjs"),m=require("./inputs/shared/templates.cjs"),h=require("./inputs/message-composer/message-composer.css.cjs");let g=require("@vielzeug/ore"),_=require("@vielzeug/ore/directives"),v=require("@vielzeug/ripple"),y=require("@vielzeug/ore/forms");var b=`Send message`,x=`arrow-up`,S=`ore-message-composer`;(0,g.define)(S,{formAssociated:!0,props:{...a.themableBundle,...a.sizableBundle,...a.disablableBundle,...a.loadableBundle,"clear-on-send":g.prop.bool(!0),error:g.prop.string(),fullwidth:g.prop.bool(!1),helper:g.prop.string(),label:g.prop.string(),maxlength:g.prop.json(void 0),name:g.prop.string(),placeholder:g.prop.string(),readonly:g.prop.bool(!1),ref:g.prop.data(),required:g.prop.bool(!1),rows:g.prop.json(void 0),"send-icon":g.prop.string(),"send-label":g.prop.string(),"send-shortcut":g.prop.oneOf([`enter`,`mod+enter`],`enter`),success:g.prop.bool(!1),value:g.prop.string(),variant:g.prop.string()},setup(e){let t=(0,g.useEmit)(),n=(0,g.useSlots)(),r=(0,g.inject)(p.FORM_CTX),i=p.useFormContext(e,r),a=i.disabled,o=s.lifecycleSignal(g.onCleanup),h=(0,g.ref)(),S=c.createAutoResize(),C=u.createTextField({disabled:a,error:e.error,helper:e.helper,maxLength:e.maxlength,onInput:(e,n)=>t(`input`,{originalEvent:e,value:n}),prefix:`composer`,readonly:e.readonly,required:e.required,signal:o,validateOn:r?.validateOn,value:e.value});C.attachFormField((0,y.useField)({disabled:C.disabled,onReset:()=>{C.reset(),S.recompute()},toFormValue:e=>e,validationMessage:C.validationMessage,validity:C.validity,value:C.value}));function w(n){t(`send`,{originalEvent:n,value:C.value.value.trim()})&&e[`clear-on-send`].value!==!1&&(C.clear(),S.recompute(),h.value?.focus())}let T=d.createComposerControl({disabled:a,loading:(0,v.computed)(()=>!!e.loading.value),onSend:w,sendShortcut:e[`send-shortcut`],value:C.value});return(0,g.onElement)(h,t=>{let n=C.wire(t),r=S.wire(t),i=l.bindRefCallback(e.ref,t),a=e=>T.handleKeydown(e);return t.addEventListener(`keydown`,a),()=>{t.removeEventListener(`keydown`,a),n(),r(),i()}}),(0,g.bind)({attr:{error:f.errorAttr(C.errorText),size:i.size,success:()=>e.success.value&&!C.errorText.value?!0:void 0,variant:i.variant}}),g.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./core/ore.cjs"),t=require("./core/auto-resize.cjs"),n=require("./core/ref-callback.cjs"),r=require("./core/text-field.cjs"),i=require("./core/composer.cjs"),a=require("./styles/mixins/accessibility.css.cjs"),o=require("./styles/mixins/shape.css.cjs"),s=require("./styles/mixins/states.css.cjs"),c=require("./styles/mixins/theme.css.cjs"),l=require("./styles/mixins/field-variants.css.cjs"),u=require("./shared/prop-bundles.cjs"),d=require("./shared/size-presets.cjs"),f=require("./inputs/shared/field-binding.cjs"),p=require("./inputs/shared/templates.cjs"),m=require("./inputs/shared/native-field-event.cjs"),h=require("./inputs/message-composer/message-composer.css.cjs");let g=require("@vielzeug/ore"),_=require("@vielzeug/ripple");var v=`Send message`,y=`arrow-up`,b=`ore-message-composer`;(0,g.define)(b,{formAssociated:!0,props:{...u.themableBundle,...u.sizableBundle,...u.disablableBundle,...u.loadableBundle,"clear-on-send":g.prop.bool(!0),error:g.prop.string(),fullwidth:g.prop.bool(!1),helper:g.prop.string(),label:g.prop.string(),maxlength:g.prop.json(void 0),name:g.prop.string(),placeholder:g.prop.string(),readonly:g.prop.bool(!1),ref:g.prop.data(),required:g.prop.bool(!1),rows:g.prop.json(void 0),"send-icon":g.prop.string(),"send-label":g.prop.string(),"send-shortcut":g.prop.oneOf([`enter`,`mod+enter`],`enter`),success:g.prop.bool(!1),value:g.prop.string(),variant:g.prop.string()},setup(a){let o=(0,g.getHost)(),s=(0,g.useEmit)(),c=(0,g.useSlots)(),l=a.disabled,u=e.lifecycleSignal(g.onCleanup),d=(0,g.ref)(),h=t.createAutoResize(),b=r.createTextField({disabled:l,error:a.error,helper:a.helper,maxLength:a.maxlength,onInput:(e,t)=>{m.setFieldValue(o,t),m.dispatchNativeFieldEvent(o,`input`)},prefix:`composer`,readonly:a.readonly,required:a.required,signal:u,value:a.value});m.defineFieldValue(o,()=>b.value.value,e=>{b.value.value=e}),b.attachFormField((0,g.useField)({disabled:b.disabled,onReset:()=>{b.reset(),h.recompute()},toFormValue:e=>e,validationMessage:b.validationMessage,validity:b.validity,value:b.value}));function x(e){s(`send`,{originalEvent:e,value:b.value.value.trim()})&&a[`clear-on-send`].value!==!1&&(b.clear(),h.recompute(),d.value?.focus())}let S=i.createComposerControl({disabled:l,loading:(0,_.computed)(()=>!!a.loading.value),onSend:x,sendShortcut:a[`send-shortcut`],value:b.value});return(0,g.onElement)(d,e=>{let t=b.wire(e),r=h.wire(e),i=n.bindRefCallback(a.ref,e),o=e=>S.handleKeydown(e);return e.addEventListener(`keydown`,o),()=>{e.removeEventListener(`keydown`,o),t(),r(),i()}}),(0,g.bind)({attr:{error:f.errorAttr(b.errorText),size:a.size,success:()=>a.success.value&&!b.errorText.value?!0:void 0,variant:a.variant}}),g.html`
2
2
  <div class="composer" part="composer">
3
3
  <textarea
4
4
  class="field"
5
5
  part="field"
6
- ref="${h}"
7
- :rows="${()=>e.rows.value??1}"
8
- :name="${()=>e.name.value??``}"
9
- :placeholder="${()=>e.placeholder.value??`Message…`}"
10
- :maxlength="${()=>e.maxlength.value}"
11
- ?disabled="${a}"
12
- ?readonly="${()=>!!e.readonly.value}"
13
- ?required="${()=>!!e.required.value}"
14
- :value="${(0,_.live)(C.value)}"
15
- :aria-label="${()=>e.label.value||`Message`}"
16
- :aria-keyshortcuts="${T.keyShortcutsHint}"
17
- :aria-describedby="${C.ariaDescribedBy}"
18
- :aria-errormessage="${C.ariaErrorMessage}"
19
- :aria-invalid="${C.ariaInvalid}"></textarea>
20
- ${m.renderStatusIcon(C.errorText)} ${m.renderFieldStatusRegion(C)}
6
+ ref="${d}"
7
+ rows="${()=>a.rows.value??1}"
8
+ name="${()=>a.name.value??``}"
9
+ placeholder="${()=>a.placeholder.value??`Message…`}"
10
+ maxlength="${()=>a.maxlength.value}"
11
+ ?disabled="${l}"
12
+ ?readonly="${()=>!!a.readonly.value}"
13
+ ?required="${()=>!!a.required.value}"
14
+ value="${(0,g.live)(b.value)}"
15
+ aria-label="${()=>a.label.value||`Message`}"
16
+ aria-keyshortcuts="${S.keyShortcutsHint}"
17
+ aria-describedby="${b.ariaDescribedBy}"
18
+ aria-errormessage="${b.ariaErrorMessage}"
19
+ aria-invalid="${b.ariaInvalid}"></textarea>
20
+ ${p.renderStatusIcon(b.errorText)} ${p.renderFieldStatusRegion(b)}
21
21
  <div class="toolbar" part="toolbar">
22
22
  <div class="toolbar-start" part="toolbar-start">
23
23
  <slot name="prefix"></slot>
@@ -25,22 +25,24 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
25
25
  <div class="toolbar-end" part="toolbar-end">
26
26
  <slot name="suffix"></slot>
27
27
  <slot name="send"></slot>
28
- ${()=>n.has(`send`).value?``:g.html`<ore-button
29
- class="send-btn"
30
- part="send-button"
31
- type="button"
32
- icon-only
33
- variant="solid"
34
- :color="${()=>e.color.value||`primary`}"
35
- :size="${i.size}"
36
- :label="${()=>e[`send-label`].value||b}"
37
- ?loading="${()=>!!e.loading.value}"
38
- ?disabled="${()=>!T.canSend.value}"
39
- @click="${e=>T.send(e)}">
40
- <ore-icon name="${()=>e[`send-icon`].value||x}" size="16"></ore-icon>
41
- </ore-button>`}
28
+ ${()=>c.has(`send`).value?``:g.html`
29
+ <ore-button
30
+ class="send-btn"
31
+ part="send-button"
32
+ type="button"
33
+ icon-only
34
+ variant="solid"
35
+ color="${()=>a.color.value||`primary`}"
36
+ size="${a.size}"
37
+ label="${()=>a[`send-label`].value||v}"
38
+ ?loading="${()=>!!a.loading.value}"
39
+ ?disabled="${()=>!S.canSend.value}"
40
+ @click="${e=>S.send(e)}">
41
+ <ore-icon name="${()=>a[`send-icon`].value||y}" size="16"></ore-icon>
42
+ </ore-button>
43
+ `}
42
44
  </div>
43
45
  </div>
44
46
  </div>
45
- `},shadow:{delegatesFocus:!0},styles:[r.colorThemeMixin,e.coarsePointerMixin,e.reducedMotionMixin,n.disabledLoadingMixin,r.forcedColorsMixin,r.forcedColorsFocusMixin(`.field`),t.sizeVariantMixin(o.MESSAGE_COMPOSER_SIZE_PRESET),h.default,i.fieldVariantMixin({container:`.composer`,text:`.field`,tokenPrefix:`message-composer`})]}),exports.MESSAGE_COMPOSER_TAG=S;
47
+ `},shadow:{delegatesFocus:!0},styles:[c.colorThemeMixin,a.coarsePointerMixin,a.reducedMotionMixin,s.disabledLoadingMixin,c.forcedColorsMixin,c.forcedColorsFocusMixin(`.field`),o.sizeVariantMixin(d.MESSAGE_COMPOSER_SIZE_PRESET),h.default,l.fieldVariantMixin({container:`.composer`,text:`.field`,tokenPrefix:`message-composer`})]}),exports.MESSAGE_COMPOSER_TAG=b;
46
48
  //# sourceMappingURL=message-composer.cjs.map