@vielzeug/refine 1.1.1

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 (1097) hide show
  1. package/README.md +89 -0
  2. package/dist/_dev.cjs +2 -0
  3. package/dist/_dev.cjs.map +1 -0
  4. package/dist/_dev.d.ts +2 -0
  5. package/dist/_dev.d.ts.map +1 -0
  6. package/dist/_dev.js +9 -0
  7. package/dist/_dev.js.map +1 -0
  8. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  9. package/dist/accordion-item.cjs +26 -0
  10. package/dist/accordion-item.cjs.map +1 -0
  11. package/dist/accordion-item.js +124 -0
  12. package/dist/accordion-item.js.map +1 -0
  13. package/dist/accordion.cjs +2 -0
  14. package/dist/accordion.cjs.map +1 -0
  15. package/dist/accordion.js +47 -0
  16. package/dist/accordion.js.map +1 -0
  17. package/dist/alert.cjs +36 -0
  18. package/dist/alert.cjs.map +1 -0
  19. package/dist/alert.js +93 -0
  20. package/dist/alert.js.map +1 -0
  21. package/dist/async.cjs +55 -0
  22. package/dist/async.cjs.map +1 -0
  23. package/dist/async.js +99 -0
  24. package/dist/async.js.map +1 -0
  25. package/dist/avatar.cjs +18 -0
  26. package/dist/avatar.cjs.map +1 -0
  27. package/dist/avatar.js +108 -0
  28. package/dist/avatar.js.map +1 -0
  29. package/dist/badge.cjs +7 -0
  30. package/dist/badge.cjs.map +1 -0
  31. package/dist/badge.js +65 -0
  32. package/dist/badge.js.map +1 -0
  33. package/dist/box.cjs +2 -0
  34. package/dist/box.cjs.map +1 -0
  35. package/dist/box.js +31 -0
  36. package/dist/box.js.map +1 -0
  37. package/dist/breadcrumb.cjs +21 -0
  38. package/dist/breadcrumb.cjs.map +1 -0
  39. package/dist/breadcrumb.js +57 -0
  40. package/dist/breadcrumb.js.map +1 -0
  41. package/dist/button-group.cjs +6 -0
  42. package/dist/button-group.cjs.map +1 -0
  43. package/dist/button-group.js +33 -0
  44. package/dist/button-group.js.map +1 -0
  45. package/dist/button.cjs +18 -0
  46. package/dist/button.cjs.map +1 -0
  47. package/dist/button.js +124 -0
  48. package/dist/button.js.map +1 -0
  49. package/dist/calendar.cjs +126 -0
  50. package/dist/calendar.cjs.map +1 -0
  51. package/dist/calendar.js +300 -0
  52. package/dist/calendar.js.map +1 -0
  53. package/dist/card.cjs +23 -0
  54. package/dist/card.cjs.map +1 -0
  55. package/dist/card.js +87 -0
  56. package/dist/card.js.map +1 -0
  57. package/dist/carousel.cjs +61 -0
  58. package/dist/carousel.cjs.map +1 -0
  59. package/dist/carousel.js +280 -0
  60. package/dist/carousel.js.map +1 -0
  61. package/dist/checkbox-group.cjs +18 -0
  62. package/dist/checkbox-group.cjs.map +1 -0
  63. package/dist/checkbox-group.js +118 -0
  64. package/dist/checkbox-group.js.map +1 -0
  65. package/dist/checkbox.cjs +11 -0
  66. package/dist/checkbox.cjs.map +1 -0
  67. package/dist/checkbox.js +88 -0
  68. package/dist/checkbox.js.map +1 -0
  69. package/dist/chip.cjs +42 -0
  70. package/dist/chip.cjs.map +1 -0
  71. package/dist/chip.js +133 -0
  72. package/dist/chip.js.map +1 -0
  73. package/dist/code-window.cjs +19 -0
  74. package/dist/code-window.cjs.map +1 -0
  75. package/dist/code-window.js +41 -0
  76. package/dist/code-window.js.map +1 -0
  77. package/dist/combobox.cjs +103 -0
  78. package/dist/combobox.cjs.map +1 -0
  79. package/dist/combobox.js +444 -0
  80. package/dist/combobox.js.map +1 -0
  81. package/dist/content/avatar/avatar-group.css?inline.cjs +2 -0
  82. package/dist/content/avatar/avatar-group.css?inline.cjs.map +1 -0
  83. package/dist/content/avatar/avatar-group.css?inline.js +6 -0
  84. package/dist/content/avatar/avatar-group.css?inline.js.map +1 -0
  85. package/dist/content/avatar/avatar.css?inline.cjs +2 -0
  86. package/dist/content/avatar/avatar.css?inline.cjs.map +1 -0
  87. package/dist/content/avatar/avatar.css?inline.js +6 -0
  88. package/dist/content/avatar/avatar.css?inline.js.map +1 -0
  89. package/dist/content/avatar/avatar.d.ts +88 -0
  90. package/dist/content/avatar/avatar.d.ts.map +1 -0
  91. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs +2 -0
  92. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +1 -0
  93. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js +6 -0
  94. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +1 -0
  95. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs +2 -0
  96. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +1 -0
  97. package/dist/content/breadcrumb/breadcrumb.css?inline.js +6 -0
  98. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +1 -0
  99. package/dist/content/breadcrumb/breadcrumb.d.ts +57 -0
  100. package/dist/content/breadcrumb/breadcrumb.d.ts.map +1 -0
  101. package/dist/content/card/card.css?inline.cjs +2 -0
  102. package/dist/content/card/card.css?inline.cjs.map +1 -0
  103. package/dist/content/card/card.css?inline.js +6 -0
  104. package/dist/content/card/card.css?inline.js.map +1 -0
  105. package/dist/content/card/card.d.ts +74 -0
  106. package/dist/content/card/card.d.ts.map +1 -0
  107. package/dist/content/carousel/carousel-slide.cjs +2 -0
  108. package/dist/content/carousel/carousel-slide.cjs.map +1 -0
  109. package/dist/content/carousel/carousel-slide.css?inline.cjs +2 -0
  110. package/dist/content/carousel/carousel-slide.css?inline.cjs.map +1 -0
  111. package/dist/content/carousel/carousel-slide.css?inline.js +6 -0
  112. package/dist/content/carousel/carousel-slide.css?inline.js.map +1 -0
  113. package/dist/content/carousel/carousel-slide.d.ts +2 -0
  114. package/dist/content/carousel/carousel-slide.d.ts.map +1 -0
  115. package/dist/content/carousel/carousel-slide.js +18 -0
  116. package/dist/content/carousel/carousel-slide.js.map +1 -0
  117. package/dist/content/carousel/carousel.css?inline.cjs +2 -0
  118. package/dist/content/carousel/carousel.css?inline.cjs.map +1 -0
  119. package/dist/content/carousel/carousel.css?inline.js +6 -0
  120. package/dist/content/carousel/carousel.css?inline.js.map +1 -0
  121. package/dist/content/carousel/carousel.d.ts +110 -0
  122. package/dist/content/carousel/carousel.d.ts.map +1 -0
  123. package/dist/content/carousel/index.d.ts +3 -0
  124. package/dist/content/carousel/index.d.ts.map +1 -0
  125. package/dist/content/code-window/code-window.css?inline.cjs +2 -0
  126. package/dist/content/code-window/code-window.css?inline.cjs.map +1 -0
  127. package/dist/content/code-window/code-window.css?inline.js +6 -0
  128. package/dist/content/code-window/code-window.css?inline.js.map +1 -0
  129. package/dist/content/code-window/code-window.d.ts +61 -0
  130. package/dist/content/code-window/code-window.d.ts.map +1 -0
  131. package/dist/content/copy-command/copy-command.css?inline.cjs +2 -0
  132. package/dist/content/copy-command/copy-command.css?inline.cjs.map +1 -0
  133. package/dist/content/copy-command/copy-command.css?inline.js +6 -0
  134. package/dist/content/copy-command/copy-command.css?inline.js.map +1 -0
  135. package/dist/content/copy-command/copy-command.d.ts +66 -0
  136. package/dist/content/copy-command/copy-command.d.ts.map +1 -0
  137. package/dist/content/icon/icon.css?inline.cjs +2 -0
  138. package/dist/content/icon/icon.css?inline.cjs.map +1 -0
  139. package/dist/content/icon/icon.css?inline.js +6 -0
  140. package/dist/content/icon/icon.css?inline.js.map +1 -0
  141. package/dist/content/icon/icon.d.ts +45 -0
  142. package/dist/content/icon/icon.d.ts.map +1 -0
  143. package/dist/content/index.d.ts +23 -0
  144. package/dist/content/index.d.ts.map +1 -0
  145. package/dist/content/pagination/pagination.css?inline.cjs +2 -0
  146. package/dist/content/pagination/pagination.css?inline.cjs.map +1 -0
  147. package/dist/content/pagination/pagination.css?inline.js +6 -0
  148. package/dist/content/pagination/pagination.css?inline.js.map +1 -0
  149. package/dist/content/pagination/pagination.d.ts +61 -0
  150. package/dist/content/pagination/pagination.d.ts.map +1 -0
  151. package/dist/content/separator/separator.css?inline.cjs +2 -0
  152. package/dist/content/separator/separator.css?inline.cjs.map +1 -0
  153. package/dist/content/separator/separator.css?inline.js +6 -0
  154. package/dist/content/separator/separator.css?inline.js.map +1 -0
  155. package/dist/content/separator/separator.d.ts +38 -0
  156. package/dist/content/separator/separator.d.ts.map +1 -0
  157. package/dist/content/table/table.css?inline.cjs +2 -0
  158. package/dist/content/table/table.css?inline.cjs.map +1 -0
  159. package/dist/content/table/table.css?inline.js +6 -0
  160. package/dist/content/table/table.css?inline.js.map +1 -0
  161. package/dist/content/table/table.d.ts +76 -0
  162. package/dist/content/table/table.d.ts.map +1 -0
  163. package/dist/content/text/text.css?inline.cjs +2 -0
  164. package/dist/content/text/text.css?inline.cjs.map +1 -0
  165. package/dist/content/text/text.css?inline.js +6 -0
  166. package/dist/content/text/text.css?inline.js.map +1 -0
  167. package/dist/content/text/text.d.ts +55 -0
  168. package/dist/content/text/text.d.ts.map +1 -0
  169. package/dist/copy-command.cjs +17 -0
  170. package/dist/copy-command.cjs.map +1 -0
  171. package/dist/copy-command.js +55 -0
  172. package/dist/copy-command.js.map +1 -0
  173. package/dist/custom-elements.json +12641 -0
  174. package/dist/datagrid.cjs +435 -0
  175. package/dist/datagrid.cjs.map +1 -0
  176. package/dist/datagrid.js +764 -0
  177. package/dist/datagrid.js.map +1 -0
  178. package/dist/date-picker.cjs +133 -0
  179. package/dist/date-picker.cjs.map +1 -0
  180. package/dist/date-picker.js +315 -0
  181. package/dist/date-picker.js.map +1 -0
  182. package/dist/dialog.cjs +28 -0
  183. package/dist/dialog.cjs.map +1 -0
  184. package/dist/dialog.js +88 -0
  185. package/dist/dialog.js.map +1 -0
  186. package/dist/disclosure/accordion/accordion.css?inline.cjs +2 -0
  187. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +1 -0
  188. package/dist/disclosure/accordion/accordion.css?inline.js +6 -0
  189. package/dist/disclosure/accordion/accordion.css?inline.js.map +1 -0
  190. package/dist/disclosure/accordion/accordion.d.ts +62 -0
  191. package/dist/disclosure/accordion/accordion.d.ts.map +1 -0
  192. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs +2 -0
  193. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +1 -0
  194. package/dist/disclosure/accordion-item/accordion-item.css?inline.js +6 -0
  195. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +1 -0
  196. package/dist/disclosure/accordion-item/accordion-item.d.ts +70 -0
  197. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -0
  198. package/dist/disclosure/index.d.ts +11 -0
  199. package/dist/disclosure/index.d.ts.map +1 -0
  200. package/dist/disclosure/tab-item/tab-item.css?inline.cjs +2 -0
  201. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +1 -0
  202. package/dist/disclosure/tab-item/tab-item.css?inline.js +6 -0
  203. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +1 -0
  204. package/dist/disclosure/tab-item/tab-item.d.ts +49 -0
  205. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -0
  206. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs +2 -0
  207. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +1 -0
  208. package/dist/disclosure/tab-panel/tab-panel.css?inline.js +6 -0
  209. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +1 -0
  210. package/dist/disclosure/tab-panel/tab-panel.d.ts +33 -0
  211. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -0
  212. package/dist/disclosure/tabs/tabs.css?inline.cjs +2 -0
  213. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +1 -0
  214. package/dist/disclosure/tabs/tabs.css?inline.js +6 -0
  215. package/dist/disclosure/tabs/tabs.css?inline.js.map +1 -0
  216. package/dist/disclosure/tabs/tabs.d.ts +75 -0
  217. package/dist/disclosure/tabs/tabs.d.ts.map +1 -0
  218. package/dist/drawer.cjs +32 -0
  219. package/dist/drawer.cjs.map +1 -0
  220. package/dist/drawer.js +199 -0
  221. package/dist/drawer.js.map +1 -0
  222. package/dist/errors.cjs +2 -0
  223. package/dist/errors.cjs.map +1 -0
  224. package/dist/errors.d.ts +9 -0
  225. package/dist/errors.d.ts.map +1 -0
  226. package/dist/errors.js +13 -0
  227. package/dist/errors.js.map +1 -0
  228. package/dist/feedback/alert/alert.css?inline.cjs +2 -0
  229. package/dist/feedback/alert/alert.css?inline.cjs.map +1 -0
  230. package/dist/feedback/alert/alert.css?inline.js +6 -0
  231. package/dist/feedback/alert/alert.css?inline.js.map +1 -0
  232. package/dist/feedback/alert/alert.d.ts +74 -0
  233. package/dist/feedback/alert/alert.d.ts.map +1 -0
  234. package/dist/feedback/async/async.css?inline.cjs +2 -0
  235. package/dist/feedback/async/async.css?inline.cjs.map +1 -0
  236. package/dist/feedback/async/async.css?inline.js +6 -0
  237. package/dist/feedback/async/async.css?inline.js.map +1 -0
  238. package/dist/feedback/async/async.d.ts +54 -0
  239. package/dist/feedback/async/async.d.ts.map +1 -0
  240. package/dist/feedback/badge/badge.css?inline.cjs +2 -0
  241. package/dist/feedback/badge/badge.css?inline.cjs.map +1 -0
  242. package/dist/feedback/badge/badge.css?inline.js +6 -0
  243. package/dist/feedback/badge/badge.css?inline.js.map +1 -0
  244. package/dist/feedback/badge/badge.d.ts +69 -0
  245. package/dist/feedback/badge/badge.d.ts.map +1 -0
  246. package/dist/feedback/chip/chip.css?inline.cjs +2 -0
  247. package/dist/feedback/chip/chip.css?inline.cjs.map +1 -0
  248. package/dist/feedback/chip/chip.css?inline.js +6 -0
  249. package/dist/feedback/chip/chip.css?inline.js.map +1 -0
  250. package/dist/feedback/chip/chip.d.ts +136 -0
  251. package/dist/feedback/chip/chip.d.ts.map +1 -0
  252. package/dist/feedback/index.d.ts +17 -0
  253. package/dist/feedback/index.d.ts.map +1 -0
  254. package/dist/feedback/password-strength/password-strength.css?inline.cjs +2 -0
  255. package/dist/feedback/password-strength/password-strength.css?inline.cjs.map +1 -0
  256. package/dist/feedback/password-strength/password-strength.css?inline.js +6 -0
  257. package/dist/feedback/password-strength/password-strength.css?inline.js.map +1 -0
  258. package/dist/feedback/password-strength/password-strength.d.ts +66 -0
  259. package/dist/feedback/password-strength/password-strength.d.ts.map +1 -0
  260. package/dist/feedback/progress/progress.css?inline.cjs +2 -0
  261. package/dist/feedback/progress/progress.css?inline.cjs.map +1 -0
  262. package/dist/feedback/progress/progress.css?inline.js +6 -0
  263. package/dist/feedback/progress/progress.css?inline.js.map +1 -0
  264. package/dist/feedback/progress/progress.d.ts +68 -0
  265. package/dist/feedback/progress/progress.d.ts.map +1 -0
  266. package/dist/feedback/skeleton/skeleton.css?inline.cjs +2 -0
  267. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +1 -0
  268. package/dist/feedback/skeleton/skeleton.css?inline.js +6 -0
  269. package/dist/feedback/skeleton/skeleton.css?inline.js.map +1 -0
  270. package/dist/feedback/skeleton/skeleton.d.ts +63 -0
  271. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -0
  272. package/dist/feedback/toast/index.d.ts +2 -0
  273. package/dist/feedback/toast/index.d.ts.map +1 -0
  274. package/dist/feedback/toast/toast.css?inline.cjs +2 -0
  275. package/dist/feedback/toast/toast.css?inline.cjs.map +1 -0
  276. package/dist/feedback/toast/toast.css?inline.js +6 -0
  277. package/dist/feedback/toast/toast.css?inline.js.map +1 -0
  278. package/dist/feedback/toast/toast.d.ts +127 -0
  279. package/dist/feedback/toast/toast.d.ts.map +1 -0
  280. package/dist/file-input.cjs +70 -0
  281. package/dist/file-input.cjs.map +1 -0
  282. package/dist/file-input.js +209 -0
  283. package/dist/file-input.js.map +1 -0
  284. package/dist/form.cjs +11 -0
  285. package/dist/form.cjs.map +1 -0
  286. package/dist/form.js +56 -0
  287. package/dist/form.js.map +1 -0
  288. package/dist/grid-item.cjs +2 -0
  289. package/dist/grid-item.cjs.map +1 -0
  290. package/dist/grid-item.js +35 -0
  291. package/dist/grid-item.js.map +1 -0
  292. package/dist/grid.cjs +2 -0
  293. package/dist/grid.cjs.map +1 -0
  294. package/dist/grid.js +90 -0
  295. package/dist/grid.js.map +1 -0
  296. package/dist/headless/_internal.d.ts +17 -0
  297. package/dist/headless/_internal.d.ts.map +1 -0
  298. package/dist/headless/announcer.cjs +2 -0
  299. package/dist/headless/announcer.cjs.map +1 -0
  300. package/dist/headless/announcer.d.ts +25 -0
  301. package/dist/headless/announcer.d.ts.map +1 -0
  302. package/dist/headless/announcer.js +24 -0
  303. package/dist/headless/announcer.js.map +1 -0
  304. package/dist/headless/checkable.cjs +2 -0
  305. package/dist/headless/checkable.cjs.map +1 -0
  306. package/dist/headless/checkable.d.ts +42 -0
  307. package/dist/headless/checkable.d.ts.map +1 -0
  308. package/dist/headless/checkable.js +36 -0
  309. package/dist/headless/checkable.js.map +1 -0
  310. package/dist/headless/choice-field.cjs +2 -0
  311. package/dist/headless/choice-field.cjs.map +1 -0
  312. package/dist/headless/choice-field.d.ts +36 -0
  313. package/dist/headless/choice-field.d.ts.map +1 -0
  314. package/dist/headless/choice-field.js +42 -0
  315. package/dist/headless/choice-field.js.map +1 -0
  316. package/dist/headless/datagrid.cjs +2 -0
  317. package/dist/headless/datagrid.cjs.map +1 -0
  318. package/dist/headless/datagrid.d.ts +158 -0
  319. package/dist/headless/datagrid.d.ts.map +1 -0
  320. package/dist/headless/datagrid.js +55 -0
  321. package/dist/headless/datagrid.js.map +1 -0
  322. package/dist/headless/date-picker.cjs +2 -0
  323. package/dist/headless/date-picker.cjs.map +1 -0
  324. package/dist/headless/date-picker.d.ts +114 -0
  325. package/dist/headless/date-picker.d.ts.map +1 -0
  326. package/dist/headless/date-picker.js +184 -0
  327. package/dist/headless/date-picker.js.map +1 -0
  328. package/dist/headless/dialog-focus.cjs +2 -0
  329. package/dist/headless/dialog-focus.cjs.map +1 -0
  330. package/dist/headless/dialog-focus.d.ts +40 -0
  331. package/dist/headless/dialog-focus.d.ts.map +1 -0
  332. package/dist/headless/dialog-focus.js +22 -0
  333. package/dist/headless/dialog-focus.js.map +1 -0
  334. package/dist/headless/direction.cjs +2 -0
  335. package/dist/headless/direction.cjs.map +1 -0
  336. package/dist/headless/direction.d.ts +11 -0
  337. package/dist/headless/direction.d.ts.map +1 -0
  338. package/dist/headless/direction.js +14 -0
  339. package/dist/headless/direction.js.map +1 -0
  340. package/dist/headless/field-base.cjs +2 -0
  341. package/dist/headless/field-base.cjs.map +1 -0
  342. package/dist/headless/field-base.d.ts +148 -0
  343. package/dist/headless/field-base.d.ts.map +1 -0
  344. package/dist/headless/field-base.js +46 -0
  345. package/dist/headless/field-base.js.map +1 -0
  346. package/dist/headless/focus-trap.cjs +2 -0
  347. package/dist/headless/focus-trap.cjs.map +1 -0
  348. package/dist/headless/focus-trap.d.ts +45 -0
  349. package/dist/headless/focus-trap.d.ts.map +1 -0
  350. package/dist/headless/focus-trap.js +51 -0
  351. package/dist/headless/focus-trap.js.map +1 -0
  352. package/dist/headless/focus.cjs +2 -0
  353. package/dist/headless/focus.cjs.map +1 -0
  354. package/dist/headless/focus.d.ts +34 -0
  355. package/dist/headless/focus.d.ts.map +1 -0
  356. package/dist/headless/focus.js +34 -0
  357. package/dist/headless/focus.js.map +1 -0
  358. package/dist/headless/index.d.ts +28 -0
  359. package/dist/headless/index.d.ts.map +1 -0
  360. package/dist/headless/keyboard.cjs +2 -0
  361. package/dist/headless/keyboard.cjs.map +1 -0
  362. package/dist/headless/keyboard.d.ts +52 -0
  363. package/dist/headless/keyboard.d.ts.map +1 -0
  364. package/dist/headless/keyboard.js +29 -0
  365. package/dist/headless/keyboard.js.map +1 -0
  366. package/dist/headless/light-dom.cjs +2 -0
  367. package/dist/headless/light-dom.cjs.map +1 -0
  368. package/dist/headless/light-dom.d.ts +12 -0
  369. package/dist/headless/light-dom.d.ts.map +1 -0
  370. package/dist/headless/light-dom.js +6 -0
  371. package/dist/headless/light-dom.js.map +1 -0
  372. package/dist/headless/nav.cjs +2 -0
  373. package/dist/headless/nav.cjs.map +1 -0
  374. package/dist/headless/nav.d.ts +66 -0
  375. package/dist/headless/nav.d.ts.map +1 -0
  376. package/dist/headless/nav.js +115 -0
  377. package/dist/headless/nav.js.map +1 -0
  378. package/dist/headless/numbers.cjs +2 -0
  379. package/dist/headless/numbers.cjs.map +1 -0
  380. package/dist/headless/numbers.d.ts +14 -0
  381. package/dist/headless/numbers.d.ts.map +1 -0
  382. package/dist/headless/numbers.js +9 -0
  383. package/dist/headless/numbers.js.map +1 -0
  384. package/dist/headless/option-list.cjs +2 -0
  385. package/dist/headless/option-list.cjs.map +1 -0
  386. package/dist/headless/option-list.d.ts +107 -0
  387. package/dist/headless/option-list.d.ts.map +1 -0
  388. package/dist/headless/option-list.js +66 -0
  389. package/dist/headless/option-list.js.map +1 -0
  390. package/dist/headless/ore.cjs +2 -0
  391. package/dist/headless/ore.cjs.map +1 -0
  392. package/dist/headless/ore.d.ts +20 -0
  393. package/dist/headless/ore.d.ts.map +1 -0
  394. package/dist/headless/ore.js +9 -0
  395. package/dist/headless/ore.js.map +1 -0
  396. package/dist/headless/overlay.cjs +2 -0
  397. package/dist/headless/overlay.cjs.map +1 -0
  398. package/dist/headless/overlay.d.ts +62 -0
  399. package/dist/headless/overlay.d.ts.map +1 -0
  400. package/dist/headless/overlay.js +29 -0
  401. package/dist/headless/overlay.js.map +1 -0
  402. package/dist/headless/paginated-list.cjs +2 -0
  403. package/dist/headless/paginated-list.cjs.map +1 -0
  404. package/dist/headless/paginated-list.d.ts +42 -0
  405. package/dist/headless/paginated-list.d.ts.map +1 -0
  406. package/dist/headless/paginated-list.js +34 -0
  407. package/dist/headless/paginated-list.js.map +1 -0
  408. package/dist/headless/parse.cjs +2 -0
  409. package/dist/headless/parse.cjs.map +1 -0
  410. package/dist/headless/parse.d.ts +15 -0
  411. package/dist/headless/parse.d.ts.map +1 -0
  412. package/dist/headless/parse.js +9 -0
  413. package/dist/headless/parse.js.map +1 -0
  414. package/dist/headless/positioner.cjs +2 -0
  415. package/dist/headless/positioner.cjs.map +1 -0
  416. package/dist/headless/positioner.d.ts +40 -0
  417. package/dist/headless/positioner.d.ts.map +1 -0
  418. package/dist/headless/positioner.js +38 -0
  419. package/dist/headless/positioner.js.map +1 -0
  420. package/dist/headless/selection-control.cjs +2 -0
  421. package/dist/headless/selection-control.cjs.map +1 -0
  422. package/dist/headless/selection-control.d.ts +30 -0
  423. package/dist/headless/selection-control.d.ts.map +1 -0
  424. package/dist/headless/selection-control.js +44 -0
  425. package/dist/headless/selection-control.js.map +1 -0
  426. package/dist/headless/signals.cjs +2 -0
  427. package/dist/headless/signals.cjs.map +1 -0
  428. package/dist/headless/signals.d.ts +20 -0
  429. package/dist/headless/signals.d.ts.map +1 -0
  430. package/dist/headless/signals.js +12 -0
  431. package/dist/headless/signals.js.map +1 -0
  432. package/dist/headless/slider.cjs +2 -0
  433. package/dist/headless/slider.cjs.map +1 -0
  434. package/dist/headless/slider.d.ts +28 -0
  435. package/dist/headless/slider.d.ts.map +1 -0
  436. package/dist/headless/slider.js +40 -0
  437. package/dist/headless/slider.js.map +1 -0
  438. package/dist/headless/sort-control.cjs +2 -0
  439. package/dist/headless/sort-control.cjs.map +1 -0
  440. package/dist/headless/sort-control.d.ts +22 -0
  441. package/dist/headless/sort-control.d.ts.map +1 -0
  442. package/dist/headless/sort-control.js +36 -0
  443. package/dist/headless/sort-control.js.map +1 -0
  444. package/dist/headless/spinner.cjs +2 -0
  445. package/dist/headless/spinner.cjs.map +1 -0
  446. package/dist/headless/spinner.d.ts +19 -0
  447. package/dist/headless/spinner.d.ts.map +1 -0
  448. package/dist/headless/spinner.js +52 -0
  449. package/dist/headless/spinner.js.map +1 -0
  450. package/dist/headless/swipe.cjs +2 -0
  451. package/dist/headless/swipe.cjs.map +1 -0
  452. package/dist/headless/swipe.d.ts +38 -0
  453. package/dist/headless/swipe.d.ts.map +1 -0
  454. package/dist/headless/swipe.js +58 -0
  455. package/dist/headless/swipe.js.map +1 -0
  456. package/dist/headless/text-field.cjs +2 -0
  457. package/dist/headless/text-field.cjs.map +1 -0
  458. package/dist/headless/text-field.d.ts +45 -0
  459. package/dist/headless/text-field.d.ts.map +1 -0
  460. package/dist/headless/text-field.js +41 -0
  461. package/dist/headless/text-field.js.map +1 -0
  462. package/dist/headless/typeahead.cjs +2 -0
  463. package/dist/headless/typeahead.cjs.map +1 -0
  464. package/dist/headless/typeahead.d.ts +53 -0
  465. package/dist/headless/typeahead.d.ts.map +1 -0
  466. package/dist/headless/typeahead.js +23 -0
  467. package/dist/headless/typeahead.js.map +1 -0
  468. package/dist/headless.cjs +1 -0
  469. package/dist/headless.js +26 -0
  470. package/dist/icon.cjs +2 -0
  471. package/dist/icon.cjs.map +1 -0
  472. package/dist/icon.js +87 -0
  473. package/dist/icon.js.map +1 -0
  474. package/dist/index.cjs +1 -0
  475. package/dist/index.d.ts +9 -0
  476. package/dist/index.d.ts.map +1 -0
  477. package/dist/index.js +61 -0
  478. package/dist/input.cjs +67 -0
  479. package/dist/input.cjs.map +1 -0
  480. package/dist/input.js +184 -0
  481. package/dist/input.js.map +1 -0
  482. package/dist/inputs/button/button.css?inline.cjs +2 -0
  483. package/dist/inputs/button/button.css?inline.cjs.map +1 -0
  484. package/dist/inputs/button/button.css?inline.js +6 -0
  485. package/dist/inputs/button/button.css?inline.js.map +1 -0
  486. package/dist/inputs/button/button.d.ts +85 -0
  487. package/dist/inputs/button/button.d.ts.map +1 -0
  488. package/dist/inputs/button-group/button-group.css?inline.cjs +2 -0
  489. package/dist/inputs/button-group/button-group.css?inline.cjs.map +1 -0
  490. package/dist/inputs/button-group/button-group.css?inline.js +6 -0
  491. package/dist/inputs/button-group/button-group.css?inline.js.map +1 -0
  492. package/dist/inputs/button-group/button-group.d.ts +64 -0
  493. package/dist/inputs/button-group/button-group.d.ts.map +1 -0
  494. package/dist/inputs/calendar/calendar.css?inline.cjs +2 -0
  495. package/dist/inputs/calendar/calendar.css?inline.cjs.map +1 -0
  496. package/dist/inputs/calendar/calendar.css?inline.js +6 -0
  497. package/dist/inputs/calendar/calendar.css?inline.js.map +1 -0
  498. package/dist/inputs/calendar/calendar.d.ts +134 -0
  499. package/dist/inputs/calendar/calendar.d.ts.map +1 -0
  500. package/dist/inputs/checkbox/checkbox.css?inline.cjs +2 -0
  501. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +1 -0
  502. package/dist/inputs/checkbox/checkbox.css?inline.js +6 -0
  503. package/dist/inputs/checkbox/checkbox.css?inline.js.map +1 -0
  504. package/dist/inputs/checkbox/checkbox.d.ts +60 -0
  505. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -0
  506. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs +2 -0
  507. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +1 -0
  508. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js +6 -0
  509. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +1 -0
  510. package/dist/inputs/checkbox-group/checkbox-group.d.ts +75 -0
  511. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -0
  512. package/dist/inputs/combobox/combobox-options.cjs +2 -0
  513. package/dist/inputs/combobox/combobox-options.cjs.map +1 -0
  514. package/dist/inputs/combobox/combobox-options.d.ts +6 -0
  515. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -0
  516. package/dist/inputs/combobox/combobox-options.js +26 -0
  517. package/dist/inputs/combobox/combobox-options.js.map +1 -0
  518. package/dist/inputs/combobox/combobox.css?inline.cjs +2 -0
  519. package/dist/inputs/combobox/combobox.css?inline.cjs.map +1 -0
  520. package/dist/inputs/combobox/combobox.css?inline.js +6 -0
  521. package/dist/inputs/combobox/combobox.css?inline.js.map +1 -0
  522. package/dist/inputs/combobox/combobox.d.ts +45 -0
  523. package/dist/inputs/combobox/combobox.d.ts.map +1 -0
  524. package/dist/inputs/combobox/combobox.types.d.ts +45 -0
  525. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -0
  526. package/dist/inputs/datagrid/datagrid-column.cjs +2 -0
  527. package/dist/inputs/datagrid/datagrid-column.cjs.map +1 -0
  528. package/dist/inputs/datagrid/datagrid-column.d.ts +7 -0
  529. package/dist/inputs/datagrid/datagrid-column.d.ts.map +1 -0
  530. package/dist/inputs/datagrid/datagrid-column.js +31 -0
  531. package/dist/inputs/datagrid/datagrid-column.js.map +1 -0
  532. package/dist/inputs/datagrid/datagrid-controls.cjs +2 -0
  533. package/dist/inputs/datagrid/datagrid-controls.cjs.map +1 -0
  534. package/dist/inputs/datagrid/datagrid-controls.d.ts +98 -0
  535. package/dist/inputs/datagrid/datagrid-controls.d.ts.map +1 -0
  536. package/dist/inputs/datagrid/datagrid-controls.js +147 -0
  537. package/dist/inputs/datagrid/datagrid-controls.js.map +1 -0
  538. package/dist/inputs/datagrid/datagrid-nav.cjs +2 -0
  539. package/dist/inputs/datagrid/datagrid-nav.cjs.map +1 -0
  540. package/dist/inputs/datagrid/datagrid-nav.d.ts +33 -0
  541. package/dist/inputs/datagrid/datagrid-nav.d.ts.map +1 -0
  542. package/dist/inputs/datagrid/datagrid-nav.js +51 -0
  543. package/dist/inputs/datagrid/datagrid-nav.js.map +1 -0
  544. package/dist/inputs/datagrid/datagrid.css?inline.cjs +2 -0
  545. package/dist/inputs/datagrid/datagrid.css?inline.cjs.map +1 -0
  546. package/dist/inputs/datagrid/datagrid.css?inline.js +6 -0
  547. package/dist/inputs/datagrid/datagrid.css?inline.js.map +1 -0
  548. package/dist/inputs/datagrid/datagrid.d.ts +302 -0
  549. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -0
  550. package/dist/inputs/date-picker/date-picker.css?inline.cjs +2 -0
  551. package/dist/inputs/date-picker/date-picker.css?inline.cjs.map +1 -0
  552. package/dist/inputs/date-picker/date-picker.css?inline.js +6 -0
  553. package/dist/inputs/date-picker/date-picker.css?inline.js.map +1 -0
  554. package/dist/inputs/date-picker/date-picker.d.ts +112 -0
  555. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -0
  556. package/dist/inputs/file-input/file-input.css?inline.cjs +2 -0
  557. package/dist/inputs/file-input/file-input.css?inline.cjs.map +1 -0
  558. package/dist/inputs/file-input/file-input.css?inline.js +6 -0
  559. package/dist/inputs/file-input/file-input.css?inline.js.map +1 -0
  560. package/dist/inputs/file-input/file-input.d.ts +90 -0
  561. package/dist/inputs/file-input/file-input.d.ts.map +1 -0
  562. package/dist/inputs/form/form.css?inline.cjs +2 -0
  563. package/dist/inputs/form/form.css?inline.cjs.map +1 -0
  564. package/dist/inputs/form/form.css?inline.js +6 -0
  565. package/dist/inputs/form/form.css?inline.js.map +1 -0
  566. package/dist/inputs/form/form.d.ts +59 -0
  567. package/dist/inputs/form/form.d.ts.map +1 -0
  568. package/dist/inputs/index.d.ts +47 -0
  569. package/dist/inputs/index.d.ts.map +1 -0
  570. package/dist/inputs/input/input.css?inline.cjs +2 -0
  571. package/dist/inputs/input/input.css?inline.cjs.map +1 -0
  572. package/dist/inputs/input/input.css?inline.js +6 -0
  573. package/dist/inputs/input/input.css?inline.js.map +1 -0
  574. package/dist/inputs/input/input.d.ts +96 -0
  575. package/dist/inputs/input/input.d.ts.map +1 -0
  576. package/dist/inputs/number-input/number-input.css?inline.cjs +2 -0
  577. package/dist/inputs/number-input/number-input.css?inline.cjs.map +1 -0
  578. package/dist/inputs/number-input/number-input.css?inline.js +6 -0
  579. package/dist/inputs/number-input/number-input.css?inline.js.map +1 -0
  580. package/dist/inputs/number-input/number-input.d.ts +102 -0
  581. package/dist/inputs/number-input/number-input.d.ts.map +1 -0
  582. package/dist/inputs/otp-input/otp-input.css?inline.cjs +2 -0
  583. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +1 -0
  584. package/dist/inputs/otp-input/otp-input.css?inline.js +6 -0
  585. package/dist/inputs/otp-input/otp-input.css?inline.js.map +1 -0
  586. package/dist/inputs/otp-input/otp-input.d.ts +82 -0
  587. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -0
  588. package/dist/inputs/radio/radio.css?inline.cjs +2 -0
  589. package/dist/inputs/radio/radio.css?inline.cjs.map +1 -0
  590. package/dist/inputs/radio/radio.css?inline.js +6 -0
  591. package/dist/inputs/radio/radio.css?inline.js.map +1 -0
  592. package/dist/inputs/radio/radio.d.ts +56 -0
  593. package/dist/inputs/radio/radio.d.ts.map +1 -0
  594. package/dist/inputs/radio-group/radio-group.css?inline.cjs +2 -0
  595. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +1 -0
  596. package/dist/inputs/radio-group/radio-group.css?inline.js +6 -0
  597. package/dist/inputs/radio-group/radio-group.css?inline.js.map +1 -0
  598. package/dist/inputs/radio-group/radio-group.d.ts +74 -0
  599. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -0
  600. package/dist/inputs/rating/rating.css?inline.cjs +2 -0
  601. package/dist/inputs/rating/rating.css?inline.cjs.map +1 -0
  602. package/dist/inputs/rating/rating.css?inline.js +6 -0
  603. package/dist/inputs/rating/rating.css?inline.js.map +1 -0
  604. package/dist/inputs/rating/rating.d.ts +68 -0
  605. package/dist/inputs/rating/rating.d.ts.map +1 -0
  606. package/dist/inputs/select/select.css?inline.cjs +2 -0
  607. package/dist/inputs/select/select.css?inline.cjs.map +1 -0
  608. package/dist/inputs/select/select.css?inline.js +6 -0
  609. package/dist/inputs/select/select.css?inline.js.map +1 -0
  610. package/dist/inputs/select/select.d.ts +89 -0
  611. package/dist/inputs/select/select.d.ts.map +1 -0
  612. package/dist/inputs/shared/field-binding.cjs +2 -0
  613. package/dist/inputs/shared/field-binding.cjs.map +1 -0
  614. package/dist/inputs/shared/field-binding.d.ts +31 -0
  615. package/dist/inputs/shared/field-binding.d.ts.map +1 -0
  616. package/dist/inputs/shared/field-binding.js +31 -0
  617. package/dist/inputs/shared/field-binding.js.map +1 -0
  618. package/dist/inputs/shared/form-context.cjs +2 -0
  619. package/dist/inputs/shared/form-context.cjs.map +1 -0
  620. package/dist/inputs/shared/form-context.d.ts +49 -0
  621. package/dist/inputs/shared/form-context.d.ts.map +1 -0
  622. package/dist/inputs/shared/form-context.js +15 -0
  623. package/dist/inputs/shared/form-context.js.map +1 -0
  624. package/dist/inputs/shared/index.d.ts +5 -0
  625. package/dist/inputs/shared/index.d.ts.map +1 -0
  626. package/dist/inputs/shared/templates.cjs +11 -0
  627. package/dist/inputs/shared/templates.cjs.map +1 -0
  628. package/dist/inputs/shared/templates.d.ts +13 -0
  629. package/dist/inputs/shared/templates.d.ts.map +1 -0
  630. package/dist/inputs/shared/templates.js +18 -0
  631. package/dist/inputs/shared/templates.js.map +1 -0
  632. package/dist/inputs/shared/use-form-action.cjs +2 -0
  633. package/dist/inputs/shared/use-form-action.cjs.map +1 -0
  634. package/dist/inputs/shared/use-form-action.d.ts +17 -0
  635. package/dist/inputs/shared/use-form-action.d.ts.map +1 -0
  636. package/dist/inputs/shared/use-form-action.js +19 -0
  637. package/dist/inputs/shared/use-form-action.js.map +1 -0
  638. package/dist/inputs/slider/slider.css?inline.cjs +2 -0
  639. package/dist/inputs/slider/slider.css?inline.cjs.map +1 -0
  640. package/dist/inputs/slider/slider.css?inline.js +6 -0
  641. package/dist/inputs/slider/slider.css?inline.js.map +1 -0
  642. package/dist/inputs/slider/slider.d.ts +95 -0
  643. package/dist/inputs/slider/slider.d.ts.map +1 -0
  644. package/dist/inputs/switch/switch.css?inline.cjs +2 -0
  645. package/dist/inputs/switch/switch.css?inline.cjs.map +1 -0
  646. package/dist/inputs/switch/switch.css?inline.js +6 -0
  647. package/dist/inputs/switch/switch.css?inline.js.map +1 -0
  648. package/dist/inputs/switch/switch.d.ts +56 -0
  649. package/dist/inputs/switch/switch.d.ts.map +1 -0
  650. package/dist/inputs/textarea/textarea.css?inline.cjs +2 -0
  651. package/dist/inputs/textarea/textarea.css?inline.cjs.map +1 -0
  652. package/dist/inputs/textarea/textarea.css?inline.js +6 -0
  653. package/dist/inputs/textarea/textarea.css?inline.js.map +1 -0
  654. package/dist/inputs/textarea/textarea.d.ts +91 -0
  655. package/dist/inputs/textarea/textarea.d.ts.map +1 -0
  656. package/dist/inputs/time-picker/time-picker.css?inline.cjs +2 -0
  657. package/dist/inputs/time-picker/time-picker.css?inline.cjs.map +1 -0
  658. package/dist/inputs/time-picker/time-picker.css?inline.js +6 -0
  659. package/dist/inputs/time-picker/time-picker.css?inline.js.map +1 -0
  660. package/dist/inputs/time-picker/time-picker.d.ts +103 -0
  661. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -0
  662. package/dist/layout/box/box.css?inline.cjs +2 -0
  663. package/dist/layout/box/box.css?inline.cjs.map +1 -0
  664. package/dist/layout/box/box.css?inline.js +6 -0
  665. package/dist/layout/box/box.css?inline.js.map +1 -0
  666. package/dist/layout/box/box.d.ts +52 -0
  667. package/dist/layout/box/box.d.ts.map +1 -0
  668. package/dist/layout/grid/grid.css?inline.cjs +2 -0
  669. package/dist/layout/grid/grid.css?inline.cjs.map +1 -0
  670. package/dist/layout/grid/grid.css?inline.js +6 -0
  671. package/dist/layout/grid/grid.css?inline.js.map +1 -0
  672. package/dist/layout/grid/grid.d.ts +105 -0
  673. package/dist/layout/grid/grid.d.ts.map +1 -0
  674. package/dist/layout/grid-item/grid-item.css?inline.cjs +2 -0
  675. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +1 -0
  676. package/dist/layout/grid-item/grid-item.css?inline.js +6 -0
  677. package/dist/layout/grid-item/grid-item.css?inline.js.map +1 -0
  678. package/dist/layout/grid-item/grid-item.d.ts +54 -0
  679. package/dist/layout/grid-item/grid-item.d.ts.map +1 -0
  680. package/dist/layout/index.d.ts +11 -0
  681. package/dist/layout/index.d.ts.map +1 -0
  682. package/dist/layout/navbar/navbar.css?inline.cjs +2 -0
  683. package/dist/layout/navbar/navbar.css?inline.cjs.map +1 -0
  684. package/dist/layout/navbar/navbar.css?inline.js +6 -0
  685. package/dist/layout/navbar/navbar.css?inline.js.map +1 -0
  686. package/dist/layout/navbar/navbar.d.ts +153 -0
  687. package/dist/layout/navbar/navbar.d.ts.map +1 -0
  688. package/dist/layout/sidebar/sidebar-group.css?inline.cjs +2 -0
  689. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +1 -0
  690. package/dist/layout/sidebar/sidebar-group.css?inline.js +6 -0
  691. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +1 -0
  692. package/dist/layout/sidebar/sidebar-item.css?inline.cjs +2 -0
  693. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +1 -0
  694. package/dist/layout/sidebar/sidebar-item.css?inline.js +6 -0
  695. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +1 -0
  696. package/dist/layout/sidebar/sidebar.css?inline.cjs +2 -0
  697. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +1 -0
  698. package/dist/layout/sidebar/sidebar.css?inline.js +6 -0
  699. package/dist/layout/sidebar/sidebar.css?inline.js.map +1 -0
  700. package/dist/layout/sidebar/sidebar.d.ts +226 -0
  701. package/dist/layout/sidebar/sidebar.d.ts.map +1 -0
  702. package/dist/menu.cjs +30 -0
  703. package/dist/menu.cjs.map +1 -0
  704. package/dist/menu.js +197 -0
  705. package/dist/menu.js.map +1 -0
  706. package/dist/navbar.cjs +68 -0
  707. package/dist/navbar.cjs.map +1 -0
  708. package/dist/navbar.js +283 -0
  709. package/dist/navbar.js.map +1 -0
  710. package/dist/number-input.cjs +40 -0
  711. package/dist/number-input.cjs.map +1 -0
  712. package/dist/number-input.js +141 -0
  713. package/dist/number-input.js.map +1 -0
  714. package/dist/ore/dist/_dev.cjs +2 -0
  715. package/dist/ore/dist/_dev.cjs.map +1 -0
  716. package/dist/ore/dist/_dev.js +12 -0
  717. package/dist/ore/dist/_dev.js.map +1 -0
  718. package/dist/ore/dist/aria.cjs +2 -0
  719. package/dist/ore/dist/aria.cjs.map +1 -0
  720. package/dist/ore/dist/aria.js +37 -0
  721. package/dist/ore/dist/aria.js.map +1 -0
  722. package/dist/ore/dist/base-element.cjs +2 -0
  723. package/dist/ore/dist/base-element.cjs.map +1 -0
  724. package/dist/ore/dist/base-element.js +146 -0
  725. package/dist/ore/dist/base-element.js.map +1 -0
  726. package/dist/ore/dist/context-bag.cjs +2 -0
  727. package/dist/ore/dist/context-bag.cjs.map +1 -0
  728. package/dist/ore/dist/context-bag.js +28 -0
  729. package/dist/ore/dist/context-bag.js.map +1 -0
  730. package/dist/ore/dist/context.cjs +2 -0
  731. package/dist/ore/dist/context.cjs.map +1 -0
  732. package/dist/ore/dist/context.js +38 -0
  733. package/dist/ore/dist/context.js.map +1 -0
  734. package/dist/ore/dist/define.cjs +2 -0
  735. package/dist/ore/dist/define.cjs.map +1 -0
  736. package/dist/ore/dist/define.js +27 -0
  737. package/dist/ore/dist/define.js.map +1 -0
  738. package/dist/ore/dist/directives/classMap.cjs +1 -0
  739. package/dist/ore/dist/directives/classMap.js +1 -0
  740. package/dist/ore/dist/directives/each.cjs +1 -0
  741. package/dist/ore/dist/directives/each.js +5 -0
  742. package/dist/ore/dist/directives/live.cjs +2 -0
  743. package/dist/ore/dist/directives/live.cjs.map +1 -0
  744. package/dist/ore/dist/directives/live.js +6 -0
  745. package/dist/ore/dist/directives/live.js.map +1 -0
  746. package/dist/ore/dist/directives/model.cjs +1 -0
  747. package/dist/ore/dist/directives/model.js +3 -0
  748. package/dist/ore/dist/directives/raw.cjs +2 -0
  749. package/dist/ore/dist/directives/raw.cjs.map +1 -0
  750. package/dist/ore/dist/directives/raw.js +35 -0
  751. package/dist/ore/dist/directives/raw.js.map +1 -0
  752. package/dist/ore/dist/directives/styleMap.cjs +2 -0
  753. package/dist/ore/dist/directives/styleMap.cjs.map +1 -0
  754. package/dist/ore/dist/directives/styleMap.js +20 -0
  755. package/dist/ore/dist/directives/styleMap.js.map +1 -0
  756. package/dist/ore/dist/directives/when.cjs +2 -0
  757. package/dist/ore/dist/directives/when.cjs.map +1 -0
  758. package/dist/ore/dist/directives/when.js +33 -0
  759. package/dist/ore/dist/directives/when.js.map +1 -0
  760. package/dist/ore/dist/directives.cjs +1 -0
  761. package/dist/ore/dist/directives.js +8 -0
  762. package/dist/ore/dist/errors.cjs +3 -0
  763. package/dist/ore/dist/errors.cjs.map +1 -0
  764. package/dist/ore/dist/errors.js +41 -0
  765. package/dist/ore/dist/errors.js.map +1 -0
  766. package/dist/ore/dist/host-bind.cjs +2 -0
  767. package/dist/ore/dist/host-bind.cjs.map +1 -0
  768. package/dist/ore/dist/host-bind.js +60 -0
  769. package/dist/ore/dist/host-bind.js.map +1 -0
  770. package/dist/ore/dist/observers/intersection-observe.cjs +2 -0
  771. package/dist/ore/dist/observers/intersection-observe.cjs.map +1 -0
  772. package/dist/ore/dist/observers/intersection-observe.js +12 -0
  773. package/dist/ore/dist/observers/intersection-observe.js.map +1 -0
  774. package/dist/ore/dist/observers/media-observe.cjs +1 -0
  775. package/dist/ore/dist/observers/media-observe.js +1 -0
  776. package/dist/ore/dist/observers/mutation-observe.cjs +1 -0
  777. package/dist/ore/dist/observers/mutation-observe.js +1 -0
  778. package/dist/ore/dist/observers/resize-observe.cjs +2 -0
  779. package/dist/ore/dist/observers/resize-observe.cjs.map +1 -0
  780. package/dist/ore/dist/observers/resize-observe.js +20 -0
  781. package/dist/ore/dist/observers/resize-observe.js.map +1 -0
  782. package/dist/ore/dist/observers.cjs +1 -0
  783. package/dist/ore/dist/observers.js +5 -0
  784. package/dist/ore/dist/props.cjs +2 -0
  785. package/dist/ore/dist/props.cjs.map +1 -0
  786. package/dist/ore/dist/props.js +54 -0
  787. package/dist/ore/dist/props.js.map +1 -0
  788. package/dist/ore/dist/runtime.cjs +2 -0
  789. package/dist/ore/dist/runtime.cjs.map +1 -0
  790. package/dist/ore/dist/runtime.js +33 -0
  791. package/dist/ore/dist/runtime.js.map +1 -0
  792. package/dist/ore/dist/slots.cjs +2 -0
  793. package/dist/ore/dist/slots.cjs.map +1 -0
  794. package/dist/ore/dist/slots.js +61 -0
  795. package/dist/ore/dist/slots.js.map +1 -0
  796. package/dist/ore/dist/testing/flush.cjs +2 -0
  797. package/dist/ore/dist/testing/flush.cjs.map +1 -0
  798. package/dist/ore/dist/testing/flush.js +11 -0
  799. package/dist/ore/dist/testing/flush.js.map +1 -0
  800. package/dist/ore/dist/testing/mount.cjs +2 -0
  801. package/dist/ore/dist/testing/mount.cjs.map +1 -0
  802. package/dist/ore/dist/testing/mount.js +94 -0
  803. package/dist/ore/dist/testing/mount.js.map +1 -0
  804. package/dist/ore/dist/testing/query.cjs +2 -0
  805. package/dist/ore/dist/testing/query.cjs.map +1 -0
  806. package/dist/ore/dist/testing/query.js +12 -0
  807. package/dist/ore/dist/testing/query.js.map +1 -0
  808. package/dist/ore/dist/testing/render-hook.cjs +1 -0
  809. package/dist/ore/dist/testing/render-hook.js +4 -0
  810. package/dist/ore/dist/testing/testing.cjs +1 -0
  811. package/dist/ore/dist/testing/testing.js +4 -0
  812. package/dist/ore/dist/testing/wait.cjs +1 -0
  813. package/dist/ore/dist/testing/wait.js +1 -0
  814. package/dist/ore/dist/testing.cjs +1 -0
  815. package/dist/ore/dist/testing.js +6 -0
  816. package/dist/ore/dist/types/bindings.cjs +2 -0
  817. package/dist/ore/dist/types/bindings.cjs.map +1 -0
  818. package/dist/ore/dist/types/bindings.js +15 -0
  819. package/dist/ore/dist/types/bindings.js.map +1 -0
  820. package/dist/ore/dist/types.cjs +2 -0
  821. package/dist/ore/dist/types.cjs.map +1 -0
  822. package/dist/ore/dist/types.js +15 -0
  823. package/dist/ore/dist/types.js.map +1 -0
  824. package/dist/ore/dist/utils/aria.cjs +2 -0
  825. package/dist/ore/dist/utils/aria.cjs.map +1 -0
  826. package/dist/ore/dist/utils/aria.js +6 -0
  827. package/dist/ore/dist/utils/aria.js.map +1 -0
  828. package/dist/ore/dist/utils/css.cjs +2 -0
  829. package/dist/ore/dist/utils/css.cjs.map +1 -0
  830. package/dist/ore/dist/utils/css.js +18 -0
  831. package/dist/ore/dist/utils/css.js.map +1 -0
  832. package/dist/ore/dist/utils/dom.cjs +2 -0
  833. package/dist/ore/dist/utils/dom.cjs.map +1 -0
  834. package/dist/ore/dist/utils/dom.js +47 -0
  835. package/dist/ore/dist/utils/dom.js.map +1 -0
  836. package/dist/ore/dist/utils/emit.cjs +2 -0
  837. package/dist/ore/dist/utils/emit.cjs.map +1 -0
  838. package/dist/ore/dist/utils/emit.js +16 -0
  839. package/dist/ore/dist/utils/emit.js.map +1 -0
  840. package/dist/ore/dist/utils/id.cjs +2 -0
  841. package/dist/ore/dist/utils/id.cjs.map +1 -0
  842. package/dist/ore/dist/utils/id.js +4 -0
  843. package/dist/ore/dist/utils/id.js.map +1 -0
  844. package/dist/otp-input.cjs +21 -0
  845. package/dist/otp-input.cjs.map +1 -0
  846. package/dist/otp-input.js +145 -0
  847. package/dist/otp-input.js.map +1 -0
  848. package/dist/overlay/dialog/dialog.css?inline.cjs +2 -0
  849. package/dist/overlay/dialog/dialog.css?inline.cjs.map +1 -0
  850. package/dist/overlay/dialog/dialog.css?inline.js +6 -0
  851. package/dist/overlay/dialog/dialog.css?inline.js.map +1 -0
  852. package/dist/overlay/dialog/dialog.d.ts +108 -0
  853. package/dist/overlay/dialog/dialog.d.ts.map +1 -0
  854. package/dist/overlay/drawer/drawer.css?inline.cjs +2 -0
  855. package/dist/overlay/drawer/drawer.css?inline.cjs.map +1 -0
  856. package/dist/overlay/drawer/drawer.css?inline.js +6 -0
  857. package/dist/overlay/drawer/drawer.css?inline.js.map +1 -0
  858. package/dist/overlay/drawer/drawer.d.ts +111 -0
  859. package/dist/overlay/drawer/drawer.d.ts.map +1 -0
  860. package/dist/overlay/index.d.ts +11 -0
  861. package/dist/overlay/index.d.ts.map +1 -0
  862. package/dist/overlay/menu/menu-item.css?inline.cjs +2 -0
  863. package/dist/overlay/menu/menu-item.css?inline.cjs.map +1 -0
  864. package/dist/overlay/menu/menu-item.css?inline.js +6 -0
  865. package/dist/overlay/menu/menu-item.css?inline.js.map +1 -0
  866. package/dist/overlay/menu/menu-separator.css?inline.cjs +2 -0
  867. package/dist/overlay/menu/menu-separator.css?inline.cjs.map +1 -0
  868. package/dist/overlay/menu/menu-separator.css?inline.js +6 -0
  869. package/dist/overlay/menu/menu-separator.css?inline.js.map +1 -0
  870. package/dist/overlay/menu/menu.css?inline.cjs +2 -0
  871. package/dist/overlay/menu/menu.css?inline.cjs.map +1 -0
  872. package/dist/overlay/menu/menu.css?inline.js +6 -0
  873. package/dist/overlay/menu/menu.css?inline.js.map +1 -0
  874. package/dist/overlay/menu/menu.d.ts +110 -0
  875. package/dist/overlay/menu/menu.d.ts.map +1 -0
  876. package/dist/overlay/popover/popover.css?inline.cjs +2 -0
  877. package/dist/overlay/popover/popover.css?inline.cjs.map +1 -0
  878. package/dist/overlay/popover/popover.css?inline.js +6 -0
  879. package/dist/overlay/popover/popover.css?inline.js.map +1 -0
  880. package/dist/overlay/popover/popover.d.ts +56 -0
  881. package/dist/overlay/popover/popover.d.ts.map +1 -0
  882. package/dist/overlay/shared/await-exit.cjs +2 -0
  883. package/dist/overlay/shared/await-exit.cjs.map +1 -0
  884. package/dist/overlay/shared/await-exit.d.ts +14 -0
  885. package/dist/overlay/shared/await-exit.d.ts.map +1 -0
  886. package/dist/overlay/shared/await-exit.js +18 -0
  887. package/dist/overlay/shared/await-exit.js.map +1 -0
  888. package/dist/overlay/shared/background-lock.cjs +2 -0
  889. package/dist/overlay/shared/background-lock.cjs.map +1 -0
  890. package/dist/overlay/shared/background-lock.d.ts +22 -0
  891. package/dist/overlay/shared/background-lock.d.ts.map +1 -0
  892. package/dist/overlay/shared/background-lock.js +25 -0
  893. package/dist/overlay/shared/background-lock.js.map +1 -0
  894. package/dist/overlay/shared/use-dialog.cjs +2 -0
  895. package/dist/overlay/shared/use-dialog.cjs.map +1 -0
  896. package/dist/overlay/shared/use-dialog.d.ts +76 -0
  897. package/dist/overlay/shared/use-dialog.d.ts.map +1 -0
  898. package/dist/overlay/shared/use-dialog.js +92 -0
  899. package/dist/overlay/shared/use-dialog.js.map +1 -0
  900. package/dist/overlay/shared/use-floating-trigger.cjs +2 -0
  901. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -0
  902. package/dist/overlay/shared/use-floating-trigger.d.ts +67 -0
  903. package/dist/overlay/shared/use-floating-trigger.d.ts.map +1 -0
  904. package/dist/overlay/shared/use-floating-trigger.js +128 -0
  905. package/dist/overlay/shared/use-floating-trigger.js.map +1 -0
  906. package/dist/overlay/tooltip/tooltip.css?inline.cjs +2 -0
  907. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +1 -0
  908. package/dist/overlay/tooltip/tooltip.css?inline.js +6 -0
  909. package/dist/overlay/tooltip/tooltip.css?inline.js.map +1 -0
  910. package/dist/overlay/tooltip/tooltip.d.ts +72 -0
  911. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -0
  912. package/dist/pagination.cjs +63 -0
  913. package/dist/pagination.cjs.map +1 -0
  914. package/dist/pagination.js +113 -0
  915. package/dist/pagination.js.map +1 -0
  916. package/dist/password-strength.cjs +19 -0
  917. package/dist/password-strength.cjs.map +1 -0
  918. package/dist/password-strength.js +69 -0
  919. package/dist/password-strength.js.map +1 -0
  920. package/dist/popover.cjs +16 -0
  921. package/dist/popover.cjs.map +1 -0
  922. package/dist/popover.js +81 -0
  923. package/dist/popover.js.map +1 -0
  924. package/dist/progress.cjs +46 -0
  925. package/dist/progress.cjs.map +1 -0
  926. package/dist/progress.js +96 -0
  927. package/dist/progress.js.map +1 -0
  928. package/dist/radio-group.cjs +25 -0
  929. package/dist/radio-group.cjs.map +1 -0
  930. package/dist/radio-group.js +145 -0
  931. package/dist/radio-group.js.map +1 -0
  932. package/dist/radio.cjs +10 -0
  933. package/dist/radio.cjs.map +1 -0
  934. package/dist/radio.js +146 -0
  935. package/dist/radio.js.map +1 -0
  936. package/dist/rating.cjs +28 -0
  937. package/dist/rating.cjs.map +1 -0
  938. package/dist/rating.js +123 -0
  939. package/dist/rating.js.map +1 -0
  940. package/dist/refine.cjs +2705 -0
  941. package/dist/refine.cjs.map +1 -0
  942. package/dist/refine.iife.js +2705 -0
  943. package/dist/refine.iife.js.map +1 -0
  944. package/dist/refine.js +2705 -0
  945. package/dist/refine.js.map +1 -0
  946. package/dist/select.cjs +79 -0
  947. package/dist/select.cjs.map +1 -0
  948. package/dist/select.js +289 -0
  949. package/dist/select.js.map +1 -0
  950. package/dist/separator.cjs +27 -0
  951. package/dist/separator.cjs.map +1 -0
  952. package/dist/separator.js +47 -0
  953. package/dist/separator.js.map +1 -0
  954. package/dist/shared/index.d.ts +14 -0
  955. package/dist/shared/index.d.ts.map +1 -0
  956. package/dist/shared/prop-bundles.cjs +2 -0
  957. package/dist/shared/prop-bundles.cjs.map +1 -0
  958. package/dist/shared/prop-bundles.d.ts +45 -0
  959. package/dist/shared/prop-bundles.d.ts.map +1 -0
  960. package/dist/shared/prop-bundles.js +13 -0
  961. package/dist/shared/prop-bundles.js.map +1 -0
  962. package/dist/shared/size-presets.cjs +2 -0
  963. package/dist/shared/size-presets.cjs.map +1 -0
  964. package/dist/shared/size-presets.d.ts +101 -0
  965. package/dist/shared/size-presets.d.ts.map +1 -0
  966. package/dist/shared/size-presets.js +96 -0
  967. package/dist/shared/size-presets.js.map +1 -0
  968. package/dist/shared/types.d.ts +76 -0
  969. package/dist/shared/types.d.ts.map +1 -0
  970. package/dist/sidebar.cjs +123 -0
  971. package/dist/sidebar.cjs.map +1 -0
  972. package/dist/sidebar.js +344 -0
  973. package/dist/sidebar.js.map +1 -0
  974. package/dist/skeleton.cjs +10 -0
  975. package/dist/skeleton.cjs.map +1 -0
  976. package/dist/skeleton.js +59 -0
  977. package/dist/skeleton.js.map +1 -0
  978. package/dist/slider.cjs +27 -0
  979. package/dist/slider.cjs.map +1 -0
  980. package/dist/slider.js +219 -0
  981. package/dist/slider.js.map +1 -0
  982. package/dist/styles/animation.css +94 -0
  983. package/dist/styles/index.cjs +2 -0
  984. package/dist/styles/index.cjs.map +1 -0
  985. package/dist/styles/index.d.ts +41 -0
  986. package/dist/styles/index.d.ts.map +1 -0
  987. package/dist/styles/index.js +24 -0
  988. package/dist/styles/index.js.map +1 -0
  989. package/dist/styles/layer.css +19 -0
  990. package/dist/styles/mixins/accessibility.css.cjs +51 -0
  991. package/dist/styles/mixins/accessibility.css.cjs.map +1 -0
  992. package/dist/styles/mixins/accessibility.css.d.ts +80 -0
  993. package/dist/styles/mixins/accessibility.css.d.ts.map +1 -0
  994. package/dist/styles/mixins/accessibility.css.js +56 -0
  995. package/dist/styles/mixins/accessibility.css.js.map +1 -0
  996. package/dist/styles/mixins/animation.css.cjs +133 -0
  997. package/dist/styles/mixins/animation.css.cjs.map +1 -0
  998. package/dist/styles/mixins/animation.css.d.ts +43 -0
  999. package/dist/styles/mixins/animation.css.d.ts.map +1 -0
  1000. package/dist/styles/mixins/animation.css.js +166 -0
  1001. package/dist/styles/mixins/animation.css.js.map +1 -0
  1002. package/dist/styles/mixins/shape.css.cjs +66 -0
  1003. package/dist/styles/mixins/shape.css.cjs.map +1 -0
  1004. package/dist/styles/mixins/shape.css.d.ts +96 -0
  1005. package/dist/styles/mixins/shape.css.d.ts.map +1 -0
  1006. package/dist/styles/mixins/shape.css.js +98 -0
  1007. package/dist/styles/mixins/shape.css.js.map +1 -0
  1008. package/dist/styles/mixins/states.css.cjs +37 -0
  1009. package/dist/styles/mixins/states.css.cjs.map +1 -0
  1010. package/dist/styles/mixins/states.css.d.ts +27 -0
  1011. package/dist/styles/mixins/states.css.d.ts.map +1 -0
  1012. package/dist/styles/mixins/states.css.js +44 -0
  1013. package/dist/styles/mixins/states.css.js.map +1 -0
  1014. package/dist/styles/mixins/table-base.css.cjs +94 -0
  1015. package/dist/styles/mixins/table-base.css.cjs.map +1 -0
  1016. package/dist/styles/mixins/table-base.css.d.ts +24 -0
  1017. package/dist/styles/mixins/table-base.css.d.ts.map +1 -0
  1018. package/dist/styles/mixins/table-base.css.js +99 -0
  1019. package/dist/styles/mixins/table-base.css.js.map +1 -0
  1020. package/dist/styles/mixins/theme.css.cjs +80 -0
  1021. package/dist/styles/mixins/theme.css.cjs.map +1 -0
  1022. package/dist/styles/mixins/theme.css.d.ts +77 -0
  1023. package/dist/styles/mixins/theme.css.d.ts.map +1 -0
  1024. package/dist/styles/mixins/theme.css.js +98 -0
  1025. package/dist/styles/mixins/theme.css.js.map +1 -0
  1026. package/dist/styles/mixins/variants.css.cjs +55 -0
  1027. package/dist/styles/mixins/variants.css.cjs.map +1 -0
  1028. package/dist/styles/mixins/variants.css.d.ts +22 -0
  1029. package/dist/styles/mixins/variants.css.d.ts.map +1 -0
  1030. package/dist/styles/mixins/variants.css.js +60 -0
  1031. package/dist/styles/mixins/variants.css.js.map +1 -0
  1032. package/dist/styles/preflight.css +239 -0
  1033. package/dist/styles/styles.css +5 -0
  1034. package/dist/styles/theme.css +553 -0
  1035. package/dist/switch.cjs +10 -0
  1036. package/dist/switch.cjs.map +1 -0
  1037. package/dist/switch.js +79 -0
  1038. package/dist/switch.js.map +1 -0
  1039. package/dist/tab-item.cjs +17 -0
  1040. package/dist/tab-item.cjs.map +1 -0
  1041. package/dist/tab-item.js +62 -0
  1042. package/dist/tab-item.js.map +1 -0
  1043. package/dist/tab-panel.cjs +14 -0
  1044. package/dist/tab-panel.cjs.map +1 -0
  1045. package/dist/tab-panel.js +61 -0
  1046. package/dist/tab-panel.js.map +1 -0
  1047. package/dist/table.cjs +2 -0
  1048. package/dist/table.cjs.map +1 -0
  1049. package/dist/table.js +101 -0
  1050. package/dist/table.js.map +1 -0
  1051. package/dist/tabs.cjs +17 -0
  1052. package/dist/tabs.cjs.map +1 -0
  1053. package/dist/tabs.js +126 -0
  1054. package/dist/tabs.js.map +1 -0
  1055. package/dist/testing/index.d.ts +233 -0
  1056. package/dist/testing/index.d.ts.map +1 -0
  1057. package/dist/testing.cjs +2 -0
  1058. package/dist/testing.cjs.map +1 -0
  1059. package/dist/testing.js +44 -0
  1060. package/dist/testing.js.map +1 -0
  1061. package/dist/text.cjs +2 -0
  1062. package/dist/text.cjs.map +1 -0
  1063. package/dist/text.js +34 -0
  1064. package/dist/text.js.map +1 -0
  1065. package/dist/textarea.cjs +33 -0
  1066. package/dist/textarea.cjs.map +1 -0
  1067. package/dist/textarea.js +137 -0
  1068. package/dist/textarea.js.map +1 -0
  1069. package/dist/time-picker.cjs +98 -0
  1070. package/dist/time-picker.cjs.map +1 -0
  1071. package/dist/time-picker.js +261 -0
  1072. package/dist/time-picker.js.map +1 -0
  1073. package/dist/toast.cjs +69 -0
  1074. package/dist/toast.cjs.map +1 -0
  1075. package/dist/toast.js +316 -0
  1076. package/dist/toast.js.map +1 -0
  1077. package/dist/tooltip.cjs +15 -0
  1078. package/dist/tooltip.cjs.map +1 -0
  1079. package/dist/tooltip.js +121 -0
  1080. package/dist/tooltip.js.map +1 -0
  1081. package/dist/types/index.d.ts +2 -0
  1082. package/dist/types/index.d.ts.map +1 -0
  1083. package/dist/utils/css.cjs +2 -0
  1084. package/dist/utils/css.cjs.map +1 -0
  1085. package/dist/utils/css.d.ts +10 -0
  1086. package/dist/utils/css.d.ts.map +1 -0
  1087. package/dist/utils/css.js +10 -0
  1088. package/dist/utils/css.js.map +1 -0
  1089. package/dist/utils/index.d.ts +3 -0
  1090. package/dist/utils/index.d.ts.map +1 -0
  1091. package/dist/utils/link.cjs +2 -0
  1092. package/dist/utils/link.cjs.map +1 -0
  1093. package/dist/utils/link.d.ts +44 -0
  1094. package/dist/utils/link.d.ts.map +1 -0
  1095. package/dist/utils/link.js +19 -0
  1096. package/dist/utils/link.js.map +1 -0
  1097. package/package.json +464 -0
