@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 @@
1
+ {"version":3,"file":"use-floating-trigger.cjs","names":[],"sources":["../../../src/overlay/shared/use-floating-trigger.ts"],"sourcesContent":["import type { Placement } from '@vielzeug/orbit';\n\nimport { computePosition, flip, offset, shift } from '@vielzeug/orbit';\nimport { type Readable, type Signal, signal, watch } from '@vielzeug/ripple';\n\nimport { lifecycleSignal, createOverlayControl, type DialogCloseReason, type OverlayOpenReason } from '../../headless';\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type FloatingTriggerType = 'click' | 'focus' | 'hover';\n\nexport type AriaBindFn = (triggerEl: HTMLElement) => () => void;\n\nexport type FloatingTriggerOptions = {\n /** ARIA binding factory: called with the trigger element, returns a cleanup. */\n bindTriggerAria: AriaBindFn;\n /** If true, disable all trigger interactions and close if open. */\n disabled: Readable<boolean>;\n /** Returns the host element (e.g. ore-popover) so slotted content clicks aren't treated as outside clicks. */\n getHost?: () => Element | null;\n /** Returns the panel element, if mounted. */\n getPanel: () => HTMLElement | null;\n /** Gap from reference to floating panel in px. Default: 8. Accepts a signal for runtime reactivity. */\n offset?: Readable<number | undefined> | number;\n /** Cleanup registrar from the component setup ctx. Automatically called on disconnect. */\n onCleanup: (fn: () => void) => void;\n /** Called when the popover closes. */\n onClose?: (reason: DialogCloseReason) => void;\n /** Called when the popover opens. */\n onOpen?: (reason: OverlayOpenReason) => void;\n /** Callback when resolved placement changes (useful for CSS attribute). */\n onPlacementChange?: (placement: Placement) => void;\n /** Controlled open prop. When defined, disables uncontrolled logic. */\n openProp: Readable<boolean | undefined>;\n /** Preferred placement. Default: 'bottom'. */\n placement: Readable<Placement>;\n /** Slot element or a factory to lazily find it. Resolved each time bindEvents runs. */\n slot: HTMLSlotElement | null | (() => HTMLSlotElement | null);\n /** Slot elements signal — used to rebind when slotted elements change. */\n slotElements: Readable<Element[]>;\n /** Which triggers are active. Set to empty array or omit if handling events manually. */\n triggers: Readable<FloatingTriggerType[]>;\n};\n\nexport type FloatingTriggerHandle = {\n /** Closes the panel. No-op if controlled. */\n close: (reason?: DialogCloseReason) => void;\n /**\n * Call inside `onMounted`. Sets up slot + trigger event watchers\n * and returns a cleanup function to pass back to the framework.\n */\n mount: () => () => void;\n /** Opens the panel. No-op if controlled. */\n open: (reason?: OverlayOpenReason) => void;\n /** Toggles the panel. No-op if controlled. */\n toggle: () => void;\n /** Manually trigger a position recalculation. */\n updatePosition: () => void;\n /** Whether the panel is currently visible. */\n visible: Signal<boolean>;\n};\n\n// ── Implementation ─────────────────────────────────────────────────────────────\n\n/**\n * Shared logic for floating-panel triggers (tooltip, popover).\n *\n * Handles:\n * - Slot-based trigger element detection and rebinding\n * - Event binding per trigger type (hover / focus / click)\n * - Floating-element positioning via `@vielzeug/orbit`\n * - Controlled mode via `openProp` watcher\n * - Keyboard escape dismissal\n *\n * ARIA binding is intentionally delegated to the caller via `bindTriggerAria`\n * so that tooltip (`describedby`) and popover (`expanded`/`controls`/…) can diverge.\n */\nexport const useFloatingTrigger = (options: FloatingTriggerOptions): FloatingTriggerHandle => {\n const {\n bindTriggerAria,\n disabled,\n getPanel,\n onClose,\n onOpen,\n onPlacementChange,\n openProp,\n placement,\n slot,\n slotElements,\n triggers,\n } = options;\n\n const resolveSlot = (): HTMLSlotElement | null => (typeof slot === 'function' ? slot() : slot);\n const getOffset = (): number => {\n const o = options.offset;\n\n if (o == null) return 8;\n\n const val = typeof o === 'object' ? (o as Readable<number | undefined>).value : o;\n\n return val ?? 8;\n };\n const abortSignal = lifecycleSignal(options.onCleanup);\n const visible = signal(false);\n const isControlled = () => openProp.value !== undefined;\n let currentTrigger: HTMLElement | null = null;\n let triggerBinding: (() => void) | null = null;\n\n const overlay = createOverlayControl({\n getBoundary: () => document.body,\n getPanel,\n getTrigger: () => currentTrigger,\n isDisabled: () => disabled.value,\n isOpen: () => visible.value,\n onClose,\n onOpen,\n positioner: {\n floating: getPanel,\n reference: () => currentTrigger,\n update: updatePosition,\n },\n restoreFocus: false,\n setOpen: (next) => {\n if (isControlled()) return;\n\n if (next) showFloat();\n else hideFloat();\n },\n signal: abortSignal,\n });\n\n function updatePosition(): void {\n const panel = getPanel();\n\n if (!panel || !currentTrigger) return;\n\n const result = computePosition(currentTrigger, panel, {\n middleware: [offset(getOffset()), flip(), shift({ padding: 8 })],\n placement: placement.value,\n });\n\n panel.style.left = `${result.x}px`;\n panel.style.top = `${result.y}px`;\n\n panel.dataset.placement = result.placement;\n\n onPlacementChange?.(result.placement as Placement);\n }\n\n function showFloat(): void {\n visible.value = true;\n\n const panel = getPanel();\n\n if (panel) {\n panel.dataset.open = '';\n\n if ('showPopover' in panel) {\n try {\n if (!panel.matches(':popover-open')) panel.showPopover();\n } catch {\n // Popover API restricted (e.g. sandboxed iframe); data-open CSS fallback handles visibility.\n }\n }\n }\n\n updatePosition();\n }\n\n function hideFloat(): void {\n visible.value = false;\n\n const panel = getPanel();\n\n if (panel) {\n delete panel.dataset.open;\n\n if ('hidePopover' in panel) {\n try {\n if (panel.matches(':popover-open')) panel.hidePopover();\n } catch {\n // Popover API restricted; data-open removal handles visibility.\n }\n }\n }\n }\n\n function open(reason: OverlayOpenReason = 'programmatic'): void {\n if (!isControlled()) overlay.open(reason);\n }\n\n function close(reason: DialogCloseReason = 'trigger'): void {\n if (!isControlled()) overlay.close(reason, false);\n }\n\n function toggle(): void {\n if (!isControlled()) overlay.toggle();\n }\n\n function handleKeydown(e: KeyboardEvent): void {\n if (e.key === 'Escape') close('escape');\n }\n\n function handleClickOutside(e: PointerEvent | MouseEvent): void {\n if (!visible.value) return;\n\n const path = e.composedPath();\n const panel = getPanel();\n const host = options.getHost?.();\n\n if (\n (currentTrigger && path.includes(currentTrigger)) ||\n (panel && path.includes(panel)) ||\n (host && path.includes(host))\n )\n return;\n\n close('outsideClick');\n }\n\n function handleFocusOut(e: FocusEvent): void {\n const next = e.relatedTarget as Element | null;\n const panel = getPanel();\n\n if (next && panel?.contains(next)) return;\n\n if (next && currentTrigger?.contains(next)) return;\n\n close('trigger');\n }\n\n const bindEvents = (): void => {\n triggerBinding?.();\n triggerBinding = null;\n\n const triggerEl = resolveSlot()?.assignedElements({ flatten: true })[0] as HTMLElement | undefined;\n\n if (!triggerEl) {\n currentTrigger = null;\n\n return;\n }\n\n currentTrigger = triggerEl;\n\n const removeAria = bindTriggerAria(triggerEl);\n const cleanups: Array<() => void> = [];\n\n const add = (\n target: EventTarget,\n event: string,\n listener: EventListener,\n eventOptions?: AddEventListenerOptions,\n ): void => {\n target.addEventListener(event, listener, eventOptions);\n cleanups.push(() => target.removeEventListener(event, listener, eventOptions));\n };\n\n const t = triggers.value;\n\n if (t.includes('click')) {\n add(triggerEl, 'click', toggle as EventListener);\n add(document, 'pointerdown', handleClickOutside as EventListener, { capture: true });\n }\n\n if (t.includes('hover')) {\n add(triggerEl, 'pointerenter', () => open('hover'));\n add(triggerEl, 'pointerleave', () => close('trigger'));\n\n const panelEl = getPanel();\n\n if (panelEl) {\n add(panelEl, 'pointerenter', () => open('hover'));\n add(panelEl, 'pointerleave', () => close('trigger'));\n }\n }\n\n if (t.includes('focus')) {\n add(triggerEl, 'focusin', () => open('focus'));\n add(triggerEl, 'focusout', handleFocusOut as EventListener);\n\n const panelEl = getPanel();\n\n if (panelEl) add(panelEl, 'focusout', handleFocusOut as EventListener);\n }\n\n add(document, 'keydown', handleKeydown as EventListener);\n\n triggerBinding = () => {\n removeAria();\n\n for (const cleanup of cleanups) cleanup();\n\n currentTrigger = null;\n };\n };\n\n const mount = (): (() => void) => {\n watch(slotElements, bindEvents, { immediate: true });\n\n watch(\n openProp,\n (openVal) => {\n if (openVal === undefined || openVal === null) return;\n\n if (openVal) {\n showFloat();\n onOpen?.('programmatic');\n } else if (visible.value) {\n hideFloat();\n onClose?.('programmatic');\n }\n },\n { immediate: true },\n );\n\n watch(disabled, (isNowDisabled) => {\n if (isNowDisabled) close('programmatic');\n });\n\n return () => {\n triggerBinding?.();\n triggerBinding = null;\n\n const panel = getPanel();\n\n if (panel) {\n delete panel.dataset.open;\n\n if ('hidePopover' in panel) {\n try {\n if (panel.matches(':popover-open')) panel.hidePopover();\n } catch {\n // Popover API restricted; data-open removal handles visibility.\n }\n }\n }\n\n overlay.dispose();\n };\n };\n\n return { close, mount, open, toggle, updatePosition, visible };\n};\n"],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Placement } from '@vielzeug/orbit';
2
+ import { type Readable, type Signal } from '@vielzeug/ripple';
3
+ import { type DialogCloseReason, type OverlayOpenReason } from '../../headless';
4
+ export type FloatingTriggerType = 'click' | 'focus' | 'hover';
5
+ export type AriaBindFn = (triggerEl: HTMLElement) => () => void;
6
+ export type FloatingTriggerOptions = {
7
+ /** ARIA binding factory: called with the trigger element, returns a cleanup. */
8
+ bindTriggerAria: AriaBindFn;
9
+ /** If true, disable all trigger interactions and close if open. */
10
+ disabled: Readable<boolean>;
11
+ /** Returns the host element (e.g. ore-popover) so slotted content clicks aren't treated as outside clicks. */
12
+ getHost?: () => Element | null;
13
+ /** Returns the panel element, if mounted. */
14
+ getPanel: () => HTMLElement | null;
15
+ /** Gap from reference to floating panel in px. Default: 8. Accepts a signal for runtime reactivity. */
16
+ offset?: Readable<number | undefined> | number;
17
+ /** Cleanup registrar from the component setup ctx. Automatically called on disconnect. */
18
+ onCleanup: (fn: () => void) => void;
19
+ /** Called when the popover closes. */
20
+ onClose?: (reason: DialogCloseReason) => void;
21
+ /** Called when the popover opens. */
22
+ onOpen?: (reason: OverlayOpenReason) => void;
23
+ /** Callback when resolved placement changes (useful for CSS attribute). */
24
+ onPlacementChange?: (placement: Placement) => void;
25
+ /** Controlled open prop. When defined, disables uncontrolled logic. */
26
+ openProp: Readable<boolean | undefined>;
27
+ /** Preferred placement. Default: 'bottom'. */
28
+ placement: Readable<Placement>;
29
+ /** Slot element or a factory to lazily find it. Resolved each time bindEvents runs. */
30
+ slot: HTMLSlotElement | null | (() => HTMLSlotElement | null);
31
+ /** Slot elements signal — used to rebind when slotted elements change. */
32
+ slotElements: Readable<Element[]>;
33
+ /** Which triggers are active. Set to empty array or omit if handling events manually. */
34
+ triggers: Readable<FloatingTriggerType[]>;
35
+ };
36
+ export type FloatingTriggerHandle = {
37
+ /** Closes the panel. No-op if controlled. */
38
+ close: (reason?: DialogCloseReason) => void;
39
+ /**
40
+ * Call inside `onMounted`. Sets up slot + trigger event watchers
41
+ * and returns a cleanup function to pass back to the framework.
42
+ */
43
+ mount: () => () => void;
44
+ /** Opens the panel. No-op if controlled. */
45
+ open: (reason?: OverlayOpenReason) => void;
46
+ /** Toggles the panel. No-op if controlled. */
47
+ toggle: () => void;
48
+ /** Manually trigger a position recalculation. */
49
+ updatePosition: () => void;
50
+ /** Whether the panel is currently visible. */
51
+ visible: Signal<boolean>;
52
+ };
53
+ /**
54
+ * Shared logic for floating-panel triggers (tooltip, popover).
55
+ *
56
+ * Handles:
57
+ * - Slot-based trigger element detection and rebinding
58
+ * - Event binding per trigger type (hover / focus / click)
59
+ * - Floating-element positioning via `@vielzeug/orbit`
60
+ * - Controlled mode via `openProp` watcher
61
+ * - Keyboard escape dismissal
62
+ *
63
+ * ARIA binding is intentionally delegated to the caller via `bindTriggerAria`
64
+ * so that tooltip (`describedby`) and popover (`expanded`/`controls`/…) can diverge.
65
+ */
66
+ export declare const useFloatingTrigger: (options: FloatingTriggerOptions) => FloatingTriggerHandle;
67
+ //# sourceMappingURL=use-floating-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-floating-trigger.d.ts","sourceRoot":"","sources":["../../../src/overlay/shared/use-floating-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAiB,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAyC,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIvH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,WAAW,KAAK,MAAM,IAAI,CAAC;AAEhE,MAAM,MAAM,sBAAsB,GAAG;IACnC,gFAAgF;IAChF,eAAe,EAAE,UAAU,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,8GAA8G;IAC9G,OAAO,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;IAC/B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACnC,uGAAuG;IACvG,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC;IAC/C,0FAA0F;IAC1F,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACpC,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,qCAAqC;IACrC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD,uEAAuE;IACvE,QAAQ,EAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACxC,8CAA8C;IAC9C,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,uFAAuF;IACvF,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC;IAC9D,0EAA0E;IAC1E,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC,yFAAyF;IACzF,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,6CAA6C;IAC7C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5C;;;OAGG;IACH,KAAK,EAAE,MAAM,MAAM,IAAI,CAAC;IACxB,4CAA4C;IAC5C,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,8CAA8C;IAC9C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,iDAAiD;IACjD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC1B,CAAC;AAIF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,sBAAsB,KAAG,qBA0QpE,CAAC"}
@@ -0,0 +1,128 @@
1
+ import { lifecycleSignal as e } from "../../headless/ore.js";
2
+ import { createOverlayControl as t } from "../../headless/overlay.js";
3
+ import { signal as n, watch as r } from "@vielzeug/ripple";
4
+ import { computePosition as i, flip as a, offset as o, shift as s } from "@vielzeug/orbit";
5
+ //#region src/overlay/shared/use-floating-trigger.ts
6
+ var c = (c) => {
7
+ let { bindTriggerAria: l, disabled: u, getPanel: d, onClose: f, onOpen: p, onPlacementChange: m, openProp: h, placement: g, slot: _, slotElements: v, triggers: y } = c, b = () => typeof _ == "function" ? _() : _, x = () => {
8
+ let e = c.offset;
9
+ return e == null ? 8 : (typeof e == "object" ? e.value : e) ?? 8;
10
+ }, S = e(c.onCleanup), C = n(!1), w = () => h.value !== void 0, T = null, E = null, D = t({
11
+ getBoundary: () => document.body,
12
+ getPanel: d,
13
+ getTrigger: () => T,
14
+ isDisabled: () => u.value,
15
+ isOpen: () => C.value,
16
+ onClose: f,
17
+ onOpen: p,
18
+ positioner: {
19
+ floating: d,
20
+ reference: () => T,
21
+ update: O
22
+ },
23
+ restoreFocus: !1,
24
+ setOpen: (e) => {
25
+ w() || (e ? k() : A());
26
+ },
27
+ signal: S
28
+ });
29
+ function O() {
30
+ let e = d();
31
+ if (!e || !T) return;
32
+ let t = i(T, e, {
33
+ middleware: [
34
+ o(x()),
35
+ a(),
36
+ s({ padding: 8 })
37
+ ],
38
+ placement: g.value
39
+ });
40
+ e.style.left = `${t.x}px`, e.style.top = `${t.y}px`, e.dataset.placement = t.placement, m?.(t.placement);
41
+ }
42
+ function k() {
43
+ C.value = !0;
44
+ let e = d();
45
+ if (e && (e.dataset.open = "", "showPopover" in e)) try {
46
+ e.matches(":popover-open") || e.showPopover();
47
+ } catch {}
48
+ O();
49
+ }
50
+ function A() {
51
+ C.value = !1;
52
+ let e = d();
53
+ if (e && (delete e.dataset.open, "hidePopover" in e)) try {
54
+ e.matches(":popover-open") && e.hidePopover();
55
+ } catch {}
56
+ }
57
+ function j(e = "programmatic") {
58
+ w() || D.open(e);
59
+ }
60
+ function M(e = "trigger") {
61
+ w() || D.close(e, !1);
62
+ }
63
+ function N() {
64
+ w() || D.toggle();
65
+ }
66
+ function P(e) {
67
+ e.key === "Escape" && M("escape");
68
+ }
69
+ function F(e) {
70
+ if (!C.value) return;
71
+ let t = e.composedPath(), n = d(), r = c.getHost?.();
72
+ T && t.includes(T) || n && t.includes(n) || r && t.includes(r) || M("outsideClick");
73
+ }
74
+ function I(e) {
75
+ let t = e.relatedTarget, n = d();
76
+ t && n?.contains(t) || t && T?.contains(t) || M("trigger");
77
+ }
78
+ let L = () => {
79
+ E?.(), E = null;
80
+ let e = b()?.assignedElements({ flatten: !0 })[0];
81
+ if (!e) {
82
+ T = null;
83
+ return;
84
+ }
85
+ T = e;
86
+ let t = l(e), n = [], r = (e, t, r, i) => {
87
+ e.addEventListener(t, r, i), n.push(() => e.removeEventListener(t, r, i));
88
+ }, i = y.value;
89
+ if (i.includes("click") && (r(e, "click", N), r(document, "pointerdown", F, { capture: !0 })), i.includes("hover")) {
90
+ r(e, "pointerenter", () => j("hover")), r(e, "pointerleave", () => M("trigger"));
91
+ let t = d();
92
+ t && (r(t, "pointerenter", () => j("hover")), r(t, "pointerleave", () => M("trigger")));
93
+ }
94
+ if (i.includes("focus")) {
95
+ r(e, "focusin", () => j("focus")), r(e, "focusout", I);
96
+ let t = d();
97
+ t && r(t, "focusout", I);
98
+ }
99
+ r(document, "keydown", P), E = () => {
100
+ t();
101
+ for (let e of n) e();
102
+ T = null;
103
+ };
104
+ };
105
+ return {
106
+ close: M,
107
+ mount: () => (r(v, L, { immediate: !0 }), r(h, (e) => {
108
+ e != null && (e ? (k(), p?.("programmatic")) : C.value && (A(), f?.("programmatic")));
109
+ }, { immediate: !0 }), r(u, (e) => {
110
+ e && M("programmatic");
111
+ }), () => {
112
+ E?.(), E = null;
113
+ let e = d();
114
+ if (e && (delete e.dataset.open, "hidePopover" in e)) try {
115
+ e.matches(":popover-open") && e.hidePopover();
116
+ } catch {}
117
+ D.dispose();
118
+ }),
119
+ open: j,
120
+ toggle: N,
121
+ updatePosition: O,
122
+ visible: C
123
+ };
124
+ };
125
+ //#endregion
126
+ export { c as useFloatingTrigger };
127
+
128
+ //# sourceMappingURL=use-floating-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-floating-trigger.js","names":[],"sources":["../../../src/overlay/shared/use-floating-trigger.ts"],"sourcesContent":["import type { Placement } from '@vielzeug/orbit';\n\nimport { computePosition, flip, offset, shift } from '@vielzeug/orbit';\nimport { type Readable, type Signal, signal, watch } from '@vielzeug/ripple';\n\nimport { lifecycleSignal, createOverlayControl, type DialogCloseReason, type OverlayOpenReason } from '../../headless';\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type FloatingTriggerType = 'click' | 'focus' | 'hover';\n\nexport type AriaBindFn = (triggerEl: HTMLElement) => () => void;\n\nexport type FloatingTriggerOptions = {\n /** ARIA binding factory: called with the trigger element, returns a cleanup. */\n bindTriggerAria: AriaBindFn;\n /** If true, disable all trigger interactions and close if open. */\n disabled: Readable<boolean>;\n /** Returns the host element (e.g. ore-popover) so slotted content clicks aren't treated as outside clicks. */\n getHost?: () => Element | null;\n /** Returns the panel element, if mounted. */\n getPanel: () => HTMLElement | null;\n /** Gap from reference to floating panel in px. Default: 8. Accepts a signal for runtime reactivity. */\n offset?: Readable<number | undefined> | number;\n /** Cleanup registrar from the component setup ctx. Automatically called on disconnect. */\n onCleanup: (fn: () => void) => void;\n /** Called when the popover closes. */\n onClose?: (reason: DialogCloseReason) => void;\n /** Called when the popover opens. */\n onOpen?: (reason: OverlayOpenReason) => void;\n /** Callback when resolved placement changes (useful for CSS attribute). */\n onPlacementChange?: (placement: Placement) => void;\n /** Controlled open prop. When defined, disables uncontrolled logic. */\n openProp: Readable<boolean | undefined>;\n /** Preferred placement. Default: 'bottom'. */\n placement: Readable<Placement>;\n /** Slot element or a factory to lazily find it. Resolved each time bindEvents runs. */\n slot: HTMLSlotElement | null | (() => HTMLSlotElement | null);\n /** Slot elements signal — used to rebind when slotted elements change. */\n slotElements: Readable<Element[]>;\n /** Which triggers are active. Set to empty array or omit if handling events manually. */\n triggers: Readable<FloatingTriggerType[]>;\n};\n\nexport type FloatingTriggerHandle = {\n /** Closes the panel. No-op if controlled. */\n close: (reason?: DialogCloseReason) => void;\n /**\n * Call inside `onMounted`. Sets up slot + trigger event watchers\n * and returns a cleanup function to pass back to the framework.\n */\n mount: () => () => void;\n /** Opens the panel. No-op if controlled. */\n open: (reason?: OverlayOpenReason) => void;\n /** Toggles the panel. No-op if controlled. */\n toggle: () => void;\n /** Manually trigger a position recalculation. */\n updatePosition: () => void;\n /** Whether the panel is currently visible. */\n visible: Signal<boolean>;\n};\n\n// ── Implementation ─────────────────────────────────────────────────────────────\n\n/**\n * Shared logic for floating-panel triggers (tooltip, popover).\n *\n * Handles:\n * - Slot-based trigger element detection and rebinding\n * - Event binding per trigger type (hover / focus / click)\n * - Floating-element positioning via `@vielzeug/orbit`\n * - Controlled mode via `openProp` watcher\n * - Keyboard escape dismissal\n *\n * ARIA binding is intentionally delegated to the caller via `bindTriggerAria`\n * so that tooltip (`describedby`) and popover (`expanded`/`controls`/…) can diverge.\n */\nexport const useFloatingTrigger = (options: FloatingTriggerOptions): FloatingTriggerHandle => {\n const {\n bindTriggerAria,\n disabled,\n getPanel,\n onClose,\n onOpen,\n onPlacementChange,\n openProp,\n placement,\n slot,\n slotElements,\n triggers,\n } = options;\n\n const resolveSlot = (): HTMLSlotElement | null => (typeof slot === 'function' ? slot() : slot);\n const getOffset = (): number => {\n const o = options.offset;\n\n if (o == null) return 8;\n\n const val = typeof o === 'object' ? (o as Readable<number | undefined>).value : o;\n\n return val ?? 8;\n };\n const abortSignal = lifecycleSignal(options.onCleanup);\n const visible = signal(false);\n const isControlled = () => openProp.value !== undefined;\n let currentTrigger: HTMLElement | null = null;\n let triggerBinding: (() => void) | null = null;\n\n const overlay = createOverlayControl({\n getBoundary: () => document.body,\n getPanel,\n getTrigger: () => currentTrigger,\n isDisabled: () => disabled.value,\n isOpen: () => visible.value,\n onClose,\n onOpen,\n positioner: {\n floating: getPanel,\n reference: () => currentTrigger,\n update: updatePosition,\n },\n restoreFocus: false,\n setOpen: (next) => {\n if (isControlled()) return;\n\n if (next) showFloat();\n else hideFloat();\n },\n signal: abortSignal,\n });\n\n function updatePosition(): void {\n const panel = getPanel();\n\n if (!panel || !currentTrigger) return;\n\n const result = computePosition(currentTrigger, panel, {\n middleware: [offset(getOffset()), flip(), shift({ padding: 8 })],\n placement: placement.value,\n });\n\n panel.style.left = `${result.x}px`;\n panel.style.top = `${result.y}px`;\n\n panel.dataset.placement = result.placement;\n\n onPlacementChange?.(result.placement as Placement);\n }\n\n function showFloat(): void {\n visible.value = true;\n\n const panel = getPanel();\n\n if (panel) {\n panel.dataset.open = '';\n\n if ('showPopover' in panel) {\n try {\n if (!panel.matches(':popover-open')) panel.showPopover();\n } catch {\n // Popover API restricted (e.g. sandboxed iframe); data-open CSS fallback handles visibility.\n }\n }\n }\n\n updatePosition();\n }\n\n function hideFloat(): void {\n visible.value = false;\n\n const panel = getPanel();\n\n if (panel) {\n delete panel.dataset.open;\n\n if ('hidePopover' in panel) {\n try {\n if (panel.matches(':popover-open')) panel.hidePopover();\n } catch {\n // Popover API restricted; data-open removal handles visibility.\n }\n }\n }\n }\n\n function open(reason: OverlayOpenReason = 'programmatic'): void {\n if (!isControlled()) overlay.open(reason);\n }\n\n function close(reason: DialogCloseReason = 'trigger'): void {\n if (!isControlled()) overlay.close(reason, false);\n }\n\n function toggle(): void {\n if (!isControlled()) overlay.toggle();\n }\n\n function handleKeydown(e: KeyboardEvent): void {\n if (e.key === 'Escape') close('escape');\n }\n\n function handleClickOutside(e: PointerEvent | MouseEvent): void {\n if (!visible.value) return;\n\n const path = e.composedPath();\n const panel = getPanel();\n const host = options.getHost?.();\n\n if (\n (currentTrigger && path.includes(currentTrigger)) ||\n (panel && path.includes(panel)) ||\n (host && path.includes(host))\n )\n return;\n\n close('outsideClick');\n }\n\n function handleFocusOut(e: FocusEvent): void {\n const next = e.relatedTarget as Element | null;\n const panel = getPanel();\n\n if (next && panel?.contains(next)) return;\n\n if (next && currentTrigger?.contains(next)) return;\n\n close('trigger');\n }\n\n const bindEvents = (): void => {\n triggerBinding?.();\n triggerBinding = null;\n\n const triggerEl = resolveSlot()?.assignedElements({ flatten: true })[0] as HTMLElement | undefined;\n\n if (!triggerEl) {\n currentTrigger = null;\n\n return;\n }\n\n currentTrigger = triggerEl;\n\n const removeAria = bindTriggerAria(triggerEl);\n const cleanups: Array<() => void> = [];\n\n const add = (\n target: EventTarget,\n event: string,\n listener: EventListener,\n eventOptions?: AddEventListenerOptions,\n ): void => {\n target.addEventListener(event, listener, eventOptions);\n cleanups.push(() => target.removeEventListener(event, listener, eventOptions));\n };\n\n const t = triggers.value;\n\n if (t.includes('click')) {\n add(triggerEl, 'click', toggle as EventListener);\n add(document, 'pointerdown', handleClickOutside as EventListener, { capture: true });\n }\n\n if (t.includes('hover')) {\n add(triggerEl, 'pointerenter', () => open('hover'));\n add(triggerEl, 'pointerleave', () => close('trigger'));\n\n const panelEl = getPanel();\n\n if (panelEl) {\n add(panelEl, 'pointerenter', () => open('hover'));\n add(panelEl, 'pointerleave', () => close('trigger'));\n }\n }\n\n if (t.includes('focus')) {\n add(triggerEl, 'focusin', () => open('focus'));\n add(triggerEl, 'focusout', handleFocusOut as EventListener);\n\n const panelEl = getPanel();\n\n if (panelEl) add(panelEl, 'focusout', handleFocusOut as EventListener);\n }\n\n add(document, 'keydown', handleKeydown as EventListener);\n\n triggerBinding = () => {\n removeAria();\n\n for (const cleanup of cleanups) cleanup();\n\n currentTrigger = null;\n };\n };\n\n const mount = (): (() => void) => {\n watch(slotElements, bindEvents, { immediate: true });\n\n watch(\n openProp,\n (openVal) => {\n if (openVal === undefined || openVal === null) return;\n\n if (openVal) {\n showFloat();\n onOpen?.('programmatic');\n } else if (visible.value) {\n hideFloat();\n onClose?.('programmatic');\n }\n },\n { immediate: true },\n );\n\n watch(disabled, (isNowDisabled) => {\n if (isNowDisabled) close('programmatic');\n });\n\n return () => {\n triggerBinding?.();\n triggerBinding = null;\n\n const panel = getPanel();\n\n if (panel) {\n delete panel.dataset.open;\n\n if ('hidePopover' in panel) {\n try {\n if (panel.matches(':popover-open')) panel.hidePopover();\n } catch {\n // Popover API restricted; data-open removal handles visibility.\n }\n }\n }\n\n overlay.dispose();\n };\n };\n\n return { close, mount, open, toggle, updatePosition, visible };\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=`.tooltip{inset:unset;padding:calc(var(--size-0-5) / 2) var(--size-2) var(--size-0-5);border:var(--_tooltip-border-width,var(--border-0)) solid var(--_tooltip-border-color,transparent);transform-origin:50%;margin:0;overflow:visible}@layer refine.base{:host{display:inline-block;position:relative}.tooltip{--_tooltip-fg:var(--color-contrast-100);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-900) 80%, transparent);--_tooltip-border-width:var(--border);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-100) 12%, transparent);--_tooltip-shadow:var(--shadow-md);--_tooltip-closed-transform:translateY(4px) scale(.98);max-width:var(--tooltip-max-width,var(--size-72));font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-normal);color:var(--_tooltip-fg);word-break:auto-phrase;white-space:normal;pointer-events:none;background:var(--_tooltip-bg);border-radius:var(--tooltip-radius,var(--rounded-lg));box-shadow:var(--_tooltip-shadow);opacity:0;-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));transform:var(--_tooltip-closed-transform);transition:opacity var(--transition-fast), transform var(--transition-fast), display var(--transition-fast) allow-discrete, overlay var(--transition-fast) allow-discrete;position:fixed}@media (prefers-color-scheme:dark){.tooltip{--_tooltip-fg:var(--color-contrast-900);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-100) 80%, transparent);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-900) 12%, transparent)}}.tooltip-text{white-space:pre-line;display:block}.tooltip[data-placement=top]{--_tooltip-closed-transform:translateY(4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-placement=bottom]{--_tooltip-closed-transform:translateY(-4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-placement=left]{--_tooltip-closed-transform:translateX(4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-placement=right]{--_tooltip-closed-transform:translateX(-4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-open]{opacity:1;transition:opacity var(--transition-normal), transform var(--transition-spring), display var(--transition-normal) allow-discrete, overlay var(--transition-normal) allow-discrete;will-change:opacity, transform;display:block;transform:translate(0)scale(1)}.tooltip:popover-open{opacity:1;transition:opacity var(--transition-normal), transform var(--transition-spring), display var(--transition-normal) allow-discrete, overlay var(--transition-normal) allow-discrete;will-change:opacity, transform;transform:translate(0)scale(1)}@starting-style{.tooltip:popover-open{opacity:0;transform:var(--_tooltip-closed-transform)}}@starting-style{.tooltip[data-open]{opacity:0;transform:var(--_tooltip-closed-transform)}}}@layer refine.variants{:host([variant=light]) .tooltip{--_tooltip-fg:var(--color-contrast-900);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-100) 80%, transparent);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-900) 12%, transparent);--_tooltip-shadow:var(--shadow-md)}@media (prefers-color-scheme:dark){:host([variant=light]) .tooltip{--_tooltip-fg:var(--color-contrast-100);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-900) 80%, transparent);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-100) 12%, transparent)}}}@layer refine.utilities{:host([size=sm]) .tooltip{font-size:var(--text-xs)}:host([size=lg]) .tooltip{font-size:var(--text-base)}}`;exports.default=e;
2
+ //# sourceMappingURL=tooltip.css?inline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.css?inline.cjs","names":[],"sources":["../../../src/overlay/tooltip/tooltip.css?inline"],"sourcesContent":["/* ========================================\n Popover UA resets — unlayered so they unconditionally beat\n the browser's [popover] UA stylesheet (padding / inset / border / margin).\n Must NOT be inside @layer; unlayered author rules win over every layer and\n every UA default.\n ======================================== */\n.tooltip {\n inset: unset;\n padding: calc(var(--size-0-5) / 2) var(--size-2) var(--size-0-5);\n margin: 0;\n overflow: visible;\n border: var(--_tooltip-border-width, var(--border-0)) solid var(--_tooltip-border-color, transparent);\n transform-origin: center;\n}\n\n@layer refine.base {\n :host {\n position: relative;\n display: inline-block;\n }\n\n .tooltip {\n --_tooltip-fg: var(--color-contrast-100);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-900) 80%, transparent);\n --_tooltip-border-width: var(--border);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-100) 12%, transparent);\n --_tooltip-shadow: var(--shadow-md);\n --_tooltip-closed-transform: translateY(4px) scale(0.98);\n\n /* Positioning — JS sets top/left inline */\n position: fixed;\n max-width: var(--tooltip-max-width, var(--size-72));\n font-size: var(--text-xs);\n font-weight: var(--font-medium);\n line-height: var(--leading-normal);\n color: var(--_tooltip-fg);\n word-break: auto-phrase;\n white-space: normal;\n pointer-events: none;\n background: var(--_tooltip-bg);\n border-radius: var(--tooltip-radius, var(--rounded-lg));\n box-shadow: var(--_tooltip-shadow);\n\n /* Hidden by default (also serves as exit state) */\n opacity: 0;\n backdrop-filter: blur(var(--blur-sm));\n transform: var(--_tooltip-closed-transform);\n transition:\n opacity var(--transition-fast),\n transform var(--transition-fast),\n display var(--transition-fast) allow-discrete,\n overlay var(--transition-fast) allow-discrete;\n }\n\n @media (prefers-color-scheme: dark) {\n .tooltip {\n --_tooltip-fg: var(--color-contrast-900);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-100) 80%, transparent);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-900) 12%, transparent);\n }\n }\n\n .tooltip-text {\n display: block;\n white-space: pre-line;\n }\n\n .tooltip[data-placement='top'] {\n --_tooltip-closed-transform: translateY(4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-placement='bottom'] {\n --_tooltip-closed-transform: translateY(-4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-placement='left'] {\n --_tooltip-closed-transform: translateX(4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-placement='right'] {\n --_tooltip-closed-transform: translateX(-4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-open] {\n display: block;\n }\n\n /* Entry animation via @starting-style */\n .tooltip:popover-open,\n .tooltip[data-open] {\n opacity: 1;\n transform: translate(0, 0) scale(1);\n transition:\n opacity var(--transition-normal),\n transform var(--transition-spring),\n display var(--transition-normal) allow-discrete,\n overlay var(--transition-normal) allow-discrete;\n will-change: opacity, transform;\n\n @starting-style {\n opacity: 0;\n transform: var(--_tooltip-closed-transform);\n }\n }\n}\n\n@layer refine.variants {\n /* Light tooltip */\n :host([variant='light']) .tooltip {\n --_tooltip-fg: var(--color-contrast-900);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-100) 80%, transparent);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-900) 12%, transparent);\n --_tooltip-shadow: var(--shadow-md);\n }\n\n @media (prefers-color-scheme: dark) {\n :host([variant='light']) .tooltip {\n --_tooltip-fg: var(--color-contrast-100);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-900) 80%, transparent);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-100) 12%, transparent);\n }\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) .tooltip {\n font-size: var(--text-xs);\n }\n\n :host([size='lg']) .tooltip {\n font-size: var(--text-base);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/overlay/tooltip/tooltip.css?inline
2
+ var e = ".tooltip{inset:unset;padding:calc(var(--size-0-5) / 2) var(--size-2) var(--size-0-5);border:var(--_tooltip-border-width,var(--border-0)) solid var(--_tooltip-border-color,transparent);transform-origin:50%;margin:0;overflow:visible}@layer refine.base{:host{display:inline-block;position:relative}.tooltip{--_tooltip-fg:var(--color-contrast-100);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-900) 80%, transparent);--_tooltip-border-width:var(--border);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-100) 12%, transparent);--_tooltip-shadow:var(--shadow-md);--_tooltip-closed-transform:translateY(4px) scale(.98);max-width:var(--tooltip-max-width,var(--size-72));font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-normal);color:var(--_tooltip-fg);word-break:auto-phrase;white-space:normal;pointer-events:none;background:var(--_tooltip-bg);border-radius:var(--tooltip-radius,var(--rounded-lg));box-shadow:var(--_tooltip-shadow);opacity:0;-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));transform:var(--_tooltip-closed-transform);transition:opacity var(--transition-fast), transform var(--transition-fast), display var(--transition-fast) allow-discrete, overlay var(--transition-fast) allow-discrete;position:fixed}@media (prefers-color-scheme:dark){.tooltip{--_tooltip-fg:var(--color-contrast-900);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-100) 80%, transparent);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-900) 12%, transparent)}}.tooltip-text{white-space:pre-line;display:block}.tooltip[data-placement=top]{--_tooltip-closed-transform:translateY(4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-placement=bottom]{--_tooltip-closed-transform:translateY(-4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-placement=left]{--_tooltip-closed-transform:translateX(4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-placement=right]{--_tooltip-closed-transform:translateX(-4px) scale(var(--overlay-enter-scale-dialog))}.tooltip[data-open]{opacity:1;transition:opacity var(--transition-normal), transform var(--transition-spring), display var(--transition-normal) allow-discrete, overlay var(--transition-normal) allow-discrete;will-change:opacity, transform;display:block;transform:translate(0)scale(1)}.tooltip:popover-open{opacity:1;transition:opacity var(--transition-normal), transform var(--transition-spring), display var(--transition-normal) allow-discrete, overlay var(--transition-normal) allow-discrete;will-change:opacity, transform;transform:translate(0)scale(1)}@starting-style{.tooltip:popover-open{opacity:0;transform:var(--_tooltip-closed-transform)}}@starting-style{.tooltip[data-open]{opacity:0;transform:var(--_tooltip-closed-transform)}}}@layer refine.variants{:host([variant=light]) .tooltip{--_tooltip-fg:var(--color-contrast-900);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-100) 80%, transparent);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-900) 12%, transparent);--_tooltip-shadow:var(--shadow-md)}@media (prefers-color-scheme:dark){:host([variant=light]) .tooltip{--_tooltip-fg:var(--color-contrast-100);--_tooltip-bg:color-mix(in oklch, var(--color-contrast-900) 80%, transparent);--_tooltip-border-color:color-mix(in oklch, var(--color-contrast-100) 12%, transparent)}}}@layer refine.utilities{:host([size=sm]) .tooltip{font-size:var(--text-xs)}:host([size=lg]) .tooltip{font-size:var(--text-base)}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=tooltip.css?inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.css?inline.js","names":[],"sources":["../../../src/overlay/tooltip/tooltip.css?inline"],"sourcesContent":["/* ========================================\n Popover UA resets — unlayered so they unconditionally beat\n the browser's [popover] UA stylesheet (padding / inset / border / margin).\n Must NOT be inside @layer; unlayered author rules win over every layer and\n every UA default.\n ======================================== */\n.tooltip {\n inset: unset;\n padding: calc(var(--size-0-5) / 2) var(--size-2) var(--size-0-5);\n margin: 0;\n overflow: visible;\n border: var(--_tooltip-border-width, var(--border-0)) solid var(--_tooltip-border-color, transparent);\n transform-origin: center;\n}\n\n@layer refine.base {\n :host {\n position: relative;\n display: inline-block;\n }\n\n .tooltip {\n --_tooltip-fg: var(--color-contrast-100);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-900) 80%, transparent);\n --_tooltip-border-width: var(--border);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-100) 12%, transparent);\n --_tooltip-shadow: var(--shadow-md);\n --_tooltip-closed-transform: translateY(4px) scale(0.98);\n\n /* Positioning — JS sets top/left inline */\n position: fixed;\n max-width: var(--tooltip-max-width, var(--size-72));\n font-size: var(--text-xs);\n font-weight: var(--font-medium);\n line-height: var(--leading-normal);\n color: var(--_tooltip-fg);\n word-break: auto-phrase;\n white-space: normal;\n pointer-events: none;\n background: var(--_tooltip-bg);\n border-radius: var(--tooltip-radius, var(--rounded-lg));\n box-shadow: var(--_tooltip-shadow);\n\n /* Hidden by default (also serves as exit state) */\n opacity: 0;\n backdrop-filter: blur(var(--blur-sm));\n transform: var(--_tooltip-closed-transform);\n transition:\n opacity var(--transition-fast),\n transform var(--transition-fast),\n display var(--transition-fast) allow-discrete,\n overlay var(--transition-fast) allow-discrete;\n }\n\n @media (prefers-color-scheme: dark) {\n .tooltip {\n --_tooltip-fg: var(--color-contrast-900);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-100) 80%, transparent);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-900) 12%, transparent);\n }\n }\n\n .tooltip-text {\n display: block;\n white-space: pre-line;\n }\n\n .tooltip[data-placement='top'] {\n --_tooltip-closed-transform: translateY(4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-placement='bottom'] {\n --_tooltip-closed-transform: translateY(-4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-placement='left'] {\n --_tooltip-closed-transform: translateX(4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-placement='right'] {\n --_tooltip-closed-transform: translateX(-4px) scale(var(--overlay-enter-scale-dialog));\n }\n\n .tooltip[data-open] {\n display: block;\n }\n\n /* Entry animation via @starting-style */\n .tooltip:popover-open,\n .tooltip[data-open] {\n opacity: 1;\n transform: translate(0, 0) scale(1);\n transition:\n opacity var(--transition-normal),\n transform var(--transition-spring),\n display var(--transition-normal) allow-discrete,\n overlay var(--transition-normal) allow-discrete;\n will-change: opacity, transform;\n\n @starting-style {\n opacity: 0;\n transform: var(--_tooltip-closed-transform);\n }\n }\n}\n\n@layer refine.variants {\n /* Light tooltip */\n :host([variant='light']) .tooltip {\n --_tooltip-fg: var(--color-contrast-900);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-100) 80%, transparent);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-900) 12%, transparent);\n --_tooltip-shadow: var(--shadow-md);\n }\n\n @media (prefers-color-scheme: dark) {\n :host([variant='light']) .tooltip {\n --_tooltip-fg: var(--color-contrast-100);\n --_tooltip-bg: color-mix(in oklch, var(--color-contrast-900) 80%, transparent);\n --_tooltip-border-color: color-mix(in oklch, var(--color-contrast-100) 12%, transparent);\n }\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) .tooltip {\n font-size: var(--text-xs);\n }\n\n :host([size='lg']) .tooltip {\n font-size: var(--text-base);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import type { ComponentSize } from '../../types';
2
+ type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
3
+ /** Tooltip component properties */
4
+ export type OreTooltipProps = {
5
+ /** Hide delay in ms */
6
+ 'close-delay'?: number;
7
+ /** Tooltip text content */
8
+ content?: string;
9
+ /** Show delay in ms */
10
+ delay?: number;
11
+ /** Disable the tooltip */
12
+ disabled?: boolean;
13
+ /** Controlled open state */
14
+ open?: boolean;
15
+ /** Preferred placement relative to trigger */
16
+ placement?: TooltipPlacement;
17
+ /** Tooltip size */
18
+ size?: ComponentSize;
19
+ /** Which trigger(s) show/hide the tooltip */
20
+ trigger?: string;
21
+ /** Visual variant */
22
+ variant?: 'dark' | 'light';
23
+ };
24
+ /**
25
+ * A lightweight tooltip shown on hover/focus/click relative to the slotted trigger.
26
+ *
27
+ * @element ore-tooltip
28
+ *
29
+ * @attr {string} content - Tooltip text content
30
+ * @attr {string} placement - 'top' | 'bottom' | 'left' | 'right' (default: 'top')
31
+ * @attr {string} trigger - 'hover' | 'focus' | 'click' or comma-separated combination
32
+ * @attr {number} delay - Show delay in milliseconds (default: 0)
33
+ * @attr {string} size - Size: 'sm' | 'md' | 'lg'
34
+ * @attr {string} variant - 'dark' (default) | 'light'
35
+ * @attr {boolean} disabled - Disable the tooltip
36
+ *
37
+ * @slot - Trigger element that the tooltip is anchored to
38
+ * @slot content - Complex tooltip content (overrides the `content` attribute)
39
+ *
40
+ * @cssprop --tooltip-max-width - Max width of the tooltip bubble
41
+ *
42
+ * @part tooltip - Tooltip container.
43
+ * @example
44
+ * ```html
45
+ * <!-- Simple text tooltip -->
46
+ * <ore-tooltip content="Copy to clipboard">
47
+ * <button>Copy</button>
48
+ * </ore-tooltip>
49
+ *
50
+ * <!-- Placement and delay -->
51
+ * <ore-tooltip content="Save your work" placement="right" delay="300">
52
+ * <ore-icon name="save"></ore-icon>
53
+ * </ore-tooltip>
54
+ *
55
+ * <!-- Hover + focus trigger -->
56
+ * <ore-tooltip content="Required field" trigger="hover,focus" placement="top">
57
+ * <ore-input label="Email" type="email"></ore-input>
58
+ * </ore-tooltip>
59
+ *
60
+ * <!-- Rich content slot -->
61
+ * <ore-tooltip>
62
+ * <ore-button>Help</ore-button>
63
+ * <div slot="content">
64
+ * <strong>Keyboard shortcuts</strong>
65
+ * <p>Press Ctrl+S to save.</p>
66
+ * </div>
67
+ * </ore-tooltip>
68
+ * ```
69
+ */
70
+ export declare const TOOLTIP_TAG: "ore-tooltip";
71
+ export {};
72
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/overlay/tooltip/tooltip.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,KAAK,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAqB5D,mCAAmC;AACnC,MAAM,MAAM,eAAe,GAAG;IAC5B,uBAAuB;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,WAAW,EAAG,aAAsB,CAAC"}
@@ -0,0 +1,63 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./styles/mixins/shape.css.cjs"),n=require("./styles/mixins/theme.css.cjs"),r=require("./shared/prop-bundles.cjs"),i=require("./content/pagination/pagination.css?inline.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");function s(e,t,n){let r=t,i=[];if(r<=2+2*n+3)return Array.from({length:r},(e,t)=>t+1);let a=Math.max(e-n,2),o=Math.min(e+n,r-1);i.push(1),a>3?i.push(`ellipsis-start`):a===3&&i.push(2);for(let e=a;e<=o;e++)i.push(e);return o<r-1-1?i.push(`ellipsis-end`):o===r-1-1&&i.push(r-1),i.push(r),i}var c=`ore-pagination`;(0,a.define)(c,{props:{...r.themableBundle,...r.sizableBundle,label:a.prop.string(`Pagination`),page:a.prop.number(1),"show-first-last":a.prop.bool(!1),"show-prev-next":a.prop.bool(!1),siblings:a.prop.number(1),"total-pages":a.prop.number(1),variant:a.prop.string()},setup(e,{bind:t,el:n,emit:r}){function i(t){let i=e[`total-pages`].value||1,a=Math.min(Math.max(1,t),i);a!==e.page.value&&(n.setAttribute(`page`,String(a)),r(`change`,{page:a}))}let c=(0,o.computed)(()=>s(e.page.value||1,e[`total-pages`].value||1,e.siblings.value??1)),l=(0,o.computed)(()=>(e.page.value||1)<=1),u=(0,o.computed)(()=>(e.page.value||1)>=(e[`total-pages`].value||1));return a.html`
2
+ <nav :aria-label="${e.label}" part="nav">
3
+ <ol class="pagination" part="list">
4
+ ${()=>e[`show-first-last`].value?a.html`<li>
5
+ <button
6
+ type="button"
7
+ class="nav-btn"
8
+ part="first-btn"
9
+ aria-label="First page"
10
+ ?disabled=${l}
11
+ @click=${()=>i(1)}>
12
+ <ore-icon name="chevrons-left" size="16" aria-hidden="true"></ore-icon>
13
+ </button>
14
+ </li>`:``}
15
+ ${()=>e[`show-prev-next`].value?a.html`<li>
16
+ <button
17
+ type="button"
18
+ class="nav-btn"
19
+ part="prev-btn"
20
+ aria-label="Previous page"
21
+ ?disabled=${l}
22
+ @click=${()=>i((e.page.value||1)-1)}>
23
+ <ore-icon name="chevron-left" size="16" aria-hidden="true"></ore-icon>
24
+ </button>
25
+ </li>`:``}
26
+ <li style="display: contents;">
27
+ ${()=>c.value.map(t=>{if(t===`ellipsis-start`||t===`ellipsis-end`)return a.html`<span class="ellipsis" aria-hidden="true">&hellip;</span>`;let n=t,r=n===(e.page.value||1),o=`Page ${n}`;return r?a.html`<button
28
+ type="button"
29
+ part="page-btn"
30
+ aria-label="${o}"
31
+ aria-current="page"
32
+ @click=${()=>i(n)}>
33
+ ${n}
34
+ </button>`:a.html`<button type="button" part="page-btn" aria-label="${o}" @click=${()=>i(n)}>
35
+ ${n}
36
+ </button>`})}
37
+ </li>
38
+ ${()=>e[`show-prev-next`].value?a.html`<li>
39
+ <button
40
+ type="button"
41
+ class="nav-btn"
42
+ part="next-btn"
43
+ aria-label="Next page"
44
+ ?disabled=${u}
45
+ @click=${()=>i((e.page.value||1)+1)}>
46
+ <ore-icon name="chevron-right" size="16" aria-hidden="true"></ore-icon>
47
+ </button>
48
+ </li>`:``}
49
+ ${()=>e[`show-first-last`].value?a.html`<li>
50
+ <button
51
+ type="button"
52
+ class="nav-btn"
53
+ part="last-btn"
54
+ aria-label="Last page"
55
+ ?disabled=${u}
56
+ @click=${()=>i(e[`total-pages`].value||1)}>
57
+ <ore-icon name="chevrons-right" size="16" aria-hidden="true"></ore-icon>
58
+ </button>
59
+ </li>`:``}
60
+ </ol>
61
+ </nav>
62
+ `},styles:[e.coarsePointerMixin,n.colorThemeMixin,t.sizeVariantMixin(),i.default]}),exports.PAGINATION_TAG=c;
63
+ //# sourceMappingURL=pagination.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.cjs","names":[],"sources":["../src/content/pagination/pagination.ts"],"sourcesContent":["import { define, html, prop } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport '../icon/icon';\nimport '../../inputs/button/button';\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\nimport { sizableBundle, themableBundle } from '../../shared';\nimport { coarsePointerMixin, colorThemeMixin, sizeVariantMixin } from '../../styles';\nimport componentStyles from './pagination.css?inline';\n\nexport type OrePaginationEvents = {\n change: { page: number };\n};\n\nexport type OrePaginationProps = {\n color?: ThemeColor;\n label?: string;\n page?: number;\n 'show-first-last'?: boolean;\n 'show-prev-next'?: boolean;\n siblings?: number;\n size?: ComponentSize;\n 'total-pages'?: number;\n variant?: VisualVariant;\n};\n\nfunction buildPageRange(\n currentPage: number,\n totalPages: number,\n siblings: number,\n): Array<number | 'ellipsis-start' | 'ellipsis-end'> {\n const BOUNDARY = 1; // always show first and last page\n const total = totalPages;\n const pages: Array<number | 'ellipsis-start' | 'ellipsis-end'> = [];\n\n // If total is small enough, show all pages\n if (total <= 2 * BOUNDARY + 2 * siblings + 3) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const leftSibling = Math.max(currentPage - siblings, BOUNDARY + 1);\n const rightSibling = Math.min(currentPage + siblings, total - BOUNDARY);\n\n pages.push(1);\n\n if (leftSibling > BOUNDARY + 2) pages.push('ellipsis-start');\n else if (leftSibling === BOUNDARY + 2) pages.push(BOUNDARY + 1);\n\n for (let i = leftSibling; i <= rightSibling; i++) pages.push(i);\n\n if (rightSibling < total - BOUNDARY - 1) pages.push('ellipsis-end');\n else if (rightSibling === total - BOUNDARY - 1) pages.push(total - BOUNDARY);\n\n pages.push(total);\n\n return pages;\n}\n\n/**\n * Page-based navigation control.\n *\n * @element ore-pagination\n *\n * @attr {number} page - Current page (1-indexed, default: 1)\n * @attr {number} total-pages - Total number of pages (required)\n * @attr {number} siblings - Sibling pages around current (default: 1)\n * @attr {boolean} show-first-last - Show first/last page buttons (default: false)\n * @attr {boolean} show-prev-next - Show prev/next buttons (default: false)\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant for nav buttons: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'frost' (default: 'ghost')\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} label - Accessible nav label (default: 'Pagination')\n *\n * @fires change - Emitted when the page changes, with { page: number }\n *\n * @cssprop --pagination-item-size - Width/height of each item\n * @cssprop --pagination-gap - Gap between items\n * @cssprop --pagination-radius - Border radius of items\n *\n * @part page-btn - Page button.\n * @part nav - Navigation container.\n * @part list - List container.\n * @part first-btn - First page button.\n * @part prev-btn - Previous page button.\n * @part next-btn - Next page button.\n * @part last-btn - Last page button.\n * @example\n * ```html\n * <!-- Basic -->\n * <ore-pagination page=\"3\" total-pages=\"10\" color=\"primary\"></ore-pagination>\n *\n * <!-- With prev/next and first/last buttons -->\n * <ore-pagination page=\"5\" total-pages=\"20\" show-prev-next show-first-last siblings=\"2\"></ore-pagination>\n *\n * <!-- Compact size -->\n * <ore-pagination page=\"1\" total-pages=\"5\" size=\"sm\" variant=\"ghost\"></ore-pagination>\n * ```\n */\nexport const PAGINATION_TAG = 'ore-pagination' as const;\ndefine<OrePaginationProps, OrePaginationEvents>(PAGINATION_TAG, {\n props: {\n ...themableBundle,\n ...sizableBundle,\n label: prop.string('Pagination'),\n page: prop.number(1),\n 'show-first-last': prop.bool(false),\n 'show-prev-next': prop.bool(false),\n siblings: prop.number(1),\n 'total-pages': prop.number(1),\n variant: prop.string<VisualVariant>(),\n },\n setup(props, { bind: _bind, el, emit }) {\n function goTo(page: number) {\n const total = props['total-pages'].value || 1;\n const next = Math.min(Math.max(1, page), total);\n\n if (next === props.page.value) return;\n\n el.setAttribute('page', String(next));\n emit('change', { page: next });\n }\n\n const pageItems = computed(() =>\n buildPageRange(props.page.value || 1, props['total-pages'].value || 1, props.siblings.value ?? 1),\n );\n\n const isFirst = computed(() => (props.page.value || 1) <= 1);\n const isLast = computed(() => (props.page.value || 1) >= (props['total-pages'].value || 1));\n\n return html`\n <nav :aria-label=\"${props.label}\" part=\"nav\">\n <ol class=\"pagination\" part=\"list\">\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"first-btn\"\n aria-label=\"First page\"\n ?disabled=${isFirst}\n @click=${() => goTo(1)}>\n <ore-icon name=\"chevrons-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"prev-btn\"\n aria-label=\"Previous page\"\n ?disabled=${isFirst}\n @click=${() => goTo((props.page.value || 1) - 1)}>\n <ore-icon name=\"chevron-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n <li style=\"display: contents;\">\n ${() =>\n pageItems.value.map((item) => {\n if (item === 'ellipsis-start' || item === 'ellipsis-end') {\n return html`<span class=\"ellipsis\" aria-hidden=\"true\">&hellip;</span>`;\n }\n\n const pg = item as number;\n const isCurrent = pg === (props.page.value || 1);\n const pgLabel = `Page ${pg}`;\n\n return isCurrent\n ? html`<button\n type=\"button\"\n part=\"page-btn\"\n aria-label=\"${pgLabel}\"\n aria-current=\"page\"\n @click=${() => goTo(pg)}>\n ${pg}\n </button>`\n : html`<button type=\"button\" part=\"page-btn\" aria-label=\"${pgLabel}\" @click=${() => goTo(pg)}>\n ${pg}\n </button>`;\n })}\n </li>\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"next-btn\"\n aria-label=\"Next page\"\n ?disabled=${isLast}\n @click=${() => goTo((props.page.value || 1) + 1)}>\n <ore-icon name=\"chevron-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"last-btn\"\n aria-label=\"Last page\"\n ?disabled=${isLast}\n @click=${() => goTo(props['total-pages'].value || 1)}>\n <ore-icon name=\"chevrons-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n </ol>\n </nav>\n `;\n },\n\n styles: [coarsePointerMixin, colorThemeMixin, sizeVariantMixin(), componentStyles],\n});\n"],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { coarsePointerMixin as e } from "./styles/mixins/accessibility.css.js";
2
+ import { sizeVariantMixin as t } from "./styles/mixins/shape.css.js";
3
+ import { colorThemeMixin as n } from "./styles/mixins/theme.css.js";
4
+ import { sizableBundle as r, themableBundle as i } from "./shared/prop-bundles.js";
5
+ import a from "./content/pagination/pagination.css?inline.js";
6
+ import { define as o, html as s, prop as c } from "@vielzeug/ore";
7
+ import { computed as l } from "@vielzeug/ripple";
8
+ //#region src/content/pagination/pagination.ts
9
+ function u(e, t, n) {
10
+ let r = t, i = [];
11
+ if (r <= 2 + 2 * n + 3) return Array.from({ length: r }, (e, t) => t + 1);
12
+ let a = Math.max(e - n, 2), o = Math.min(e + n, r - 1);
13
+ i.push(1), a > 3 ? i.push("ellipsis-start") : a === 3 && i.push(2);
14
+ for (let e = a; e <= o; e++) i.push(e);
15
+ return o < r - 1 - 1 ? i.push("ellipsis-end") : o === r - 1 - 1 && i.push(r - 1), i.push(r), i;
16
+ }
17
+ var d = "ore-pagination";
18
+ o(d, {
19
+ props: {
20
+ ...i,
21
+ ...r,
22
+ label: c.string("Pagination"),
23
+ page: c.number(1),
24
+ "show-first-last": c.bool(!1),
25
+ "show-prev-next": c.bool(!1),
26
+ siblings: c.number(1),
27
+ "total-pages": c.number(1),
28
+ variant: c.string()
29
+ },
30
+ setup(e, { bind: t, el: n, emit: r }) {
31
+ function i(t) {
32
+ let i = e["total-pages"].value || 1, a = Math.min(Math.max(1, t), i);
33
+ a !== e.page.value && (n.setAttribute("page", String(a)), r("change", { page: a }));
34
+ }
35
+ let a = l(() => u(e.page.value || 1, e["total-pages"].value || 1, e.siblings.value ?? 1)), o = l(() => (e.page.value || 1) <= 1), c = l(() => (e.page.value || 1) >= (e["total-pages"].value || 1));
36
+ return s`
37
+ <nav :aria-label="${e.label}" part="nav">
38
+ <ol class="pagination" part="list">
39
+ ${() => e["show-first-last"].value ? s`<li>
40
+ <button
41
+ type="button"
42
+ class="nav-btn"
43
+ part="first-btn"
44
+ aria-label="First page"
45
+ ?disabled=${o}
46
+ @click=${() => i(1)}>
47
+ <ore-icon name="chevrons-left" size="16" aria-hidden="true"></ore-icon>
48
+ </button>
49
+ </li>` : ""}
50
+ ${() => e["show-prev-next"].value ? s`<li>
51
+ <button
52
+ type="button"
53
+ class="nav-btn"
54
+ part="prev-btn"
55
+ aria-label="Previous page"
56
+ ?disabled=${o}
57
+ @click=${() => i((e.page.value || 1) - 1)}>
58
+ <ore-icon name="chevron-left" size="16" aria-hidden="true"></ore-icon>
59
+ </button>
60
+ </li>` : ""}
61
+ <li style="display: contents;">
62
+ ${() => a.value.map((t) => {
63
+ if (t === "ellipsis-start" || t === "ellipsis-end") return s`<span class="ellipsis" aria-hidden="true">&hellip;</span>`;
64
+ let n = t, r = n === (e.page.value || 1), a = `Page ${n}`;
65
+ return r ? s`<button
66
+ type="button"
67
+ part="page-btn"
68
+ aria-label="${a}"
69
+ aria-current="page"
70
+ @click=${() => i(n)}>
71
+ ${n}
72
+ </button>` : s`<button type="button" part="page-btn" aria-label="${a}" @click=${() => i(n)}>
73
+ ${n}
74
+ </button>`;
75
+ })}
76
+ </li>
77
+ ${() => e["show-prev-next"].value ? s`<li>
78
+ <button
79
+ type="button"
80
+ class="nav-btn"
81
+ part="next-btn"
82
+ aria-label="Next page"
83
+ ?disabled=${c}
84
+ @click=${() => i((e.page.value || 1) + 1)}>
85
+ <ore-icon name="chevron-right" size="16" aria-hidden="true"></ore-icon>
86
+ </button>
87
+ </li>` : ""}
88
+ ${() => e["show-first-last"].value ? s`<li>
89
+ <button
90
+ type="button"
91
+ class="nav-btn"
92
+ part="last-btn"
93
+ aria-label="Last page"
94
+ ?disabled=${c}
95
+ @click=${() => i(e["total-pages"].value || 1)}>
96
+ <ore-icon name="chevrons-right" size="16" aria-hidden="true"></ore-icon>
97
+ </button>
98
+ </li>` : ""}
99
+ </ol>
100
+ </nav>
101
+ `;
102
+ },
103
+ styles: [
104
+ e,
105
+ n,
106
+ t(),
107
+ a
108
+ ]
109
+ });
110
+ //#endregion
111
+ export { d as PAGINATION_TAG };
112
+
113
+ //# sourceMappingURL=pagination.js.map