@vielzeug/refine 1.1.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. package/dist/accordion-item.cjs +4 -4
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js +41 -41
  4. package/dist/accordion-item.js.map +1 -1
  5. package/dist/accordion.cjs +1 -1
  6. package/dist/accordion.cjs.map +1 -1
  7. package/dist/accordion.js +21 -21
  8. package/dist/accordion.js.map +1 -1
  9. package/dist/alert.cjs +5 -5
  10. package/dist/alert.cjs.map +1 -1
  11. package/dist/alert.js +21 -21
  12. package/dist/alert.js.map +1 -1
  13. package/dist/async.cjs +10 -10
  14. package/dist/async.cjs.map +1 -1
  15. package/dist/async.js +27 -27
  16. package/dist/async.js.map +1 -1
  17. package/dist/avatar.cjs +2 -2
  18. package/dist/avatar.cjs.map +1 -1
  19. package/dist/avatar.js +30 -30
  20. package/dist/avatar.js.map +1 -1
  21. package/dist/badge.cjs +1 -1
  22. package/dist/badge.cjs.map +1 -1
  23. package/dist/badge.js +1 -1
  24. package/dist/box.cjs +1 -1
  25. package/dist/box.cjs.map +1 -1
  26. package/dist/box.js +1 -1
  27. package/dist/breadcrumb.cjs +2 -2
  28. package/dist/breadcrumb.cjs.map +1 -1
  29. package/dist/breadcrumb.js +20 -20
  30. package/dist/breadcrumb.js.map +1 -1
  31. package/dist/button-group.cjs +1 -1
  32. package/dist/button-group.cjs.map +1 -1
  33. package/dist/button-group.js +7 -7
  34. package/dist/button-group.js.map +1 -1
  35. package/dist/button.cjs +6 -6
  36. package/dist/button.cjs.map +1 -1
  37. package/dist/button.js +44 -42
  38. package/dist/button.js.map +1 -1
  39. package/dist/calendar.cjs +28 -28
  40. package/dist/calendar.cjs.map +1 -1
  41. package/dist/calendar.js +93 -91
  42. package/dist/calendar.js.map +1 -1
  43. package/dist/card.cjs +6 -6
  44. package/dist/card.cjs.map +1 -1
  45. package/dist/card.js +35 -34
  46. package/dist/card.js.map +1 -1
  47. package/dist/carousel.cjs +19 -19
  48. package/dist/carousel.cjs.map +1 -1
  49. package/dist/carousel.js +111 -111
  50. package/dist/carousel.js.map +1 -1
  51. package/dist/chat-message.cjs +47 -0
  52. package/dist/chat-message.cjs.map +1 -0
  53. package/dist/chat-message.js +121 -0
  54. package/dist/chat-message.js.map +1 -0
  55. package/dist/checkbox-group.cjs +9 -9
  56. package/dist/checkbox-group.cjs.map +1 -1
  57. package/dist/checkbox-group.js +54 -52
  58. package/dist/checkbox-group.js.map +1 -1
  59. package/dist/checkbox.cjs +4 -4
  60. package/dist/checkbox.cjs.map +1 -1
  61. package/dist/checkbox.js +39 -37
  62. package/dist/checkbox.js.map +1 -1
  63. package/dist/chip.cjs +14 -14
  64. package/dist/chip.cjs.map +1 -1
  65. package/dist/chip.js +43 -43
  66. package/dist/chip.js.map +1 -1
  67. package/dist/code-window.cjs +1 -1
  68. package/dist/code-window.cjs.map +1 -1
  69. package/dist/code-window.js +1 -1
  70. package/dist/combobox.cjs +25 -25
  71. package/dist/combobox.cjs.map +1 -1
  72. package/dist/combobox.js +181 -179
  73. package/dist/combobox.js.map +1 -1
  74. package/dist/command-palette.cjs +62 -0
  75. package/dist/command-palette.cjs.map +1 -0
  76. package/dist/command-palette.js +179 -0
  77. package/dist/command-palette.js.map +1 -0
  78. package/dist/content/avatar/{avatar-group.css?inline.cjs → avatar-group.css.cjs} +1 -1
  79. package/dist/content/avatar/avatar-group.css.cjs.map +1 -0
  80. package/dist/content/avatar/{avatar-group.css?inline.js → avatar-group.css.js} +1 -1
  81. package/dist/content/avatar/avatar-group.css.js.map +1 -0
  82. package/dist/content/avatar/{avatar.css?inline.cjs → avatar.css.cjs} +1 -1
  83. package/dist/content/avatar/avatar.css.cjs.map +1 -0
  84. package/dist/content/avatar/{avatar.css?inline.js → avatar.css.js} +1 -1
  85. package/dist/content/avatar/avatar.css.js.map +1 -0
  86. package/dist/content/breadcrumb/{breadcrumb-item.css?inline.cjs → breadcrumb-item.css.cjs} +1 -1
  87. package/dist/content/breadcrumb/breadcrumb-item.css.cjs.map +1 -0
  88. package/dist/content/breadcrumb/{breadcrumb-item.css?inline.js → breadcrumb-item.css.js} +1 -1
  89. package/dist/content/breadcrumb/breadcrumb-item.css.js.map +1 -0
  90. package/dist/content/breadcrumb/{breadcrumb.css?inline.cjs → breadcrumb.css.cjs} +1 -1
  91. package/dist/content/breadcrumb/breadcrumb.css.cjs.map +1 -0
  92. package/dist/content/breadcrumb/{breadcrumb.css?inline.js → breadcrumb.css.js} +1 -1
  93. package/dist/content/breadcrumb/breadcrumb.css.js.map +1 -0
  94. package/dist/content/card/{card.css?inline.cjs → card.css.cjs} +1 -1
  95. package/dist/content/card/card.css.cjs.map +1 -0
  96. package/dist/content/card/{card.css?inline.js → card.css.js} +1 -1
  97. package/dist/content/card/card.css.js.map +1 -0
  98. package/dist/content/carousel/carousel-slide.cjs +1 -1
  99. package/dist/content/carousel/carousel-slide.cjs.map +1 -1
  100. package/dist/content/carousel/{carousel-slide.css?inline.cjs → carousel-slide.css.cjs} +1 -1
  101. package/dist/content/carousel/carousel-slide.css.cjs.map +1 -0
  102. package/dist/content/carousel/{carousel-slide.css?inline.js → carousel-slide.css.js} +1 -1
  103. package/dist/content/carousel/carousel-slide.css.js.map +1 -0
  104. package/dist/content/carousel/carousel-slide.js +7 -7
  105. package/dist/content/carousel/carousel-slide.js.map +1 -1
  106. package/dist/content/carousel/{carousel.css?inline.cjs → carousel.css.cjs} +1 -1
  107. package/dist/content/carousel/carousel.css.cjs.map +1 -0
  108. package/dist/content/carousel/{carousel.css?inline.js → carousel.css.js} +1 -1
  109. package/dist/content/carousel/carousel.css.js.map +1 -0
  110. package/dist/content/chat-message/chat-message.css.cjs +2 -0
  111. package/dist/content/chat-message/chat-message.css.cjs.map +1 -0
  112. package/dist/content/chat-message/chat-message.css.js +6 -0
  113. package/dist/content/chat-message/chat-message.css.js.map +1 -0
  114. package/dist/content/chat-message/chat-message.d.ts +87 -0
  115. package/dist/content/chat-message/chat-message.d.ts.map +1 -0
  116. package/dist/content/code-window/{code-window.css?inline.cjs → code-window.css.cjs} +1 -1
  117. package/dist/content/code-window/code-window.css.cjs.map +1 -0
  118. package/dist/content/code-window/{code-window.css?inline.js → code-window.css.js} +1 -1
  119. package/dist/content/code-window/code-window.css.js.map +1 -0
  120. package/dist/content/copy-command/{copy-command.css?inline.cjs → copy-command.css.cjs} +1 -1
  121. package/dist/content/copy-command/copy-command.css.cjs.map +1 -0
  122. package/dist/content/copy-command/{copy-command.css?inline.js → copy-command.css.js} +1 -1
  123. package/dist/content/copy-command/copy-command.css.js.map +1 -0
  124. package/dist/content/icon/{icon.css?inline.cjs → icon.css.cjs} +1 -1
  125. package/dist/content/icon/icon.css.cjs.map +1 -0
  126. package/dist/content/icon/{icon.css?inline.js → icon.css.js} +1 -1
  127. package/dist/content/icon/icon.css.js.map +1 -0
  128. package/dist/content/index.d.ts +2 -0
  129. package/dist/content/index.d.ts.map +1 -1
  130. package/dist/content/pagination/{pagination.css?inline.cjs → pagination.css.cjs} +1 -1
  131. package/dist/content/pagination/pagination.css.cjs.map +1 -0
  132. package/dist/content/pagination/{pagination.css?inline.js → pagination.css.js} +1 -1
  133. package/dist/content/pagination/pagination.css.js.map +1 -0
  134. package/dist/content/separator/{separator.css?inline.cjs → separator.css.cjs} +1 -1
  135. package/dist/content/separator/separator.css.cjs.map +1 -0
  136. package/dist/content/separator/{separator.css?inline.js → separator.css.js} +1 -1
  137. package/dist/content/separator/separator.css.js.map +1 -0
  138. package/dist/content/table/{table.css?inline.cjs → table.css.cjs} +1 -1
  139. package/dist/content/table/table.css.cjs.map +1 -0
  140. package/dist/content/table/{table.css?inline.js → table.css.js} +1 -1
  141. package/dist/content/table/table.css.js.map +1 -0
  142. package/dist/content/text/{text.css?inline.cjs → text.css.cjs} +1 -1
  143. package/dist/content/text/text.css.cjs.map +1 -0
  144. package/dist/content/text/{text.css?inline.js → text.css.js} +1 -1
  145. package/dist/content/text/text.css.js.map +1 -0
  146. package/dist/copy-command.cjs +5 -5
  147. package/dist/copy-command.cjs.map +1 -1
  148. package/dist/copy-command.js +25 -25
  149. package/dist/copy-command.js.map +1 -1
  150. package/dist/custom-elements.json +4716 -3980
  151. package/dist/datagrid.cjs +109 -109
  152. package/dist/datagrid.cjs.map +1 -1
  153. package/dist/datagrid.js +194 -194
  154. package/dist/datagrid.js.map +1 -1
  155. package/dist/date-picker.cjs +40 -40
  156. package/dist/date-picker.cjs.map +1 -1
  157. package/dist/date-picker.js +116 -114
  158. package/dist/date-picker.js.map +1 -1
  159. package/dist/dialog.cjs +5 -5
  160. package/dist/dialog.cjs.map +1 -1
  161. package/dist/dialog.js +28 -28
  162. package/dist/dialog.js.map +1 -1
  163. package/dist/disclosure/accordion/{accordion.css?inline.cjs → accordion.css.cjs} +1 -1
  164. package/dist/disclosure/accordion/accordion.css.cjs.map +1 -0
  165. package/dist/disclosure/accordion/{accordion.css?inline.js → accordion.css.js} +1 -1
  166. package/dist/disclosure/accordion/accordion.css.js.map +1 -0
  167. package/dist/disclosure/accordion-item/{accordion-item.css?inline.cjs → accordion-item.css.cjs} +1 -1
  168. package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -0
  169. package/dist/disclosure/accordion-item/{accordion-item.css?inline.js → accordion-item.css.js} +1 -1
  170. package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -0
  171. package/dist/disclosure/tab-item/{tab-item.css?inline.cjs → tab-item.css.cjs} +1 -1
  172. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -0
  173. package/dist/disclosure/tab-item/{tab-item.css?inline.js → tab-item.css.js} +1 -1
  174. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -0
  175. package/dist/disclosure/tab-panel/{tab-panel.css?inline.cjs → tab-panel.css.cjs} +1 -1
  176. package/dist/disclosure/tab-panel/tab-panel.css.cjs.map +1 -0
  177. package/dist/disclosure/tab-panel/{tab-panel.css?inline.js → tab-panel.css.js} +1 -1
  178. package/dist/disclosure/tab-panel/tab-panel.css.js.map +1 -0
  179. package/dist/disclosure/tabs/{tabs.css?inline.cjs → tabs.css.cjs} +1 -1
  180. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -0
  181. package/dist/disclosure/tabs/{tabs.css?inline.js → tabs.css.js} +1 -1
  182. package/dist/disclosure/tabs/tabs.css.js.map +1 -0
  183. package/dist/drawer.cjs +9 -9
  184. package/dist/drawer.cjs.map +1 -1
  185. package/dist/drawer.js +80 -80
  186. package/dist/drawer.js.map +1 -1
  187. package/dist/feedback/alert/{alert.css?inline.cjs → alert.css.cjs} +1 -1
  188. package/dist/feedback/alert/alert.css.cjs.map +1 -0
  189. package/dist/feedback/alert/{alert.css?inline.js → alert.css.js} +1 -1
  190. package/dist/feedback/alert/alert.css.js.map +1 -0
  191. package/dist/feedback/async/{async.css?inline.cjs → async.css.cjs} +1 -1
  192. package/dist/feedback/async/async.css.cjs.map +1 -0
  193. package/dist/feedback/async/{async.css?inline.js → async.css.js} +1 -1
  194. package/dist/feedback/async/async.css.js.map +1 -0
  195. package/dist/feedback/badge/{badge.css?inline.cjs → badge.css.cjs} +1 -1
  196. package/dist/feedback/badge/badge.css.cjs.map +1 -0
  197. package/dist/feedback/badge/{badge.css?inline.js → badge.css.js} +1 -1
  198. package/dist/feedback/badge/badge.css.js.map +1 -0
  199. package/dist/feedback/chip/{chip.css?inline.cjs → chip.css.cjs} +1 -1
  200. package/dist/feedback/chip/chip.css.cjs.map +1 -0
  201. package/dist/feedback/chip/{chip.css?inline.js → chip.css.js} +1 -1
  202. package/dist/feedback/chip/chip.css.js.map +1 -0
  203. package/dist/feedback/index.d.ts +2 -0
  204. package/dist/feedback/index.d.ts.map +1 -1
  205. package/dist/feedback/password-strength/{password-strength.css?inline.cjs → password-strength.css.cjs} +1 -1
  206. package/dist/feedback/password-strength/password-strength.css.cjs.map +1 -0
  207. package/dist/feedback/password-strength/{password-strength.css?inline.js → password-strength.css.js} +1 -1
  208. package/dist/feedback/password-strength/password-strength.css.js.map +1 -0
  209. package/dist/feedback/progress/{progress.css?inline.cjs → progress.css.cjs} +1 -1
  210. package/dist/feedback/progress/progress.css.cjs.map +1 -0
  211. package/dist/feedback/progress/{progress.css?inline.js → progress.css.js} +1 -1
  212. package/dist/feedback/progress/progress.css.js.map +1 -0
  213. package/dist/feedback/skeleton/{skeleton.css?inline.cjs → skeleton.css.cjs} +1 -1
  214. package/dist/feedback/skeleton/skeleton.css.cjs.map +1 -0
  215. package/dist/feedback/skeleton/{skeleton.css?inline.js → skeleton.css.js} +1 -1
  216. package/dist/feedback/skeleton/skeleton.css.js.map +1 -0
  217. package/dist/feedback/toast/{toast.css?inline.cjs → toast.css.cjs} +1 -1
  218. package/dist/feedback/toast/toast.css.cjs.map +1 -0
  219. package/dist/feedback/toast/{toast.css?inline.js → toast.css.js} +1 -1
  220. package/dist/feedback/toast/toast.css.js.map +1 -0
  221. package/dist/feedback/toast/toast.d.ts.map +1 -1
  222. package/dist/feedback/typing-indicator/typing-indicator.css.cjs +2 -0
  223. package/dist/feedback/typing-indicator/typing-indicator.css.cjs.map +1 -0
  224. package/dist/feedback/typing-indicator/typing-indicator.css.js +6 -0
  225. package/dist/feedback/typing-indicator/typing-indicator.css.js.map +1 -0
  226. package/dist/feedback/typing-indicator/typing-indicator.d.ts +42 -0
  227. package/dist/feedback/typing-indicator/typing-indicator.d.ts.map +1 -0
  228. package/dist/file-input.cjs +56 -34
  229. package/dist/file-input.cjs.map +1 -1
  230. package/dist/file-input.js +143 -104
  231. package/dist/file-input.js.map +1 -1
  232. package/dist/form.cjs +3 -3
  233. package/dist/form.cjs.map +1 -1
  234. package/dist/form.js +28 -25
  235. package/dist/form.js.map +1 -1
  236. package/dist/grid-item.cjs +1 -1
  237. package/dist/grid-item.cjs.map +1 -1
  238. package/dist/grid-item.js +19 -19
  239. package/dist/grid-item.js.map +1 -1
  240. package/dist/grid.cjs +1 -1
  241. package/dist/grid.cjs.map +1 -1
  242. package/dist/grid.js +48 -48
  243. package/dist/grid.js.map +1 -1
  244. package/dist/icon.cjs +1 -1
  245. package/dist/icon.cjs.map +1 -1
  246. package/dist/icon.js +26 -26
  247. package/dist/icon.js.map +1 -1
  248. package/dist/index.cjs +1 -1
  249. package/dist/index.js +52 -49
  250. package/dist/input.cjs +25 -25
  251. package/dist/input.cjs.map +1 -1
  252. package/dist/input.js +75 -73
  253. package/dist/input.js.map +1 -1
  254. package/dist/inputs/button/{button.css?inline.cjs → button.css.cjs} +1 -1
  255. package/dist/inputs/button/button.css.cjs.map +1 -0
  256. package/dist/inputs/button/{button.css?inline.js → button.css.js} +1 -1
  257. package/dist/inputs/button/button.css.js.map +1 -0
  258. package/dist/inputs/button/button.d.ts.map +1 -1
  259. package/dist/inputs/button-group/{button-group.css?inline.cjs → button-group.css.cjs} +1 -1
  260. package/dist/inputs/button-group/button-group.css.cjs.map +1 -0
  261. package/dist/inputs/button-group/{button-group.css?inline.js → button-group.css.js} +1 -1
  262. package/dist/inputs/button-group/button-group.css.js.map +1 -0
  263. package/dist/inputs/calendar/{calendar.css?inline.cjs → calendar.css.cjs} +1 -1
  264. package/dist/inputs/calendar/calendar.css.cjs.map +1 -0
  265. package/dist/inputs/calendar/{calendar.css?inline.js → calendar.css.js} +1 -1
  266. package/dist/inputs/calendar/calendar.css.js.map +1 -0
  267. package/dist/inputs/calendar/calendar.d.ts.map +1 -1
  268. package/dist/inputs/checkbox/{checkbox.css?inline.cjs → checkbox.css.cjs} +1 -1
  269. package/dist/inputs/checkbox/checkbox.css.cjs.map +1 -0
  270. package/dist/inputs/checkbox/{checkbox.css?inline.js → checkbox.css.js} +1 -1
  271. package/dist/inputs/checkbox/checkbox.css.js.map +1 -0
  272. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -1
  273. package/dist/inputs/checkbox-group/{checkbox-group.css?inline.cjs → checkbox-group.css.cjs} +1 -1
  274. package/dist/inputs/checkbox-group/checkbox-group.css.cjs.map +1 -0
  275. package/dist/inputs/checkbox-group/{checkbox-group.css?inline.js → checkbox-group.css.js} +1 -1
  276. package/dist/inputs/checkbox-group/checkbox-group.css.js.map +1 -0
  277. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -1
  278. package/dist/inputs/combobox/{combobox.css?inline.cjs → combobox.css.cjs} +1 -1
  279. package/dist/inputs/combobox/combobox.css.cjs.map +1 -0
  280. package/dist/inputs/combobox/{combobox.css?inline.js → combobox.css.js} +1 -1
  281. package/dist/inputs/combobox/combobox.css.js.map +1 -0
  282. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  283. package/dist/inputs/datagrid/{datagrid.css?inline.cjs → datagrid.css.cjs} +1 -1
  284. package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -0
  285. package/dist/inputs/datagrid/{datagrid.css?inline.js → datagrid.css.js} +1 -1
  286. package/dist/inputs/datagrid/datagrid.css.js.map +1 -0
  287. package/dist/inputs/date-picker/{date-picker.css?inline.cjs → date-picker.css.cjs} +1 -1
  288. package/dist/inputs/date-picker/date-picker.css.cjs.map +1 -0
  289. package/dist/inputs/date-picker/{date-picker.css?inline.js → date-picker.css.js} +1 -1
  290. package/dist/inputs/date-picker/date-picker.css.js.map +1 -0
  291. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -1
  292. package/dist/inputs/file-input/{file-input.css?inline.cjs → file-input.css.cjs} +2 -2
  293. package/dist/inputs/file-input/file-input.css.cjs.map +1 -0
  294. package/dist/inputs/file-input/{file-input.css?inline.js → file-input.css.js} +2 -2
  295. package/dist/inputs/file-input/file-input.css.js.map +1 -0
  296. package/dist/inputs/file-input/file-input.d.ts +9 -0
  297. package/dist/inputs/file-input/file-input.d.ts.map +1 -1
  298. package/dist/inputs/form/{form.css?inline.cjs → form.css.cjs} +1 -1
  299. package/dist/inputs/form/form.css.cjs.map +1 -0
  300. package/dist/inputs/form/{form.css?inline.js → form.css.js} +1 -1
  301. package/dist/inputs/form/form.css.js.map +1 -0
  302. package/dist/inputs/input/{input.css?inline.cjs → input.css.cjs} +1 -1
  303. package/dist/inputs/input/input.css.cjs.map +1 -0
  304. package/dist/inputs/input/{input.css?inline.js → input.css.js} +1 -1
  305. package/dist/inputs/input/input.css.js.map +1 -0
  306. package/dist/inputs/input/input.d.ts.map +1 -1
  307. package/dist/inputs/number-input/{number-input.css?inline.cjs → number-input.css.cjs} +1 -1
  308. package/dist/inputs/number-input/number-input.css.cjs.map +1 -0
  309. package/dist/inputs/number-input/{number-input.css?inline.js → number-input.css.js} +1 -1
  310. package/dist/inputs/number-input/number-input.css.js.map +1 -0
  311. package/dist/inputs/otp-input/{otp-input.css?inline.cjs → otp-input.css.cjs} +1 -1
  312. package/dist/inputs/otp-input/otp-input.css.cjs.map +1 -0
  313. package/dist/inputs/otp-input/{otp-input.css?inline.js → otp-input.css.js} +1 -1
  314. package/dist/inputs/otp-input/otp-input.css.js.map +1 -0
  315. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -1
  316. package/dist/inputs/radio/{radio.css?inline.cjs → radio.css.cjs} +1 -1
  317. package/dist/inputs/radio/radio.css.cjs.map +1 -0
  318. package/dist/inputs/radio/{radio.css?inline.js → radio.css.js} +1 -1
  319. package/dist/inputs/radio/radio.css.js.map +1 -0
  320. package/dist/inputs/radio/radio.d.ts.map +1 -1
  321. package/dist/inputs/radio-group/{radio-group.css?inline.cjs → radio-group.css.cjs} +1 -1
  322. package/dist/inputs/radio-group/radio-group.css.cjs.map +1 -0
  323. package/dist/inputs/radio-group/{radio-group.css?inline.js → radio-group.css.js} +1 -1
  324. package/dist/inputs/radio-group/radio-group.css.js.map +1 -0
  325. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -1
  326. package/dist/inputs/rating/{rating.css?inline.cjs → rating.css.cjs} +1 -1
  327. package/dist/inputs/rating/rating.css.cjs.map +1 -0
  328. package/dist/inputs/rating/{rating.css?inline.js → rating.css.js} +1 -1
  329. package/dist/inputs/rating/rating.css.js.map +1 -0
  330. package/dist/inputs/rating/rating.d.ts.map +1 -1
  331. package/dist/inputs/select/{select.css?inline.cjs → select.css.cjs} +1 -1
  332. package/dist/inputs/select/select.css.cjs.map +1 -0
  333. package/dist/inputs/select/{select.css?inline.js → select.css.js} +1 -1
  334. package/dist/inputs/select/select.css.js.map +1 -0
  335. package/dist/inputs/select/select.d.ts.map +1 -1
  336. package/dist/inputs/shared/field-binding.cjs +1 -1
  337. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  338. package/dist/inputs/shared/field-binding.d.ts +1 -2
  339. package/dist/inputs/shared/field-binding.d.ts.map +1 -1
  340. package/dist/inputs/shared/field-binding.js +3 -2
  341. package/dist/inputs/shared/field-binding.js.map +1 -1
  342. package/dist/inputs/shared/form-context.cjs +1 -1
  343. package/dist/inputs/shared/form-context.cjs.map +1 -1
  344. package/dist/inputs/shared/form-context.d.ts +4 -4
  345. package/dist/inputs/shared/form-context.d.ts.map +1 -1
  346. package/dist/inputs/shared/form-context.js +10 -10
  347. package/dist/inputs/shared/form-context.js.map +1 -1
  348. package/dist/inputs/slider/{slider.css?inline.cjs → slider.css.cjs} +1 -1
  349. package/dist/inputs/slider/slider.css.cjs.map +1 -0
  350. package/dist/inputs/slider/{slider.css?inline.js → slider.css.js} +1 -1
  351. package/dist/inputs/slider/slider.css.js.map +1 -0
  352. package/dist/inputs/slider/slider.d.ts.map +1 -1
  353. package/dist/inputs/switch/{switch.css?inline.cjs → switch.css.cjs} +1 -1
  354. package/dist/inputs/switch/switch.css.cjs.map +1 -0
  355. package/dist/inputs/switch/{switch.css?inline.js → switch.css.js} +1 -1
  356. package/dist/inputs/switch/switch.css.js.map +1 -0
  357. package/dist/inputs/switch/switch.d.ts.map +1 -1
  358. package/dist/inputs/textarea/{textarea.css?inline.cjs → textarea.css.cjs} +1 -1
  359. package/dist/inputs/textarea/textarea.css.cjs.map +1 -0
  360. package/dist/inputs/textarea/{textarea.css?inline.js → textarea.css.js} +1 -1
  361. package/dist/inputs/textarea/textarea.css.js.map +1 -0
  362. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  363. package/dist/inputs/time-picker/{time-picker.css?inline.cjs → time-picker.css.cjs} +1 -1
  364. package/dist/inputs/time-picker/time-picker.css.cjs.map +1 -0
  365. package/dist/inputs/time-picker/{time-picker.css?inline.js → time-picker.css.js} +1 -1
  366. package/dist/inputs/time-picker/time-picker.css.js.map +1 -0
  367. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -1
  368. package/dist/keymap/dist/_dev.cjs +2 -0
  369. package/dist/keymap/dist/_dev.cjs.map +1 -0
  370. package/dist/keymap/dist/_dev.js +4 -0
  371. package/dist/keymap/dist/_dev.js.map +1 -0
  372. package/dist/keymap/dist/format.cjs +1 -0
  373. package/dist/keymap/dist/format.js +1 -0
  374. package/dist/keymap/dist/index.cjs +1 -0
  375. package/dist/keymap/dist/index.js +4 -0
  376. package/dist/keymap/dist/keymap.cjs +2 -0
  377. package/dist/keymap/dist/keymap.cjs.map +1 -0
  378. package/dist/keymap/dist/keymap.js +221 -0
  379. package/dist/keymap/dist/keymap.js.map +1 -0
  380. package/dist/keymap/dist/layer.cjs +1 -0
  381. package/dist/keymap/dist/layer.js +1 -0
  382. package/dist/layout/box/{box.css?inline.cjs → box.css.cjs} +1 -1
  383. package/dist/layout/box/box.css.cjs.map +1 -0
  384. package/dist/layout/box/{box.css?inline.js → box.css.js} +1 -1
  385. package/dist/layout/box/box.css.js.map +1 -0
  386. package/dist/layout/grid/{grid.css?inline.cjs → grid.css.cjs} +1 -1
  387. package/dist/layout/grid/grid.css.cjs.map +1 -0
  388. package/dist/layout/grid/{grid.css?inline.js → grid.css.js} +1 -1
  389. package/dist/layout/grid/grid.css.js.map +1 -0
  390. package/dist/layout/grid-item/{grid-item.css?inline.cjs → grid-item.css.cjs} +1 -1
  391. package/dist/layout/grid-item/grid-item.css.cjs.map +1 -0
  392. package/dist/layout/grid-item/{grid-item.css?inline.js → grid-item.css.js} +1 -1
  393. package/dist/layout/grid-item/grid-item.css.js.map +1 -0
  394. package/dist/layout/navbar/{navbar.css?inline.cjs → navbar.css.cjs} +1 -1
  395. package/dist/layout/navbar/navbar.css.cjs.map +1 -0
  396. package/dist/layout/navbar/{navbar.css?inline.js → navbar.css.js} +1 -1
  397. package/dist/layout/navbar/navbar.css.js.map +1 -0
  398. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  399. package/dist/layout/sidebar/{sidebar-group.css?inline.cjs → sidebar-group.css.cjs} +1 -1
  400. package/dist/layout/sidebar/sidebar-group.css.cjs.map +1 -0
  401. package/dist/layout/sidebar/{sidebar-group.css?inline.js → sidebar-group.css.js} +1 -1
  402. package/dist/layout/sidebar/sidebar-group.css.js.map +1 -0
  403. package/dist/layout/sidebar/{sidebar-item.css?inline.cjs → sidebar-item.css.cjs} +1 -1
  404. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -0
  405. package/dist/layout/sidebar/{sidebar-item.css?inline.js → sidebar-item.css.js} +1 -1
  406. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -0
  407. package/dist/layout/sidebar/{sidebar.css?inline.cjs → sidebar.css.cjs} +1 -1
  408. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -0
  409. package/dist/layout/sidebar/{sidebar.css?inline.js → sidebar.css.js} +1 -1
  410. package/dist/layout/sidebar/sidebar.css.js.map +1 -0
  411. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  412. package/dist/menu.cjs +5 -5
  413. package/dist/menu.cjs.map +1 -1
  414. package/dist/menu.js +85 -85
  415. package/dist/menu.js.map +1 -1
  416. package/dist/navbar.cjs +15 -15
  417. package/dist/navbar.cjs.map +1 -1
  418. package/dist/navbar.js +127 -127
  419. package/dist/navbar.js.map +1 -1
  420. package/dist/number-input.cjs +11 -11
  421. package/dist/number-input.cjs.map +1 -1
  422. package/dist/number-input.js +69 -69
  423. package/dist/number-input.js.map +1 -1
  424. package/dist/ore/dist/_dev.cjs.map +1 -1
  425. package/dist/ore/dist/_dev.js.map +1 -1
  426. package/dist/ore/dist/base-element.cjs +1 -1
  427. package/dist/ore/dist/base-element.cjs.map +1 -1
  428. package/dist/ore/dist/base-element.js +37 -35
  429. package/dist/ore/dist/base-element.js.map +1 -1
  430. package/dist/ore/dist/context.cjs +1 -1
  431. package/dist/ore/dist/context.cjs.map +1 -1
  432. package/dist/ore/dist/context.js +6 -33
  433. package/dist/ore/dist/context.js.map +1 -1
  434. package/dist/ore/dist/define.cjs.map +1 -1
  435. package/dist/ore/dist/define.js.map +1 -1
  436. package/dist/ore/dist/directives/raw.cjs +1 -1
  437. package/dist/ore/dist/directives/raw.cjs.map +1 -1
  438. package/dist/ore/dist/directives/raw.js +20 -17
  439. package/dist/ore/dist/directives/raw.js.map +1 -1
  440. package/dist/ore/dist/directives/when.cjs +1 -1
  441. package/dist/ore/dist/directives/when.cjs.map +1 -1
  442. package/dist/ore/dist/directives/when.js +29 -24
  443. package/dist/ore/dist/directives/when.js.map +1 -1
  444. package/dist/ore/dist/errors.cjs +2 -2
  445. package/dist/ore/dist/errors.cjs.map +1 -1
  446. package/dist/ore/dist/errors.js +12 -3
  447. package/dist/ore/dist/errors.js.map +1 -1
  448. package/dist/ore/dist/forms/context.cjs +2 -0
  449. package/dist/ore/dist/forms/context.cjs.map +1 -0
  450. package/dist/ore/dist/forms/context.js +6 -0
  451. package/dist/ore/dist/forms/context.js.map +1 -0
  452. package/dist/ore/dist/forms/field.cjs +2 -0
  453. package/dist/ore/dist/forms/field.cjs.map +1 -0
  454. package/dist/ore/dist/forms/field.js +35 -0
  455. package/dist/ore/dist/forms/field.js.map +1 -0
  456. package/dist/ore/dist/forms.cjs +1 -0
  457. package/dist/ore/dist/forms.js +3 -0
  458. package/dist/ore/dist/props.cjs +1 -1
  459. package/dist/ore/dist/props.cjs.map +1 -1
  460. package/dist/ore/dist/props.js +29 -27
  461. package/dist/ore/dist/props.js.map +1 -1
  462. package/dist/ore/dist/runtime.cjs +1 -1
  463. package/dist/ore/dist/runtime.cjs.map +1 -1
  464. package/dist/ore/dist/runtime.js +13 -23
  465. package/dist/ore/dist/runtime.js.map +1 -1
  466. package/dist/ore/dist/testing/render-hook.cjs +1 -1
  467. package/dist/ore/dist/testing/render-hook.js +0 -1
  468. package/dist/ore/dist/utils/dom.cjs +1 -1
  469. package/dist/ore/dist/utils/dom.cjs.map +1 -1
  470. package/dist/ore/dist/utils/dom.js +2 -6
  471. package/dist/ore/dist/utils/dom.js.map +1 -1
  472. package/dist/otp-input.cjs +9 -9
  473. package/dist/otp-input.cjs.map +1 -1
  474. package/dist/otp-input.js +70 -68
  475. package/dist/otp-input.js.map +1 -1
  476. package/dist/overlay/command-palette/command-palette-items.cjs +2 -0
  477. package/dist/overlay/command-palette/command-palette-items.cjs.map +1 -0
  478. package/dist/overlay/command-palette/command-palette-items.d.ts +22 -0
  479. package/dist/overlay/command-palette/command-palette-items.d.ts.map +1 -0
  480. package/dist/overlay/command-palette/command-palette-items.js +55 -0
  481. package/dist/overlay/command-palette/command-palette-items.js.map +1 -0
  482. package/dist/overlay/command-palette/command-palette.css.cjs +2 -0
  483. package/dist/overlay/command-palette/command-palette.css.cjs.map +1 -0
  484. package/dist/overlay/command-palette/command-palette.css.js +6 -0
  485. package/dist/overlay/command-palette/command-palette.css.js.map +1 -0
  486. package/dist/overlay/command-palette/command-palette.d.ts +72 -0
  487. package/dist/overlay/command-palette/command-palette.d.ts.map +1 -0
  488. package/dist/overlay/command-palette/command-palette.types.d.ts +76 -0
  489. package/dist/overlay/command-palette/command-palette.types.d.ts.map +1 -0
  490. package/dist/overlay/dialog/{dialog.css?inline.cjs → dialog.css.cjs} +1 -1
  491. package/dist/overlay/dialog/dialog.css.cjs.map +1 -0
  492. package/dist/overlay/dialog/{dialog.css?inline.js → dialog.css.js} +1 -1
  493. package/dist/overlay/dialog/dialog.css.js.map +1 -0
  494. package/dist/overlay/drawer/{drawer.css?inline.cjs → drawer.css.cjs} +1 -1
  495. package/dist/overlay/drawer/drawer.css.cjs.map +1 -0
  496. package/dist/overlay/drawer/{drawer.css?inline.js → drawer.css.js} +1 -1
  497. package/dist/overlay/drawer/drawer.css.js.map +1 -0
  498. package/dist/overlay/drawer/drawer.d.ts.map +1 -1
  499. package/dist/overlay/index.d.ts +2 -0
  500. package/dist/overlay/index.d.ts.map +1 -1
  501. package/dist/overlay/menu/{menu-item.css?inline.cjs → menu-item.css.cjs} +1 -1
  502. package/dist/overlay/menu/menu-item.css.cjs.map +1 -0
  503. package/dist/overlay/menu/{menu-item.css?inline.js → menu-item.css.js} +1 -1
  504. package/dist/overlay/menu/menu-item.css.js.map +1 -0
  505. package/dist/overlay/menu/{menu-separator.css?inline.cjs → menu-separator.css.cjs} +1 -1
  506. package/dist/overlay/menu/menu-separator.css.cjs.map +1 -0
  507. package/dist/overlay/menu/{menu-separator.css?inline.js → menu-separator.css.js} +1 -1
  508. package/dist/overlay/menu/menu-separator.css.js.map +1 -0
  509. package/dist/overlay/menu/{menu.css?inline.cjs → menu.css.cjs} +1 -1
  510. package/dist/overlay/menu/menu.css.cjs.map +1 -0
  511. package/dist/overlay/menu/{menu.css?inline.js → menu.css.js} +1 -1
  512. package/dist/overlay/menu/menu.css.js.map +1 -0
  513. package/dist/overlay/menu/menu.d.ts.map +1 -1
  514. package/dist/overlay/popover/{popover.css?inline.cjs → popover.css.cjs} +1 -1
  515. package/dist/overlay/popover/popover.css.cjs.map +1 -0
  516. package/dist/overlay/popover/{popover.css?inline.js → popover.css.js} +1 -1
  517. package/dist/overlay/popover/popover.css.js.map +1 -0
  518. package/dist/overlay/popover/popover.d.ts.map +1 -1
  519. package/dist/overlay/tooltip/{tooltip.css?inline.cjs → tooltip.css.cjs} +1 -1
  520. package/dist/overlay/tooltip/tooltip.css.cjs.map +1 -0
  521. package/dist/overlay/tooltip/{tooltip.css?inline.js → tooltip.css.js} +1 -1
  522. package/dist/overlay/tooltip/tooltip.css.js.map +1 -0
  523. package/dist/pagination.cjs +12 -12
  524. package/dist/pagination.cjs.map +1 -1
  525. package/dist/pagination.js +39 -38
  526. package/dist/pagination.js.map +1 -1
  527. package/dist/password-strength.cjs +8 -8
  528. package/dist/password-strength.cjs.map +1 -1
  529. package/dist/password-strength.js +34 -34
  530. package/dist/password-strength.js.map +1 -1
  531. package/dist/popover.cjs +4 -4
  532. package/dist/popover.cjs.map +1 -1
  533. package/dist/popover.js +30 -30
  534. package/dist/popover.js.map +1 -1
  535. package/dist/progress.cjs +1 -1
  536. package/dist/progress.cjs.map +1 -1
  537. package/dist/progress.js +30 -30
  538. package/dist/progress.js.map +1 -1
  539. package/dist/radio-group.cjs +11 -11
  540. package/dist/radio-group.cjs.map +1 -1
  541. package/dist/radio-group.js +67 -63
  542. package/dist/radio-group.js.map +1 -1
  543. package/dist/radio.cjs +4 -4
  544. package/dist/radio.cjs.map +1 -1
  545. package/dist/radio.js +69 -67
  546. package/dist/radio.js.map +1 -1
  547. package/dist/rating.cjs +4 -4
  548. package/dist/rating.cjs.map +1 -1
  549. package/dist/rating.js +57 -55
  550. package/dist/rating.js.map +1 -1
  551. package/dist/refine.cjs +753 -620
  552. package/dist/refine.cjs.map +1 -1
  553. package/dist/refine.iife.js +742 -609
  554. package/dist/refine.iife.js.map +1 -1
  555. package/dist/refine.js +777 -644
  556. package/dist/refine.js.map +1 -1
  557. package/dist/select.cjs +37 -37
  558. package/dist/select.cjs.map +1 -1
  559. package/dist/select.js +130 -128
  560. package/dist/select.js.map +1 -1
  561. package/dist/separator.cjs +1 -1
  562. package/dist/separator.cjs.map +1 -1
  563. package/dist/separator.js +1 -1
  564. package/dist/sidebar.cjs +22 -22
  565. package/dist/sidebar.cjs.map +1 -1
  566. package/dist/sidebar.js +135 -135
  567. package/dist/sidebar.js.map +1 -1
  568. package/dist/skeleton.cjs +2 -2
  569. package/dist/skeleton.cjs.map +1 -1
  570. package/dist/skeleton.js +28 -28
  571. package/dist/skeleton.js.map +1 -1
  572. package/dist/slider.cjs +13 -13
  573. package/dist/slider.cjs.map +1 -1
  574. package/dist/slider.js +142 -140
  575. package/dist/slider.js.map +1 -1
  576. package/dist/switch.cjs +4 -4
  577. package/dist/switch.cjs.map +1 -1
  578. package/dist/switch.js +35 -33
  579. package/dist/switch.js.map +1 -1
  580. package/dist/tab-item.cjs +5 -5
  581. package/dist/tab-item.cjs.map +1 -1
  582. package/dist/tab-item.js +25 -25
  583. package/dist/tab-item.js.map +1 -1
  584. package/dist/tab-panel.cjs +6 -6
  585. package/dist/tab-panel.cjs.map +1 -1
  586. package/dist/tab-panel.js +24 -24
  587. package/dist/tab-panel.js.map +1 -1
  588. package/dist/table.cjs +1 -1
  589. package/dist/table.cjs.map +1 -1
  590. package/dist/table.js +36 -35
  591. package/dist/table.js.map +1 -1
  592. package/dist/tabs.cjs +3 -3
  593. package/dist/tabs.cjs.map +1 -1
  594. package/dist/tabs.js +61 -61
  595. package/dist/tabs.js.map +1 -1
  596. package/dist/text.cjs +1 -1
  597. package/dist/text.cjs.map +1 -1
  598. package/dist/text.js +16 -16
  599. package/dist/text.js.map +1 -1
  600. package/dist/textarea.cjs +15 -15
  601. package/dist/textarea.cjs.map +1 -1
  602. package/dist/textarea.js +67 -65
  603. package/dist/textarea.js.map +1 -1
  604. package/dist/time-picker.cjs +31 -31
  605. package/dist/time-picker.cjs.map +1 -1
  606. package/dist/time-picker.js +115 -113
  607. package/dist/time-picker.js.map +1 -1
  608. package/dist/toast.cjs +14 -14
  609. package/dist/toast.cjs.map +1 -1
  610. package/dist/toast.js +85 -85
  611. package/dist/toast.js.map +1 -1
  612. package/dist/tooltip.cjs +5 -5
  613. package/dist/tooltip.cjs.map +1 -1
  614. package/dist/tooltip.js +55 -55
  615. package/dist/tooltip.js.map +1 -1
  616. package/dist/typing-indicator.cjs +8 -0
  617. package/dist/typing-indicator.cjs.map +1 -0
  618. package/dist/typing-indicator.js +49 -0
  619. package/dist/typing-indicator.js.map +1 -0
  620. package/package.json +21 -2
  621. package/dist/content/avatar/avatar-group.css?inline.cjs.map +0 -1
  622. package/dist/content/avatar/avatar-group.css?inline.js.map +0 -1
  623. package/dist/content/avatar/avatar.css?inline.cjs.map +0 -1
  624. package/dist/content/avatar/avatar.css?inline.js.map +0 -1
  625. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +0 -1
  626. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +0 -1
  627. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +0 -1
  628. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +0 -1
  629. package/dist/content/card/card.css?inline.cjs.map +0 -1
  630. package/dist/content/card/card.css?inline.js.map +0 -1
  631. package/dist/content/carousel/carousel-slide.css?inline.cjs.map +0 -1
  632. package/dist/content/carousel/carousel-slide.css?inline.js.map +0 -1
  633. package/dist/content/carousel/carousel.css?inline.cjs.map +0 -1
  634. package/dist/content/carousel/carousel.css?inline.js.map +0 -1
  635. package/dist/content/code-window/code-window.css?inline.cjs.map +0 -1
  636. package/dist/content/code-window/code-window.css?inline.js.map +0 -1
  637. package/dist/content/copy-command/copy-command.css?inline.cjs.map +0 -1
  638. package/dist/content/copy-command/copy-command.css?inline.js.map +0 -1
  639. package/dist/content/icon/icon.css?inline.cjs.map +0 -1
  640. package/dist/content/icon/icon.css?inline.js.map +0 -1
  641. package/dist/content/pagination/pagination.css?inline.cjs.map +0 -1
  642. package/dist/content/pagination/pagination.css?inline.js.map +0 -1
  643. package/dist/content/separator/separator.css?inline.cjs.map +0 -1
  644. package/dist/content/separator/separator.css?inline.js.map +0 -1
  645. package/dist/content/table/table.css?inline.cjs.map +0 -1
  646. package/dist/content/table/table.css?inline.js.map +0 -1
  647. package/dist/content/text/text.css?inline.cjs.map +0 -1
  648. package/dist/content/text/text.css?inline.js.map +0 -1
  649. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +0 -1
  650. package/dist/disclosure/accordion/accordion.css?inline.js.map +0 -1
  651. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +0 -1
  652. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +0 -1
  653. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +0 -1
  654. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +0 -1
  655. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +0 -1
  656. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +0 -1
  657. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +0 -1
  658. package/dist/disclosure/tabs/tabs.css?inline.js.map +0 -1
  659. package/dist/feedback/alert/alert.css?inline.cjs.map +0 -1
  660. package/dist/feedback/alert/alert.css?inline.js.map +0 -1
  661. package/dist/feedback/async/async.css?inline.cjs.map +0 -1
  662. package/dist/feedback/async/async.css?inline.js.map +0 -1
  663. package/dist/feedback/badge/badge.css?inline.cjs.map +0 -1
  664. package/dist/feedback/badge/badge.css?inline.js.map +0 -1
  665. package/dist/feedback/chip/chip.css?inline.cjs.map +0 -1
  666. package/dist/feedback/chip/chip.css?inline.js.map +0 -1
  667. package/dist/feedback/password-strength/password-strength.css?inline.cjs.map +0 -1
  668. package/dist/feedback/password-strength/password-strength.css?inline.js.map +0 -1
  669. package/dist/feedback/progress/progress.css?inline.cjs.map +0 -1
  670. package/dist/feedback/progress/progress.css?inline.js.map +0 -1
  671. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +0 -1
  672. package/dist/feedback/skeleton/skeleton.css?inline.js.map +0 -1
  673. package/dist/feedback/toast/toast.css?inline.cjs.map +0 -1
  674. package/dist/feedback/toast/toast.css?inline.js.map +0 -1
  675. package/dist/inputs/button/button.css?inline.cjs.map +0 -1
  676. package/dist/inputs/button/button.css?inline.js.map +0 -1
  677. package/dist/inputs/button-group/button-group.css?inline.cjs.map +0 -1
  678. package/dist/inputs/button-group/button-group.css?inline.js.map +0 -1
  679. package/dist/inputs/calendar/calendar.css?inline.cjs.map +0 -1
  680. package/dist/inputs/calendar/calendar.css?inline.js.map +0 -1
  681. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +0 -1
  682. package/dist/inputs/checkbox/checkbox.css?inline.js.map +0 -1
  683. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +0 -1
  684. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +0 -1
  685. package/dist/inputs/combobox/combobox.css?inline.cjs.map +0 -1
  686. package/dist/inputs/combobox/combobox.css?inline.js.map +0 -1
  687. package/dist/inputs/datagrid/datagrid.css?inline.cjs.map +0 -1
  688. package/dist/inputs/datagrid/datagrid.css?inline.js.map +0 -1
  689. package/dist/inputs/date-picker/date-picker.css?inline.cjs.map +0 -1
  690. package/dist/inputs/date-picker/date-picker.css?inline.js.map +0 -1
  691. package/dist/inputs/file-input/file-input.css?inline.cjs.map +0 -1
  692. package/dist/inputs/file-input/file-input.css?inline.js.map +0 -1
  693. package/dist/inputs/form/form.css?inline.cjs.map +0 -1
  694. package/dist/inputs/form/form.css?inline.js.map +0 -1
  695. package/dist/inputs/input/input.css?inline.cjs.map +0 -1
  696. package/dist/inputs/input/input.css?inline.js.map +0 -1
  697. package/dist/inputs/number-input/number-input.css?inline.cjs.map +0 -1
  698. package/dist/inputs/number-input/number-input.css?inline.js.map +0 -1
  699. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +0 -1
  700. package/dist/inputs/otp-input/otp-input.css?inline.js.map +0 -1
  701. package/dist/inputs/radio/radio.css?inline.cjs.map +0 -1
  702. package/dist/inputs/radio/radio.css?inline.js.map +0 -1
  703. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +0 -1
  704. package/dist/inputs/radio-group/radio-group.css?inline.js.map +0 -1
  705. package/dist/inputs/rating/rating.css?inline.cjs.map +0 -1
  706. package/dist/inputs/rating/rating.css?inline.js.map +0 -1
  707. package/dist/inputs/select/select.css?inline.cjs.map +0 -1
  708. package/dist/inputs/select/select.css?inline.js.map +0 -1
  709. package/dist/inputs/slider/slider.css?inline.cjs.map +0 -1
  710. package/dist/inputs/slider/slider.css?inline.js.map +0 -1
  711. package/dist/inputs/switch/switch.css?inline.cjs.map +0 -1
  712. package/dist/inputs/switch/switch.css?inline.js.map +0 -1
  713. package/dist/inputs/textarea/textarea.css?inline.cjs.map +0 -1
  714. package/dist/inputs/textarea/textarea.css?inline.js.map +0 -1
  715. package/dist/inputs/time-picker/time-picker.css?inline.cjs.map +0 -1
  716. package/dist/inputs/time-picker/time-picker.css?inline.js.map +0 -1
  717. package/dist/layout/box/box.css?inline.cjs.map +0 -1
  718. package/dist/layout/box/box.css?inline.js.map +0 -1
  719. package/dist/layout/grid/grid.css?inline.cjs.map +0 -1
  720. package/dist/layout/grid/grid.css?inline.js.map +0 -1
  721. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +0 -1
  722. package/dist/layout/grid-item/grid-item.css?inline.js.map +0 -1
  723. package/dist/layout/navbar/navbar.css?inline.cjs.map +0 -1
  724. package/dist/layout/navbar/navbar.css?inline.js.map +0 -1
  725. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +0 -1
  726. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +0 -1
  727. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +0 -1
  728. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +0 -1
  729. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +0 -1
  730. package/dist/layout/sidebar/sidebar.css?inline.js.map +0 -1
  731. package/dist/ore/dist/aria.cjs +0 -2
  732. package/dist/ore/dist/aria.cjs.map +0 -1
  733. package/dist/ore/dist/aria.js +0 -37
  734. package/dist/ore/dist/aria.js.map +0 -1
  735. package/dist/ore/dist/context-bag.cjs +0 -2
  736. package/dist/ore/dist/context-bag.cjs.map +0 -1
  737. package/dist/ore/dist/context-bag.js +0 -28
  738. package/dist/ore/dist/context-bag.js.map +0 -1
  739. package/dist/ore/dist/host-bind.cjs +0 -2
  740. package/dist/ore/dist/host-bind.cjs.map +0 -1
  741. package/dist/ore/dist/host-bind.js +0 -60
  742. package/dist/ore/dist/host-bind.js.map +0 -1
  743. package/dist/ore/dist/slots.cjs +0 -2
  744. package/dist/ore/dist/slots.cjs.map +0 -1
  745. package/dist/ore/dist/slots.js +0 -61
  746. package/dist/ore/dist/slots.js.map +0 -1
  747. package/dist/ore/dist/utils/aria.cjs +0 -2
  748. package/dist/ore/dist/utils/aria.cjs.map +0 -1
  749. package/dist/ore/dist/utils/aria.js +0 -6
  750. package/dist/ore/dist/utils/aria.js.map +0 -1
  751. package/dist/ore/dist/utils/emit.cjs +0 -2
  752. package/dist/ore/dist/utils/emit.cjs.map +0 -1
  753. package/dist/ore/dist/utils/emit.js +0 -16
  754. package/dist/ore/dist/utils/emit.js.map +0 -1
  755. package/dist/overlay/dialog/dialog.css?inline.cjs.map +0 -1
  756. package/dist/overlay/dialog/dialog.css?inline.js.map +0 -1
  757. package/dist/overlay/drawer/drawer.css?inline.cjs.map +0 -1
  758. package/dist/overlay/drawer/drawer.css?inline.js.map +0 -1
  759. package/dist/overlay/menu/menu-item.css?inline.cjs.map +0 -1
  760. package/dist/overlay/menu/menu-item.css?inline.js.map +0 -1
  761. package/dist/overlay/menu/menu-separator.css?inline.cjs.map +0 -1
  762. package/dist/overlay/menu/menu-separator.css?inline.js.map +0 -1
  763. package/dist/overlay/menu/menu.css?inline.cjs.map +0 -1
  764. package/dist/overlay/menu/menu.css?inline.js.map +0 -1
  765. package/dist/overlay/popover/popover.css?inline.cjs.map +0 -1
  766. package/dist/overlay/popover/popover.css?inline.js.map +0 -1
  767. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +0 -1
  768. package/dist/overlay/tooltip/tooltip.css?inline.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-item.css.js","names":[],"sources":["../../../src/disclosure/tab-item/tab-item.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: inline-flex;\n outline: none;\n\n --tab-item-transition: var(--transition-normal);\n --tab-item-radius: var(--rounded-lg);\n }\n\n button {\n position: relative;\n display: inline-flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding: var(--tab-item-padding, var(--size-1-5) var(--size-4));\n font-family: inherit;\n font-size: var(--tab-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--tab-item-color, var(--text-color-secondary));\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n background: transparent;\n border: none;\n border-radius: var(--tab-item-radius);\n transition:\n background var(--tab-item-transition),\n color var(--tab-item-transition),\n box-shadow var(--tab-item-transition);\n }\n\n button:focus {\n outline: none;\n }\n\n :host(:focus-visible) button,\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-focus);\n outline-offset: 2px;\n box-shadow: 0 0 0 3px var(--_theme-shadow);\n }\n}\n\n@layer refine.variants {\n /* ─── solid / default ─── */\n :host,\n :host([variant='solid']) {\n --_hover-bg: var(--tab-item-hover-bg, var(--color-contrast-200));\n --_active-bg: var(--tab-item-active-bg, var(--color-contrast-0, var(--color-canvas)));\n --_active-color: var(--tab-item-active-color, var(--text-color-heading));\n --_active-shadow: var(--tab-item-active-shadow, var(--shadow-xs), var(--inset-shadow-xs));\n }\n\n /* ─── flat ─── */\n :host([variant='flat']) {\n --_hover-bg: var(--tab-item-hover-bg, var(--color-contrast-200));\n --_active-bg: var(--tab-item-active-bg, var(--color-contrast-0, var(--color-canvas)));\n --_active-color: var(--tab-item-active-color, var(--text-color-heading));\n --_active-shadow: var(--tab-item-active-shadow, var(--shadow-xs), var(--inset-shadow-xs));\n }\n\n /* ─── bordered ─── */\n :host([variant='bordered']) {\n --_hover-bg: var(--tab-item-hover-bg, var(--color-contrast-200));\n --_active-bg: var(--tab-item-active-bg, var(--color-contrast-0, var(--color-canvas)));\n --_active-color: var(--tab-item-active-color, var(--text-color-heading));\n --_active-shadow: var(--tab-item-active-shadow, var(--shadow-xs));\n }\n\n /* ─── ghost ─── */\n :host([variant='ghost']) {\n --_hover-bg: var(--tab-item-hover-bg, var(--color-contrast-100));\n --_active-bg: var(--tab-item-active-bg, var(--_theme-base));\n --_active-color: var(--tab-item-active-color, var(--_theme-contrast));\n }\n\n /* ─── glass ─── */\n :host([variant='glass']) {\n --_color: var(--tab-item-color, color-mix(in oklch, var(--color-secondary-contrast) 70%, transparent));\n --_hover-bg: var(--tab-item-hover-bg, color-mix(in oklch, var(--color-secondary-contrast) 10%, transparent));\n --_active-bg: var(--tab-item-active-bg, color-mix(in oklch, var(--color-secondary-contrast) 15%, transparent));\n --_active-color: var(--tab-item-active-color, var(--color-secondary-contrast));\n --_active-shadow: var(--tab-item-active-shadow, var(--shadow-xs), var(--inset-shadow-xs));\n }\n\n :host([variant='glass']) button {\n color: var(--_color);\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='glass']) button:hover {\n color: var(--tab-item-active-color, var(--color-secondary-contrast));\n }\n\n /* ─── frost ─── */\n :host([variant='frost']) {\n --_hover-bg: var(--tab-item-hover-bg, color-mix(in oklch, var(--color-contrast) 10%, transparent));\n --_active-bg: var(--tab-item-active-bg, color-mix(in oklch, var(--color-canvas) 60%, transparent));\n --_active-color: var(--tab-item-active-color, var(--text-color-heading));\n --_active-shadow: var(--tab-item-active-shadow, var(--shadow-xs), var(--inset-shadow-xs));\n }\n\n :host([variant='frost']) button {\n color: var(--text-color-secondary);\n }\n\n /* ─── Shared interactive states (read per-variant --_* tokens) ─── */\n\n :host button:hover {\n color: var(--tab-item-active-color, var(--text-color-heading));\n background: var(--_hover-bg);\n }\n\n :host([active]) button {\n color: var(--_active-color);\n background: var(--_active-bg);\n box-shadow: var(--_active-shadow);\n }\n\n /* ─── sizes ─── */\n :host([size='sm']) {\n --tab-item-font-size: var(--text-xs);\n --tab-item-padding: var(--size-1) var(--size-3);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --tab-item-font-size: var(--text-sm);\n --tab-item-padding: var(--size-1-5) var(--size-4);\n }\n\n :host([size='lg']) {\n --tab-item-font-size: var(--text-base);\n --tab-item-padding: var(--size-2) var(--size-5);\n }\n\n /* ─── coarse pointer: promote one size tier for proportional scaling ─── */\n @media (pointer: coarse) {\n :host,\n :host([size='md']) {\n --tab-item-font-size: var(--text-base);\n --tab-item-padding: var(--size-2) var(--size-5);\n }\n\n :host([size='sm']) {\n --tab-item-font-size: var(--text-sm);\n --tab-item-padding: var(--size-1-5) var(--size-4);\n }\n }\n\n /* ─── disabled ─── */\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.5;\n }\n\n @media (forced-colors: active) {\n /* Ensure focus ring is visible regardless of variant theme color */\n button:focus-visible {\n outline: 2px solid Highlight;\n box-shadow: none;\n }\n\n /* Active tab: box-shadow raised indicator is stripped; use outline inste\n ad so the selected tab remains distinguishable */\n :host([active]) button {\n outline: 2px solid Highlight;\n outline-offset: -2px;\n }\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
1
  var e=`@layer refine.base{:host{width:100%;display:none}:host([active]){flex-direction:column;flex:1;min-height:0;display:flex}.panel{box-sizing:border-box;height:100%;min-height:0;padding:var(--tab-panel-padding,var(--size-4));font-size:var(--tab-panel-font-size,var(--text-sm));color:var(--text-color-body);animation:var(--_motion-animation,tab-panel-in var(--transition-normal) var(--ease-out) both);flex:1;overflow:auto}}@layer refine.variants{@keyframes tab-panel-in{0%{opacity:0;translate:0 4px}to{opacity:1;translate:0}}}`;exports.default=e;
2
- //# sourceMappingURL=tab-panel.css?inline.cjs.map
2
+ //# sourceMappingURL=tab-panel.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-panel.css.cjs","names":[],"sources":["../../../src/disclosure/tab-panel/tab-panel.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: none;\n width: 100%;\n }\n\n :host([active]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .panel {\n box-sizing: border-box;\n flex: 1;\n height: 100%;\n min-height: 0;\n padding: var(--tab-panel-padding, var(--size-4));\n overflow: auto;\n font-size: var(--tab-panel-font-size, var(--text-sm));\n color: var(--text-color-body);\n animation: var(--_motion-animation, tab-panel-in var(--transition-normal) var(--ease-out) both);\n }\n}\n\n@layer refine.variants {\n @keyframes tab-panel-in {\n from {\n opacity: 0;\n translate: 0 4px;\n }\n\n to {\n opacity: 1;\n translate: 0 0;\n }\n }\n}\n"],"mappings":""}
@@ -3,4 +3,4 @@ var e = "@layer refine.base{:host{width:100%;display:none}:host([active]){flex-d
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
6
- //# sourceMappingURL=tab-panel.css?inline.js.map
6
+ //# sourceMappingURL=tab-panel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-panel.css.js","names":[],"sources":["../../../src/disclosure/tab-panel/tab-panel.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: none;\n width: 100%;\n }\n\n :host([active]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .panel {\n box-sizing: border-box;\n flex: 1;\n height: 100%;\n min-height: 0;\n padding: var(--tab-panel-padding, var(--size-4));\n overflow: auto;\n font-size: var(--tab-panel-font-size, var(--text-sm));\n color: var(--text-color-body);\n animation: var(--_motion-animation, tab-panel-in var(--transition-normal) var(--ease-out) both);\n }\n}\n\n@layer refine.variants {\n @keyframes tab-panel-in {\n from {\n opacity: 0;\n translate: 0 4px;\n }\n\n to {\n opacity: 1;\n translate: 0 0;\n }\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
1
  var e=`@layer refine.base{:host{--tabs-transition:var(--transition-normal);--tabs-radius:var(--rounded-lg);flex-direction:column;width:100%;height:100%;display:flex}.tablist-wrapper{flex-shrink:0;position:relative}[role=tablist]{gap:var(--tabs-tab-gap,var(--size-1));scrollbar-width:none;align-items:stretch;display:flex;position:relative;overflow-x:auto}[role=tablist]::-webkit-scrollbar{display:none}.indicator{pointer-events:none;background:var(--tabs-indicator-color,var(--_theme-base));border-radius:var(--rounded-full);height:2px;transition:transform var(--tabs-transition);position:absolute;bottom:0;left:0}.panels{flex-direction:column;flex:1;min-height:0;display:flex}}@layer refine.orientation{:host([orientation=vertical]){flex-direction:row;align-items:flex-start}:host([orientation=vertical]) .tablist-wrapper{flex-shrink:0;display:flex}:host([orientation=vertical]) [role=tablist]{width:max-content;overflow-x:unset;flex-direction:column;overflow-y:auto}:host([orientation=vertical]) .indicator{top:0;bottom:unset;width:2px;height:unset;transition:transform var(--tabs-transition)}:host([orientation=vertical]) .indicator:not(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}:host([orientation=vertical]) .indicator:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}}@layer refine.variants{:host,:host([variant=solid]){--tabs-tab-gap:var(--size-1);--_tablist-bg:var(--tabs-tablist-bg,var(--color-contrast-100));--_tablist-border-color:var(--tabs-tablist-border-color,var(--color-contrast-200))}:host [role=tablist],:host([variant=solid]) [role=tablist]{padding:var(--size-1);background:var(--_tablist-bg);border:var(--border) solid var(--_tablist-border-color);border-radius:var(--tabs-radius)}:host .indicator,:host([variant=solid]) .indicator{display:none}:host([variant=flat]){--_tablist-border-color:var(--tabs-tablist-border-color,var(--color-contrast-200));background:var(--tabs-bg,var(--color-contrast-100));border:var(--border) solid var(--_tablist-border-color);border-radius:var(--tabs-radius);box-shadow:var(--inset-shadow-xs), var(--shadow-2xs);overflow:hidden}:host([variant=flat]) [role=tablist]{gap:var(--size-1);padding:var(--size-1);border:none;border-bottom:var(--border) solid var(--_tablist-border-color);background:0 0;border-radius:0}:host([variant=flat]) .indicator{display:none}:host([variant=bordered]){--_tablist-border-color:var(--tabs-tablist-border-color,var(--color-contrast-200))}:host([variant=bordered]) [role=tablist]{gap:var(--size-1);padding:var(--size-1);border:var(--border) solid var(--_tablist-border-color);border-radius:var(--tabs-radius) var(--tabs-radius) 0 0;background:0 0;border-bottom:none}:host([variant=bordered]) .indicator{display:none}:host([variant=bordered]) .panels{border:var(--border) solid var(--_tablist-border-color);border-radius:0 0 var(--tabs-radius) var(--tabs-radius)}:host([variant=bordered][orientation=vertical]) [role=tablist]{border-right:none;border-bottom:var(--border) solid var(--_tablist-border-color);border-radius:var(--tabs-radius) 0 0 var(--tabs-radius)}:host([variant=bordered][orientation=vertical]) .panels{border-radius:0 var(--tabs-radius) var(--tabs-radius) 0}:host([variant=ghost]) [role=tablist]{gap:var(--size-1);background:0 0;border:none;border-radius:0;padding:0}:host([variant=ghost]) .indicator{display:none}:host([variant=glass]){--_tablist-bg:var(--tabs-tablist-bg,color-mix(in oklch, var(--color-secondary) 20%, transparent));--_tablist-border-color:var(--tabs-tablist-border-color,color-mix(in oklch, var(--color-secondary-contrast) 15%, transparent))}:host([variant=glass]) [role=tablist]{padding:var(--size-1);background:var(--_tablist-bg);border:var(--border) solid var(--_tablist-border-color);border-radius:var(--tabs-radius);box-shadow:var(--shadow-md), var(--inset-shadow-xs);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05);backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05)}:host([variant=glass]) .indicator{display:none}:host([variant=frost]){--_tablist-bg:var(--tabs-tablist-bg,color-mix(in oklch, var(--color-canvas) 55%, transparent));--_tablist-border-color:var(--tabs-tablist-border-color,color-mix(in oklch, var(--color-contrast-300) 50%, transparent))}:host([variant=frost]) [role=tablist]{padding:var(--size-1);background:var(--_tablist-bg);border:var(--border) solid var(--_tablist-border-color);border-radius:var(--tabs-radius);box-shadow:var(--shadow-md), var(--inset-shadow-xs);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%)}:host([variant=frost]) .indicator{display:none}}`;exports.default=e;
2
- //# sourceMappingURL=tabs.css?inline.cjs.map
2
+ //# sourceMappingURL=tabs.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.css.cjs","names":[],"sources":["../../../src/disclosure/tabs/tabs.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n\n --tabs-transition: var(--transition-normal);\n --tabs-radius: var(--rounded-lg);\n }\n\n .tablist-wrapper {\n position: relative;\n flex-shrink: 0;\n }\n\n [role='tablist'] {\n position: relative;\n display: flex;\n gap: var(--tabs-tab-gap, var(--size-1));\n align-items: stretch;\n overflow-x: auto;\n scrollbar-width: none;\n }\n\n [role='tablist']::-webkit-scrollbar {\n display: none;\n }\n\n .indicator {\n position: absolute;\n bottom: 0;\n left: 0;\n height: 2px;\n pointer-events: none;\n background: var(--tabs-indicator-color, var(--_theme-base));\n border-radius: var(--rounded-full);\n transition: transform var(--tabs-transition);\n }\n\n .panels {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n}\n\n@layer refine.orientation {\n /* ─── vertical orientation ─── */\n :host([orientation='vertical']) {\n flex-direction: row;\n align-items: flex-start;\n }\n\n :host([orientation='vertical']) .tablist-wrapper {\n display: flex;\n flex-shrink: 0;\n }\n\n :host([orientation='vertical']) [role='tablist'] {\n flex-direction: column;\n width: max-content;\n overflow-x: unset;\n overflow-y: auto;\n }\n\n :host([orientation='vertical']) .indicator {\n inset-inline-start: 0;\n top: 0;\n\n /* Reposition indicator to inline-start side for vertical */\n bottom: unset;\n width: 2px;\n height: unset;\n transition: transform var(--tabs-transition);\n }\n}\n\n@layer refine.variants {\n /* ─── solid (default) ─── */\n :host,\n :host([variant='solid']) {\n --tabs-tab-gap: var(--size-1);\n --_tablist-bg: var(--tabs-tablist-bg, var(--color-contrast-100));\n --_tablist-border-color: var(--tabs-tablist-border-color, var(--color-contrast-200));\n }\n\n :host [role='tablist'],\n :host([variant='solid']) [role='tablist'] {\n padding: var(--size-1);\n background: var(--_tablist-bg);\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n }\n\n :host .indicator,\n :host([variant='solid']) .indicator {\n display: none;\n }\n\n /* ─── flat ─── */\n :host([variant='flat']) {\n --_tablist-border-color: var(--tabs-tablist-border-color, var(--color-contrast-200));\n\n overflow: hidden;\n background: var(--tabs-bg, var(--color-contrast-100));\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n box-shadow: var(--inset-shadow-xs), var(--shadow-2xs);\n }\n\n :host([variant='flat']) [role='tablist'] {\n gap: var(--size-1);\n padding: var(--size-1);\n background: transparent;\n border: none;\n border-bottom: var(--border) solid var(--_tablist-border-color);\n border-radius: 0;\n }\n\n :host([variant='flat']) .indicator {\n display: none;\n }\n\n /* ─── bordered ─── */\n :host([variant='bordered']) {\n --_tablist-border-color: var(--tabs-tablist-border-color, var(--color-contrast-200));\n }\n\n :host([variant='bordered']) [role='tablist'] {\n gap: var(--size-1);\n padding: var(--size-1);\n background: transparent;\n border: var(--border) solid var(--_tablist-border-color);\n border-bottom: none;\n border-radius: var(--tabs-radius) var(--tabs-radius) 0 0;\n }\n\n :host([variant='bordered']) .indicator {\n display: none;\n }\n\n :host([variant='bordered']) .panels {\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: 0 0 var(--tabs-radius) var(--tabs-radius);\n }\n\n :host([variant='bordered'][orientation='vertical']) [role='tablist'] {\n border-right: none;\n border-bottom: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius) 0 0 var(--tabs-radius);\n }\n\n :host([variant='bordered'][orientation='vertical']) .panels {\n border-radius: 0 var(--tabs-radius) var(--tabs-radius) 0;\n }\n\n /* ─── ghost ─── */\n :host([variant='ghost']) [role='tablist'] {\n gap: var(--size-1);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: 0;\n }\n\n :host([variant='ghost']) .indicator {\n display: none;\n }\n\n /* ─── glass ─── */\n :host([variant='glass']) {\n --_tablist-bg: var(--tabs-tablist-bg, color-mix(in oklch, var(--color-secondary) 20%, transparent));\n --_tablist-border-color: var(\n --tabs-tablist-border-color,\n color-mix(in oklch, var(--color-secondary-contrast) 15%, transparent)\n );\n }\n\n :host([variant='glass']) [role='tablist'] {\n padding: var(--size-1);\n background: var(--_tablist-bg);\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%) brightness(1.05);\n }\n\n :host([variant='glass']) .indicator {\n display: none;\n }\n\n /* ─── frost ─── */\n :host([variant='frost']) {\n --_tablist-bg: var(--tabs-tablist-bg, color-mix(in oklch, var(--color-canvas) 55%, transparent));\n --_tablist-border-color: var(\n --tabs-tablist-border-color,\n color-mix(in oklch, var(--color-contrast-300) 50%, transparent)\n );\n }\n\n :host([variant='frost']) [role='tablist'] {\n padding: var(--size-1);\n background: var(--_tablist-bg);\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n :host([variant='frost']) .indicator {\n display: none;\n }\n}\n"],"mappings":""}
@@ -3,4 +3,4 @@ var e = "@layer refine.base{:host{--tabs-transition:var(--transition-normal);--t
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
6
- //# sourceMappingURL=tabs.css?inline.js.map
6
+ //# sourceMappingURL=tabs.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.css.js","names":[],"sources":["../../../src/disclosure/tabs/tabs.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n\n --tabs-transition: var(--transition-normal);\n --tabs-radius: var(--rounded-lg);\n }\n\n .tablist-wrapper {\n position: relative;\n flex-shrink: 0;\n }\n\n [role='tablist'] {\n position: relative;\n display: flex;\n gap: var(--tabs-tab-gap, var(--size-1));\n align-items: stretch;\n overflow-x: auto;\n scrollbar-width: none;\n }\n\n [role='tablist']::-webkit-scrollbar {\n display: none;\n }\n\n .indicator {\n position: absolute;\n bottom: 0;\n left: 0;\n height: 2px;\n pointer-events: none;\n background: var(--tabs-indicator-color, var(--_theme-base));\n border-radius: var(--rounded-full);\n transition: transform var(--tabs-transition);\n }\n\n .panels {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n}\n\n@layer refine.orientation {\n /* ─── vertical orientation ─── */\n :host([orientation='vertical']) {\n flex-direction: row;\n align-items: flex-start;\n }\n\n :host([orientation='vertical']) .tablist-wrapper {\n display: flex;\n flex-shrink: 0;\n }\n\n :host([orientation='vertical']) [role='tablist'] {\n flex-direction: column;\n width: max-content;\n overflow-x: unset;\n overflow-y: auto;\n }\n\n :host([orientation='vertical']) .indicator {\n inset-inline-start: 0;\n top: 0;\n\n /* Reposition indicator to inline-start side for vertical */\n bottom: unset;\n width: 2px;\n height: unset;\n transition: transform var(--tabs-transition);\n }\n}\n\n@layer refine.variants {\n /* ─── solid (default) ─── */\n :host,\n :host([variant='solid']) {\n --tabs-tab-gap: var(--size-1);\n --_tablist-bg: var(--tabs-tablist-bg, var(--color-contrast-100));\n --_tablist-border-color: var(--tabs-tablist-border-color, var(--color-contrast-200));\n }\n\n :host [role='tablist'],\n :host([variant='solid']) [role='tablist'] {\n padding: var(--size-1);\n background: var(--_tablist-bg);\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n }\n\n :host .indicator,\n :host([variant='solid']) .indicator {\n display: none;\n }\n\n /* ─── flat ─── */\n :host([variant='flat']) {\n --_tablist-border-color: var(--tabs-tablist-border-color, var(--color-contrast-200));\n\n overflow: hidden;\n background: var(--tabs-bg, var(--color-contrast-100));\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n box-shadow: var(--inset-shadow-xs), var(--shadow-2xs);\n }\n\n :host([variant='flat']) [role='tablist'] {\n gap: var(--size-1);\n padding: var(--size-1);\n background: transparent;\n border: none;\n border-bottom: var(--border) solid var(--_tablist-border-color);\n border-radius: 0;\n }\n\n :host([variant='flat']) .indicator {\n display: none;\n }\n\n /* ─── bordered ─── */\n :host([variant='bordered']) {\n --_tablist-border-color: var(--tabs-tablist-border-color, var(--color-contrast-200));\n }\n\n :host([variant='bordered']) [role='tablist'] {\n gap: var(--size-1);\n padding: var(--size-1);\n background: transparent;\n border: var(--border) solid var(--_tablist-border-color);\n border-bottom: none;\n border-radius: var(--tabs-radius) var(--tabs-radius) 0 0;\n }\n\n :host([variant='bordered']) .indicator {\n display: none;\n }\n\n :host([variant='bordered']) .panels {\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: 0 0 var(--tabs-radius) var(--tabs-radius);\n }\n\n :host([variant='bordered'][orientation='vertical']) [role='tablist'] {\n border-right: none;\n border-bottom: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius) 0 0 var(--tabs-radius);\n }\n\n :host([variant='bordered'][orientation='vertical']) .panels {\n border-radius: 0 var(--tabs-radius) var(--tabs-radius) 0;\n }\n\n /* ─── ghost ─── */\n :host([variant='ghost']) [role='tablist'] {\n gap: var(--size-1);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: 0;\n }\n\n :host([variant='ghost']) .indicator {\n display: none;\n }\n\n /* ─── glass ─── */\n :host([variant='glass']) {\n --_tablist-bg: var(--tabs-tablist-bg, color-mix(in oklch, var(--color-secondary) 20%, transparent));\n --_tablist-border-color: var(\n --tabs-tablist-border-color,\n color-mix(in oklch, var(--color-secondary-contrast) 15%, transparent)\n );\n }\n\n :host([variant='glass']) [role='tablist'] {\n padding: var(--size-1);\n background: var(--_tablist-bg);\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%) brightness(1.05);\n }\n\n :host([variant='glass']) .indicator {\n display: none;\n }\n\n /* ─── frost ─── */\n :host([variant='frost']) {\n --_tablist-bg: var(--tabs-tablist-bg, color-mix(in oklch, var(--color-canvas) 55%, transparent));\n --_tablist-border-color: var(\n --tabs-tablist-border-color,\n color-mix(in oklch, var(--color-contrast-300) 50%, transparent)\n );\n }\n\n :host([variant='frost']) [role='tablist'] {\n padding: var(--size-1);\n background: var(--_tablist-bg);\n border: var(--border) solid var(--_tablist-border-color);\n border-radius: var(--tabs-radius);\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n :host([variant='frost']) .indicator {\n display: none;\n }\n}\n"],"mappings":""}
package/dist/drawer.cjs CHANGED
@@ -1,14 +1,14 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./styles/mixins/theme.css.cjs"),n=require("./headless/swipe.cjs"),r=require("./overlay/shared/use-dialog.cjs"),i=require("./overlay/drawer/drawer.css?inline.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");var s={bottom:{axis:`y`,closingDistance:e=>Math.max(0,e),translate:e=>`translateY(${e}px)`},left:{axis:`x`,closingDistance:e=>Math.max(0,-e),translate:e=>`translateX(${e}px)`},right:{axis:`x`,closingDistance:e=>Math.max(0,e),translate:e=>`translateX(${e}px)`},top:{axis:`y`,closingDistance:e=>Math.max(0,-e),translate:e=>`translateY(${e}px)`}},c=`ore-drawer`;(0,a.define)(c,{props:{backdrop:a.prop.string(),dismissible:a.prop.bool(!0),"drag-handle-placement":a.prop.oneOf([`outside`,`inset`],`outside`),"initial-focus":a.prop.string(),label:a.prop.string(),open:a.prop.bool(!1),persistent:a.prop.bool(!1),placement:a.prop.oneOf([`left`,`right`,`top`,`bottom`],`right`),"return-focus":a.prop.bool(!0),size:a.prop.string(),title:a.prop.string()},setup(e,{el:t,emit:i,onCleanup:c,onEvent:l,onMounted:u,slots:d}){let f=(0,a.createStableId)(`drawer-label`),p=(0,a.ref)(),m=(0,a.ref)(),h=(0,o.signal)(!1),g,_=()=>e.label.value??e.title.value??``,v=()=>d.has(`header`).value||!!_(),y=()=>v()||e.dismissible.value,b=()=>d.has(`footer`).value,x=()=>e.placement.value||`right`,S=()=>s[x()],C=(e,t)=>{let n=t===`x`?e.offsetWidth:e.offsetHeight;return Math.min(96,Math.max(36,n*.18))},w=(e,t)=>S().closingDistance(e)>=t,T=e=>{if(!h.value)return;g&&=(clearTimeout(g),void 0);let t=p.value;if(!t){h.value=!1;return}t.style.transition=`none`,e.style.opacity=`0`,e.style.visibility=`hidden`,t.offsetWidth,N(`swipe`)},E=(e,t,n)=>{if(h.value)return;h.value=!0;let r=t.axis===`x`?e.offsetWidth:e.offsetHeight,i=n>=0?Math.max(n,r):Math.min(n,-r),a=t.translate(i);e.style.transition=`transform 180ms cubic-bezier(0.2, 0.9, 0.2, 1), opacity 180ms ease-out`,e.offsetWidth;let o=t=>{t.target!==e||t.propertyName!==`transform`||(e.removeEventListener(`transitionend`,o),T(e))};e.addEventListener(`transitionend`,o);let s=parseFloat(getComputedStyle(e).transitionDuration)*1e3;g=setTimeout(()=>{e.removeEventListener(`transitionend`,o),T(e)},s+50),e.style.transform=a,e.style.opacity=`0.2`},D=e=>{g&&=(clearTimeout(g),void 0),e.style.transition=``,e.style.transform=``,e.style.opacity=``,e.style.visibility=``,h.value=!1},O=({distance:e,threshold:t})=>{let n=m.value;if(n){if(w(e,t)){E(n,S(),e);return}D(n)}},k=n.createSwipeControl({axis:()=>S().axis,disabled:h,onCancel:O,onCommit:({distance:e})=>{let t=m.value;t&&E(t,S(),e)},onMove:({distance:e,threshold:t})=>{let n=m.value;if(!n)return;let r=S(),i=r.closingDistance(e),a=Math.min(i/t,1);n.style.transition=`none`,n.style.transform=r.translate(e),n.style.opacity=String(1-a*.4)},onRelease:O,shouldCommit:({distance:e,threshold:t})=>w(e,t),threshold:()=>{let e=m.value;return e?C(e,S().axis):48}}),{closeWithAnimation:A,handleCancel:j,overlay:M,requestClose:N,watchOpenProp:P}=r.useDialogControl({beforeOpen:e=>{let t=m.value;t&&D(t)},closeRequestDetail:t=>({placement:e.placement.value??`right`}),dialogRef:p,getPanelEl:()=>m.value,host:t,initialFocus:e[`initial-focus`],isPersistent:()=>!!e.persistent.value,onCleanup:c,onEvent:l,onNativeClose:t=>{let n=m.value;n&&t!==`swipe`&&D(n);let r=p.value;r&&(r.style.transition=``),i(`close`,{placement:e.placement.value??`right`,reason:t})},onOpen:t=>i(`open`,{placement:e.placement.value??`right`,reason:t}),openProp:e.open,performClose:(e,t)=>{t===`swipe`?e.close():A()},returnFocus:e[`return-focus`]});return u(()=>{let n=p.value;if(!n)return;let r=t;r.show=()=>{M.open(`programmatic`)},r.hide=()=>{M.close(`programmatic`,!1)},P(),l(n,`cancel`,j),l(n,`click`,t=>{e.persistent.value||k.isActive()||h.value||t.target===n&&N(`outsideClick`)});let i=m.value?.querySelector(`[part="drag-handle"]`);return i&&(l(i,`pointerdown`,k.handlePointerDown),l(i,`pointermove`,k.handlePointerMove),l(i,`pointerup`,k.handlePointerUp),l(i,`pointercancel`,k.handlePointerCancel)),()=>{M.dispose()}}),a.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./styles/mixins/theme.css.cjs"),n=require("./headless/swipe.cjs"),r=require("./overlay/shared/use-dialog.cjs"),i=require("./overlay/drawer/drawer.css.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");var s={bottom:{axis:`y`,closingDistance:e=>Math.max(0,e),translate:e=>`translateY(${e}px)`},left:{axis:`x`,closingDistance:e=>Math.max(0,-e),translate:e=>`translateX(${e}px)`},right:{axis:`x`,closingDistance:e=>Math.max(0,e),translate:e=>`translateX(${e}px)`},top:{axis:`y`,closingDistance:e=>Math.max(0,-e),translate:e=>`translateY(${e}px)`}},c=`ore-drawer`;(0,a.define)(c,{props:{backdrop:a.prop.string(),dismissible:a.prop.bool(!0),"drag-handle-placement":a.prop.oneOf([`outside`,`inset`],`outside`),"initial-focus":a.prop.string(),label:a.prop.string(),open:a.prop.bool(!1),persistent:a.prop.bool(!1),placement:a.prop.oneOf([`left`,`right`,`top`,`bottom`],`right`),"return-focus":a.prop.bool(!0),size:a.prop.string(),title:a.prop.string()},setup(e){let t=(0,a.getHost)(),i=(0,a.useEmit)(),c=(0,a.useSlots)(),l=(0,a.createStableId)(`drawer-label`),u=(0,a.ref)(),d=(0,a.ref)(),f=(0,o.signal)(!1),p,m=()=>e.label.value??e.title.value??``,h=()=>c.has(`header`).value||!!m(),g=()=>h()||e.dismissible.value,_=()=>c.has(`footer`).value,v=()=>e.placement.value||`right`,y=()=>s[v()],b=(e,t)=>{let n=t===`x`?e.offsetWidth:e.offsetHeight;return Math.min(96,Math.max(36,n*.18))},x=(e,t)=>y().closingDistance(e)>=t,S=e=>{if(!f.value)return;p&&=(clearTimeout(p),void 0);let t=u.value;if(!t){f.value=!1;return}t.style.transition=`none`,e.style.opacity=`0`,e.style.visibility=`hidden`,t.offsetWidth,A(`swipe`)},C=(e,t,n)=>{if(f.value)return;f.value=!0;let r=t.axis===`x`?e.offsetWidth:e.offsetHeight,i=n>=0?Math.max(n,r):Math.min(n,-r),a=t.translate(i);e.style.transition=`transform 180ms cubic-bezier(0.2, 0.9, 0.2, 1), opacity 180ms ease-out`,e.offsetWidth;let o=t=>{t.target!==e||t.propertyName!==`transform`||(e.removeEventListener(`transitionend`,o),S(e))};e.addEventListener(`transitionend`,o);let s=parseFloat(getComputedStyle(e).transitionDuration)*1e3;p=setTimeout(()=>{e.removeEventListener(`transitionend`,o),S(e)},s+50),e.style.transform=a,e.style.opacity=`0.2`},w=e=>{p&&=(clearTimeout(p),void 0),e.style.transition=``,e.style.transform=``,e.style.opacity=``,e.style.visibility=``,f.value=!1},T=({distance:e,threshold:t})=>{let n=d.value;if(n){if(x(e,t)){C(n,y(),e);return}w(n)}},E=n.createSwipeControl({axis:()=>y().axis,disabled:f,onCancel:T,onCommit:({distance:e})=>{let t=d.value;t&&C(t,y(),e)},onMove:({distance:e,threshold:t})=>{let n=d.value;if(!n)return;let r=y(),i=r.closingDistance(e),a=Math.min(i/t,1);n.style.transition=`none`,n.style.transform=r.translate(e),n.style.opacity=String(1-a*.4)},onRelease:T,shouldCommit:({distance:e,threshold:t})=>x(e,t),threshold:()=>{let e=d.value;return e?b(e,y().axis):48}}),{closeWithAnimation:D,handleCancel:O,overlay:k,requestClose:A,watchOpenProp:j}=r.useDialogControl({beforeOpen:e=>{let t=d.value;t&&w(t)},closeRequestDetail:t=>({placement:e.placement.value??`right`}),dialogRef:u,getPanelEl:()=>d.value,host:t,initialFocus:e[`initial-focus`],isPersistent:()=>!!e.persistent.value,onCleanup:a.onCleanup,onEvent:a.onEvent,onNativeClose:t=>{let n=d.value;n&&t!==`swipe`&&w(n);let r=u.value;r&&(r.style.transition=``),i(`close`,{placement:e.placement.value??`right`,reason:t})},onOpen:t=>i(`open`,{placement:e.placement.value??`right`,reason:t}),openProp:e.open,performClose:(e,t)=>{t===`swipe`?e.close():D()},returnFocus:e[`return-focus`]});return(0,a.onMounted)(()=>{let n=u.value;if(!n)return;let r=t;r.show=()=>{k.open(`programmatic`)},r.hide=()=>{k.close(`programmatic`,!1)},j(),(0,a.onEvent)(n,`cancel`,O),(0,a.onEvent)(n,`click`,t=>{e.persistent.value||E.isActive()||f.value||t.target===n&&A(`outsideClick`)});let i=d.value?.querySelector(`[part="drag-handle"]`);return i&&((0,a.onEvent)(i,`pointerdown`,E.handlePointerDown),(0,a.onEvent)(i,`pointermove`,E.handlePointerMove),(0,a.onEvent)(i,`pointerup`,E.handlePointerUp),(0,a.onEvent)(i,`pointercancel`,E.handlePointerCancel)),()=>{k.dispose()}}),a.html`
2
2
  <dialog
3
- ref=${p}
3
+ ref=${u}
4
4
  aria-modal="true"
5
5
  :aria-label="${()=>e.label.value??null}"
6
- :aria-labelledby="${()=>e.label.value?null:f}">
7
- <div class="panel" part="panel" ref=${m}>
6
+ :aria-labelledby="${()=>e.label.value?null:l}">
7
+ <div class="panel" part="panel" ref=${d}>
8
8
  <div class="drag-handle" part="drag-handle" aria-label="Drag to close" role="button"></div>
9
- <div class="header" part="header" ?hidden=${()=>!y()}>
10
- <span class="header-title" id="${f}" ?hidden=${()=>!v()}>
11
- <slot name="header">${()=>_()}</slot>
9
+ <div class="header" part="header" ?hidden=${()=>!g()}>
10
+ <span class="header-title" id="${l}" ?hidden=${()=>!h()}>
11
+ <slot name="header">${()=>m()}</slot>
12
12
  </span>
13
13
  <button
14
14
  class="close-btn"
@@ -16,14 +16,14 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
16
16
  type="button"
17
17
  aria-label="Close"
18
18
  ?hidden=${()=>!e.dismissible.value}
19
- @click=${()=>{N(`trigger`)}}>
19
+ @click=${()=>{A(`trigger`)}}>
20
20
  <ore-icon name="x" size="16" stroke-width="2.5" aria-hidden="true"></ore-icon>
21
21
  </button>
22
22
  </div>
23
23
  <div class="body" part="body">
24
24
  <slot></slot>
25
25
  </div>
26
- <div class="footer" part="footer" ?hidden=${()=>!b()}>
26
+ <div class="footer" part="footer" ?hidden=${()=>!_()}>
27
27
  <slot name="footer"></slot>
28
28
  </div>
29
29
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"drawer.cjs","names":[],"sources":["../src/overlay/drawer/drawer.ts"],"sourcesContent":["import { createStableId, define, html, prop, ref } from '@vielzeug/ore';\nimport { signal } from '@vielzeug/ripple';\n\nimport type { OverlayCloseDetail, OverlayOpenDetail, SwipeAxis } from '../../headless';\n\nimport { createSwipeControl } from '../../headless';\nimport '../../content/icon/icon';\nimport { coarsePointerMixin, elevationMixin, forcedColorsMixin, reducedMotionMixin } from '../../styles';\nimport { useDialogControl } from '../shared/use-dialog';\nimport styles from './drawer.css?inline';\n\ntype DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\ntype DrawerSize = 'sm' | 'lg' | 'full';\ntype DrawerBackdrop = 'opaque' | 'blur' | 'transparent';\ntype DrawerDragHandlePlacement = 'outside' | 'inset';\ntype DrawerSwipeConfig = {\n axis: SwipeAxis;\n closingDistance: (distance: number) => number;\n translate: (distance: number) => string;\n};\n\nconst drawerSwipeConfig: Record<DrawerPlacement, DrawerSwipeConfig> = {\n bottom: {\n axis: 'y',\n closingDistance: (distance) => Math.max(0, distance),\n translate: (distance) => `translateY(${distance}px)`,\n },\n left: {\n axis: 'x',\n closingDistance: (distance) => Math.max(0, -distance),\n translate: (distance) => `translateX(${distance}px)`,\n },\n right: {\n axis: 'x',\n closingDistance: (distance) => Math.max(0, distance),\n translate: (distance) => `translateX(${distance}px)`,\n },\n top: {\n axis: 'y',\n closingDistance: (distance) => Math.max(0, -distance),\n translate: (distance) => `translateY(${distance}px)`,\n },\n};\n\n/** Element interface exposing the imperative API for `ore-drawer`. */\nexport interface DrawerElement extends HTMLElement, Omit<OreDrawerProps, 'title'> {\n /** Programmatically open the drawer. Equivalent to setting `open`. */\n show(): void;\n /** Programmatically close the drawer with the exit animation. */\n hide(): void;\n}\n\n/** Drawer component properties */\n\nexport type OreDrawerEvents = {\n close: OverlayCloseDetail & { placement: DrawerPlacement };\n open: OverlayOpenDetail & { placement: DrawerPlacement };\n};\n\nexport type OreDrawerProps = {\n /** Backdrop style — 'opaque' (default), 'blur', or 'transparent' */\n backdrop?: DrawerBackdrop;\n /** Show the close (×) button in the header (default: true) */\n dismissible?: boolean;\n /** Drag handle position used for swipe-to-close gestures */\n 'drag-handle-placement'?: DrawerDragHandlePlacement;\n /**\n * CSS selector for the element inside the drawer that should receive focus on open.\n * Defaults to native dialog focus management (first focusable element).\n * @example '#submit-btn' | 'input[name=\"email\"]'\n */\n 'initial-focus'?: string;\n /**\n * Invisible accessible label for the dialog (`aria-label`).\n * Use when the drawer has no visible title (e.g. image-only content).\n * When omitted, `aria-labelledby` points to the visible header title instead.\n */\n label?: string;\n /** Controlled open state */\n open?: boolean;\n /** When true, backdrop clicks do not close the drawer (default: false) */\n persistent?: boolean;\n /** Side from which the drawer slides in */\n placement?: DrawerPlacement;\n /**\n * When true (default), focus returns to the triggering element after the drawer closes.\n * Set to false to manage focus manually.\n */\n 'return-focus'?: boolean;\n /** Drawer width/height preset */\n size?: DrawerSize;\n /**\n * Visible title text rendered inside the header.\n * Used as the dialog's accessible label via `aria-labelledby` when `label` is not set.\n */\n title?: string;\n};\n\n/**\n * A panel that slides in from any edge of the screen, built on the native `<dialog>` element.\n *\n * @element ore-drawer\n *\n * @attr {boolean} open - Controlled open/close state\n * @attr {string} placement - 'left' | 'right' (default) | 'top' | 'bottom'\n * @attr {string} size - 'sm' | 'lg' | 'full'\n * @attr {string} title - Visible header title text\n * @attr {string} label - Invisible aria-label (for drawers without a visible title)\n * @attr {boolean} dismissible - Show the close (×) button (default: true)\n * @attr {string} drag-handle-placement - 'outside' (default) | 'inset'\n * @attr {string} backdrop - Backdrop style: 'opaque' (default) | 'blur' | 'transparent'\n * @attr {boolean} persistent - Prevent backdrop-click from closing (default: false)\n *\n * @fires open - When the drawer opens with detail: { placement, reason }\n * @fires close - When the drawer closes with detail: { placement, reason }\n *\n * @slot header - Drawer header content\n * @slot - Main body content\n * @slot footer - Drawer footer content\n *\n * @cssprop --drawer-backdrop-bg - Backdrop background color\n * @cssprop --drawer-bg - Panel background color\n * @cssprop --drawer-size - Panel width (horizontal) or height (vertical)\n * @cssprop --drawer-shadow - Panel box-shadow\n * @cssprop --drawer-panel-blur - Panel backdrop blur amount\n *\n * @part drag-handle - Drawer drag handle.\n * @part panel - Panel container.\n * @part header - Header container.\n * @part close-btn - Close button.\n * @part body - Body content container.\n * @part footer - Footer container.\n * @example\n * ```html\n * <!-- With visible title -->\n * <ore-drawer open title=\"Settings\" placement=\"right\">\n * <p>Settings content here.</p>\n * </ore-drawer>\n *\n * <!-- With custom header slot -->\n * <ore-drawer open placement=\"right\">\n * <span slot=\"header\">Settings</span>\n * <p>Settings content here.</p>\n * </ore-drawer>\n * ```\n */\n\nexport const DRAWER_TAG = 'ore-drawer' as const;\ndefine<OreDrawerProps, OreDrawerEvents>(DRAWER_TAG, {\n props: {\n backdrop: prop.string<DrawerBackdrop>(),\n dismissible: prop.bool(true),\n 'drag-handle-placement': prop.oneOf(['outside', 'inset'] as const, 'outside'),\n 'initial-focus': prop.string(),\n label: prop.string(),\n open: prop.bool(false),\n persistent: prop.bool(false),\n placement: prop.oneOf(['left', 'right', 'top', 'bottom'] as const, 'right'),\n 'return-focus': prop.bool(true),\n size: prop.string<DrawerSize>(),\n title: prop.string(),\n },\n setup(props, { el, emit, onCleanup, onEvent, onMounted, slots }) {\n const drawerLabelId = createStableId('drawer-label');\n const dialogRef = ref<HTMLDialogElement>();\n const panelRef = ref<HTMLDivElement>();\n\n // Drag-to-close state\n const isSwipeClosing = signal(false);\n let swipeCloseTimer: ReturnType<typeof setTimeout> | undefined;\n\n const getHeaderText = () => props.label.value ?? props.title.value ?? '';\n const hasHeaderTitle = () => slots.has('header').value || !!getHeaderText();\n\n // Header is visible when there is slot content, a text label, or a close button.\n const hasHeader = () => hasHeaderTitle() || props.dismissible.value;\n const hasFooter = () => slots.has('footer').value;\n\n const getPlacement = (): DrawerPlacement => props.placement.value || 'right';\n\n const getSwipeConfig = (): DrawerSwipeConfig => drawerSwipeConfig[getPlacement()];\n\n const getSnapThreshold = (panel: HTMLElement, axis: SwipeAxis) => {\n const panelSize = axis === 'x' ? panel.offsetWidth : panel.offsetHeight;\n\n return Math.min(96, Math.max(36, panelSize * 0.18));\n };\n\n const shouldCommitSwipeClose = (distance: number, threshold: number) => {\n return getSwipeConfig().closingDistance(distance) >= threshold;\n };\n\n const finalizeSwipeClose = (panel: HTMLElement) => {\n if (!isSwipeClosing.value) return;\n\n if (swipeCloseTimer) {\n clearTimeout(swipeCloseTimer);\n swipeCloseTimer = undefined;\n }\n\n const dialog = dialogRef.value;\n\n if (!dialog) {\n isSwipeClosing.value = false;\n\n return;\n }\n\n dialog.style.transition = 'none';\n panel.style.opacity = '0';\n panel.style.visibility = 'hidden';\n void dialog.offsetWidth;\n\n requestClose('swipe');\n };\n\n const startSwipeClose = (panel: HTMLElement, swipe: DrawerSwipeConfig, committedDistance: number) => {\n if (isSwipeClosing.value) return;\n\n isSwipeClosing.value = true;\n\n const panelSize = swipe.axis === 'x' ? panel.offsetWidth : panel.offsetHeight;\n // Preserve overshoot so closing continues from the dragged position instead of snapping back.\n const exitDistance =\n committedDistance >= 0 ? Math.max(committedDistance, panelSize) : Math.min(committedDistance, -panelSize);\n const exitTransform = swipe.translate(exitDistance);\n\n // Commit the current drag position first so the magnetic snap continues\n // from the finger instead of jumping back to rest.\n panel.style.transition = 'transform 180ms cubic-bezier(0.2, 0.9, 0.2, 1), opacity 180ms ease-out';\n void panel.offsetWidth;\n\n const onExitTransitionEnd = (ev: TransitionEvent) => {\n if (ev.target !== panel || ev.propertyName !== 'transform') return;\n\n panel.removeEventListener('transitionend', onExitTransitionEnd);\n finalizeSwipeClose(panel);\n };\n\n panel.addEventListener('transitionend', onExitTransitionEnd);\n\n const durationMs = parseFloat(getComputedStyle(panel).transitionDuration) * 1000;\n\n swipeCloseTimer = setTimeout(() => {\n panel.removeEventListener('transitionend', onExitTransitionEnd);\n finalizeSwipeClose(panel);\n }, durationMs + 50);\n\n panel.style.transform = exitTransform;\n panel.style.opacity = '0.2';\n };\n\n const resetPanelDragStyles = (panel: HTMLElement) => {\n if (swipeCloseTimer) {\n clearTimeout(swipeCloseTimer);\n swipeCloseTimer = undefined;\n }\n\n // Re-enable transitions so the snap-back or exit animates.\n panel.style.transition = '';\n panel.style.transform = '';\n panel.style.opacity = '';\n panel.style.visibility = '';\n isSwipeClosing.value = false;\n };\n\n // Same \"snap back or commit close\" decision whether the swipe was\n // interrupted by the platform (onCancel) or simply released without an\n // intervening move event crossing the threshold (onRelease).\n const handleSwipeRelease = ({ distance, threshold }: { distance: number; threshold: number }): void => {\n const panel = panelRef.value;\n\n if (!panel) return;\n\n // If the release event crosses the threshold (without an intervening\n // move event), commit close instead of snapping back to rest first.\n if (shouldCommitSwipeClose(distance, threshold)) {\n startSwipeClose(panel, getSwipeConfig(), distance);\n\n return;\n }\n\n resetPanelDragStyles(panel);\n };\n\n const swipe = createSwipeControl({\n axis: () => getSwipeConfig().axis,\n disabled: isSwipeClosing,\n onCancel: handleSwipeRelease,\n onCommit: ({ distance }) => {\n const panel = panelRef.value;\n\n if (!panel) return;\n\n startSwipeClose(panel, getSwipeConfig(), distance);\n },\n onMove: ({ distance, threshold }) => {\n const panel = panelRef.value;\n\n if (!panel) return;\n\n const swipeConfig = getSwipeConfig();\n const closingDistance = swipeConfig.closingDistance(distance);\n const progress = Math.min(closingDistance / threshold, 1);\n\n // Kill CSS transitions so the panel tracks the finger instantly.\n panel.style.transition = 'none';\n panel.style.transform = swipeConfig.translate(distance);\n panel.style.opacity = String(1 - progress * 0.4);\n },\n onRelease: handleSwipeRelease,\n shouldCommit: ({ distance, threshold }) => shouldCommitSwipeClose(distance, threshold),\n threshold: () => {\n const panel = panelRef.value;\n\n if (!panel) return 48;\n\n return getSnapThreshold(panel, getSwipeConfig().axis);\n },\n });\n\n // ────────────────────────────────────────────────────────────────\n // Overlay State Management\n // ────────────────────────────────────────────────────────────────\n\n const { closeWithAnimation, handleCancel, overlay, requestClose, watchOpenProp } = useDialogControl({\n beforeOpen: (dialog) => {\n // Clear any inline drag styles from a previous swipe-close so the CSS\n // entry animation starts from the correct base state.\n const panel = panelRef.value;\n\n if (panel) resetPanelDragStyles(panel);\n\n void dialog;\n },\n closeRequestDetail: (_reason) => ({ placement: props.placement.value ?? 'right' }),\n dialogRef,\n getPanelEl: () => panelRef.value,\n host: el,\n initialFocus: props['initial-focus'],\n isPersistent: () => Boolean(props.persistent.value),\n onCleanup,\n onEvent,\n onNativeClose: (reason) => {\n const panelEl = panelRef.value;\n\n // For swipe-close, keep the panel hidden and off-screen until the next\n // open cycle — resetting inline styles during native close can produce\n // a visible frame at the rest position on some browsers.\n if (panelEl && reason !== 'swipe') resetPanelDragStyles(panelEl);\n\n const dialog = dialogRef.value;\n\n if (dialog) dialog.style.transition = '';\n\n emit('close', { placement: props.placement.value ?? 'right', reason });\n },\n onOpen: (reason) => emit('open', { placement: props.placement.value ?? 'right', reason }),\n openProp: props.open,\n performClose: (dialog, reason) => {\n if (reason === 'swipe') {\n dialog.close();\n } else {\n closeWithAnimation();\n }\n },\n returnFocus: props['return-focus'],\n });\n\n const handleCloseButtonClick = () => {\n requestClose('trigger');\n };\n\n // ────────────────────────────────────────────────────────────────\n // Lifecycle: Setup Drawer Integration\n // ────────────────────────────────────────────────────────────────\n\n onMounted(() => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n // Expose imperative API\n const drawerEl = el as DrawerElement;\n\n drawerEl.show = () => {\n overlay.open('programmatic');\n };\n\n drawerEl.hide = () => {\n overlay.close('programmatic', false);\n };\n\n // ────────────────────────────────────────────────────────────\n // Event Handlers: Cancel, Backdrop Click\n // ────────────────────────────────────────────────────────────\n // `handleCancel` (Escape via the native `cancel` event) is provided by\n // `useDialogControl` above — drawer only needs its own backdrop-click\n // handler since it has swipe-to-dismiss logic the shared dialog helper\n // doesn't know about.\n\n const handleBackdropClick = (e: MouseEvent) => {\n if (props.persistent.value) return;\n\n if (swipe.isActive() || isSwipeClosing.value) return;\n\n if (e.target !== dialog) return; // Click inside panel\n\n requestClose('outsideClick');\n };\n\n watchOpenProp();\n\n onEvent(dialog, 'cancel', handleCancel);\n onEvent(dialog, 'click', handleBackdropClick);\n\n // Drag-to-close handlers — scoped to the handle element only so interactions\n // with panel content don't accidentally start a drag.\n const panel = panelRef.value;\n const dragHandleEl = panel?.querySelector<HTMLElement>('[part=\"drag-handle\"]');\n\n if (dragHandleEl) {\n onEvent(dragHandleEl, 'pointerdown', swipe.handlePointerDown);\n onEvent(dragHandleEl, 'pointermove', swipe.handlePointerMove);\n onEvent(dragHandleEl, 'pointerup', swipe.handlePointerUp);\n onEvent(dragHandleEl, 'pointercancel', swipe.handlePointerCancel);\n }\n\n return () => {\n overlay.dispose();\n };\n });\n\n return html`\n <dialog\n ref=${dialogRef}\n aria-modal=\"true\"\n :aria-label=\"${() => props.label.value ?? null}\"\n :aria-labelledby=\"${() => (!props.label.value ? drawerLabelId : null)}\">\n <div class=\"panel\" part=\"panel\" ref=${panelRef}>\n <div class=\"drag-handle\" part=\"drag-handle\" aria-label=\"Drag to close\" role=\"button\"></div>\n <div class=\"header\" part=\"header\" ?hidden=${() => !hasHeader()}>\n <span class=\"header-title\" id=\"${drawerLabelId}\" ?hidden=${() => !hasHeaderTitle()}>\n <slot name=\"header\">${() => getHeaderText()}</slot>\n </span>\n <button\n class=\"close-btn\"\n part=\"close-btn\"\n type=\"button\"\n aria-label=\"Close\"\n ?hidden=${() => !props.dismissible.value}\n @click=${handleCloseButtonClick}>\n <ore-icon name=\"x\" size=\"16\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n </button>\n </div>\n <div class=\"body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"footer\" part=\"footer\" ?hidden=${() => !hasFooter()}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </dialog>\n `;\n },\n styles: [elevationMixin, forcedColorsMixin, coarsePointerMixin, reducedMotionMixin, styles],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"drawer.cjs","names":[],"sources":["../src/overlay/drawer/drawer.ts"],"sourcesContent":["import {\n createStableId,\n define,\n html,\n prop,\n ref,\n getHost,\n onCleanup,\n onEvent,\n onMounted,\n useEmit,\n useSlots,\n} from '@vielzeug/ore';\nimport { signal } from '@vielzeug/ripple';\n\nimport type { OverlayCloseDetail, OverlayOpenDetail, SwipeAxis } from '../../headless';\n\nimport { createSwipeControl } from '../../headless';\nimport '../../content/icon/icon';\nimport { coarsePointerMixin, elevationMixin, forcedColorsMixin, reducedMotionMixin } from '../../styles';\nimport { useDialogControl } from '../shared/use-dialog';\nimport styles from './drawer.css?inline';\n\ntype DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\ntype DrawerSize = 'sm' | 'lg' | 'full';\ntype DrawerBackdrop = 'opaque' | 'blur' | 'transparent';\ntype DrawerDragHandlePlacement = 'outside' | 'inset';\ntype DrawerSwipeConfig = {\n axis: SwipeAxis;\n closingDistance: (distance: number) => number;\n translate: (distance: number) => string;\n};\n\nconst drawerSwipeConfig: Record<DrawerPlacement, DrawerSwipeConfig> = {\n bottom: {\n axis: 'y',\n closingDistance: (distance) => Math.max(0, distance),\n translate: (distance) => `translateY(${distance}px)`,\n },\n left: {\n axis: 'x',\n closingDistance: (distance) => Math.max(0, -distance),\n translate: (distance) => `translateX(${distance}px)`,\n },\n right: {\n axis: 'x',\n closingDistance: (distance) => Math.max(0, distance),\n translate: (distance) => `translateX(${distance}px)`,\n },\n top: {\n axis: 'y',\n closingDistance: (distance) => Math.max(0, -distance),\n translate: (distance) => `translateY(${distance}px)`,\n },\n};\n\n/** Element interface exposing the imperative API for `ore-drawer`. */\nexport interface DrawerElement extends HTMLElement, Omit<OreDrawerProps, 'title'> {\n /** Programmatically open the drawer. Equivalent to setting `open`. */\n show(): void;\n /** Programmatically close the drawer with the exit animation. */\n hide(): void;\n}\n\n/** Drawer component properties */\n\nexport type OreDrawerEvents = {\n close: OverlayCloseDetail & { placement: DrawerPlacement };\n open: OverlayOpenDetail & { placement: DrawerPlacement };\n};\n\nexport type OreDrawerProps = {\n /** Backdrop style — 'opaque' (default), 'blur', or 'transparent' */\n backdrop?: DrawerBackdrop;\n /** Show the close (×) button in the header (default: true) */\n dismissible?: boolean;\n /** Drag handle position used for swipe-to-close gestures */\n 'drag-handle-placement'?: DrawerDragHandlePlacement;\n /**\n * CSS selector for the element inside the drawer that should receive focus on open.\n * Defaults to native dialog focus management (first focusable element).\n * @example '#submit-btn' | 'input[name=\"email\"]'\n */\n 'initial-focus'?: string;\n /**\n * Invisible accessible label for the dialog (`aria-label`).\n * Use when the drawer has no visible title (e.g. image-only content).\n * When omitted, `aria-labelledby` points to the visible header title instead.\n */\n label?: string;\n /** Controlled open state */\n open?: boolean;\n /** When true, backdrop clicks do not close the drawer (default: false) */\n persistent?: boolean;\n /** Side from which the drawer slides in */\n placement?: DrawerPlacement;\n /**\n * When true (default), focus returns to the triggering element after the drawer closes.\n * Set to false to manage focus manually.\n */\n 'return-focus'?: boolean;\n /** Drawer width/height preset */\n size?: DrawerSize;\n /**\n * Visible title text rendered inside the header.\n * Used as the dialog's accessible label via `aria-labelledby` when `label` is not set.\n */\n title?: string;\n};\n\n/**\n * A panel that slides in from any edge of the screen, built on the native `<dialog>` element.\n *\n * @element ore-drawer\n *\n * @attr {boolean} open - Controlled open/close state\n * @attr {string} placement - 'left' | 'right' (default) | 'top' | 'bottom'\n * @attr {string} size - 'sm' | 'lg' | 'full'\n * @attr {string} title - Visible header title text\n * @attr {string} label - Invisible aria-label (for drawers without a visible title)\n * @attr {boolean} dismissible - Show the close (×) button (default: true)\n * @attr {string} drag-handle-placement - 'outside' (default) | 'inset'\n * @attr {string} backdrop - Backdrop style: 'opaque' (default) | 'blur' | 'transparent'\n * @attr {boolean} persistent - Prevent backdrop-click from closing (default: false)\n *\n * @fires open - When the drawer opens with detail: { placement, reason }\n * @fires close - When the drawer closes with detail: { placement, reason }\n *\n * @slot header - Drawer header content\n * @slot - Main body content\n * @slot footer - Drawer footer content\n *\n * @cssprop --drawer-backdrop-bg - Backdrop background color\n * @cssprop --drawer-bg - Panel background color\n * @cssprop --drawer-size - Panel width (horizontal) or height (vertical)\n * @cssprop --drawer-shadow - Panel box-shadow\n * @cssprop --drawer-panel-blur - Panel backdrop blur amount\n *\n * @part drag-handle - Drawer drag handle.\n * @part panel - Panel container.\n * @part header - Header container.\n * @part close-btn - Close button.\n * @part body - Body content container.\n * @part footer - Footer container.\n * @example\n * ```html\n * <!-- With visible title -->\n * <ore-drawer open title=\"Settings\" placement=\"right\">\n * <p>Settings content here.</p>\n * </ore-drawer>\n *\n * <!-- With custom header slot -->\n * <ore-drawer open placement=\"right\">\n * <span slot=\"header\">Settings</span>\n * <p>Settings content here.</p>\n * </ore-drawer>\n * ```\n */\n\nexport const DRAWER_TAG = 'ore-drawer' as const;\ndefine<OreDrawerProps>(DRAWER_TAG, {\n props: {\n backdrop: prop.string<DrawerBackdrop>(),\n dismissible: prop.bool(true),\n 'drag-handle-placement': prop.oneOf(['outside', 'inset'] as const, 'outside'),\n 'initial-focus': prop.string(),\n label: prop.string(),\n open: prop.bool(false),\n persistent: prop.bool(false),\n placement: prop.oneOf(['left', 'right', 'top', 'bottom'] as const, 'right'),\n 'return-focus': prop.bool(true),\n size: prop.string<DrawerSize>(),\n title: prop.string(),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreDrawerEvents>();\n const slots = useSlots();\n\n const drawerLabelId = createStableId('drawer-label');\n const dialogRef = ref<HTMLDialogElement>();\n const panelRef = ref<HTMLDivElement>();\n\n // Drag-to-close state\n const isSwipeClosing = signal(false);\n let swipeCloseTimer: ReturnType<typeof setTimeout> | undefined;\n\n const getHeaderText = () => props.label.value ?? props.title.value ?? '';\n const hasHeaderTitle = () => slots.has('header').value || !!getHeaderText();\n\n // Header is visible when there is slot content, a text label, or a close button.\n const hasHeader = () => hasHeaderTitle() || props.dismissible.value;\n const hasFooter = () => slots.has('footer').value;\n\n const getPlacement = (): DrawerPlacement => props.placement.value || 'right';\n\n const getSwipeConfig = (): DrawerSwipeConfig => drawerSwipeConfig[getPlacement()];\n\n const getSnapThreshold = (panel: HTMLElement, axis: SwipeAxis) => {\n const panelSize = axis === 'x' ? panel.offsetWidth : panel.offsetHeight;\n\n return Math.min(96, Math.max(36, panelSize * 0.18));\n };\n\n const shouldCommitSwipeClose = (distance: number, threshold: number) => {\n return getSwipeConfig().closingDistance(distance) >= threshold;\n };\n\n const finalizeSwipeClose = (panel: HTMLElement) => {\n if (!isSwipeClosing.value) return;\n\n if (swipeCloseTimer) {\n clearTimeout(swipeCloseTimer);\n swipeCloseTimer = undefined;\n }\n\n const dialog = dialogRef.value;\n\n if (!dialog) {\n isSwipeClosing.value = false;\n\n return;\n }\n\n dialog.style.transition = 'none';\n panel.style.opacity = '0';\n panel.style.visibility = 'hidden';\n void dialog.offsetWidth;\n\n requestClose('swipe');\n };\n\n const startSwipeClose = (panel: HTMLElement, swipe: DrawerSwipeConfig, committedDistance: number) => {\n if (isSwipeClosing.value) return;\n\n isSwipeClosing.value = true;\n\n const panelSize = swipe.axis === 'x' ? panel.offsetWidth : panel.offsetHeight;\n // Preserve overshoot so closing continues from the dragged position instead of snapping back.\n const exitDistance =\n committedDistance >= 0 ? Math.max(committedDistance, panelSize) : Math.min(committedDistance, -panelSize);\n const exitTransform = swipe.translate(exitDistance);\n\n // Commit the current drag position first so the magnetic snap continues\n // from the finger instead of jumping back to rest.\n panel.style.transition = 'transform 180ms cubic-bezier(0.2, 0.9, 0.2, 1), opacity 180ms ease-out';\n void panel.offsetWidth;\n\n const onExitTransitionEnd = (ev: TransitionEvent) => {\n if (ev.target !== panel || ev.propertyName !== 'transform') return;\n\n panel.removeEventListener('transitionend', onExitTransitionEnd);\n finalizeSwipeClose(panel);\n };\n\n panel.addEventListener('transitionend', onExitTransitionEnd);\n\n const durationMs = parseFloat(getComputedStyle(panel).transitionDuration) * 1000;\n\n swipeCloseTimer = setTimeout(() => {\n panel.removeEventListener('transitionend', onExitTransitionEnd);\n finalizeSwipeClose(panel);\n }, durationMs + 50);\n\n panel.style.transform = exitTransform;\n panel.style.opacity = '0.2';\n };\n\n const resetPanelDragStyles = (panel: HTMLElement) => {\n if (swipeCloseTimer) {\n clearTimeout(swipeCloseTimer);\n swipeCloseTimer = undefined;\n }\n\n // Re-enable transitions so the snap-back or exit animates.\n panel.style.transition = '';\n panel.style.transform = '';\n panel.style.opacity = '';\n panel.style.visibility = '';\n isSwipeClosing.value = false;\n };\n\n // Same \"snap back or commit close\" decision whether the swipe was\n // interrupted by the platform (onCancel) or simply released without an\n // intervening move event crossing the threshold (onRelease).\n const handleSwipeRelease = ({ distance, threshold }: { distance: number; threshold: number }): void => {\n const panel = panelRef.value;\n\n if (!panel) return;\n\n // If the release event crosses the threshold (without an intervening\n // move event), commit close instead of snapping back to rest first.\n if (shouldCommitSwipeClose(distance, threshold)) {\n startSwipeClose(panel, getSwipeConfig(), distance);\n\n return;\n }\n\n resetPanelDragStyles(panel);\n };\n\n const swipe = createSwipeControl({\n axis: () => getSwipeConfig().axis,\n disabled: isSwipeClosing,\n onCancel: handleSwipeRelease,\n onCommit: ({ distance }) => {\n const panel = panelRef.value;\n\n if (!panel) return;\n\n startSwipeClose(panel, getSwipeConfig(), distance);\n },\n onMove: ({ distance, threshold }) => {\n const panel = panelRef.value;\n\n if (!panel) return;\n\n const swipeConfig = getSwipeConfig();\n const closingDistance = swipeConfig.closingDistance(distance);\n const progress = Math.min(closingDistance / threshold, 1);\n\n // Kill CSS transitions so the panel tracks the finger instantly.\n panel.style.transition = 'none';\n panel.style.transform = swipeConfig.translate(distance);\n panel.style.opacity = String(1 - progress * 0.4);\n },\n onRelease: handleSwipeRelease,\n shouldCommit: ({ distance, threshold }) => shouldCommitSwipeClose(distance, threshold),\n threshold: () => {\n const panel = panelRef.value;\n\n if (!panel) return 48;\n\n return getSnapThreshold(panel, getSwipeConfig().axis);\n },\n });\n\n // ────────────────────────────────────────────────────────────────\n // Overlay State Management\n // ────────────────────────────────────────────────────────────────\n\n const { closeWithAnimation, handleCancel, overlay, requestClose, watchOpenProp } = useDialogControl({\n beforeOpen: (dialog) => {\n // Clear any inline drag styles from a previous swipe-close so the CSS\n // entry animation starts from the correct base state.\n const panel = panelRef.value;\n\n if (panel) resetPanelDragStyles(panel);\n\n void dialog;\n },\n closeRequestDetail: (_reason) => ({ placement: props.placement.value ?? 'right' }),\n dialogRef,\n getPanelEl: () => panelRef.value,\n host: el,\n initialFocus: props['initial-focus'],\n isPersistent: () => Boolean(props.persistent.value),\n onCleanup,\n onEvent,\n onNativeClose: (reason) => {\n const panelEl = panelRef.value;\n\n // For swipe-close, keep the panel hidden and off-screen until the next\n // open cycle — resetting inline styles during native close can produce\n // a visible frame at the rest position on some browsers.\n if (panelEl && reason !== 'swipe') resetPanelDragStyles(panelEl);\n\n const dialog = dialogRef.value;\n\n if (dialog) dialog.style.transition = '';\n\n emit('close', { placement: props.placement.value ?? 'right', reason });\n },\n onOpen: (reason) => emit('open', { placement: props.placement.value ?? 'right', reason }),\n openProp: props.open,\n performClose: (dialog, reason) => {\n if (reason === 'swipe') {\n dialog.close();\n } else {\n closeWithAnimation();\n }\n },\n returnFocus: props['return-focus'],\n });\n\n const handleCloseButtonClick = () => {\n requestClose('trigger');\n };\n\n // ────────────────────────────────────────────────────────────────\n // Lifecycle: Setup Drawer Integration\n // ────────────────────────────────────────────────────────────────\n\n onMounted(() => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n // Expose imperative API\n const drawerEl = el as DrawerElement;\n\n drawerEl.show = () => {\n overlay.open('programmatic');\n };\n\n drawerEl.hide = () => {\n overlay.close('programmatic', false);\n };\n\n // ────────────────────────────────────────────────────────────\n // Event Handlers: Cancel, Backdrop Click\n // ────────────────────────────────────────────────────────────\n // `handleCancel` (Escape via the native `cancel` event) is provided by\n // `useDialogControl` above — drawer only needs its own backdrop-click\n // handler since it has swipe-to-dismiss logic the shared dialog helper\n // doesn't know about.\n\n const handleBackdropClick = (e: MouseEvent) => {\n if (props.persistent.value) return;\n\n if (swipe.isActive() || isSwipeClosing.value) return;\n\n if (e.target !== dialog) return; // Click inside panel\n\n requestClose('outsideClick');\n };\n\n watchOpenProp();\n\n onEvent(dialog, 'cancel', handleCancel);\n onEvent(dialog, 'click', handleBackdropClick);\n\n // Drag-to-close handlers — scoped to the handle element only so interactions\n // with panel content don't accidentally start a drag.\n const panel = panelRef.value;\n const dragHandleEl = panel?.querySelector<HTMLElement>('[part=\"drag-handle\"]');\n\n if (dragHandleEl) {\n onEvent(dragHandleEl, 'pointerdown', swipe.handlePointerDown);\n onEvent(dragHandleEl, 'pointermove', swipe.handlePointerMove);\n onEvent(dragHandleEl, 'pointerup', swipe.handlePointerUp);\n onEvent(dragHandleEl, 'pointercancel', swipe.handlePointerCancel);\n }\n\n return () => {\n overlay.dispose();\n };\n });\n\n return html`\n <dialog\n ref=${dialogRef}\n aria-modal=\"true\"\n :aria-label=\"${() => props.label.value ?? null}\"\n :aria-labelledby=\"${() => (!props.label.value ? drawerLabelId : null)}\">\n <div class=\"panel\" part=\"panel\" ref=${panelRef}>\n <div class=\"drag-handle\" part=\"drag-handle\" aria-label=\"Drag to close\" role=\"button\"></div>\n <div class=\"header\" part=\"header\" ?hidden=${() => !hasHeader()}>\n <span class=\"header-title\" id=\"${drawerLabelId}\" ?hidden=${() => !hasHeaderTitle()}>\n <slot name=\"header\">${() => getHeaderText()}</slot>\n </span>\n <button\n class=\"close-btn\"\n part=\"close-btn\"\n type=\"button\"\n aria-label=\"Close\"\n ?hidden=${() => !props.dismissible.value}\n @click=${handleCloseButtonClick}>\n <ore-icon name=\"x\" size=\"16\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n </button>\n </div>\n <div class=\"body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"footer\" part=\"footer\" ?hidden=${() => !hasFooter()}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </dialog>\n `;\n },\n styles: [elevationMixin, forcedColorsMixin, coarsePointerMixin, reducedMotionMixin, styles],\n});\n"],"mappings":"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"}
package/dist/drawer.js CHANGED
@@ -2,11 +2,11 @@ import { coarsePointerMixin as e, reducedMotionMixin as t } from "./styles/mixin
2
2
  import { elevationMixin as n, forcedColorsMixin as r } from "./styles/mixins/theme.css.js";
3
3
  import { createSwipeControl as i } from "./headless/swipe.js";
4
4
  import { useDialogControl as a } from "./overlay/shared/use-dialog.js";
5
- import o from "./overlay/drawer/drawer.css?inline.js";
6
- import { createStableId as s, define as c, html as l, prop as u, ref as d } from "@vielzeug/ore";
7
- import { signal as f } from "@vielzeug/ripple";
5
+ import o from "./overlay/drawer/drawer.css.js";
6
+ import { createStableId as s, define as c, getHost as l, html as u, onCleanup as d, onEvent as f, onMounted as p, prop as m, ref as h, useEmit as g, useSlots as _ } from "@vielzeug/ore";
7
+ import { signal as v } from "@vielzeug/ripple";
8
8
  //#region src/overlay/drawer/drawer.ts
9
- var p = {
9
+ var y = {
10
10
  bottom: {
11
11
  axis: "y",
12
12
  closingDistance: (e) => Math.max(0, e),
@@ -27,100 +27,100 @@ var p = {
27
27
  closingDistance: (e) => Math.max(0, -e),
28
28
  translate: (e) => `translateY(${e}px)`
29
29
  }
30
- }, m = "ore-drawer";
31
- c(m, {
30
+ }, b = "ore-drawer";
31
+ c(b, {
32
32
  props: {
33
- backdrop: u.string(),
34
- dismissible: u.bool(!0),
35
- "drag-handle-placement": u.oneOf(["outside", "inset"], "outside"),
36
- "initial-focus": u.string(),
37
- label: u.string(),
38
- open: u.bool(!1),
39
- persistent: u.bool(!1),
40
- placement: u.oneOf([
33
+ backdrop: m.string(),
34
+ dismissible: m.bool(!0),
35
+ "drag-handle-placement": m.oneOf(["outside", "inset"], "outside"),
36
+ "initial-focus": m.string(),
37
+ label: m.string(),
38
+ open: m.bool(!1),
39
+ persistent: m.bool(!1),
40
+ placement: m.oneOf([
41
41
  "left",
42
42
  "right",
43
43
  "top",
44
44
  "bottom"
45
45
  ], "right"),
46
- "return-focus": u.bool(!0),
47
- size: u.string(),
48
- title: u.string()
46
+ "return-focus": m.bool(!0),
47
+ size: m.string(),
48
+ title: m.string()
49
49
  },
50
- setup(e, { el: t, emit: n, onCleanup: r, onEvent: o, onMounted: c, slots: u }) {
51
- let m = s("drawer-label"), h = d(), g = d(), _ = f(!1), v, y = () => e.label.value ?? e.title.value ?? "", b = () => u.has("header").value || !!y(), x = () => b() || e.dismissible.value, S = () => u.has("footer").value, C = () => e.placement.value || "right", w = () => p[C()], T = (e, t) => {
50
+ setup(e) {
51
+ let t = l(), n = g(), r = _(), o = s("drawer-label"), c = h(), m = h(), b = v(!1), x, S = () => e.label.value ?? e.title.value ?? "", C = () => r.has("header").value || !!S(), w = () => C() || e.dismissible.value, T = () => r.has("footer").value, E = () => e.placement.value || "right", D = () => y[E()], O = (e, t) => {
52
52
  let n = t === "x" ? e.offsetWidth : e.offsetHeight;
53
53
  return Math.min(96, Math.max(36, n * .18));
54
- }, E = (e, t) => w().closingDistance(e) >= t, D = (e) => {
55
- if (!_.value) return;
56
- v &&= (clearTimeout(v), void 0);
57
- let t = h.value;
54
+ }, k = (e, t) => D().closingDistance(e) >= t, A = (e) => {
55
+ if (!b.value) return;
56
+ x &&= (clearTimeout(x), void 0);
57
+ let t = c.value;
58
58
  if (!t) {
59
- _.value = !1;
59
+ b.value = !1;
60
60
  return;
61
61
  }
62
- t.style.transition = "none", e.style.opacity = "0", e.style.visibility = "hidden", t.offsetWidth, F("swipe");
63
- }, O = (e, t, n) => {
64
- if (_.value) return;
65
- _.value = !0;
62
+ t.style.transition = "none", e.style.opacity = "0", e.style.visibility = "hidden", t.offsetWidth, R("swipe");
63
+ }, j = (e, t, n) => {
64
+ if (b.value) return;
65
+ b.value = !0;
66
66
  let r = t.axis === "x" ? e.offsetWidth : e.offsetHeight, i = n >= 0 ? Math.max(n, r) : Math.min(n, -r), a = t.translate(i);
67
67
  e.style.transition = "transform 180ms cubic-bezier(0.2, 0.9, 0.2, 1), opacity 180ms ease-out", e.offsetWidth;
68
68
  let o = (t) => {
69
- t.target !== e || t.propertyName !== "transform" || (e.removeEventListener("transitionend", o), D(e));
69
+ t.target !== e || t.propertyName !== "transform" || (e.removeEventListener("transitionend", o), A(e));
70
70
  };
71
71
  e.addEventListener("transitionend", o);
72
72
  let s = parseFloat(getComputedStyle(e).transitionDuration) * 1e3;
73
- v = setTimeout(() => {
74
- e.removeEventListener("transitionend", o), D(e);
73
+ x = setTimeout(() => {
74
+ e.removeEventListener("transitionend", o), A(e);
75
75
  }, s + 50), e.style.transform = a, e.style.opacity = "0.2";
76
- }, k = (e) => {
77
- v &&= (clearTimeout(v), void 0), e.style.transition = "", e.style.transform = "", e.style.opacity = "", e.style.visibility = "", _.value = !1;
78
- }, A = ({ distance: e, threshold: t }) => {
79
- let n = g.value;
76
+ }, M = (e) => {
77
+ x &&= (clearTimeout(x), void 0), e.style.transition = "", e.style.transform = "", e.style.opacity = "", e.style.visibility = "", b.value = !1;
78
+ }, N = ({ distance: e, threshold: t }) => {
79
+ let n = m.value;
80
80
  if (n) {
81
- if (E(e, t)) {
82
- O(n, w(), e);
81
+ if (k(e, t)) {
82
+ j(n, D(), e);
83
83
  return;
84
84
  }
85
- k(n);
85
+ M(n);
86
86
  }
87
- }, j = i({
88
- axis: () => w().axis,
89
- disabled: _,
90
- onCancel: A,
87
+ }, P = i({
88
+ axis: () => D().axis,
89
+ disabled: b,
90
+ onCancel: N,
91
91
  onCommit: ({ distance: e }) => {
92
- let t = g.value;
93
- t && O(t, w(), e);
92
+ let t = m.value;
93
+ t && j(t, D(), e);
94
94
  },
95
95
  onMove: ({ distance: e, threshold: t }) => {
96
- let n = g.value;
96
+ let n = m.value;
97
97
  if (!n) return;
98
- let r = w(), i = r.closingDistance(e), a = Math.min(i / t, 1);
98
+ let r = D(), i = r.closingDistance(e), a = Math.min(i / t, 1);
99
99
  n.style.transition = "none", n.style.transform = r.translate(e), n.style.opacity = String(1 - a * .4);
100
100
  },
101
- onRelease: A,
102
- shouldCommit: ({ distance: e, threshold: t }) => E(e, t),
101
+ onRelease: N,
102
+ shouldCommit: ({ distance: e, threshold: t }) => k(e, t),
103
103
  threshold: () => {
104
- let e = g.value;
105
- return e ? T(e, w().axis) : 48;
104
+ let e = m.value;
105
+ return e ? O(e, D().axis) : 48;
106
106
  }
107
- }), { closeWithAnimation: M, handleCancel: N, overlay: P, requestClose: F, watchOpenProp: I } = a({
107
+ }), { closeWithAnimation: F, handleCancel: I, overlay: L, requestClose: R, watchOpenProp: z } = a({
108
108
  beforeOpen: (e) => {
109
- let t = g.value;
110
- t && k(t);
109
+ let t = m.value;
110
+ t && M(t);
111
111
  },
112
112
  closeRequestDetail: (t) => ({ placement: e.placement.value ?? "right" }),
113
- dialogRef: h,
114
- getPanelEl: () => g.value,
113
+ dialogRef: c,
114
+ getPanelEl: () => m.value,
115
115
  host: t,
116
116
  initialFocus: e["initial-focus"],
117
117
  isPersistent: () => !!e.persistent.value,
118
- onCleanup: r,
119
- onEvent: o,
118
+ onCleanup: d,
119
+ onEvent: f,
120
120
  onNativeClose: (t) => {
121
- let r = g.value;
122
- r && t !== "swipe" && k(r);
123
- let i = h.value;
121
+ let r = m.value;
122
+ r && t !== "swipe" && M(r);
123
+ let i = c.value;
124
124
  i && (i.style.transition = ""), n("close", {
125
125
  placement: e.placement.value ?? "right",
126
126
  reason: t
@@ -132,36 +132,36 @@ c(m, {
132
132
  }),
133
133
  openProp: e.open,
134
134
  performClose: (e, t) => {
135
- t === "swipe" ? e.close() : M();
135
+ t === "swipe" ? e.close() : F();
136
136
  },
137
137
  returnFocus: e["return-focus"]
138
138
  });
139
- return c(() => {
140
- let n = h.value;
139
+ return p(() => {
140
+ let n = c.value;
141
141
  if (!n) return;
142
142
  let r = t;
143
143
  r.show = () => {
144
- P.open("programmatic");
144
+ L.open("programmatic");
145
145
  }, r.hide = () => {
146
- P.close("programmatic", !1);
147
- }, I(), o(n, "cancel", N), o(n, "click", (t) => {
148
- e.persistent.value || j.isActive() || _.value || t.target === n && F("outsideClick");
146
+ L.close("programmatic", !1);
147
+ }, z(), f(n, "cancel", I), f(n, "click", (t) => {
148
+ e.persistent.value || P.isActive() || b.value || t.target === n && R("outsideClick");
149
149
  });
150
- let i = g.value?.querySelector("[part=\"drag-handle\"]");
151
- return i && (o(i, "pointerdown", j.handlePointerDown), o(i, "pointermove", j.handlePointerMove), o(i, "pointerup", j.handlePointerUp), o(i, "pointercancel", j.handlePointerCancel)), () => {
152
- P.dispose();
150
+ let i = m.value?.querySelector("[part=\"drag-handle\"]");
151
+ return i && (f(i, "pointerdown", P.handlePointerDown), f(i, "pointermove", P.handlePointerMove), f(i, "pointerup", P.handlePointerUp), f(i, "pointercancel", P.handlePointerCancel)), () => {
152
+ L.dispose();
153
153
  };
154
- }), l`
154
+ }), u`
155
155
  <dialog
156
- ref=${h}
156
+ ref=${c}
157
157
  aria-modal="true"
158
158
  :aria-label="${() => e.label.value ?? null}"
159
- :aria-labelledby="${() => e.label.value ? null : m}">
160
- <div class="panel" part="panel" ref=${g}>
159
+ :aria-labelledby="${() => e.label.value ? null : o}">
160
+ <div class="panel" part="panel" ref=${m}>
161
161
  <div class="drag-handle" part="drag-handle" aria-label="Drag to close" role="button"></div>
162
- <div class="header" part="header" ?hidden=${() => !x()}>
163
- <span class="header-title" id="${m}" ?hidden=${() => !b()}>
164
- <slot name="header">${() => y()}</slot>
162
+ <div class="header" part="header" ?hidden=${() => !w()}>
163
+ <span class="header-title" id="${o}" ?hidden=${() => !C()}>
164
+ <slot name="header">${() => S()}</slot>
165
165
  </span>
166
166
  <button
167
167
  class="close-btn"
@@ -170,7 +170,7 @@ c(m, {
170
170
  aria-label="Close"
171
171
  ?hidden=${() => !e.dismissible.value}
172
172
  @click=${() => {
173
- F("trigger");
173
+ R("trigger");
174
174
  }}>
175
175
  <ore-icon name="x" size="16" stroke-width="2.5" aria-hidden="true"></ore-icon>
176
176
  </button>
@@ -178,7 +178,7 @@ c(m, {
178
178
  <div class="body" part="body">
179
179
  <slot></slot>
180
180
  </div>
181
- <div class="footer" part="footer" ?hidden=${() => !S()}>
181
+ <div class="footer" part="footer" ?hidden=${() => !T()}>
182
182
  <slot name="footer"></slot>
183
183
  </div>
184
184
  </div>
@@ -194,6 +194,6 @@ c(m, {
194
194
  ]
195
195
  });
196
196
  //#endregion
197
- export { m as DRAWER_TAG };
197
+ export { b as DRAWER_TAG };
198
198
 
199
199
  //# sourceMappingURL=drawer.js.map