@@ -0,0 +1,29 @@
1
+ //#region src/headless/keyboard.ts
2
+ var e = (e, t) => {
3
+ if (t.disabled?.value) return !1;
4
+ let n = Object.hasOwn(t.keymap, e.key) ? t.keymap[e.key] : void 0;
5
+ if (!n) return !1;
6
+ let r = t.preventDefault ?? "before";
7
+ r === "before" && e.preventDefault();
8
+ let i = n(e) !== !1;
9
+ return r === "after" && i && e.preventDefault(), i;
10
+ }, t = (t) => {
11
+ let n = () => !!t.disabled?.value, r = t.keys ?? ["Enter", " "], i = Object.fromEntries(r.map((e) => [e, (e) => t.onPress?.(e, "keyboard")]));
12
+ return {
13
+ handleBlur: (e) => {
14
+ n() || t.onBlur?.(e);
15
+ },
16
+ handleClick: (e) => n() ? !1 : (t.onPress?.(e, "pointer"), !0),
17
+ handleFocus: (e) => {
18
+ n() || t.onFocus?.(e);
19
+ },
20
+ handleKeydown: (n) => e(n, {
21
+ disabled: t.disabled,
22
+ keymap: i
23
+ })
24
+ };
25
+ };
26
+ //#endregion
27
+ export { t as createInteraction, e as dispatchKeyboardAction };
28
+
29
+ //# sourceMappingURL=keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.js","names":[],"sources":["../../src/headless/keyboard.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\n// ── Keyboard dispatch ─────────────────────────────────────────────────────────\n\nexport type KeyboardDispatchOptions = {\n disabled?: Readable<boolean | undefined>;\n keymap: Record<string, (event: KeyboardEvent) => boolean | void>;\n preventDefault?: 'after' | 'before' | false;\n};\n\nexport const dispatchKeyboardAction = (event: KeyboardEvent, options: KeyboardDispatchOptions): boolean => {\n if (options.disabled?.value) return false;\n\n // `event.key` is attacker-influenceable on a synthetic KeyboardEvent (e.g. `new\n // KeyboardEvent('keydown', { key: '__proto__' })`). Guard with `Object.hasOwn` so a\n // crafted key name can never resolve to an inherited `Object.prototype` member\n // (`__proto__`, `constructor`, `toString`, …) instead of `undefined`.\n const action = Object.hasOwn(options.keymap, event.key) ? options.keymap[event.key] : undefined;\n\n if (!action) return false;\n\n const preventDefaultMode = options.preventDefault ?? 'before';\n\n if (preventDefaultMode === 'before') event.preventDefault();\n\n const handled = action(event) !== false;\n\n if (preventDefaultMode === 'after' && handled) event.preventDefault();\n\n return handled;\n};\n\n// ── Press control / Interaction ───────────────────────────────────────────────\n\nexport type PressTrigger = 'keyboard' | 'pointer';\n\n/**\n * Options for `createInteraction` — a unified press + focus/blur interaction\n * handler for accessible interactive elements.\n */\nexport type InteractionOptions = {\n /** `true` when the element is disabled. All handlers become no-ops. */\n disabled?: Readable<boolean | undefined>;\n /** Keys that trigger a press. Defaults to `['Enter', ' ']`. */\n keys?: string[];\n /** Called when the element loses focus. */\n onBlur?: (event: FocusEvent) => void;\n /** Called when the element receives focus. */\n onFocus?: (event: FocusEvent) => void;\n /** Called when the element is pressed via keyboard or pointer. */\n onPress?: (event: KeyboardEvent | MouseEvent, trigger: PressTrigger) => void;\n};\n\nexport type Interaction = {\n handleBlur: (event: FocusEvent) => void;\n handleClick: (event: MouseEvent) => boolean;\n handleFocus: (event: FocusEvent) => void;\n handleKeydown: (event: KeyboardEvent) => boolean;\n};\n\n/**\n * Creates a set of event handlers for an interactive element that responds to\n * keyboard and pointer presses, and optionally focus/blur events.\n *\n * @example\n * ```ts\n * const interaction = createInteraction({\n * disabled: props.disabled,\n * onPress: (event, trigger) => toggle(event),\n * onFocus: (event) => setFocused(true),\n * onBlur: (event) => setFocused(false),\n * });\n *\n * // In template:\n * // @click=\"${interaction.handleClick}\"\n * // @keydown=\"${interaction.handleKeydown}\"\n * // @focus=\"${interaction.handleFocus}\"\n * // @blur=\"${interaction.handleBlur}\"\n * ```\n */\nexport const createInteraction = (options: InteractionOptions): Interaction => {\n const isDisabled = (): boolean => Boolean(options.disabled?.value);\n const keyboardKeys = options.keys ?? ['Enter', ' '];\n const keymap = Object.fromEntries(\n keyboardKeys.map((key) => [key, (keyboardEvent: KeyboardEvent) => options.onPress?.(keyboardEvent, 'keyboard')]),\n );\n\n return {\n handleBlur: (event: FocusEvent): void => {\n if (!isDisabled()) options.onBlur?.(event);\n },\n handleClick: (event: MouseEvent): boolean => {\n if (isDisabled()) return false;\n\n options.onPress?.(event, 'pointer');\n\n return true;\n },\n handleFocus: (event: FocusEvent): void => {\n if (!isDisabled()) options.onFocus?.(event);\n },\n handleKeydown: (event: KeyboardEvent): boolean =>\n dispatchKeyboardAction(event, { disabled: options.disabled, keymap }),\n };\n};\n"],"mappings":";AAUA,IAAa,KAA0B,GAAsB,MAA8C;CACzG,IAAI,EAAQ,UAAU,OAAO,OAAO;CAMpC,IAAM,IAAS,OAAO,OAAO,EAAQ,QAAQ,EAAM,GAAG,IAAI,EAAQ,OAAO,EAAM,OAAO,KAAA;CAEtF,IAAI,CAAC,GAAQ,OAAO;CAEpB,IAAM,IAAqB,EAAQ,kBAAkB;CAErD,AAAI,MAAuB,YAAU,EAAM,eAAe;CAE1D,IAAM,IAAU,EAAO,CAAK,MAAM;CAIlC,OAFI,MAAuB,WAAW,KAAS,EAAM,eAAe,GAE7D;AACT,GAkDa,KAAqB,MAA6C;CAC7E,IAAM,UAA4B,EAAQ,EAAQ,UAAU,OACtD,IAAe,EAAQ,QAAQ,CAAC,SAAS,GAAG,GAC5C,IAAS,OAAO,YACpB,EAAa,KAAK,MAAQ,CAAC,IAAM,MAAiC,EAAQ,UAAU,GAAe,UAAU,CAAC,CAAC,CACjH;CAEA,OAAO;EACL,aAAa,MAA4B;GACvC,AAAK,EAAW,KAAG,EAAQ,SAAS,CAAK;EAC3C;EACA,cAAc,MACR,EAAW,IAAU,MAEzB,EAAQ,UAAU,GAAO,SAAS,GAE3B;EAET,cAAc,MAA4B;GACxC,AAAK,EAAW,KAAG,EAAQ,UAAU,CAAK;EAC5C;EACA,gBAAgB,MACd,EAAuB,GAAO;GAAE,UAAU,EAAQ;GAAU;EAAO,CAAC;CACxE;AACF"}
@@ -0,0 +1,2 @@
1
+ var e=(e,t)=>Array.from(e.getElementsByTagName(t)),t=(e,t)=>e.find(e=>(e.getAttribute(`value`)??``)===t)?.textContent?.replace(/\s+/g,` `).trim()||t;exports.getChoiceLabel=t,exports.getLightChildrenByTag=e;
2
+ //# sourceMappingURL=light-dom.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-dom.cjs","names":[],"sources":["../../src/headless/light-dom.ts"],"sourcesContent":["// ── Slot / light-DOM query helpers ────────────────────────────────────────────\n// Utilities for querying slotted light-DOM children and resolving labels from\n// option elements. Used by group components (checkbox-group, radio-group) and\n// choice-field components (select, combobox).\n\n/**\n * Returns all light-DOM descendants matching `tag` inside `host`.\n * Uses `getElementsByTagName` on the host's light DOM \\u2014 not Shadow DOM slot assignment.\n */\nexport const getLightChildrenByTag = (host: HTMLElement, tag: string): HTMLElement[] =>\n Array.from(host.getElementsByTagName(tag)) as HTMLElement[];\n\n/**\n * Returns the `textContent` of the item whose `value` attribute matches `value`,\n * falling back to `value` itself when no match is found.\n * Used by choice-field components to derive labels for emitted change events.\n */\nexport const getChoiceLabel = (items: HTMLElement[], value: string): string => {\n const item = items.find((el) => (el.getAttribute('value') ?? '') === value);\n\n return item?.textContent?.replace(/\\s+/g, ' ').trim() || value;\n};\n"],"mappings":"AASA,IAAa,GAAyB,EAAmB,IACvD,MAAM,KAAK,EAAK,qBAAqB,CAAG,CAAC,EAO9B,GAAkB,EAAsB,IACtC,EAAM,KAAM,IAAQ,EAAG,aAAa,OAAO,GAAK,MAAQ,CAE9D,CAAA,EAAM,aAAa,QAAQ,OAAQ,GAAG,CAAC,CAAC,KAAK,GAAK"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns all light-DOM descendants matching `tag` inside `host`.
3
+ * Uses `getElementsByTagName` on the host's light DOM \u2014 not Shadow DOM slot assignment.
4
+ */
5
+ export declare const getLightChildrenByTag: (host: HTMLElement, tag: string) => HTMLElement[];
6
+ /**
7
+ * Returns the `textContent` of the item whose `value` attribute matches `value`,
8
+ * falling back to `value` itself when no match is found.
9
+ * Used by choice-field components to derive labels for emitted change events.
10
+ */
11
+ export declare const getChoiceLabel: (items: HTMLElement[], value: string) => string;
12
+ //# sourceMappingURL=light-dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-dom.d.ts","sourceRoot":"","sources":["../../src/headless/light-dom.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,WAAW,EAAE,KAAK,MAAM,KAAG,WAAW,EACrB,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,WAAW,EAAE,EAAE,OAAO,MAAM,KAAG,MAIpE,CAAC"}
@@ -0,0 +1,6 @@
1
+ //#region src/headless/light-dom.ts
2
+ var e = (e, t) => Array.from(e.getElementsByTagName(t)), t = (e, t) => e.find((e) => (e.getAttribute("value") ?? "") === t)?.textContent?.replace(/\s+/g, " ").trim() || t;
3
+ //#endregion
4
+ export { t as getChoiceLabel, e as getLightChildrenByTag };
5
+
6
+ //# sourceMappingURL=light-dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-dom.js","names":[],"sources":["../../src/headless/light-dom.ts"],"sourcesContent":["// ── Slot / light-DOM query helpers ────────────────────────────────────────────\n// Utilities for querying slotted light-DOM children and resolving labels from\n// option elements. Used by group components (checkbox-group, radio-group) and\n// choice-field components (select, combobox).\n\n/**\n * Returns all light-DOM descendants matching `tag` inside `host`.\n * Uses `getElementsByTagName` on the host's light DOM \\u2014 not Shadow DOM slot assignment.\n */\nexport const getLightChildrenByTag = (host: HTMLElement, tag: string): HTMLElement[] =>\n Array.from(host.getElementsByTagName(tag)) as HTMLElement[];\n\n/**\n * Returns the `textContent` of the item whose `value` attribute matches `value`,\n * falling back to `value` itself when no match is found.\n * Used by choice-field components to derive labels for emitted change events.\n */\nexport const getChoiceLabel = (items: HTMLElement[], value: string): string => {\n const item = items.find((el) => (el.getAttribute('value') ?? '') === value);\n\n return item?.textContent?.replace(/\\s+/g, ' ').trim() || value;\n};\n"],"mappings":";AASA,IAAa,KAAyB,GAAmB,MACvD,MAAM,KAAK,EAAK,qBAAqB,CAAG,CAAC,GAO9B,KAAkB,GAAsB,MACtC,EAAM,MAAM,OAAQ,EAAG,aAAa,OAAO,KAAK,QAAQ,CAE9D,CAAA,EAAM,aAAa,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK,KAAK"}
@@ -0,0 +1,2 @@
1
+ const e=require("./keyboard.cjs"),t=require("./typeahead.cjs");let n=require("@vielzeug/ripple");var r=(e,t,n)=>{for(let r=t;r<e.length;r++)if(n(e[r],r))return r;return-1},i=(e,t,n)=>{for(let r=t;r>=0;r--)if(n(e[r],r))return r;return-1},a={both:{first:[`Home`],last:[`End`],next:[`ArrowDown`,`ArrowRight`],prev:[`ArrowUp`,`ArrowLeft`]},horizontal:{first:[`Home`],last:[`End`],next:[`ArrowRight`],prev:[`ArrowLeft`]},vertical:{first:[`Home`],last:[`End`],next:[`ArrowDown`],prev:[`ArrowUp`]}},o=e=>typeof e==`object`&&!!e&&`disabled`in e,s=s=>{let c=(0,n.signal)(-1),l=(e,t)=>s.isItemDisabled?.(e,t)??(o(e)?e.disabled:!1),u=(e,t,n)=>(e>=0&&(c.value=e,s.onNavigate?.(t,e,n)),e),d=(e,t,n)=>n===`forward`?r(e,t,(e,t)=>!l(e,t)):i(e,t,(e,t)=>!l(e,t)),f=e=>{if(e<0)return g(),-1;let t=s.getItems();if(!t.length)return-1;let n=Math.min(e,t.length-1);return l(t[n],n)?-1:(c.value=n,n)},p=(e,t)=>{let n=s.getItems(),r=c.value;if(!n.length)return-1;let i=r<0?e===`forward`?0:n.length-1:e===`forward`?r+1:r-1,a=d(n,i,e),o=e===`forward`?`next`:`prev`;if(a>=0)return u(a,o,t);if(s.loop){let r=e===`forward`?0:n.length-1,i=d(n,r,e);if(i>=0)return u(i,o,t)}return r},m=e=>{let t=s.getItems();if(!t.length)return-1;if(e===`first`){let e=d(t,0,`forward`);return u(e,`first`)}if(e===`last`){let e=d(t,t.length-1,`backward`);return u(e,`last`)}return p(e===`next`?`forward`:`backward`)},h=()=>{let e=s.getItems(),t=c.value;return t>=0&&t<e.length?e[t]:void 0},g=()=>{c.value=-1},_=()=>!!s.disabled?.value,v=()=>typeof s.orientation==`function`?s.orientation():s.orientation??`vertical`,y=()=>{let e=s.keys,t=a[v()],n={first:e?.first??t.first,last:e?.last??t.last,next:e?.next??t.next,prev:e?.prev??t.prev},r={};for(let e of[`next`,`prev`,`first`,`last`])for(let t of n[e])r[t]=t=>{if(e===`first`||e===`last`){let n=s.getItems();if(!n.length)return;let r=e===`first`?d(n,0,`forward`):d(n,n.length-1,`backward`);u(r,e,t)}else p(e===`next`?`forward`:`backward`,t)};return r},b=s.getItemLabel?t.createTypeahead({getIndex:()=>c.value,getItemLabel:s.getItemLabel,getItems:s.getItems,isItemDisabled:(e,t)=>l(e,t),onNavigate:(e,t)=>{_()||(c.value=e,s.onNavigate?.(`typeahead`,e,t))}}):null,x=typeof s.orientation==`function`?null:y(),S=t=>{let n=x??y();return e.dispatchKeyboardAction(t,{disabled:s.disabled,keymap:n})?!0:b?.handleKeydown(t)??!1},C=()=>{b?.reset()};return s.signal&&s.signal.addEventListener(`abort`,C,{once:!0}),{focusedIndex:c,getActiveItem:h,handleKeydown:S,navigate:m,reset:g,set:f,[Symbol.dispose]:C}};exports.createListControl=s;
2
+ //# sourceMappingURL=nav.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.cjs","names":[],"sources":["../../src/headless/nav.ts"],"sourcesContent":["import { type Readable, signal } from '@vielzeug/ripple';\n\nimport { dispatchKeyboardAction } from './keyboard';\nimport { createTypeahead } from './typeahead';\n\n// ── Private array search helpers ────────────────────────────────────────────\nconst findForward = <T>(items: T[], start: number, predicate: (item: T, index: number) => boolean): number => {\n for (let idx = start; idx < items.length; idx++) {\n if (predicate(items[idx], idx)) return idx;\n }\n\n return -1;\n};\n\nconst findBackward = <T>(items: T[], start: number, predicate: (item: T, index: number) => boolean): number => {\n for (let idx = start; idx >= 0; idx--) {\n if (predicate(items[idx], idx)) return idx;\n }\n\n return -1;\n};\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\n/**\n * Arrow-key and Home/End navigation actions. Separate from `ListKeyAction` so\n * keymap declarations never need `Exclude<ListKeyAction, 'typeahead'>`.\n */\nexport type ListNavigationAction = 'first' | 'last' | 'next' | 'prev';\n\n/**\n * All possible navigation action names, including `'typeahead'` (character-key\n * search). Used in `onNavigate` callbacks where both nav and typeahead are valid.\n */\nexport type ListKeyAction = ListNavigationAction | 'typeahead';\n\n/**\n * Orientation-aware default key bindings for list navigation.\n * - `'vertical'` (default): Up/Down arrows, Home/End\n * - `'horizontal'`: Left/Right arrows, Home/End\n * - `'both'`: all four arrow keys + Home/End\n */\nconst DEFAULT_KEYS: Record<'both' | 'horizontal' | 'vertical', Record<ListNavigationAction, string[]>> = {\n both: { first: ['Home'], last: ['End'], next: ['ArrowDown', 'ArrowRight'], prev: ['ArrowUp', 'ArrowLeft'] },\n horizontal: { first: ['Home'], last: ['End'], next: ['ArrowRight'], prev: ['ArrowLeft'] },\n vertical: { first: ['Home'], last: ['End'], next: ['ArrowDown'], prev: ['ArrowUp'] },\n};\n\nexport type ListNavigationOptions<T> = {\n disabled?: Readable<boolean | undefined>;\n /**\n * Returns a plain-text label for an item used by typeahead search.\n * When provided, pressing a printable character key jumps to the first enabled\n * item whose label starts with the accumulated type buffer (500 ms reset window).\n * Omit for contexts where the host element is a text input (e.g. combobox).\n */\n getItemLabel?: (item: T, index: number) => string;\n getItems: () => T[];\n isItemDisabled?: (item: T, index: number) => boolean;\n /** Override default key bindings for navigation actions. */\n keys?: Partial<Record<ListNavigationAction, string[]>>;\n loop?: boolean;\n /**\n * Called when navigation lands on a new index.\n * `event` is the originating `KeyboardEvent`, or `undefined` for programmatic navigation.\n * Use to sync side-effects such as focusing a DOM element.\n */\n onNavigate?: (action: ListKeyAction, index: number, event?: KeyboardEvent) => void;\n /**\n * Axis the list navigates along. Controls which arrow keys are treated as\n * `next`/`prev` when no explicit `keys` override is provided.\n * Pass a getter function for dynamic/reactive orientation (e.g. driven by a prop signal).\n *\n * - `'vertical'` (default): ↑↓ arrows\n * - `'horizontal'`: ←→ arrows\n * - `'both'`: all four arrow keys\n */\n orientation?: 'both' | 'horizontal' | 'vertical' | (() => 'both' | 'horizontal' | 'vertical');\n /** `AbortSignal` from the component lifecycle. Disposes typeahead timer on abort. */\n signal?: AbortSignal;\n};\n\nexport type ListControl<T> = {\n [Symbol.dispose](): void;\n /** Current focused index. `-1` when nothing is focused. */\n readonly focusedIndex: Readable<number>;\n getActiveItem(): T | undefined;\n handleKeydown(event: KeyboardEvent): boolean;\n /**\n * Programmatically navigate to a named position.\n * Always fires `onNavigate` — consistent with keyboard navigation.\n * Returns the resolved index, or `-1` if no enabled item was found.\n */\n navigate(action: ListNavigationAction): number;\n /** Reset focused index to `-1`. */\n reset(): void;\n /**\n * Set focus to the item at `index`. Returns the resolved index.\n * Pass a negative index to clear focus (same as `reset()`).\n */\n set(index: number): number;\n};\n\nconst hasDisabledProp = (item: unknown): item is { disabled: boolean } =>\n typeof item === 'object' && item !== null && 'disabled' in item;\n\nexport const createListControl = <T>(options: ListNavigationOptions<T>): ListControl<T> => {\n const _index = signal(-1);\n\n const isItemDisabled = (item: T, index: number): boolean =>\n options.isItemDisabled?.(item, index) ?? (hasDisabledProp(item) ? item.disabled : false);\n\n const commitIndex = (idx: number, action: ListKeyAction, event?: KeyboardEvent): number => {\n if (idx >= 0) {\n _index.value = idx;\n options.onNavigate?.(action, idx, event);\n }\n\n return idx;\n };\n\n const findEnabledIndex = (items: T[], start: number, direction: 'forward' | 'backward'): number => {\n if (direction === 'forward') return findForward(items, start, (item, i) => !isItemDisabled(item, i));\n\n return findBackward(items, start, (item, i) => !isItemDisabled(item, i));\n };\n\n const set = (index: number): number => {\n if (index < 0) {\n reset();\n\n return -1;\n }\n\n const items = options.getItems();\n\n if (!items.length) return -1;\n\n const clamped = Math.min(index, items.length - 1);\n\n if (isItemDisabled(items[clamped], clamped)) return -1;\n\n _index.value = clamped;\n\n return clamped;\n };\n\n const move = (direction: 'forward' | 'backward', event?: KeyboardEvent): number => {\n const items = options.getItems();\n const current = _index.value;\n\n if (!items.length) return -1;\n\n const start: number =\n current < 0\n ? direction === 'forward'\n ? 0\n : items.length - 1\n : direction === 'forward'\n ? current + 1\n : current - 1;\n const idx = findEnabledIndex(items, start, direction);\n const action: ListNavigationAction = direction === 'forward' ? 'next' : 'prev';\n\n if (idx >= 0) return commitIndex(idx, action, event);\n\n if (options.loop) {\n const wrapStart = direction === 'forward' ? 0 : items.length - 1;\n const wrapped = findEnabledIndex(items, wrapStart, direction);\n\n if (wrapped >= 0) return commitIndex(wrapped, action, event);\n }\n\n return current;\n };\n\n const navigate = (action: ListNavigationAction): number => {\n const items = options.getItems();\n\n if (!items.length) return -1;\n\n if (action === 'first') {\n const idx = findEnabledIndex(items, 0, 'forward');\n\n return commitIndex(idx, 'first');\n }\n\n if (action === 'last') {\n const idx = findEnabledIndex(items, items.length - 1, 'backward');\n\n return commitIndex(idx, 'last');\n }\n\n return move(action === 'next' ? 'forward' : 'backward');\n };\n\n const getActiveItem = (): T | undefined => {\n const items = options.getItems();\n const index = _index.value;\n\n return index >= 0 && index < items.length ? items[index] : undefined;\n };\n\n const reset = (): void => {\n _index.value = -1;\n };\n\n // ── Keyboard handling ──────────────────────────────────────────────────────\n\n const isKeyDisabled = (): boolean => Boolean(options.disabled?.value);\n\n const resolveOrientation = (): 'both' | 'horizontal' | 'vertical' =>\n typeof options.orientation === 'function' ? options.orientation() : (options.orientation ?? 'vertical');\n\n const buildKeymap = (): Record<string, (keyboardEvent: KeyboardEvent) => void> => {\n const keys = options.keys;\n const orientationDefaults = DEFAULT_KEYS[resolveOrientation()];\n const resolved = {\n first: keys?.first ?? orientationDefaults.first,\n last: keys?.last ?? orientationDefaults.last,\n next: keys?.next ?? orientationDefaults.next,\n prev: keys?.prev ?? orientationDefaults.prev,\n };\n const km: Record<string, (keyboardEvent: KeyboardEvent) => void> = {};\n\n for (const action of ['next', 'prev', 'first', 'last'] as const) {\n for (const key of resolved[action]) {\n km[key] = (keyboardEvent: KeyboardEvent) => {\n if (action === 'first' || action === 'last') {\n const items = options.getItems();\n\n if (!items.length) return;\n\n const idx =\n action === 'first'\n ? findEnabledIndex(items, 0, 'forward')\n : findEnabledIndex(items, items.length - 1, 'backward');\n\n commitIndex(idx, action, keyboardEvent);\n } else {\n move(action === 'next' ? 'forward' : 'backward', keyboardEvent);\n }\n };\n }\n }\n\n return km;\n };\n\n // ── Typeahead ──────────────────────────────────────────────────────────────\n\n const typeahead = options.getItemLabel\n ? createTypeahead({\n getIndex: () => _index.value,\n getItemLabel: options.getItemLabel,\n getItems: options.getItems,\n isItemDisabled: (item, index) => isItemDisabled(item, index),\n onNavigate: (index, event) => {\n if (!isKeyDisabled()) {\n _index.value = index;\n options.onNavigate?.('typeahead', index, event);\n }\n },\n })\n : null;\n\n const _staticKeymap: Record<string, (e: KeyboardEvent) => void> | null =\n typeof options.orientation === 'function' ? null : buildKeymap();\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n const km = _staticKeymap ?? buildKeymap();\n\n if (dispatchKeyboardAction(event, { disabled: options.disabled, keymap: km })) return true;\n\n return typeahead?.handleKeydown(event) ?? false;\n };\n\n const dispose = (): void => {\n typeahead?.reset();\n };\n\n if (options.signal) {\n options.signal.addEventListener('abort', dispose, { once: true });\n }\n\n return {\n focusedIndex: _index,\n getActiveItem,\n handleKeydown,\n navigate,\n reset,\n set,\n [Symbol.dispose]: dispose,\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { type Readable } from '@vielzeug/ripple';
2
+ /**
3
+ * Arrow-key and Home/End navigation actions. Separate from `ListKeyAction` so
4
+ * keymap declarations never need `Exclude<ListKeyAction, 'typeahead'>`.
5
+ */
6
+ export type ListNavigationAction = 'first' | 'last' | 'next' | 'prev';
7
+ /**
8
+ * All possible navigation action names, including `'typeahead'` (character-key
9
+ * search). Used in `onNavigate` callbacks where both nav and typeahead are valid.
10
+ */
11
+ export type ListKeyAction = ListNavigationAction | 'typeahead';
12
+ export type ListNavigationOptions<T> = {
13
+ disabled?: Readable<boolean | undefined>;
14
+ /**
15
+ * Returns a plain-text label for an item used by typeahead search.
16
+ * When provided, pressing a printable character key jumps to the first enabled
17
+ * item whose label starts with the accumulated type buffer (500 ms reset window).
18
+ * Omit for contexts where the host element is a text input (e.g. combobox).
19
+ */
20
+ getItemLabel?: (item: T, index: number) => string;
21
+ getItems: () => T[];
22
+ isItemDisabled?: (item: T, index: number) => boolean;
23
+ /** Override default key bindings for navigation actions. */
24
+ keys?: Partial<Record<ListNavigationAction, string[]>>;
25
+ loop?: boolean;
26
+ /**
27
+ * Called when navigation lands on a new index.
28
+ * `event` is the originating `KeyboardEvent`, or `undefined` for programmatic navigation.
29
+ * Use to sync side-effects such as focusing a DOM element.
30
+ */
31
+ onNavigate?: (action: ListKeyAction, index: number, event?: KeyboardEvent) => void;
32
+ /**
33
+ * Axis the list navigates along. Controls which arrow keys are treated as
34
+ * `next`/`prev` when no explicit `keys` override is provided.
35
+ * Pass a getter function for dynamic/reactive orientation (e.g. driven by a prop signal).
36
+ *
37
+ * - `'vertical'` (default): ↑↓ arrows
38
+ * - `'horizontal'`: ←→ arrows
39
+ * - `'both'`: all four arrow keys
40
+ */
41
+ orientation?: 'both' | 'horizontal' | 'vertical' | (() => 'both' | 'horizontal' | 'vertical');
42
+ /** `AbortSignal` from the component lifecycle. Disposes typeahead timer on abort. */
43
+ signal?: AbortSignal;
44
+ };
45
+ export type ListControl<T> = {
46
+ [Symbol.dispose](): void;
47
+ /** Current focused index. `-1` when nothing is focused. */
48
+ readonly focusedIndex: Readable<number>;
49
+ getActiveItem(): T | undefined;
50
+ handleKeydown(event: KeyboardEvent): boolean;
51
+ /**
52
+ * Programmatically navigate to a named position.
53
+ * Always fires `onNavigate` — consistent with keyboard navigation.
54
+ * Returns the resolved index, or `-1` if no enabled item was found.
55
+ */
56
+ navigate(action: ListNavigationAction): number;
57
+ /** Reset focused index to `-1`. */
58
+ reset(): void;
59
+ /**
60
+ * Set focus to the item at `index`. Returns the resolved index.
61
+ * Pass a negative index to clear focus (same as `reset()`).
62
+ */
63
+ set(index: number): number;
64
+ };
65
+ export declare const createListControl: <T>(options: ListNavigationOptions<T>) => ListControl<T>;
66
+ //# sourceMappingURL=nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../src/headless/nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAU,MAAM,kBAAkB,CAAC;AAwBzD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,WAAW,CAAC;AAc/D,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACzC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACrD,4DAA4D;IAC5D,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACnF;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,CAAC,MAAM,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;IAC9F,qFAAqF;IACrF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,aAAa,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAAC;IAC/C,mCAAmC;IACnC,KAAK,IAAI,IAAI,CAAC;IACd;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,CAAC;AAKF,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,CAAC,CA4LrF,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { dispatchKeyboardAction as e } from "./keyboard.js";
2
+ import { createTypeahead as t } from "./typeahead.js";
3
+ import { signal as n } from "@vielzeug/ripple";
4
+ //#region src/headless/nav.ts
5
+ var r = (e, t, n) => {
6
+ for (let r = t; r < e.length; r++) if (n(e[r], r)) return r;
7
+ return -1;
8
+ }, i = (e, t, n) => {
9
+ for (let r = t; r >= 0; r--) if (n(e[r], r)) return r;
10
+ return -1;
11
+ }, a = {
12
+ both: {
13
+ first: ["Home"],
14
+ last: ["End"],
15
+ next: ["ArrowDown", "ArrowRight"],
16
+ prev: ["ArrowUp", "ArrowLeft"]
17
+ },
18
+ horizontal: {
19
+ first: ["Home"],
20
+ last: ["End"],
21
+ next: ["ArrowRight"],
22
+ prev: ["ArrowLeft"]
23
+ },
24
+ vertical: {
25
+ first: ["Home"],
26
+ last: ["End"],
27
+ next: ["ArrowDown"],
28
+ prev: ["ArrowUp"]
29
+ }
30
+ }, o = (e) => typeof e == "object" && !!e && "disabled" in e, s = (s) => {
31
+ let c = n(-1), l = (e, t) => s.isItemDisabled?.(e, t) ?? (o(e) ? e.disabled : !1), u = (e, t, n) => (e >= 0 && (c.value = e, s.onNavigate?.(t, e, n)), e), d = (e, t, n) => n === "forward" ? r(e, t, (e, t) => !l(e, t)) : i(e, t, (e, t) => !l(e, t)), f = (e) => {
32
+ if (e < 0) return g(), -1;
33
+ let t = s.getItems();
34
+ if (!t.length) return -1;
35
+ let n = Math.min(e, t.length - 1);
36
+ return l(t[n], n) ? -1 : (c.value = n, n);
37
+ }, p = (e, t) => {
38
+ let n = s.getItems(), r = c.value;
39
+ if (!n.length) return -1;
40
+ let i = r < 0 ? e === "forward" ? 0 : n.length - 1 : e === "forward" ? r + 1 : r - 1, a = d(n, i, e), o = e === "forward" ? "next" : "prev";
41
+ if (a >= 0) return u(a, o, t);
42
+ if (s.loop) {
43
+ let r = e === "forward" ? 0 : n.length - 1, i = d(n, r, e);
44
+ if (i >= 0) return u(i, o, t);
45
+ }
46
+ return r;
47
+ }, m = (e) => {
48
+ let t = s.getItems();
49
+ if (!t.length) return -1;
50
+ if (e === "first") {
51
+ let e = d(t, 0, "forward");
52
+ return u(e, "first");
53
+ }
54
+ if (e === "last") {
55
+ let e = d(t, t.length - 1, "backward");
56
+ return u(e, "last");
57
+ }
58
+ return p(e === "next" ? "forward" : "backward");
59
+ }, h = () => {
60
+ let e = s.getItems(), t = c.value;
61
+ return t >= 0 && t < e.length ? e[t] : void 0;
62
+ }, g = () => {
63
+ c.value = -1;
64
+ }, _ = () => !!s.disabled?.value, v = () => typeof s.orientation == "function" ? s.orientation() : s.orientation ?? "vertical", y = () => {
65
+ let e = s.keys, t = a[v()], n = {
66
+ first: e?.first ?? t.first,
67
+ last: e?.last ?? t.last,
68
+ next: e?.next ?? t.next,
69
+ prev: e?.prev ?? t.prev
70
+ }, r = {};
71
+ for (let e of [
72
+ "next",
73
+ "prev",
74
+ "first",
75
+ "last"
76
+ ]) for (let t of n[e]) r[t] = (t) => {
77
+ if (e === "first" || e === "last") {
78
+ let n = s.getItems();
79
+ if (!n.length) return;
80
+ let r = e === "first" ? d(n, 0, "forward") : d(n, n.length - 1, "backward");
81
+ u(r, e, t);
82
+ } else p(e === "next" ? "forward" : "backward", t);
83
+ };
84
+ return r;
85
+ }, b = s.getItemLabel ? t({
86
+ getIndex: () => c.value,
87
+ getItemLabel: s.getItemLabel,
88
+ getItems: s.getItems,
89
+ isItemDisabled: (e, t) => l(e, t),
90
+ onNavigate: (e, t) => {
91
+ _() || (c.value = e, s.onNavigate?.("typeahead", e, t));
92
+ }
93
+ }) : null, x = typeof s.orientation == "function" ? null : y(), S = (t) => {
94
+ let n = x ?? y();
95
+ return e(t, {
96
+ disabled: s.disabled,
97
+ keymap: n
98
+ }) ? !0 : b?.handleKeydown(t) ?? !1;
99
+ }, C = () => {
100
+ b?.reset();
101
+ };
102
+ return s.signal && s.signal.addEventListener("abort", C, { once: !0 }), {
103
+ focusedIndex: c,
104
+ getActiveItem: h,
105
+ handleKeydown: S,
106
+ navigate: m,
107
+ reset: g,
108
+ set: f,
109
+ [Symbol.dispose]: C
110
+ };
111
+ };
112
+ //#endregion
113
+ export { s as createListControl };
114
+
115
+ //# sourceMappingURL=nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.js","names":[],"sources":["../../src/headless/nav.ts"],"sourcesContent":["import { type Readable, signal } from '@vielzeug/ripple';\n\nimport { dispatchKeyboardAction } from './keyboard';\nimport { createTypeahead } from './typeahead';\n\n// ── Private array search helpers ────────────────────────────────────────────\nconst findForward = <T>(items: T[], start: number, predicate: (item: T, index: number) => boolean): number => {\n for (let idx = start; idx < items.length; idx++) {\n if (predicate(items[idx], idx)) return idx;\n }\n\n return -1;\n};\n\nconst findBackward = <T>(items: T[], start: number, predicate: (item: T, index: number) => boolean): number => {\n for (let idx = start; idx >= 0; idx--) {\n if (predicate(items[idx], idx)) return idx;\n }\n\n return -1;\n};\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\n/**\n * Arrow-key and Home/End navigation actions. Separate from `ListKeyAction` so\n * keymap declarations never need `Exclude<ListKeyAction, 'typeahead'>`.\n */\nexport type ListNavigationAction = 'first' | 'last' | 'next' | 'prev';\n\n/**\n * All possible navigation action names, including `'typeahead'` (character-key\n * search). Used in `onNavigate` callbacks where both nav and typeahead are valid.\n */\nexport type ListKeyAction = ListNavigationAction | 'typeahead';\n\n/**\n * Orientation-aware default key bindings for list navigation.\n * - `'vertical'` (default): Up/Down arrows, Home/End\n * - `'horizontal'`: Left/Right arrows, Home/End\n * - `'both'`: all four arrow keys + Home/End\n */\nconst DEFAULT_KEYS: Record<'both' | 'horizontal' | 'vertical', Record<ListNavigationAction, string[]>> = {\n both: { first: ['Home'], last: ['End'], next: ['ArrowDown', 'ArrowRight'], prev: ['ArrowUp', 'ArrowLeft'] },\n horizontal: { first: ['Home'], last: ['End'], next: ['ArrowRight'], prev: ['ArrowLeft'] },\n vertical: { first: ['Home'], last: ['End'], next: ['ArrowDown'], prev: ['ArrowUp'] },\n};\n\nexport type ListNavigationOptions<T> = {\n disabled?: Readable<boolean | undefined>;\n /**\n * Returns a plain-text label for an item used by typeahead search.\n * When provided, pressing a printable character key jumps to the first enabled\n * item whose label starts with the accumulated type buffer (500 ms reset window).\n * Omit for contexts where the host element is a text input (e.g. combobox).\n */\n getItemLabel?: (item: T, index: number) => string;\n getItems: () => T[];\n isItemDisabled?: (item: T, index: number) => boolean;\n /** Override default key bindings for navigation actions. */\n keys?: Partial<Record<ListNavigationAction, string[]>>;\n loop?: boolean;\n /**\n * Called when navigation lands on a new index.\n * `event` is the originating `KeyboardEvent`, or `undefined` for programmatic navigation.\n * Use to sync side-effects such as focusing a DOM element.\n */\n onNavigate?: (action: ListKeyAction, index: number, event?: KeyboardEvent) => void;\n /**\n * Axis the list navigates along. Controls which arrow keys are treated as\n * `next`/`prev` when no explicit `keys` override is provided.\n * Pass a getter function for dynamic/reactive orientation (e.g. driven by a prop signal).\n *\n * - `'vertical'` (default): ↑↓ arrows\n * - `'horizontal'`: ←→ arrows\n * - `'both'`: all four arrow keys\n */\n orientation?: 'both' | 'horizontal' | 'vertical' | (() => 'both' | 'horizontal' | 'vertical');\n /** `AbortSignal` from the component lifecycle. Disposes typeahead timer on abort. */\n signal?: AbortSignal;\n};\n\nexport type ListControl<T> = {\n [Symbol.dispose](): void;\n /** Current focused index. `-1` when nothing is focused. */\n readonly focusedIndex: Readable<number>;\n getActiveItem(): T | undefined;\n handleKeydown(event: KeyboardEvent): boolean;\n /**\n * Programmatically navigate to a named position.\n * Always fires `onNavigate` — consistent with keyboard navigation.\n * Returns the resolved index, or `-1` if no enabled item was found.\n */\n navigate(action: ListNavigationAction): number;\n /** Reset focused index to `-1`. */\n reset(): void;\n /**\n * Set focus to the item at `index`. Returns the resolved index.\n * Pass a negative index to clear focus (same as `reset()`).\n */\n set(index: number): number;\n};\n\nconst hasDisabledProp = (item: unknown): item is { disabled: boolean } =>\n typeof item === 'object' && item !== null && 'disabled' in item;\n\nexport const createListControl = <T>(options: ListNavigationOptions<T>): ListControl<T> => {\n const _index = signal(-1);\n\n const isItemDisabled = (item: T, index: number): boolean =>\n options.isItemDisabled?.(item, index) ?? (hasDisabledProp(item) ? item.disabled : false);\n\n const commitIndex = (idx: number, action: ListKeyAction, event?: KeyboardEvent): number => {\n if (idx >= 0) {\n _index.value = idx;\n options.onNavigate?.(action, idx, event);\n }\n\n return idx;\n };\n\n const findEnabledIndex = (items: T[], start: number, direction: 'forward' | 'backward'): number => {\n if (direction === 'forward') return findForward(items, start, (item, i) => !isItemDisabled(item, i));\n\n return findBackward(items, start, (item, i) => !isItemDisabled(item, i));\n };\n\n const set = (index: number): number => {\n if (index < 0) {\n reset();\n\n return -1;\n }\n\n const items = options.getItems();\n\n if (!items.length) return -1;\n\n const clamped = Math.min(index, items.length - 1);\n\n if (isItemDisabled(items[clamped], clamped)) return -1;\n\n _index.value = clamped;\n\n return clamped;\n };\n\n const move = (direction: 'forward' | 'backward', event?: KeyboardEvent): number => {\n const items = options.getItems();\n const current = _index.value;\n\n if (!items.length) return -1;\n\n const start: number =\n current < 0\n ? direction === 'forward'\n ? 0\n : items.length - 1\n : direction === 'forward'\n ? current + 1\n : current - 1;\n const idx = findEnabledIndex(items, start, direction);\n const action: ListNavigationAction = direction === 'forward' ? 'next' : 'prev';\n\n if (idx >= 0) return commitIndex(idx, action, event);\n\n if (options.loop) {\n const wrapStart = direction === 'forward' ? 0 : items.length - 1;\n const wrapped = findEnabledIndex(items, wrapStart, direction);\n\n if (wrapped >= 0) return commitIndex(wrapped, action, event);\n }\n\n return current;\n };\n\n const navigate = (action: ListNavigationAction): number => {\n const items = options.getItems();\n\n if (!items.length) return -1;\n\n if (action === 'first') {\n const idx = findEnabledIndex(items, 0, 'forward');\n\n return commitIndex(idx, 'first');\n }\n\n if (action === 'last') {\n const idx = findEnabledIndex(items, items.length - 1, 'backward');\n\n return commitIndex(idx, 'last');\n }\n\n return move(action === 'next' ? 'forward' : 'backward');\n };\n\n const getActiveItem = (): T | undefined => {\n const items = options.getItems();\n const index = _index.value;\n\n return index >= 0 && index < items.length ? items[index] : undefined;\n };\n\n const reset = (): void => {\n _index.value = -1;\n };\n\n // ── Keyboard handling ──────────────────────────────────────────────────────\n\n const isKeyDisabled = (): boolean => Boolean(options.disabled?.value);\n\n const resolveOrientation = (): 'both' | 'horizontal' | 'vertical' =>\n typeof options.orientation === 'function' ? options.orientation() : (options.orientation ?? 'vertical');\n\n const buildKeymap = (): Record<string, (keyboardEvent: KeyboardEvent) => void> => {\n const keys = options.keys;\n const orientationDefaults = DEFAULT_KEYS[resolveOrientation()];\n const resolved = {\n first: keys?.first ?? orientationDefaults.first,\n last: keys?.last ?? orientationDefaults.last,\n next: keys?.next ?? orientationDefaults.next,\n prev: keys?.prev ?? orientationDefaults.prev,\n };\n const km: Record<string, (keyboardEvent: KeyboardEvent) => void> = {};\n\n for (const action of ['next', 'prev', 'first', 'last'] as const) {\n for (const key of resolved[action]) {\n km[key] = (keyboardEvent: KeyboardEvent) => {\n if (action === 'first' || action === 'last') {\n const items = options.getItems();\n\n if (!items.length) return;\n\n const idx =\n action === 'first'\n ? findEnabledIndex(items, 0, 'forward')\n : findEnabledIndex(items, items.length - 1, 'backward');\n\n commitIndex(idx, action, keyboardEvent);\n } else {\n move(action === 'next' ? 'forward' : 'backward', keyboardEvent);\n }\n };\n }\n }\n\n return km;\n };\n\n // ── Typeahead ──────────────────────────────────────────────────────────────\n\n const typeahead = options.getItemLabel\n ? createTypeahead({\n getIndex: () => _index.value,\n getItemLabel: options.getItemLabel,\n getItems: options.getItems,\n isItemDisabled: (item, index) => isItemDisabled(item, index),\n onNavigate: (index, event) => {\n if (!isKeyDisabled()) {\n _index.value = index;\n options.onNavigate?.('typeahead', index, event);\n }\n },\n })\n : null;\n\n const _staticKeymap: Record<string, (e: KeyboardEvent) => void> | null =\n typeof options.orientation === 'function' ? null : buildKeymap();\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n const km = _staticKeymap ?? buildKeymap();\n\n if (dispatchKeyboardAction(event, { disabled: options.disabled, keymap: km })) return true;\n\n return typeahead?.handleKeydown(event) ?? false;\n };\n\n const dispose = (): void => {\n typeahead?.reset();\n };\n\n if (options.signal) {\n options.signal.addEventListener('abort', dispose, { once: true });\n }\n\n return {\n focusedIndex: _index,\n getActiveItem,\n handleKeydown,\n navigate,\n reset,\n set,\n [Symbol.dispose]: dispose,\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=e=>{let t=Number(e);return Number.isFinite(t)?t:void 0},t=(t,n)=>e(t)??n,n=(e,n)=>Math.abs(t(e,n))||n;exports.toFiniteNumber=e,exports.toFiniteNumberOr=t,exports.toPositiveStep=n;
2
+ //# sourceMappingURL=numbers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.cjs","names":[],"sources":["../../src/headless/numbers.ts"],"sourcesContent":["// ── Number helpers ────────────────────────────────────────────────────────────\n\n/**\n * Coerces `value` via `Number()` and returns it when finite, `undefined` otherwise.\n *\n * Caveat: `null` and `''` both coerce to `0` in JavaScript (`Number(null) === 0`,\n * `Number('') === 0`) and are therefore returned as the finite number `0`, not\n * `undefined` — this function does not treat \"absent\" values specially. Only\n * genuinely non-numeric input (`undefined`, `NaN`, non-numeric strings) yields\n * `undefined`. Callers that mean \"no bound set\" should pass `undefined`\n * explicitly rather than `null` or `''`.\n */\nexport const toFiniteNumber = (value: unknown): number | undefined => {\n const parsed = Number(value);\n\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const toFiniteNumberOr = (value: unknown, fallback: number): number => {\n return toFiniteNumber(value) ?? fallback;\n};\n\nexport const toPositiveStep = (value: unknown, fallback: number): number => {\n return Math.abs(toFiniteNumberOr(value, fallback)) || fallback;\n};\n"],"mappings":"AAYA,IAAa,EAAkB,GAAuC,CACpE,IAAM,EAAS,OAAO,CAAK,EAE3B,OAAO,OAAO,SAAS,CAAM,EAAI,EAAS,IAAA,EAC5C,EAEa,GAAoB,EAAgB,IACxC,EAAe,CAAK,GAAK,EAGrB,GAAkB,EAAgB,IACtC,KAAK,IAAI,EAAiB,EAAO,CAAQ,CAAC,GAAK"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Coerces `value` via `Number()` and returns it when finite, `undefined` otherwise.
3
+ *
4
+ * Caveat: `null` and `''` both coerce to `0` in JavaScript (`Number(null) === 0`,
5
+ * `Number('') === 0`) and are therefore returned as the finite number `0`, not
6
+ * `undefined` — this function does not treat "absent" values specially. Only
7
+ * genuinely non-numeric input (`undefined`, `NaN`, non-numeric strings) yields
8
+ * `undefined`. Callers that mean "no bound set" should pass `undefined`
9
+ * explicitly rather than `null` or `''`.
10
+ */
11
+ export declare const toFiniteNumber: (value: unknown) => number | undefined;
12
+ export declare const toFiniteNumberOr: (value: unknown, fallback: number) => number;
13
+ export declare const toPositiveStep: (value: unknown, fallback: number) => number;
14
+ //# sourceMappingURL=numbers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/headless/numbers.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SAIxD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,EAAE,UAAU,MAAM,KAAG,MAEnE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,EAAE,UAAU,MAAM,KAAG,MAEjE,CAAC"}
@@ -0,0 +1,9 @@
1
+ //#region src/headless/numbers.ts
2
+ var e = (e) => {
3
+ let t = Number(e);
4
+ return Number.isFinite(t) ? t : void 0;
5
+ }, t = (t, n) => e(t) ?? n, n = (e, n) => Math.abs(t(e, n)) || n;
6
+ //#endregion
7
+ export { e as toFiniteNumber, t as toFiniteNumberOr, n as toPositiveStep };
8
+
9
+ //# sourceMappingURL=numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.js","names":[],"sources":["../../src/headless/numbers.ts"],"sourcesContent":["// ── Number helpers ────────────────────────────────────────────────────────────\n\n/**\n * Coerces `value` via `Number()` and returns it when finite, `undefined` otherwise.\n *\n * Caveat: `null` and `''` both coerce to `0` in JavaScript (`Number(null) === 0`,\n * `Number('') === 0`) and are therefore returned as the finite number `0`, not\n * `undefined` — this function does not treat \"absent\" values specially. Only\n * genuinely non-numeric input (`undefined`, `NaN`, non-numeric strings) yields\n * `undefined`. Callers that mean \"no bound set\" should pass `undefined`\n * explicitly rather than `null` or `''`.\n */\nexport const toFiniteNumber = (value: unknown): number | undefined => {\n const parsed = Number(value);\n\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const toFiniteNumberOr = (value: unknown, fallback: number): number => {\n return toFiniteNumber(value) ?? fallback;\n};\n\nexport const toPositiveStep = (value: unknown, fallback: number): number => {\n return Math.abs(toFiniteNumberOr(value, fallback)) || fallback;\n};\n"],"mappings":";AAYA,IAAa,KAAkB,MAAuC;CACpE,IAAM,IAAS,OAAO,CAAK;CAE3B,OAAO,OAAO,SAAS,CAAM,IAAI,IAAS,KAAA;AAC5C,GAEa,KAAoB,GAAgB,MACxC,EAAe,CAAK,KAAK,GAGrB,KAAkB,GAAgB,MACtC,KAAK,IAAI,EAAiB,GAAO,CAAQ,CAAC,KAAK"}
@@ -0,0 +1,2 @@
1
+ const e=require("../errors.cjs"),t=require("./nav.cjs"),n=require("./overlay.cjs"),r=require("./positioner.cjs");let i=require("@vielzeug/ripple");var a=a=>{if(typeof a.getBoundary!=`function`)throw new e.RefineConfigError(`createOptionList: getBoundary is required`);if(typeof a.getPanel!=`function`)throw new e.RefineConfigError(`createOptionList: getPanel is required`);if(typeof a.getReference!=`function`)throw new e.RefineConfigError(`createOptionList: getReference is required`);let o=(0,i.signal)(!1),s=(0,i.computed)(()=>String(o.value)),c=r.createDropdownPositioner({...a.positioning,getFloating:a.getPanel,getReference:a.getReference}),l=()=>{a.getFocusedOptionElement?.()?.scrollIntoView({block:`nearest`})},u=t.createListControl({disabled:(0,i.computed)(()=>!o.value),getItemLabel:a.getItemLabel,getItems:a.getItems,isItemDisabled:a.isItemDisabled,keys:a.keys,loop:a.loop??!0,onNavigate:(e,t,n)=>{l(),t>=0&&a.onNavigate?.(e,t,n)},orientation:a.orientation,signal:a.signal}),d=(0,i.computed)(()=>{let e=u.focusedIndex.value;return a.getOptionId&&o.value&&e>=0?a.getOptionId(e):null}),f=n.createOverlayControl({getBoundary:a.getBoundary,getPanel:a.getPanel,getTrigger:a.getTrigger,isDisabled:a.isDisabled,isOpen:()=>o.value,onClose:a.onClose,onOpen:a.onOpen,positioner:c,restoreFocus:a.restoreFocus,setOpen:e=>{o.value=e,e||u.reset()},signal:a.signal});return{ariaActiveDescendant:d,ariaExpanded:s,close:e=>f.close(e),focusedIndex:u.focusedIndex,getActiveItem:u.getActiveItem,handleKeydown:e=>o.value?e.key===`Escape`?(e.preventDefault(),f.close(`escape`),!0):u.handleKeydown(e):!1,isOpen:o,navigate:u.navigate,open:e=>f.open(e),scrollFocusedIntoView:l,set:u.set,toggle:(e,t)=>f.toggle(e,t),updatePosition:c.update}};exports.createOptionList=a;
2
+ //# sourceMappingURL=option-list.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-list.cjs","names":[],"sources":["../../src/headless/option-list.ts"],"sourcesContent":["import { computed, type Readable, signal } from '@vielzeug/ripple';\n\nimport { RefineConfigError } from '../errors';\nimport { createListControl, type ListKeyAction, type ListNavigationAction } from './nav';\nimport { createOverlayControl, type DialogCloseReason, type OverlayOpenReason } from './overlay';\nimport { createDropdownPositioner, type DropdownPositionerOptions } from './positioner';\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type BaseOptionItem = object;\n\n/** Placement-only options for the dropdown positioner (getFloating/getReference are injected from the option-list). */\nexport type PlacementOptions = Omit<DropdownPositionerOptions, 'getFloating' | 'getReference'>;\n\nexport type OptionListOptions<T extends BaseOptionItem> = {\n /** Returns the element used as the outside-click boundary. */\n getBoundary: () => HTMLElement | null;\n /**\n * Returns the currently focused option element for scroll-into-view.\n * When omitted, `scrollFocusedIntoView()` is a no-op.\n */\n getFocusedOptionElement?: () => HTMLElement | null;\n /**\n * Returns a plain-text label for the item at `index`.\n * When provided, the list control supports typeahead.\n */\n getItemLabel?: (item: T, index: number) => string;\n /** Returns the current list items. */\n getItems: () => T[];\n /**\n * Derives a stable `id` for the option at `index`.\n * When provided, `aria-activedescendant` is reactively set on the trigger element\n * to reflect the currently focused option (WAI-ARIA listbox / combobox pattern).\n */\n getOptionId?: (index: number) => string;\n /** Returns the floating panel element. */\n getPanel: () => HTMLElement | null;\n /** Returns the reference (trigger anchor) element for positioning. */\n getReference: () => HTMLElement | null;\n /** Returns the trigger element. Focus is restored here on close. */\n getTrigger?: () => HTMLElement | null;\n /** Returns `true` when all interactions should be suppressed (e.g. the host is disabled). */\n isDisabled?: () => boolean;\n isItemDisabled?: (item: T, index: number) => boolean;\n /** Override default keyboard bindings for navigation actions. */\n keys?: Partial<Record<ListNavigationAction, string[]>>;\n /** Whether list navigation wraps around at the first/last item. Default: `true`. */\n loop?: boolean;\n /** Called when the list closes. */\n onClose?: (reason: DialogCloseReason) => void;\n /**\n * Called when keyboard navigation lands on an item.\n * `event` is the originating `KeyboardEvent`, or `undefined` for programmatic navigation.\n */\n onNavigate?: (action: ListKeyAction, index: number, event?: KeyboardEvent) => void;\n /** Called when the list opens. */\n onOpen?: (reason: OverlayOpenReason) => void;\n /**\n * Restricts keyboard navigation direction for the option list.\n * Defaults to `'vertical'` when omitted (up/down arrow keys).\n */\n orientation?: 'both' | 'horizontal' | 'vertical';\n /** Placement and sizing options for the floating dropdown. */\n positioning?: PlacementOptions;\n /** Whether focus is restored to the trigger on close. Default: inferred from `restoreFocus`. */\n restoreFocus?: boolean | (() => boolean);\n /** `AbortSignal` from the component lifecycle. Disposes subscriptions and removes event listeners on abort. */\n signal: AbortSignal;\n};\n\nexport type OptionListHandle<T extends BaseOptionItem> = {\n /** Reactive `aria-activedescendant` value. `null` when no option is focused or the list is closed. */\n readonly ariaActiveDescendant: Readable<string | null>;\n /** Reactive `aria-expanded` value as string (`'true'` / `'false'`). */\n readonly ariaExpanded: Readable<string>;\n close(reason?: DialogCloseReason): void;\n /**\n * Focused item index (read-only). Write via `set(index)` to update through\n * the list control — this ensures scroll-into-view and disabled-item checks.\n */\n readonly focusedIndex: Readable<number>;\n getActiveItem(): T | undefined;\n handleKeydown(event: KeyboardEvent): boolean;\n /** Open state (read-only). Mutate via `open()`, `close()`, or `toggle()`. */\n readonly isOpen: Readable<boolean>;\n /**\n * Programmatically navigate to a named position. Always fires `onNavigate`\n * (scroll-into-view, aria-activedescendant update).\n * Returns the resolved index, or `-1` if no enabled item was found.\n */\n navigate(action: ListNavigationAction): number;\n open(reason?: OverlayOpenReason): void;\n scrollFocusedIntoView(): void;\n /**\n * Set focus to the item at `index`. Returns the resolved index.\n * Pass a negative index to clear focus (same as `reset()`).\n */\n set(index: number): number;\n /**\n * Toggles open state.\n * - Opens with `openReason` (default `'click'`).\n * - Closes with `closeReason` (default `'trigger'`).\n */\n toggle(openReason?: OverlayOpenReason, closeReason?: DialogCloseReason): void;\n /** Imperatively re-run dropdown positioning (e.g. after filter changes list height). */\n updatePosition(): void;\n};\n\n// ── Factory ───────────────────────────────────────────────────────────────────\n\n/**\n * Shared headless primitive for dropdown option lists (select, combobox, menu).\n *\n * Owns `isOpen`, `focusedIndex`, the dropdown positioner, list navigation, and\n * overlay wiring. Composes overlay.ts + nav.ts into a single complete API.\n */\nexport const createOptionList = <T extends BaseOptionItem>(options: OptionListOptions<T>): OptionListHandle<T> => {\n if (typeof options.getBoundary !== 'function') {\n throw new RefineConfigError('createOptionList: getBoundary is required');\n }\n\n if (typeof options.getPanel !== 'function') {\n throw new RefineConfigError('createOptionList: getPanel is required');\n }\n\n if (typeof options.getReference !== 'function') {\n throw new RefineConfigError('createOptionList: getReference is required');\n }\n\n const isOpen = signal(false);\n\n const ariaExpanded = computed(() => String(isOpen.value));\n\n const positioner = createDropdownPositioner({\n ...options.positioning,\n getFloating: options.getPanel,\n getReference: options.getReference,\n });\n\n const scrollFocusedIntoView = (): void => {\n options.getFocusedOptionElement?.()?.scrollIntoView({ block: 'nearest' });\n };\n\n const list = createListControl<T>({\n disabled: computed(() => !isOpen.value),\n getItemLabel: options.getItemLabel,\n getItems: options.getItems,\n isItemDisabled: options.isItemDisabled,\n keys: options.keys,\n loop: options.loop ?? true,\n onNavigate: (action, index, event) => {\n scrollFocusedIntoView();\n\n if (index >= 0) options.onNavigate?.(action, index, event);\n },\n orientation: options.orientation,\n signal: options.signal,\n });\n\n const ariaActiveDescendant = computed<string | null>(() => {\n const idx = list.focusedIndex.value;\n\n return options.getOptionId && isOpen.value && idx >= 0 ? options.getOptionId(idx) : null;\n });\n\n const overlay = createOverlayControl({\n getBoundary: options.getBoundary,\n getPanel: options.getPanel,\n getTrigger: options.getTrigger,\n isDisabled: options.isDisabled,\n isOpen: () => isOpen.value,\n onClose: options.onClose,\n onOpen: options.onOpen,\n positioner,\n restoreFocus: options.restoreFocus,\n setOpen: (next) => {\n isOpen.value = next;\n\n if (!next) list.reset();\n },\n signal: options.signal,\n });\n\n // Built-in Escape key handling: prevents each consumer from duplicating the\n // close-on-escape pattern. Fires only when the list is open; returns `true`\n // so callers know the event was handled and can stop further processing.\n const handleKeydown = (event: KeyboardEvent): boolean => {\n if (!isOpen.value) return false;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n overlay.close('escape');\n\n return true;\n }\n\n return list.handleKeydown(event);\n };\n\n return {\n ariaActiveDescendant,\n ariaExpanded,\n close: (reason) => overlay.close(reason),\n focusedIndex: list.focusedIndex,\n getActiveItem: list.getActiveItem,\n handleKeydown,\n isOpen,\n navigate: list.navigate,\n open: (reason) => overlay.open(reason),\n scrollFocusedIntoView,\n set: list.set,\n toggle: (openReason, closeReason) => overlay.toggle(openReason, closeReason),\n updatePosition: positioner.update,\n };\n};\n"],"mappings":"mJAoHA,IAAa,EAA8C,GAAuD,CAChH,GAAI,OAAO,EAAQ,aAAgB,WACjC,MAAM,IAAI,EAAA,kBAAkB,2CAA2C,EAGzE,GAAI,OAAO,EAAQ,UAAa,WAC9B,MAAM,IAAI,EAAA,kBAAkB,wCAAwC,EAGtE,GAAI,OAAO,EAAQ,cAAiB,WAClC,MAAM,IAAI,EAAA,kBAAkB,4CAA4C,EAG1E,IAAM,GAAA,EAAA,EAAA,OAAA,CAAgB,EAAK,EAErB,GAAA,EAAA,EAAA,SAAA,KAA8B,OAAO,EAAO,KAAK,CAAC,EAElD,EAAa,EAAA,yBAAyB,CAC1C,GAAG,EAAQ,YACX,YAAa,EAAQ,SACrB,aAAc,EAAQ,YACxB,CAAC,EAEK,MAAoC,CACxC,EAAQ,0BAA0B,CAAC,EAAE,eAAe,CAAE,MAAO,SAAU,CAAC,CAC1E,EAEM,EAAO,EAAA,kBAAqB,CAChC,UAAA,EAAA,EAAA,SAAA,KAAyB,CAAC,EAAO,KAAK,EACtC,aAAc,EAAQ,aACtB,SAAU,EAAQ,SAClB,eAAgB,EAAQ,eACxB,KAAM,EAAQ,KACd,KAAM,EAAQ,MAAQ,GACtB,YAAa,EAAQ,EAAO,IAAU,CACpC,EAAsB,EAElB,GAAS,GAAG,EAAQ,aAAa,EAAQ,EAAO,CAAK,CAC3D,EACA,YAAa,EAAQ,YACrB,OAAQ,EAAQ,MAClB,CAAC,EAEK,GAAA,EAAA,EAAA,SAAA,KAAqD,CACzD,IAAM,EAAM,EAAK,aAAa,MAE9B,OAAO,EAAQ,aAAe,EAAO,OAAS,GAAO,EAAI,EAAQ,YAAY,CAAG,EAAI,IACtF,CAAC,EAEK,EAAU,EAAA,qBAAqB,CACnC,YAAa,EAAQ,YACrB,SAAU,EAAQ,SAClB,WAAY,EAAQ,WACpB,WAAY,EAAQ,WACpB,WAAc,EAAO,MACrB,QAAS,EAAQ,QACjB,OAAQ,EAAQ,OAChB,aACA,aAAc,EAAQ,aACtB,QAAU,GAAS,CACjB,EAAO,MAAQ,EAEV,GAAM,EAAK,MAAM,CACxB,EACA,OAAQ,EAAQ,MAClB,CAAC,EAkBD,MAAO,CACL,uBACA,eACA,MAAQ,GAAW,EAAQ,MAAM,CAAM,EACvC,aAAc,EAAK,aACnB,cAAe,EAAK,cACpB,cAnBqB,GAChB,EAAO,MAER,EAAM,MAAQ,UAChB,EAAM,eAAe,EACrB,EAAQ,MAAM,QAAQ,EAEf,IAGF,EAAK,cAAc,CAAK,EATL,GAmB1B,SACA,SAAU,EAAK,SACf,KAAO,GAAW,EAAQ,KAAK,CAAM,EACrC,wBACA,IAAK,EAAK,IACV,QAAS,EAAY,IAAgB,EAAQ,OAAO,EAAY,CAAW,EAC3E,eAAgB,EAAW,MAC7B,CACF"}
@@ -0,0 +1,107 @@
1
+ import { type Readable } from '@vielzeug/ripple';
2
+ import { type ListKeyAction, type ListNavigationAction } from './nav';
3
+ import { type DialogCloseReason, type OverlayOpenReason } from './overlay';
4
+ import { type DropdownPositionerOptions } from './positioner';
5
+ export type BaseOptionItem = object;
6
+ /** Placement-only options for the dropdown positioner (getFloating/getReference are injected from the option-list). */
7
+ export type PlacementOptions = Omit<DropdownPositionerOptions, 'getFloating' | 'getReference'>;
8
+ export type OptionListOptions<T extends BaseOptionItem> = {
9
+ /** Returns the element used as the outside-click boundary. */
10
+ getBoundary: () => HTMLElement | null;
11
+ /**
12
+ * Returns the currently focused option element for scroll-into-view.
13
+ * When omitted, `scrollFocusedIntoView()` is a no-op.
14
+ */
15
+ getFocusedOptionElement?: () => HTMLElement | null;
16
+ /**
17
+ * Returns a plain-text label for the item at `index`.
18
+ * When provided, the list control supports typeahead.
19
+ */
20
+ getItemLabel?: (item: T, index: number) => string;
21
+ /** Returns the current list items. */
22
+ getItems: () => T[];
23
+ /**
24
+ * Derives a stable `id` for the option at `index`.
25
+ * When provided, `aria-activedescendant` is reactively set on the trigger element
26
+ * to reflect the currently focused option (WAI-ARIA listbox / combobox pattern).
27
+ */
28
+ getOptionId?: (index: number) => string;
29
+ /** Returns the floating panel element. */
30
+ getPanel: () => HTMLElement | null;
31
+ /** Returns the reference (trigger anchor) element for positioning. */
32
+ getReference: () => HTMLElement | null;
33
+ /** Returns the trigger element. Focus is restored here on close. */
34
+ getTrigger?: () => HTMLElement | null;
35
+ /** Returns `true` when all interactions should be suppressed (e.g. the host is disabled). */
36
+ isDisabled?: () => boolean;
37
+ isItemDisabled?: (item: T, index: number) => boolean;
38
+ /** Override default keyboard bindings for navigation actions. */
39
+ keys?: Partial<Record<ListNavigationAction, string[]>>;
40
+ /** Whether list navigation wraps around at the first/last item. Default: `true`. */
41
+ loop?: boolean;
42
+ /** Called when the list closes. */
43
+ onClose?: (reason: DialogCloseReason) => void;
44
+ /**
45
+ * Called when keyboard navigation lands on an item.
46
+ * `event` is the originating `KeyboardEvent`, or `undefined` for programmatic navigation.
47
+ */
48
+ onNavigate?: (action: ListKeyAction, index: number, event?: KeyboardEvent) => void;
49
+ /** Called when the list opens. */
50
+ onOpen?: (reason: OverlayOpenReason) => void;
51
+ /**
52
+ * Restricts keyboard navigation direction for the option list.
53
+ * Defaults to `'vertical'` when omitted (up/down arrow keys).
54
+ */
55
+ orientation?: 'both' | 'horizontal' | 'vertical';
56
+ /** Placement and sizing options for the floating dropdown. */
57
+ positioning?: PlacementOptions;
58
+ /** Whether focus is restored to the trigger on close. Default: inferred from `restoreFocus`. */
59
+ restoreFocus?: boolean | (() => boolean);
60
+ /** `AbortSignal` from the component lifecycle. Disposes subscriptions and removes event listeners on abort. */
61
+ signal: AbortSignal;
62
+ };
63
+ export type OptionListHandle<T extends BaseOptionItem> = {
64
+ /** Reactive `aria-activedescendant` value. `null` when no option is focused or the list is closed. */
65
+ readonly ariaActiveDescendant: Readable<string | null>;
66
+ /** Reactive `aria-expanded` value as string (`'true'` / `'false'`). */
67
+ readonly ariaExpanded: Readable<string>;
68
+ close(reason?: DialogCloseReason): void;
69
+ /**
70
+ * Focused item index (read-only). Write via `set(index)` to update through
71
+ * the list control — this ensures scroll-into-view and disabled-item checks.
72
+ */
73
+ readonly focusedIndex: Readable<number>;
74
+ getActiveItem(): T | undefined;
75
+ handleKeydown(event: KeyboardEvent): boolean;
76
+ /** Open state (read-only). Mutate via `open()`, `close()`, or `toggle()`. */
77
+ readonly isOpen: Readable<boolean>;
78
+ /**
79
+ * Programmatically navigate to a named position. Always fires `onNavigate`
80
+ * (scroll-into-view, aria-activedescendant update).
81
+ * Returns the resolved index, or `-1` if no enabled item was found.
82
+ */
83
+ navigate(action: ListNavigationAction): number;
84
+ open(reason?: OverlayOpenReason): void;
85
+ scrollFocusedIntoView(): void;
86
+ /**
87
+ * Set focus to the item at `index`. Returns the resolved index.
88
+ * Pass a negative index to clear focus (same as `reset()`).
89
+ */
90
+ set(index: number): number;
91
+ /**
92
+ * Toggles open state.
93
+ * - Opens with `openReason` (default `'click'`).
94
+ * - Closes with `closeReason` (default `'trigger'`).
95
+ */
96
+ toggle(openReason?: OverlayOpenReason, closeReason?: DialogCloseReason): void;
97
+ /** Imperatively re-run dropdown positioning (e.g. after filter changes list height). */
98
+ updatePosition(): void;
99
+ };
100
+ /**
101
+ * Shared headless primitive for dropdown option lists (select, combobox, menu).
102
+ *
103
+ * Owns `isOpen`, `focusedIndex`, the dropdown positioner, list navigation, and
104
+ * overlay wiring. Composes overlay.ts + nav.ts into a single complete API.
105
+ */
106
+ export declare const createOptionList: <T extends BaseOptionItem>(options: OptionListOptions<T>) => OptionListHandle<T>;
107
+ //# sourceMappingURL=option-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-list.d.ts","sourceRoot":"","sources":["../../src/headless/option-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { RefineConfigError as e } from "../errors.js";
2
+ import { createListControl as t } from "./nav.js";
3
+ import { createOverlayControl as n } from "./overlay.js";
4
+ import { createDropdownPositioner as r } from "./positioner.js";
5
+ import { computed as i, signal as a } from "@vielzeug/ripple";
6
+ //#region src/headless/option-list.ts
7
+ var o = (o) => {
8
+ if (typeof o.getBoundary != "function") throw new e("createOptionList: getBoundary is required");
9
+ if (typeof o.getPanel != "function") throw new e("createOptionList: getPanel is required");
10
+ if (typeof o.getReference != "function") throw new e("createOptionList: getReference is required");
11
+ let s = a(!1), c = i(() => String(s.value)), l = r({
12
+ ...o.positioning,
13
+ getFloating: o.getPanel,
14
+ getReference: o.getReference
15
+ }), u = () => {
16
+ o.getFocusedOptionElement?.()?.scrollIntoView({ block: "nearest" });
17
+ }, d = t({
18
+ disabled: i(() => !s.value),
19
+ getItemLabel: o.getItemLabel,
20
+ getItems: o.getItems,
21
+ isItemDisabled: o.isItemDisabled,
22
+ keys: o.keys,
23
+ loop: o.loop ?? !0,
24
+ onNavigate: (e, t, n) => {
25
+ u(), t >= 0 && o.onNavigate?.(e, t, n);
26
+ },
27
+ orientation: o.orientation,
28
+ signal: o.signal
29
+ }), f = i(() => {
30
+ let e = d.focusedIndex.value;
31
+ return o.getOptionId && s.value && e >= 0 ? o.getOptionId(e) : null;
32
+ }), p = n({
33
+ getBoundary: o.getBoundary,
34
+ getPanel: o.getPanel,
35
+ getTrigger: o.getTrigger,
36
+ isDisabled: o.isDisabled,
37
+ isOpen: () => s.value,
38
+ onClose: o.onClose,
39
+ onOpen: o.onOpen,
40
+ positioner: l,
41
+ restoreFocus: o.restoreFocus,
42
+ setOpen: (e) => {
43
+ s.value = e, e || d.reset();
44
+ },
45
+ signal: o.signal
46
+ });
47
+ return {
48
+ ariaActiveDescendant: f,
49
+ ariaExpanded: c,
50
+ close: (e) => p.close(e),
51
+ focusedIndex: d.focusedIndex,
52
+ getActiveItem: d.getActiveItem,
53
+ handleKeydown: (e) => s.value ? e.key === "Escape" ? (e.preventDefault(), p.close("escape"), !0) : d.handleKeydown(e) : !1,
54
+ isOpen: s,
55
+ navigate: d.navigate,
56
+ open: (e) => p.open(e),
57
+ scrollFocusedIntoView: u,
58
+ set: d.set,
59
+ toggle: (e, t) => p.toggle(e, t),
60
+ updatePosition: l.update
61
+ };
62
+ };
63
+ //#endregion
64
+ export { o as createOptionList };
65
+
66
+ //# sourceMappingURL=option-list.js.map