@vielzeug/refine 1.1.3 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (799) 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 +47 -45
  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.cjs +2 -0
  95. package/dist/content/card/card.css.cjs.map +1 -0
  96. package/dist/content/card/card.css.js +6 -0
  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.cjs +2 -0
  125. package/dist/content/icon/icon.css.cjs.map +1 -0
  126. package/dist/content/icon/icon.css.js +6 -0
  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 +4463 -3727
  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.cjs +2 -0
  218. package/dist/feedback/toast/toast.css.cjs.map +1 -0
  219. package/dist/feedback/toast/toast.css.js +6 -0
  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.cjs +2 -0
  255. package/dist/inputs/button/button.css.cjs.map +1 -0
  256. package/dist/inputs/button/button.css.js +6 -0
  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} +2 -2
  269. package/dist/inputs/checkbox/checkbox.css.cjs.map +1 -0
  270. package/dist/inputs/checkbox/{checkbox.css?inline.js → checkbox.css.js} +2 -2
  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} +2 -2
  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} +2 -2
  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.cjs +2 -0
  293. package/dist/inputs/file-input/file-input.css.cjs.map +1 -0
  294. package/dist/inputs/file-input/file-input.css.js +6 -0
  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.cjs +2 -0
  303. package/dist/inputs/input/input.css.cjs.map +1 -0
  304. package/dist/inputs/input/input.css.js +6 -0
  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} +2 -2
  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} +2 -2
  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} +2 -2
  317. package/dist/inputs/radio/radio.css.cjs.map +1 -0
  318. package/dist/inputs/radio/{radio.css?inline.js → radio.css.js} +2 -2
  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} +2 -2
  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} +2 -2
  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} +2 -2
  327. package/dist/inputs/rating/rating.css.cjs.map +1 -0
  328. package/dist/inputs/rating/{rating.css?inline.js → rating.css.js} +2 -2
  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} +2 -2
  349. package/dist/inputs/slider/slider.css.cjs.map +1 -0
  350. package/dist/inputs/slider/{slider.css?inline.js → slider.css.js} +2 -2
  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} +2 -2
  354. package/dist/inputs/switch/switch.css.cjs.map +1 -0
  355. package/dist/inputs/switch/{switch.css?inline.js → switch.css.js} +2 -2
  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.cjs +2 -0
  359. package/dist/inputs/textarea/textarea.css.cjs.map +1 -0
  360. package/dist/inputs/textarea/textarea.css.js +6 -0
  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.cjs +2 -0
  395. package/dist/layout/navbar/navbar.css.cjs.map +1 -0
  396. package/dist/layout/navbar/navbar.css.js +6 -0
  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.cjs +2 -0
  408. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -0
  409. package/dist/layout/sidebar/sidebar.css.js +6 -0
  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.cjs +2 -0
  510. package/dist/overlay/menu/menu.css.cjs.map +1 -0
  511. package/dist/overlay/menu/menu.css.js +6 -0
  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 -623
  552. package/dist/refine.cjs.map +1 -1
  553. package/dist/refine.iife.js +742 -612
  554. package/dist/refine.iife.js.map +1 -1
  555. package/dist/refine.js +777 -647
  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/styles/mixins/animation.css.cjs +0 -3
  577. package/dist/styles/mixins/animation.css.cjs.map +1 -1
  578. package/dist/styles/mixins/animation.css.d.ts +12 -4
  579. package/dist/styles/mixins/animation.css.d.ts.map +1 -1
  580. package/dist/styles/mixins/animation.css.js +0 -3
  581. package/dist/styles/mixins/animation.css.js.map +1 -1
  582. package/dist/styles/mixins/variants.css.cjs.map +1 -1
  583. package/dist/styles/mixins/variants.css.d.ts +7 -2
  584. package/dist/styles/mixins/variants.css.d.ts.map +1 -1
  585. package/dist/styles/mixins/variants.css.js.map +1 -1
  586. package/dist/styles/theme.css +341 -132
  587. package/dist/switch.cjs +4 -4
  588. package/dist/switch.cjs.map +1 -1
  589. package/dist/switch.js +35 -33
  590. package/dist/switch.js.map +1 -1
  591. package/dist/tab-item.cjs +5 -5
  592. package/dist/tab-item.cjs.map +1 -1
  593. package/dist/tab-item.js +25 -25
  594. package/dist/tab-item.js.map +1 -1
  595. package/dist/tab-panel.cjs +6 -6
  596. package/dist/tab-panel.cjs.map +1 -1
  597. package/dist/tab-panel.js +24 -24
  598. package/dist/tab-panel.js.map +1 -1
  599. package/dist/table.cjs +1 -1
  600. package/dist/table.cjs.map +1 -1
  601. package/dist/table.js +36 -35
  602. package/dist/table.js.map +1 -1
  603. package/dist/tabs.cjs +3 -3
  604. package/dist/tabs.cjs.map +1 -1
  605. package/dist/tabs.js +61 -61
  606. package/dist/tabs.js.map +1 -1
  607. package/dist/text.cjs +1 -1
  608. package/dist/text.cjs.map +1 -1
  609. package/dist/text.js +16 -16
  610. package/dist/text.js.map +1 -1
  611. package/dist/textarea.cjs +15 -15
  612. package/dist/textarea.cjs.map +1 -1
  613. package/dist/textarea.js +67 -65
  614. package/dist/textarea.js.map +1 -1
  615. package/dist/time-picker.cjs +31 -31
  616. package/dist/time-picker.cjs.map +1 -1
  617. package/dist/time-picker.js +115 -113
  618. package/dist/time-picker.js.map +1 -1
  619. package/dist/toast.cjs +14 -14
  620. package/dist/toast.cjs.map +1 -1
  621. package/dist/toast.js +85 -85
  622. package/dist/toast.js.map +1 -1
  623. package/dist/tooltip.cjs +5 -5
  624. package/dist/tooltip.cjs.map +1 -1
  625. package/dist/tooltip.js +55 -55
  626. package/dist/tooltip.js.map +1 -1
  627. package/dist/typing-indicator.cjs +8 -0
  628. package/dist/typing-indicator.cjs.map +1 -0
  629. package/dist/typing-indicator.js +49 -0
  630. package/dist/typing-indicator.js.map +1 -0
  631. package/package.json +31 -8
  632. package/dist/content/avatar/avatar-group.css?inline.cjs.map +0 -1
  633. package/dist/content/avatar/avatar-group.css?inline.js.map +0 -1
  634. package/dist/content/avatar/avatar.css?inline.cjs.map +0 -1
  635. package/dist/content/avatar/avatar.css?inline.js.map +0 -1
  636. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +0 -1
  637. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +0 -1
  638. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +0 -1
  639. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +0 -1
  640. package/dist/content/card/card.css?inline.cjs +0 -2
  641. package/dist/content/card/card.css?inline.cjs.map +0 -1
  642. package/dist/content/card/card.css?inline.js +0 -6
  643. package/dist/content/card/card.css?inline.js.map +0 -1
  644. package/dist/content/carousel/carousel-slide.css?inline.cjs.map +0 -1
  645. package/dist/content/carousel/carousel-slide.css?inline.js.map +0 -1
  646. package/dist/content/carousel/carousel.css?inline.cjs.map +0 -1
  647. package/dist/content/carousel/carousel.css?inline.js.map +0 -1
  648. package/dist/content/code-window/code-window.css?inline.cjs.map +0 -1
  649. package/dist/content/code-window/code-window.css?inline.js.map +0 -1
  650. package/dist/content/copy-command/copy-command.css?inline.cjs.map +0 -1
  651. package/dist/content/copy-command/copy-command.css?inline.js.map +0 -1
  652. package/dist/content/icon/icon.css?inline.cjs +0 -2
  653. package/dist/content/icon/icon.css?inline.cjs.map +0 -1
  654. package/dist/content/icon/icon.css?inline.js +0 -6
  655. package/dist/content/icon/icon.css?inline.js.map +0 -1
  656. package/dist/content/pagination/pagination.css?inline.cjs.map +0 -1
  657. package/dist/content/pagination/pagination.css?inline.js.map +0 -1
  658. package/dist/content/separator/separator.css?inline.cjs.map +0 -1
  659. package/dist/content/separator/separator.css?inline.js.map +0 -1
  660. package/dist/content/table/table.css?inline.cjs.map +0 -1
  661. package/dist/content/table/table.css?inline.js.map +0 -1
  662. package/dist/content/text/text.css?inline.cjs.map +0 -1
  663. package/dist/content/text/text.css?inline.js.map +0 -1
  664. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +0 -1
  665. package/dist/disclosure/accordion/accordion.css?inline.js.map +0 -1
  666. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +0 -1
  667. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +0 -1
  668. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +0 -1
  669. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +0 -1
  670. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +0 -1
  671. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +0 -1
  672. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +0 -1
  673. package/dist/disclosure/tabs/tabs.css?inline.js.map +0 -1
  674. package/dist/feedback/alert/alert.css?inline.cjs.map +0 -1
  675. package/dist/feedback/alert/alert.css?inline.js.map +0 -1
  676. package/dist/feedback/async/async.css?inline.cjs.map +0 -1
  677. package/dist/feedback/async/async.css?inline.js.map +0 -1
  678. package/dist/feedback/badge/badge.css?inline.cjs.map +0 -1
  679. package/dist/feedback/badge/badge.css?inline.js.map +0 -1
  680. package/dist/feedback/chip/chip.css?inline.cjs.map +0 -1
  681. package/dist/feedback/chip/chip.css?inline.js.map +0 -1
  682. package/dist/feedback/password-strength/password-strength.css?inline.cjs.map +0 -1
  683. package/dist/feedback/password-strength/password-strength.css?inline.js.map +0 -1
  684. package/dist/feedback/progress/progress.css?inline.cjs.map +0 -1
  685. package/dist/feedback/progress/progress.css?inline.js.map +0 -1
  686. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +0 -1
  687. package/dist/feedback/skeleton/skeleton.css?inline.js.map +0 -1
  688. package/dist/feedback/toast/toast.css?inline.cjs +0 -2
  689. package/dist/feedback/toast/toast.css?inline.cjs.map +0 -1
  690. package/dist/feedback/toast/toast.css?inline.js +0 -6
  691. package/dist/feedback/toast/toast.css?inline.js.map +0 -1
  692. package/dist/inputs/button/button.css?inline.cjs +0 -2
  693. package/dist/inputs/button/button.css?inline.cjs.map +0 -1
  694. package/dist/inputs/button/button.css?inline.js +0 -6
  695. package/dist/inputs/button/button.css?inline.js.map +0 -1
  696. package/dist/inputs/button-group/button-group.css?inline.cjs.map +0 -1
  697. package/dist/inputs/button-group/button-group.css?inline.js.map +0 -1
  698. package/dist/inputs/calendar/calendar.css?inline.cjs.map +0 -1
  699. package/dist/inputs/calendar/calendar.css?inline.js.map +0 -1
  700. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +0 -1
  701. package/dist/inputs/checkbox/checkbox.css?inline.js.map +0 -1
  702. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +0 -1
  703. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +0 -1
  704. package/dist/inputs/combobox/combobox.css?inline.cjs.map +0 -1
  705. package/dist/inputs/combobox/combobox.css?inline.js.map +0 -1
  706. package/dist/inputs/datagrid/datagrid.css?inline.cjs.map +0 -1
  707. package/dist/inputs/datagrid/datagrid.css?inline.js.map +0 -1
  708. package/dist/inputs/date-picker/date-picker.css?inline.cjs.map +0 -1
  709. package/dist/inputs/date-picker/date-picker.css?inline.js.map +0 -1
  710. package/dist/inputs/file-input/file-input.css?inline.cjs +0 -2
  711. package/dist/inputs/file-input/file-input.css?inline.cjs.map +0 -1
  712. package/dist/inputs/file-input/file-input.css?inline.js +0 -6
  713. package/dist/inputs/file-input/file-input.css?inline.js.map +0 -1
  714. package/dist/inputs/form/form.css?inline.cjs.map +0 -1
  715. package/dist/inputs/form/form.css?inline.js.map +0 -1
  716. package/dist/inputs/input/input.css?inline.cjs +0 -2
  717. package/dist/inputs/input/input.css?inline.cjs.map +0 -1
  718. package/dist/inputs/input/input.css?inline.js +0 -6
  719. package/dist/inputs/input/input.css?inline.js.map +0 -1
  720. package/dist/inputs/number-input/number-input.css?inline.cjs.map +0 -1
  721. package/dist/inputs/number-input/number-input.css?inline.js.map +0 -1
  722. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +0 -1
  723. package/dist/inputs/otp-input/otp-input.css?inline.js.map +0 -1
  724. package/dist/inputs/radio/radio.css?inline.cjs.map +0 -1
  725. package/dist/inputs/radio/radio.css?inline.js.map +0 -1
  726. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +0 -1
  727. package/dist/inputs/radio-group/radio-group.css?inline.js.map +0 -1
  728. package/dist/inputs/rating/rating.css?inline.cjs.map +0 -1
  729. package/dist/inputs/rating/rating.css?inline.js.map +0 -1
  730. package/dist/inputs/select/select.css?inline.cjs.map +0 -1
  731. package/dist/inputs/select/select.css?inline.js.map +0 -1
  732. package/dist/inputs/slider/slider.css?inline.cjs.map +0 -1
  733. package/dist/inputs/slider/slider.css?inline.js.map +0 -1
  734. package/dist/inputs/switch/switch.css?inline.cjs.map +0 -1
  735. package/dist/inputs/switch/switch.css?inline.js.map +0 -1
  736. package/dist/inputs/textarea/textarea.css?inline.cjs +0 -2
  737. package/dist/inputs/textarea/textarea.css?inline.cjs.map +0 -1
  738. package/dist/inputs/textarea/textarea.css?inline.js +0 -6
  739. package/dist/inputs/textarea/textarea.css?inline.js.map +0 -1
  740. package/dist/inputs/time-picker/time-picker.css?inline.cjs.map +0 -1
  741. package/dist/inputs/time-picker/time-picker.css?inline.js.map +0 -1
  742. package/dist/layout/box/box.css?inline.cjs.map +0 -1
  743. package/dist/layout/box/box.css?inline.js.map +0 -1
  744. package/dist/layout/grid/grid.css?inline.cjs.map +0 -1
  745. package/dist/layout/grid/grid.css?inline.js.map +0 -1
  746. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +0 -1
  747. package/dist/layout/grid-item/grid-item.css?inline.js.map +0 -1
  748. package/dist/layout/navbar/navbar.css?inline.cjs +0 -2
  749. package/dist/layout/navbar/navbar.css?inline.cjs.map +0 -1
  750. package/dist/layout/navbar/navbar.css?inline.js +0 -6
  751. package/dist/layout/navbar/navbar.css?inline.js.map +0 -1
  752. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +0 -1
  753. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +0 -1
  754. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +0 -1
  755. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +0 -1
  756. package/dist/layout/sidebar/sidebar.css?inline.cjs +0 -2
  757. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +0 -1
  758. package/dist/layout/sidebar/sidebar.css?inline.js +0 -6
  759. package/dist/layout/sidebar/sidebar.css?inline.js.map +0 -1
  760. package/dist/ore/dist/aria.cjs +0 -2
  761. package/dist/ore/dist/aria.cjs.map +0 -1
  762. package/dist/ore/dist/aria.js +0 -37
  763. package/dist/ore/dist/aria.js.map +0 -1
  764. package/dist/ore/dist/context-bag.cjs +0 -2
  765. package/dist/ore/dist/context-bag.cjs.map +0 -1
  766. package/dist/ore/dist/context-bag.js +0 -28
  767. package/dist/ore/dist/context-bag.js.map +0 -1
  768. package/dist/ore/dist/host-bind.cjs +0 -2
  769. package/dist/ore/dist/host-bind.cjs.map +0 -1
  770. package/dist/ore/dist/host-bind.js +0 -60
  771. package/dist/ore/dist/host-bind.js.map +0 -1
  772. package/dist/ore/dist/slots.cjs +0 -2
  773. package/dist/ore/dist/slots.cjs.map +0 -1
  774. package/dist/ore/dist/slots.js +0 -61
  775. package/dist/ore/dist/slots.js.map +0 -1
  776. package/dist/ore/dist/utils/aria.cjs +0 -2
  777. package/dist/ore/dist/utils/aria.cjs.map +0 -1
  778. package/dist/ore/dist/utils/aria.js +0 -6
  779. package/dist/ore/dist/utils/aria.js.map +0 -1
  780. package/dist/ore/dist/utils/emit.cjs +0 -2
  781. package/dist/ore/dist/utils/emit.cjs.map +0 -1
  782. package/dist/ore/dist/utils/emit.js +0 -16
  783. package/dist/ore/dist/utils/emit.js.map +0 -1
  784. package/dist/overlay/dialog/dialog.css?inline.cjs.map +0 -1
  785. package/dist/overlay/dialog/dialog.css?inline.js.map +0 -1
  786. package/dist/overlay/drawer/drawer.css?inline.cjs.map +0 -1
  787. package/dist/overlay/drawer/drawer.css?inline.js.map +0 -1
  788. package/dist/overlay/menu/menu-item.css?inline.cjs.map +0 -1
  789. package/dist/overlay/menu/menu-item.css?inline.js.map +0 -1
  790. package/dist/overlay/menu/menu-separator.css?inline.cjs.map +0 -1
  791. package/dist/overlay/menu/menu-separator.css?inline.js.map +0 -1
  792. package/dist/overlay/menu/menu.css?inline.cjs +0 -2
  793. package/dist/overlay/menu/menu.css?inline.cjs.map +0 -1
  794. package/dist/overlay/menu/menu.css?inline.js +0 -6
  795. package/dist/overlay/menu/menu.css?inline.js.map +0 -1
  796. package/dist/overlay/popover/popover.css?inline.cjs.map +0 -1
  797. package/dist/overlay/popover/popover.css?inline.js.map +0 -1
  798. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +0 -1
  799. package/dist/overlay/tooltip/tooltip.css?inline.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ //#region src/feedback/toast/toast.css?inline
2
+ var e = "@layer refine.base{:host{--_position:var(--toast-position,fixed);--_inset-top:var(--toast-inset-top,auto);--_inset-bottom:var(--toast-inset-bottom,1rem);--_inset-right:var(--toast-inset-right,1rem);--_inset-left:var(--toast-inset-left,auto);--_z-index:var(--toast-z-index,var(--z-toast));--_max-width:var(--toast-max-width,400px);--_gap:var(--toast-gap,.5rem);position:var(--_position);inset:var(--_inset-top) var(--_inset-right) var(--_inset-bottom) var(--_inset-left);z-index:var(--_z-index);gap:var(--_gap);max-width:var(--_max-width);pointer-events:none;flex-direction:column;display:flex}:host([position=top-left]){--_inset-top:1rem;--_inset-bottom:auto;--_inset-left:1rem;--_inset-right:auto}:host([position=top-center]){--_inset-top:1rem;--_inset-bottom:auto;--_inset-left:50%;--_inset-right:auto;transform:translate(-50%)}:host([position=top-right]){--_inset-top:1rem;--_inset-bottom:auto;--_inset-right:1rem;--_inset-left:auto}:host([position=bottom-left]){--_inset-bottom:1rem;--_inset-left:1rem;--_inset-right:auto;--_inset-top:auto}:host([position=bottom-center]){--_inset-bottom:1rem;--_inset-left:50%;--_inset-right:auto;--_inset-top:auto;transform:translate(-50%)}:host([position=bottom-right]){--_inset-bottom:1rem;--_inset-right:1rem;--_inset-left:auto;--_inset-top:auto}.toast-container{perspective:1200px;perspective-origin:50%;transition:row-gap var(--transition-normal);grid-template-rows:1fr;grid-template-columns:1fr;row-gap:0;display:grid}.toast-live-region{display:contents}:host(.hovered) .toast-container{row-gap:var(--_gap)}:host(:not(.hovered)) .toast-wrapper{grid-area:1/1;align-self:end}:host([position^=top]:not(.hovered)) .toast-wrapper{align-self:start}.toast-wrapper{pointer-events:auto;touch-action:pan-y;position:relative}:host(:not(.hovered)) .toast-wrapper:last-child{z-index:3;transform:translateY(0)scale(1)}:host(:not(.hovered)) .toast-wrapper:nth-last-child(2){z-index:2;pointer-events:none;transform:translateY(-8px)scale(.95)}:host(:not(.hovered)) .toast-wrapper:nth-last-child(3){z-index:1;pointer-events:none;transform:translateY(-14px)scale(.9)}:host(:not(.hovered)) .toast-wrapper:nth-last-child(n+4){visibility:hidden;pointer-events:none}:host([position^=top]) .toast-wrapper{transform-origin:top}:host([position^=top]:not(.hovered)) .toast-wrapper:nth-last-child(2){transform:translateY(8px)scale(.95)}:host([position^=top]:not(.hovered)) .toast-wrapper:nth-last-child(3){transform:translateY(14px)scale(.9)}:host(.hovered) .toast-wrapper{z-index:auto;visibility:visible;pointer-events:auto;grid-area:auto/1;align-self:stretch;transform:none}:host(.hovered) .toast-wrapper:nth-last-child(2){transition-delay:var(--duration-75)}:host(.hovered) .toast-wrapper:nth-last-child(3){transition-delay:var(--duration-100)}:host(.hovered) .toast-wrapper:nth-last-child(n+4){transition-delay:var(--duration-150)}.toast-inner{opacity:1;transition:opacity var(--toast-exit-duration,.3s) var(--ease-out);position:relative}.toast-inner.entering{opacity:0;transition:none}.toast-inner.exiting{pointer-events:none;opacity:0}::slotted(ore-alert),ore-alert{width:100%;box-shadow:var(--shadow-lg);--_motion-animation:none;margin:0}.toast-actions{gap:var(--size-4);justify-content:flex-end;display:flex}@media (width<=480px){:host{--_max-width:calc(100vw - var(--size-4));--_inset-right:var(--size-2);--_inset-left:var(--size-2)}:host([position=top-center]),:host([position=bottom-center]){--_inset-left:var(--size-2);transform:none}:host([position=top-center]):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)),:host([position=bottom-center]):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:var(--size-2)}:host([position=top-center]):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:var(--size-2)}:host([position=bottom-center]):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:var(--size-2)}}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=toast.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.css.js","names":[],"sources":["../../../src/feedback/toast/toast.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_position: var(--toast-position, fixed);\n --_inset-top: var(--toast-inset-top, auto);\n --_inset-bottom: var(--toast-inset-bottom, 1rem);\n --_inset-right: var(--toast-inset-right, 1rem);\n --_inset-left: var(--toast-inset-left, auto);\n --_z-index: var(--toast-z-index, var(--z-toast));\n --_max-width: var(--toast-max-width, 400px);\n --_gap: var(--toast-gap, 0.5rem);\n\n position: var(--_position);\n inset: var(--_inset-top) var(--_inset-right) var(--_inset-bottom) var(--_inset-left);\n z-index: var(--_z-index);\n display: flex;\n flex-direction: column;\n gap: var(--_gap);\n max-width: var(--_max-width);\n pointer-events: none;\n }\n\n /* ── Position variants ────────────────────────────────────────────────── */\n\n :host([position='top-left']) {\n --_inset-top: 1rem;\n --_inset-bottom: auto;\n --_inset-left: 1rem;\n --_inset-right: auto;\n }\n\n :host([position='top-center']) {\n --_inset-top: 1rem;\n --_inset-bottom: auto;\n --_inset-left: 50%;\n --_inset-right: auto;\n\n transform: translateX(-50%);\n }\n\n :host([position='top-right']) {\n --_inset-top: 1rem;\n --_inset-bottom: auto;\n --_inset-right: 1rem;\n --_inset-left: auto;\n }\n\n :host([position='bottom-left']) {\n --_inset-bottom: 1rem;\n --_inset-left: 1rem;\n --_inset-right: auto;\n --_inset-top: auto;\n }\n\n :host([position='bottom-center']) {\n --_inset-bottom: 1rem;\n --_inset-left: 50%;\n --_inset-right: auto;\n --_inset-top: auto;\n\n transform: translateX(-50%);\n }\n\n :host([position='bottom-right']) {\n --_inset-bottom: 1rem;\n --_inset-right: 1rem;\n --_inset-left: auto;\n --_inset-top: auto;\n }\n\n /* ── Container ────────────────────────────────────────────────────────── */\n\n .toast-container {\n display: grid;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr;\n row-gap: 0;\n perspective: 1200px;\n perspective-origin: center center;\n transition: row-gap var(--transition-normal);\n }\n\n /* ARIA live regions are layout-transparent. */\n .toast-live-region {\n display: contents;\n }\n\n :host(.hovered) .toast-container {\n row-gap: var(--_gap);\n }\n\n /* ── Wrapper (layout / stacking only — no animation) ─────────────────── */\n\n /* .toast-wrapper owns: grid position, z-index, stacking transforms. */\n\n /* It never has opacity or transition set on it directly. */\n\n /* This keeps stacking rules and animation rules on separate elements, */\n\n /* eliminating all specificity conflicts and !important usage. */\n\n :host(:not(.hovered)) .toast-wrapper {\n grid-row: 1;\n grid-column: 1;\n align-self: end;\n }\n\n :host([position^='top']:not(.hovered)) .toast-wrapper {\n align-self: start;\n }\n\n .toast-wrapper {\n position: relative;\n pointer-events: auto;\n touch-action: pan-y;\n }\n\n /* Stacking (collapsed) — 3D perspective stack */\n :host(:not(.hovered)) .toast-wrapper:nth-last-child(1) {\n z-index: 3;\n transform: translateY(0) scale(1);\n }\n\n :host(:not(.hovered)) .toast-wrapper:nth-last-child(2) {\n z-index: 2;\n pointer-events: none;\n transform: translateY(-8px) scale(0.95);\n }\n\n :host(:not(.hovered)) .toast-wrapper:nth-last-child(3) {\n z-index: 1;\n pointer-events: none;\n transform: translateY(-14px) scale(0.9);\n }\n\n :host(:not(.hovered)) .toast-wrapper:nth-last-child(n + 4) {\n visibility: hidden;\n pointer-events: none;\n }\n\n /* Top positions: reverse stacking direction */\n :host([position^='top']) .toast-wrapper {\n transform-origin: center top;\n }\n\n :host([position^='top']:not(.hovered)) .toast-wrapper:nth-last-child(2) {\n transform: translateY(8px) scale(0.95);\n }\n\n :host([position^='top']:not(.hovered)) .toast-wrapper:nth-last-child(3) {\n transform: translateY(14px) scale(0.9);\n }\n\n /* Expanded (hovered) — stacking transforms are released per wrapper */\n :host(.hovered) .toast-wrapper {\n z-index: auto;\n visibility: visible;\n grid-row: auto;\n grid-column: 1;\n align-self: stretch;\n pointer-events: auto;\n transform: none;\n }\n\n /* Staggered expand delays (applied to wrapper transform only) */\n :host(.hovered) .toast-wrapper:nth-last-child(2) {\n transition-delay: var(--duration-75);\n }\n\n :host(.hovered) .toast-wrapper:nth-last-child(3) {\n transition-delay: var(--duration-100);\n }\n\n :host(.hovered) .toast-wrapper:nth-last-child(n + 4) {\n transition-delay: var(--duration-150);\n }\n\n /* ── Inner (animation target only — no layout role) ──────────────────── */\n\n /* .toast-inner owns: opacity, entry/exit transitions. */\n\n /* It never participates in stacking (that's the wrapper's job). */\n\n /* Swipe gesture also animates .toast-inner to keep wrapper state clean. */\n\n .toast-inner {\n position: relative;\n opacity: 1;\n transition: opacity var(--toast-exit-duration, 300ms) var(--ease-out);\n }\n\n /* Entry: snap to invisible with no transition, then rely on class removal to animate in */\n .toast-inner.entering {\n opacity: 0;\n transition: none;\n }\n\n /* Exit: fade out — wrapper stays in-flow so grid doesn't snap shut prematurely */\n .toast-inner.exiting {\n pointer-events: none;\n opacity: 0;\n }\n\n /* ── Alert inside toast ───────────────────────────────────────────────── */\n\n ::slotted(ore-alert),\n ore-alert {\n width: 100%;\n margin: 0;\n box-shadow: var(--shadow-lg);\n\n /* Suppress ore-alert's own collapse animation — the toast-inner opacity\n fade is the canonical exit. Passing --motion-animation: none overrides\n the @keyframes ore-alert-exit that fires on [dismissing]. */\n --_motion-animation: none;\n }\n\n /* ── Action buttons ───────────────────────────────────────────────────── */\n\n .toast-actions {\n display: flex;\n gap: var(--size-4);\n justify-content: flex-end;\n }\n\n /* ── Responsive: small screens ────────────────────────────────────────── */\n\n @media (width <= 480px) {\n :host {\n --_max-width: calc(100vw - var(--size-4));\n --_inset-right: var(--size-2);\n --_inset-left: var(--size-2);\n }\n\n :host([position='top-center']),\n :host([position='bottom-center']) {\n --_inset-left: var(--size-2);\n\n inset-inline-start: var(--size-2);\n transform: none;\n }\n }\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/feedback/toast/toast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/feedback/toast/toast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer refine.base{:host{--_dot-color:var(--typing-indicator-color,var(--_theme-base,var(--color-contrast-400)));align-items:center;display:inline-flex}.dots{gap:var(--_gap);align-items:center;display:inline-flex}.dot{width:var(--_size);height:var(--_size);background:var(--_dot-color);animation:var(--_motion-animation,typing-indicator-bounce 1.2s ease-in-out infinite);border-radius:50%;display:inline-block}.dot:nth-child(2){animation-delay:.15s}.dot:nth-child(3){animation-delay:.3s}@keyframes typing-indicator-bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-35%)}}}`;exports.default=e;
2
+ //# sourceMappingURL=typing-indicator.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing-indicator.css.cjs","names":[],"sources":["../../../src/feedback/typing-indicator/typing-indicator.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_dot-color: var(--typing-indicator-color, var(--_theme-base, var(--color-contrast-400)));\n\n display: inline-flex;\n align-items: center;\n }\n\n .dots {\n display: inline-flex;\n gap: var(--_gap);\n align-items: center;\n }\n\n .dot {\n display: inline-block;\n width: var(--_size);\n height: var(--_size);\n background: var(--_dot-color);\n border-radius: 50%;\n animation: var(--_motion-animation, typing-indicator-bounce 1.2s ease-in-out infinite);\n }\n\n .dot:nth-child(2) {\n animation-delay: 0.15s;\n }\n\n .dot:nth-child(3) {\n animation-delay: 0.3s;\n }\n\n @keyframes typing-indicator-bounce {\n 0%,\n 60%,\n 100% {\n opacity: 0.4;\n transform: translateY(0);\n }\n\n 30% {\n opacity: 1;\n transform: translateY(-35%);\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/feedback/typing-indicator/typing-indicator.css?inline
2
+ var e = "@layer refine.base{:host{--_dot-color:var(--typing-indicator-color,var(--_theme-base,var(--color-contrast-400)));align-items:center;display:inline-flex}.dots{gap:var(--_gap);align-items:center;display:inline-flex}.dot{width:var(--_size);height:var(--_size);background:var(--_dot-color);animation:var(--_motion-animation,typing-indicator-bounce 1.2s ease-in-out infinite);border-radius:50%;display:inline-block}.dot:nth-child(2){animation-delay:.15s}.dot:nth-child(3){animation-delay:.3s}@keyframes typing-indicator-bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-35%)}}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=typing-indicator.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing-indicator.css.js","names":[],"sources":["../../../src/feedback/typing-indicator/typing-indicator.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_dot-color: var(--typing-indicator-color, var(--_theme-base, var(--color-contrast-400)));\n\n display: inline-flex;\n align-items: center;\n }\n\n .dots {\n display: inline-flex;\n gap: var(--_gap);\n align-items: center;\n }\n\n .dot {\n display: inline-block;\n width: var(--_size);\n height: var(--_size);\n background: var(--_dot-color);\n border-radius: 50%;\n animation: var(--_motion-animation, typing-indicator-bounce 1.2s ease-in-out infinite);\n }\n\n .dot:nth-child(2) {\n animation-delay: 0.15s;\n }\n\n .dot:nth-child(3) {\n animation-delay: 0.3s;\n }\n\n @keyframes typing-indicator-bounce {\n 0%,\n 60%,\n 100% {\n opacity: 0.4;\n transform: translateY(0);\n }\n\n 30% {\n opacity: 1;\n transform: translateY(-35%);\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import type { ComponentSize, ThemeColor } from '../../types';
2
+ /** Typing indicator component properties */
3
+ export type OreTypingIndicatorProps = {
4
+ /** Theme color for the dots */
5
+ color?: ThemeColor;
6
+ /** Accessible label announced once via a polite live region (default: `"Typing…"`) */
7
+ label?: string;
8
+ /** Dot size preset */
9
+ size?: ComponentSize;
10
+ };
11
+ /**
12
+ * Three bouncing dots signaling that the other side of a conversation is composing a reply —
13
+ * the moment before any content exists. For a message whose content is already streaming in,
14
+ * use `ore-chat-message`'s `streaming` attribute (a blinking cursor) instead.
15
+ *
16
+ * The dots are decorative (`aria-hidden`) — `label` is the entire accessibility contract,
17
+ * announced through the shared singleton live region (`headless/announcer.ts`) rather than a
18
+ * static `aria-live` element in the template. A live region populated in the same paint as
19
+ * its own insertion is unreliable across browsers/screen readers; routing through the shared
20
+ * announcer (pre-existing region, clear-then-set) is the same pattern already used for other
21
+ * transient status messages across this package.
22
+ *
23
+ * @element ore-typing-indicator
24
+ *
25
+ * @attr {string} label - Accessible label announced once via a polite live region (default: "Typing…")
26
+ * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
27
+ * @attr {string} size - 'sm' | 'md' | 'lg'
28
+ *
29
+ * @cssprop --typing-indicator-color - Dot color
30
+ * @cssprop --typing-indicator-size - Dot diameter
31
+ * @cssprop --typing-indicator-gap - Gap between dots
32
+ *
33
+ * @part dots - Dots container.
34
+ * @part dot - Individual dot element.
35
+ * @example
36
+ * ```html
37
+ * <ore-typing-indicator></ore-typing-indicator>
38
+ * <ore-typing-indicator label="Assistant is typing…" color="primary"></ore-typing-indicator>
39
+ * ```
40
+ */
41
+ export declare const TYPING_INDICATOR_TAG: "ore-typing-indicator";
42
+ //# sourceMappingURL=typing-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing-indicator.d.ts","sourceRoot":"","sources":["../../../src/feedback/typing-indicator/typing-indicator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO7D,4CAA4C;AAC5C,MAAM,MAAM,uBAAuB,GAAG;IACpC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC"}
@@ -1,27 +1,27 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/shape.css.cjs"),t=require("./styles/mixins/theme.css.cjs"),n=require("./styles/index.cjs"),r=require("./shared/size-presets.cjs"),i=require("./headless/keyboard.cjs"),a=require("./inputs/shared/form-context.cjs"),o=require("./inputs/file-input/file-input.css?inline.cjs");let s=require("@vielzeug/ore"),c=require("@vielzeug/ripple"),l=require("@vielzeug/dnd");var u=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`,`TB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**r).toFixed(1))+` `+n[r]},d=(e,t)=>!t||e.size<=t,f=`ore-file-input`;(0,s.define)(f,{formAssociated:!0,props:{accept:s.prop.string(),color:s.prop.string(),disabled:s.prop.bool(!1),error:s.prop.string(),helper:s.prop.string(),label:s.prop.string(),"max-files":s.prop.number(0),"max-size":s.prop.number(0),multiple:s.prop.bool(!1),name:s.prop.string(),ref:s.prop.json(void 0),required:s.prop.bool(!1),size:s.prop.string()},setup(e,{bind:t,emit:n,onCleanup:r,onElement:o,onEvent:f,onMounted:p}){let m=(0,c.signal)([]),h=(0,c.signal)(!1),g=a.useFormContext(t,e,(0,s.inject)(a.FORM_CTX)),_=g.disabled,v=(0,c.computed)(()=>e[`max-files`].value??0),y=(0,c.computed)(()=>e[`max-size`].value??0);(0,s.useField)({disabled:_,toFormValue:t=>{if(t.length===0)return null;let n=e.name.value||`file`,r=new FormData;for(let e of t)r.append(n,e);return r},value:m});let b=(0,c.computed)(()=>!!e.error.value);t({attr:{"drag-over":()=>h.value?!0:void 0,invalid:()=>b.value?!0:void 0,size:g.size}});let x=(0,s.createStableId)(`file-input`),S=`label-${x}`,C=`helper-${x}`,w=`error-${x}`,T=(0,s.ref)(),E=(0,s.ref)(),D=(0,c.computed)(()=>{let t=[];e.accept.value&&t.push(e.accept.value.split(`,`).map(e=>e.trim()).join(`, `));let n=y.value;n>0&&t.push(`max ${u(n)}`);let r=v.value;return r>0&&t.push(`up to ${r} file${r===1?``:`s`}`),t.join(` · `)});function O(t,r){if(_.value)return;let i=e.accept.value,a=!!e.multiple.value,o=Array.from(t);a||(o=o.slice(0,1)),o=o.filter(e=>(0,l.matchesAccept)(e,i?i.split(`,`).map(e=>e.trim()):[])&&d(e,y.value));let s=a?[...m.value]:[];for(let e of o)s.includes(e)||s.push(e);v.value>0&&s.length>v.value&&(s=s.slice(0,v.value)),m.value=s,n(`change`,{files:m.value,originalEvent:r,value:m.value})}function k(e,t){m.value=m.value.filter(t=>t!==e),n(`remove`,{file:e,files:m.value,originalEvent:t,value:m.value}),n(`change`,{files:m.value,originalEvent:t,value:m.value})}return o(E,t=>{e.ref.value?.(t);let n=(0,c.watch)(e.ref,e=>{e?.(t)});return()=>{n.dispose(),e.ref.value?.(null)}}),p(()=>{let e=E.value,t=T.value,n=!1,a=i.createInteraction({disabled:_,onPress:()=>{e.click()}});f(e,`change`,e=>{let t=e.target;t.files?.length&&O(Array.from(t.files),e),t.value=``}),f(t,`click`,t=>{if(t.target!==e){if(n){n=!1;return}_.value||e.click()}}),f(t,`keydown`,e=>{n=a.handleKeydown(e)&&e.key===`Enter`});let o=(0,l.createDropZone)({disabled:_.value,element:t,onDrop:e=>O(e),onHoverChange:e=>{h.value=e}});r(()=>o.dispose())}),s.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/shape.css.cjs"),t=require("./styles/mixins/theme.css.cjs"),n=require("./styles/index.cjs"),r=require("./shared/size-presets.cjs"),i=require("./headless/keyboard.cjs"),a=require("./ore/dist/forms/field.cjs");require("./ore/dist/forms.cjs");const o=require("./inputs/shared/form-context.cjs"),s=require("./inputs/file-input/file-input.css.cjs");let c=require("@vielzeug/ore"),l=require("@vielzeug/ripple"),u=require("@vielzeug/dnd");var d=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`,`TB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**r).toFixed(1))+` `+n[r]},f=(e,t)=>!t||e.size<=t,p=e=>e.type.startsWith(`image/`),m=`ore-file-input`;(0,c.define)(m,{formAssociated:!0,props:{accept:c.prop.string(),color:c.prop.string(),disabled:c.prop.bool(!1),error:c.prop.string(),gallery:c.prop.bool(!1),helper:c.prop.string(),label:c.prop.string(),"max-files":c.prop.number(0),"max-size":c.prop.number(0),multiple:c.prop.bool(!1),name:c.prop.string(),ref:c.prop.json(void 0),required:c.prop.bool(!1),size:c.prop.string()},setup(e){let t=(0,c.useEmit)(),n=(0,l.signal)([]),r=(0,l.signal)(!1),s=o.useFormContext(e,(0,c.inject)(o.FORM_CTX)),m=s.disabled,h=(0,l.computed)(()=>e[`max-files`].value??0),g=(0,l.computed)(()=>e[`max-size`].value??0);a.useField({disabled:m,toFormValue:t=>{if(t.length===0)return null;let n=e.name.value||`file`,r=new FormData;for(let e of t)r.append(n,e);return r},value:n});let _=(0,l.computed)(()=>!!e.error.value);(0,c.bind)({attr:{"drag-over":()=>r.value?!0:void 0,invalid:()=>_.value?!0:void 0,size:s.size}});let v=(0,c.createStableId)(`file-input`),y=`label-${v}`,b=`helper-${v}`,x=`error-${v}`,S=(0,c.ref)(),C=(0,c.ref)(),w=(0,l.computed)(()=>{let t=[];e.accept.value&&t.push(e.accept.value.split(`,`).map(e=>e.trim()).join(`, `));let n=g.value;n>0&&t.push(`max ${d(n)}`);let r=h.value;return r>0&&t.push(`up to ${r} file${r===1?``:`s`}`),t.join(` · `)});function T(r,i){if(m.value)return;let a=e.accept.value,o=!!e.multiple.value,s=Array.from(r);o||(s=s.slice(0,1)),s=s.filter(e=>(0,u.matchesAccept)(e,a?a.split(`,`).map(e=>e.trim()):[])&&f(e,g.value));let c=o?[...n.value]:[];for(let e of s)c.includes(e)||c.push(e);h.value>0&&c.length>h.value&&(c=c.slice(0,h.value)),n.value=c,t(`change`,{files:n.value,originalEvent:i,value:n.value})}function E(e,r){n.value=n.value.filter(t=>t!==e),t(`remove`,{file:e,files:n.value,originalEvent:r,value:n.value}),t(`change`,{files:n.value,originalEvent:r,value:n.value})}let D=new Map;function O(e){let t=D.get(e);return t||(t=URL.createObjectURL(e),D.set(e,t)),t}function k(e){let t=new Set(e);for(let[e,n]of D)t.has(e)||(URL.revokeObjectURL(n),D.delete(e))}return(0,l.watch)(n,k),(0,c.onCleanup)(()=>{for(let e of D.values())URL.revokeObjectURL(e);D.clear()}),(0,c.onElement)(C,t=>{e.ref.value?.(t);let n=(0,l.watch)(e.ref,e=>{e?.(t)});return()=>{n.dispose(),e.ref.value?.(null)}}),(0,c.onMounted)(()=>{let e=C.value,t=S.value,n=!1,a=i.createInteraction({disabled:m,onPress:()=>{e.click()}});(0,c.onEvent)(e,`change`,e=>{let t=e.target;t.files?.length&&T(Array.from(t.files),e),t.value=``}),(0,c.onEvent)(t,`click`,t=>{if(t.target!==e){if(n){n=!1;return}m.value||e.click()}}),(0,c.onEvent)(t,`keydown`,e=>{n=a.handleKeydown(e)&&e.key===`Enter`});let o=(0,u.createDropZone)({disabled:m.value,element:t,onDrop:e=>T(e),onHoverChange:e=>{r.value=e}});(0,c.onCleanup)(()=>o.dispose())}),c.html`
2
2
  <div class="file-input-wrapper" part="wrapper">
3
- <label class="label-outside" id="${S}" part="label" ?hidden=${()=>!e.label.value}
3
+ <label class="label-outside" id="${y}" part="label" ?hidden=${()=>!e.label.value}
4
4
  >${e.label}</label
5
5
  >
6
6
  <div
7
7
  class="dropzone"
8
8
  part="dropzone"
9
- ref=${T}
9
+ ref=${S}
10
10
  role="button"
11
- :tabindex="${()=>_.value?`-1`:`0`}"
12
- :aria-disabled="${()=>String(_.value)}"
11
+ :tabindex="${()=>m.value?`-1`:`0`}"
12
+ :aria-disabled="${()=>String(m.value)}"
13
13
  :aria-label="${()=>e.label.value?null:`File upload drop zone`}"
14
- :aria-labelledby="${()=>e.label.value?S:null}"
15
- aria-describedby="${C}">
14
+ :aria-labelledby="${()=>e.label.value?y:null}"
15
+ aria-describedby="${b}">
16
16
  <input
17
17
  type="file"
18
- ref=${E}
18
+ ref=${C}
19
19
  part="input"
20
- id="${x}"
20
+ id="${v}"
21
21
  :accept="${e.accept}"
22
22
  ?multiple="${e.multiple}"
23
23
  ?required="${e.required}"
24
- ?disabled="${_}"
24
+ ?disabled="${m}"
25
25
  :name="${e.name}"
26
26
  hidden
27
27
  inert
@@ -31,40 +31,62 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
31
31
  <ore-icon name="upload" size="36" stroke-width="1.5" aria-hidden="true"></ore-icon>
32
32
  </span>
33
33
  <span class="dropzone-title">Drop files here or <u>click to browse</u></span>
34
- <span class="dropzone-hint" ?hidden=${()=>!D.value}>${D}</span>
34
+ <span class="dropzone-hint" ?hidden=${()=>!w.value}>${w}</span>
35
35
  </div>
36
36
  </div>
37
- <ul class="file-list" role="list" aria-label="Selected files" ?hidden=${()=>m.value.length===0}>
38
- ${()=>m.value.map(e=>s.html`
39
- <li class="file-item">
40
- <span class="file-icon" aria-hidden="true">
41
- <ore-icon name="file" size="18" stroke-width="1.75" aria-hidden="true"></ore-icon>
42
- </span>
43
- <span class="file-meta">
44
- <span class="file-name" title="${e.name}">${e.name}</span>
45
- <span class="file-size">${u(e.size)}</span>
46
- </span>
47
- <button
48
- class="file-remove"
49
- type="button"
50
- aria-label="${`Remove ${e.name}`}"
51
- @click=${t=>k(e,t)}>
52
- <ore-icon name="x" size="12" stroke-width="2.5" aria-hidden="true"></ore-icon>
53
- </button>
54
- </li>
55
- `)}
37
+ <ul
38
+ class="${()=>e.gallery.value?`file-grid`:`file-list`}"
39
+ part="${()=>e.gallery.value?`gallery`:null}"
40
+ role="list"
41
+ aria-label="Selected files"
42
+ ?hidden=${()=>n.value.length===0}>
43
+ ${()=>n.value.map(t=>e.gallery.value?c.html`
44
+ <li class="file-card">
45
+ ${p(t)?c.html`<img
46
+ class="file-thumb"
47
+ alt=""
48
+ ref="${e=>{e&&(e.src=O(t))}}" />`:c.html`<span class="file-thumb file-thumb-generic" aria-hidden="true">
49
+ <ore-icon name="file" size="28" stroke-width="1.5" aria-hidden="true"></ore-icon>
50
+ </span>`}
51
+ <span class="file-card-name" title="${t.name}">${t.name}</span>
52
+ <button
53
+ class="file-card-remove"
54
+ type="button"
55
+ aria-label="${`Remove ${t.name}`}"
56
+ @click=${e=>E(t,e)}>
57
+ <ore-icon name="x" size="12" stroke-width="2.5" aria-hidden="true"></ore-icon>
58
+ </button>
59
+ </li>
60
+ `:c.html`
61
+ <li class="file-item">
62
+ <span class="file-icon" aria-hidden="true">
63
+ <ore-icon name="file" size="18" stroke-width="1.75" aria-hidden="true"></ore-icon>
64
+ </span>
65
+ <span class="file-meta">
66
+ <span class="file-name" title="${t.name}">${t.name}</span>
67
+ <span class="file-size">${d(t.size)}</span>
68
+ </span>
69
+ <button
70
+ class="file-remove"
71
+ type="button"
72
+ aria-label="${`Remove ${t.name}`}"
73
+ @click=${e=>E(t,e)}>
74
+ <ore-icon name="x" size="12" stroke-width="2.5" aria-hidden="true"></ore-icon>
75
+ </button>
76
+ </li>
77
+ `)}
56
78
  </ul>
57
- <div class="helper-text" id="${C}" part="helper" ?hidden=${()=>b.value||!e.helper.value}>
79
+ <div class="helper-text" id="${b}" part="helper" ?hidden=${()=>_.value||!e.helper.value}>
58
80
  ${e.helper}
59
81
  </div>
60
82
  <div
61
83
  class="helper-text helper-text-error"
62
- id="${w}"
84
+ id="${x}"
63
85
  role="alert"
64
86
  part="error"
65
- ?hidden=${()=>!b.value}>
87
+ ?hidden=${()=>!_.value}>
66
88
  ${()=>e.error.value??``}
67
89
  </div>
68
90
  </div>
69
- `},shadow:{delegatesFocus:!0},styles:[...n.fieldMixins,e.sizeVariantMixin(r.FILE_INPUT_SIZE_PRESET),t.forcedColorsFocusMixin(`.dropzone`),o.default]}),exports.FILE_INPUT_TAG=f;
91
+ `},shadow:{delegatesFocus:!0},styles:[...n.fieldMixins,e.sizeVariantMixin(r.FILE_INPUT_SIZE_PRESET),t.forcedColorsFocusMixin(`.dropzone`),s.default]}),exports.FILE_INPUT_TAG=m;
70
92
  //# sourceMappingURL=file-input.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-input.cjs","names":[],"sources":["../src/inputs/file-input/file-input.ts"],"sourcesContent":["import { createDropZone, matchesAccept } from '@vielzeug/dnd';\nimport { createStableId, define, useField, html, inject, prop, ref } from '@vielzeug/ore';\nimport { computed, signal, watch } from '@vielzeug/ripple';\n\nimport { createInteraction } from '../../headless';\nimport { FILE_INPUT_SIZE_PRESET } from '../../shared';\nimport { fieldMixins, forcedColorsFocusMixin, sizeVariantMixin } from '../../styles';\nimport { FORM_CTX, useFormContext } from '../shared/form-context';\nimport componentStyles from './file-input.css?inline';\n\nconst formatBytes = (bytes: number) => {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];\n};\n\nconst isFileSizeAllowed = (file: File, maxSize?: number) => !maxSize || file.size <= maxSize;\n\n/** File input component properties */\nexport type OreFileInputProps = {\n /** Accepted file types (comma-separated, e.g. '.jpg, .png, image/*') */\n accept?: string;\n /** Theme color tint */\n color?: string;\n /** Disabled state */\n disabled?: boolean;\n /** Error message text */\n error?: string;\n /** Helper text displayed below the input */\n helper?: string;\n /** Input label text */\n label?: string;\n /** Max number of files allowed (only used if multiple is true) */\n 'max-files'?: number;\n /** Max size of a single file in bytes */\n 'max-size'?: number;\n /** Allow multiple files selection */\n multiple?: boolean;\n /** Form field name */\n name?: string;\n /**\n * JS-only callback fired with the inner `<input type=\"file\">` element when it\n * mounts, and with `null` when it unmounts. Intended for composed components\n * that need imperative access to the raw element.\n * Set as a JS property: `bitFileInput.ref = (el) => { ... }`.\n */\n ref?: ((el: HTMLInputElement | null) => void) | null;\n /** Required field */\n required?: boolean;\n /** Field size preset */\n size?: string;\n};\n\n/** Events emitted by the file-input component */\nexport type OreFileInputEvents = {\n /** Emitted when files are added or removed */\n change: { files: File[]; originalEvent?: Event; value: File[] };\n /** Emitted when a specific file is removed */\n remove: { file: File; files: File[]; originalEvent?: Event; value: File[] };\n};\n\n/**\n * A file upload field with drag-and-drop support and built-in validation messaging.\n *\n * @element ore-file-input\n *\n * @attr {string} accept - Comma-separated file extensions or MIME types\n * @attr {boolean} multiple - Enable multiple files selection\n * @attr {number} max-files - Max number of files allowed\n * @attr {number} max-size - Max size of each file in bytes\n * @attr {boolean} disabled - Disable interaction\n * @attr {string} error - Show an error state/message\n * @attr {string} helper - Provide helper context below the dropzone\n *\n * @fires change - detail: { files: File[], value: File[] }\n * @fires remove - detail: { file: File, files: File[] }\n *\n * @cssprop --file-input-bg - Dropzone background color\n * @cssprop --file-input-border-color - Dropzone border color\n * @cssprop --file-input-font-size - Font size\n * @cssprop --file-input-radius - Dropzone border radius\n * @cssprop --file-input-min-height - Minimum dropzone height\n * @cssprop --file-input-hover-bg - Dropzone background on hover (flat/ghost variants)\n * @cssprop --file-input-hover-border-color - Dropzone border on hover (flat/bordered variants)\n * @cssprop --file-input-focus-bg - Dropzone background when focused/drag-over (flat variant)\n * @cssprop --file-input-focus-border-color - Dropzone border when focused/drag-over (flat variant)\n * @part wrapper - Root wrapper around the file input field\n * @part label - Visible label rendered above the dropzone\n * @part dropzone - Interactive drag-and-drop target\n * @part input - Native file input element\n * @part helper - Helper text shown beneath the dropzone\n * @part error - Error message shown beneath the field\n * @example\n * ```html\n * <ore-file-input label=\"Upload files\" accept=\"image/*\" multiple />\n * <ore-file-input label=\"Resume\" accept=\".pdf,.doc,.docx\" max-size=\"5242880\" />\n * <ore-file-input variant=\"bordered\" color=\"primary\" />\n * ```\n */\nexport const FILE_INPUT_TAG = 'ore-file-input' as const;\ndefine<OreFileInputProps, OreFileInputEvents>(FILE_INPUT_TAG, {\n formAssociated: true,\n props: {\n accept: prop.string(),\n color: prop.string(),\n disabled: prop.bool(false),\n error: prop.string(),\n helper: prop.string(),\n label: prop.string(),\n 'max-files': prop.number(0),\n 'max-size': prop.number(0),\n multiple: prop.bool(false),\n name: prop.string(),\n ref: prop.json(undefined as ((el: HTMLInputElement | null) => void) | null | undefined),\n required: prop.bool(false),\n size: prop.string(),\n },\n setup(props, { bind, emit, onCleanup, onElement, onEvent, onMounted }) {\n // ============================================\n // State\n // ============================================\n\n const files = signal<File[]>([]);\n const isDragging = signal(false);\n const formCtx = inject(FORM_CTX);\n const fCtxProps = useFormContext(bind, props, formCtx);\n const isDisabled = fCtxProps.disabled;\n const maxFilesLimit = computed(() => props['max-files'].value ?? 0);\n const maxSizeLimit = computed(() => props['max-size'].value ?? 0);\n\n // ============================================\n // Form Integration\n // ============================================\n\n useField({\n disabled: isDisabled,\n toFormValue: (fi: File[]) => {\n if (fi.length === 0) return null;\n\n const name = props.name.value || 'file';\n const fd = new FormData();\n\n for (const file of fi) fd.append(name, file);\n\n return fd;\n },\n value: files,\n });\n\n // Sync host attributes for CSS selectors\n const isInvalid = computed(() => Boolean(props.error.value));\n\n bind({\n attr: {\n 'drag-over': () => (isDragging.value ? true : undefined),\n invalid: () => (isInvalid.value ? true : undefined),\n size: fCtxProps.size,\n },\n });\n\n // ============================================\n // IDs\n // ============================================\n const fileInputId = createStableId('file-input');\n const labelId = `label-${fileInputId}`;\n const helperId = `helper-${fileInputId}`;\n const errorId = `error-${fileInputId}`;\n\n // ============================================\n // Refs\n // ============================================\n const dropzoneRef = ref<HTMLDivElement>();\n const inputRef = ref<HTMLInputElement>();\n const hintText = computed(() => {\n const parts: string[] = [];\n\n if (props.accept.value) {\n parts.push(\n props.accept.value\n .split(',')\n .map((s: string) => s.trim())\n .join(', '),\n );\n }\n\n const maxSize = maxSizeLimit.value;\n\n if (maxSize > 0) parts.push(`max ${formatBytes(maxSize)}`);\n\n const maxFiles = maxFilesLimit.value;\n\n if (maxFiles > 0) parts.push(`up to ${maxFiles} file${maxFiles !== 1 ? 's' : ''}`);\n\n return parts.join(' · ');\n });\n\n // ============================================\n // File Management\n // ============================================\n function addFiles(newFiles: File[], originalEvent?: Event): void {\n if (isDisabled.value) return;\n\n const acceptVal = props.accept.value;\n const isMultiple = Boolean(props.multiple.value);\n let incoming = Array.from(newFiles);\n\n if (!isMultiple) incoming = incoming.slice(0, 1);\n\n incoming = incoming.filter(\n (f) =>\n matchesAccept(f, acceptVal ? acceptVal.split(',').map((t) => t.trim()) : []) &&\n isFileSizeAllowed(f, maxSizeLimit.value),\n );\n\n let updated: File[] = isMultiple ? [...files.value] : [];\n\n for (const f of incoming) {\n if (!updated.includes(f)) updated.push(f);\n }\n\n if (maxFilesLimit.value > 0 && updated.length > maxFilesLimit.value) {\n updated = updated.slice(0, maxFilesLimit.value);\n }\n\n files.value = updated;\n emit('change', { files: files.value, originalEvent, value: files.value });\n }\n function removeFile(file: File, originalEvent?: Event): void {\n files.value = files.value.filter((f) => f !== file);\n emit('remove', { file, files: files.value, originalEvent, value: files.value });\n emit('change', { files: files.value, originalEvent, value: files.value });\n }\n\n // ============================================\n // Mount\n // ============================================\n // ============================================\n // Template\n // ============================================\n onElement(inputRef, (inp) => {\n props.ref.value?.(inp);\n\n const sub = watch(props.ref, (cb) => {\n cb?.(inp);\n });\n\n return () => {\n sub.dispose();\n props.ref.value?.(null);\n };\n });\n\n onMounted(() => {\n const inp = inputRef.value!;\n const dz = dropzoneRef.value!;\n let skipNextClick = false;\n const pressControl = createInteraction({\n disabled: isDisabled,\n onPress: () => {\n inp.click();\n },\n });\n\n // Native input → add files\n onEvent(inp, 'change', (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n if (input.files?.length) addFiles(Array.from(input.files), e);\n\n input.value = ''; // reset so the same file triggers change again\n });\n // Click dropzone → open file picker\n onEvent(dz, 'click', (e: MouseEvent) => {\n if (e.target === inp) return;\n\n if (skipNextClick) {\n skipNextClick = false;\n\n return;\n }\n\n if (!isDisabled.value) inp.click();\n });\n // Keyboard: Enter / Space → open picker\n onEvent(dz, 'keydown', (e: KeyboardEvent) => {\n skipNextClick = pressControl.handleKeydown(e) && e.key === 'Enter';\n });\n\n const dropZone = createDropZone({\n disabled: isDisabled.value,\n element: dz,\n onDrop: (droppedFiles) => addFiles(droppedFiles),\n onHoverChange: (hovered) => {\n isDragging.value = hovered;\n },\n });\n\n onCleanup(() => dropZone.dispose());\n });\n\n return html`\n <div class=\"file-input-wrapper\" part=\"wrapper\">\n <label class=\"label-outside\" id=\"${labelId}\" part=\"label\" ?hidden=${() => !props.label.value}\n >${props.label}</label\n >\n <div\n class=\"dropzone\"\n part=\"dropzone\"\n ref=${dropzoneRef}\n role=\"button\"\n :tabindex=\"${() => (isDisabled.value ? '-1' : '0')}\"\n :aria-disabled=\"${() => String(isDisabled.value)}\"\n :aria-label=\"${() => (!props.label.value ? 'File upload drop zone' : null)}\"\n :aria-labelledby=\"${() => (props.label.value ? labelId : null)}\"\n aria-describedby=\"${helperId}\">\n <input\n type=\"file\"\n ref=${inputRef}\n part=\"input\"\n id=\"${fileInputId}\"\n :accept=\"${props.accept}\"\n ?multiple=\"${props.multiple}\"\n ?required=\"${props.required}\"\n ?disabled=\"${isDisabled}\"\n :name=\"${props.name}\"\n hidden\n inert\n tabindex=\"-1\" />\n <div class=\"dropzone-content\">\n <span class=\"dropzone-icon\" aria-hidden=\"true\">\n <ore-icon name=\"upload\" size=\"36\" stroke-width=\"1.5\" aria-hidden=\"true\"></ore-icon>\n </span>\n <span class=\"dropzone-title\">Drop files here or <u>click to browse</u></span>\n <span class=\"dropzone-hint\" ?hidden=${() => !hintText.value}>${hintText}</span>\n </div>\n </div>\n <ul class=\"file-list\" role=\"list\" aria-label=\"Selected files\" ?hidden=${() => files.value.length === 0}>\n ${() =>\n files.value.map(\n (file: File) => html`\n <li class=\"file-item\">\n <span class=\"file-icon\" aria-hidden=\"true\">\n <ore-icon name=\"file\" size=\"18\" stroke-width=\"1.75\" aria-hidden=\"true\"></ore-icon>\n </span>\n <span class=\"file-meta\">\n <span class=\"file-name\" title=\"${file.name}\">${file.name}</span>\n <span class=\"file-size\">${formatBytes(file.size)}</span>\n </span>\n <button\n class=\"file-remove\"\n type=\"button\"\n aria-label=\"${`Remove ${file.name}`}\"\n @click=${(e: Event) => removeFile(file, e)}>\n <ore-icon name=\"x\" size=\"12\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>\n `,\n )}\n </ul>\n <div class=\"helper-text\" id=\"${helperId}\" part=\"helper\" ?hidden=${() => isInvalid.value || !props.helper.value}>\n ${props.helper}\n </div>\n <div\n class=\"helper-text helper-text-error\"\n id=\"${errorId}\"\n role=\"alert\"\n part=\"error\"\n ?hidden=${() => !isInvalid.value}>\n ${() => props.error.value ?? ''}\n </div>\n </div>\n `;\n },\n shadow: { delegatesFocus: true },\n styles: [\n ...fieldMixins,\n sizeVariantMixin(FILE_INPUT_SIZE_PRESET),\n forcedColorsFocusMixin('.dropzone'),\n componentStyles,\n ],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"file-input.cjs","names":[],"sources":["../src/inputs/file-input/file-input.ts"],"sourcesContent":["import { createDropZone, matchesAccept } from '@vielzeug/dnd';\nimport {\n createStableId,\n define,\n html,\n inject,\n prop,\n ref,\n bind,\n onCleanup,\n onElement,\n onEvent,\n onMounted,\n useEmit,\n} from '@vielzeug/ore';\nimport { useField } from '@vielzeug/ore/forms';\nimport { computed, signal, watch } from '@vielzeug/ripple';\n\nimport { createInteraction } from '../../headless';\nimport { FILE_INPUT_SIZE_PRESET } from '../../shared';\nimport { fieldMixins, forcedColorsFocusMixin, sizeVariantMixin } from '../../styles';\nimport { FORM_CTX, useFormContext } from '../shared/form-context';\nimport componentStyles from './file-input.css?inline';\n\nconst formatBytes = (bytes: number) => {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];\n};\n\nconst isFileSizeAllowed = (file: File, maxSize?: number) => !maxSize || file.size <= maxSize;\n\nconst isImageFile = (file: File): boolean => file.type.startsWith('image/');\n\n/** File input component properties */\nexport type OreFileInputProps = {\n /** Accepted file types (comma-separated, e.g. '.jpg, .png, image/*') */\n accept?: string;\n /** Theme color tint */\n color?: string;\n /** Disabled state */\n disabled?: boolean;\n /** Error message text */\n error?: string;\n /**\n * Render selected files as a grid of image thumbnails/previews instead of the default\n * single-column list. Non-image files fall back to a generic file icon in the same grid.\n */\n gallery?: boolean;\n /** Helper text displayed below the input */\n helper?: string;\n /** Input label text */\n label?: string;\n /** Max number of files allowed (only used if multiple is true) */\n 'max-files'?: number;\n /** Max size of a single file in bytes */\n 'max-size'?: number;\n /** Allow multiple files selection */\n multiple?: boolean;\n /** Form field name */\n name?: string;\n /**\n * JS-only callback fired with the inner `<input type=\"file\">` element when it\n * mounts, and with `null` when it unmounts. Intended for composed components\n * that need imperative access to the raw element.\n * Set as a JS property: `bitFileInput.ref = (el) => { ... }`.\n */\n ref?: ((el: HTMLInputElement | null) => void) | null;\n /** Required field */\n required?: boolean;\n /** Field size preset */\n size?: string;\n};\n\n/** Events emitted by the file-input component */\nexport type OreFileInputEvents = {\n /** Emitted when files are added or removed */\n change: { files: File[]; originalEvent?: Event; value: File[] };\n /** Emitted when a specific file is removed */\n remove: { file: File; files: File[]; originalEvent?: Event; value: File[] };\n};\n\n/**\n * A file upload field with drag-and-drop support and built-in validation messaging.\n *\n * @element ore-file-input\n *\n * @attr {string} accept - Comma-separated file extensions or MIME types\n * @attr {boolean} multiple - Enable multiple files selection\n * @attr {boolean} gallery - Show selected files as an image thumbnail/preview grid\n * @attr {number} max-files - Max number of files allowed\n * @attr {number} max-size - Max size of each file in bytes\n * @attr {boolean} disabled - Disable interaction\n * @attr {string} error - Show an error state/message\n * @attr {string} helper - Provide helper context below the dropzone\n *\n * @fires change - detail: { files: File[], value: File[] }\n * @fires remove - detail: { file: File, files: File[] }\n *\n * @cssprop --file-input-bg - Dropzone background color\n * @cssprop --file-input-border-color - Dropzone border color\n * @cssprop --file-input-font-size - Font size\n * @cssprop --file-input-radius - Dropzone border radius\n * @cssprop --file-input-min-height - Minimum dropzone height\n * @cssprop --file-input-hover-bg - Dropzone background on hover (flat/ghost variants)\n * @cssprop --file-input-hover-border-color - Dropzone border on hover (flat/bordered variants)\n * @cssprop --file-input-focus-bg - Dropzone background when focused/drag-over (flat variant)\n * @cssprop --file-input-focus-border-color - Dropzone border when focused/drag-over (flat variant)\n * @cssprop --file-input-thumb-size - Gallery thumbnail width/height\n * @part wrapper - Root wrapper around the file input field\n * @part label - Visible label rendered above the dropzone\n * @part dropzone - Interactive drag-and-drop target\n * @part input - Native file input element\n * @part gallery - Gallery grid container (rendered instead of `file-list` when `gallery` is set)\n * @part helper - Helper text shown beneath the dropzone\n * @part error - Error message shown beneath the field\n * @example\n * ```html\n * <ore-file-input label=\"Upload files\" accept=\"image/*\" multiple />\n * <ore-file-input label=\"Photos\" accept=\"image/*\" multiple gallery />\n * <ore-file-input label=\"Resume\" accept=\".pdf,.doc,.docx\" max-size=\"5242880\" />\n * <ore-file-input variant=\"bordered\" color=\"primary\" />\n * ```\n */\nexport const FILE_INPUT_TAG = 'ore-file-input' as const;\ndefine<OreFileInputProps>(FILE_INPUT_TAG, {\n formAssociated: true,\n props: {\n accept: prop.string(),\n color: prop.string(),\n disabled: prop.bool(false),\n error: prop.string(),\n gallery: prop.bool(false),\n helper: prop.string(),\n label: prop.string(),\n 'max-files': prop.number(0),\n 'max-size': prop.number(0),\n multiple: prop.bool(false),\n name: prop.string(),\n ref: prop.json(undefined as ((el: HTMLInputElement | null) => void) | null | undefined),\n required: prop.bool(false),\n size: prop.string(),\n },\n setup(props) {\n const emit = useEmit<OreFileInputEvents>();\n\n // ============================================\n // State\n // ============================================\n\n const files = signal<File[]>([]);\n const isDragging = signal(false);\n const formCtx = inject(FORM_CTX);\n const fCtxProps = useFormContext(props, formCtx);\n const isDisabled = fCtxProps.disabled;\n const maxFilesLimit = computed(() => props['max-files'].value ?? 0);\n const maxSizeLimit = computed(() => props['max-size'].value ?? 0);\n\n // ============================================\n // Form Integration\n // ============================================\n\n useField({\n disabled: isDisabled,\n toFormValue: (fi: File[]) => {\n if (fi.length === 0) return null;\n\n const name = props.name.value || 'file';\n const fd = new FormData();\n\n for (const file of fi) fd.append(name, file);\n\n return fd;\n },\n value: files,\n });\n\n // Sync host attributes for CSS selectors\n const isInvalid = computed(() => Boolean(props.error.value));\n\n bind({\n attr: {\n 'drag-over': () => (isDragging.value ? true : undefined),\n invalid: () => (isInvalid.value ? true : undefined),\n size: fCtxProps.size,\n },\n });\n\n // ============================================\n // IDs\n // ============================================\n const fileInputId = createStableId('file-input');\n const labelId = `label-${fileInputId}`;\n const helperId = `helper-${fileInputId}`;\n const errorId = `error-${fileInputId}`;\n\n // ============================================\n // Refs\n // ============================================\n const dropzoneRef = ref<HTMLDivElement>();\n const inputRef = ref<HTMLInputElement>();\n const hintText = computed(() => {\n const parts: string[] = [];\n\n if (props.accept.value) {\n parts.push(\n props.accept.value\n .split(',')\n .map((s: string) => s.trim())\n .join(', '),\n );\n }\n\n const maxSize = maxSizeLimit.value;\n\n if (maxSize > 0) parts.push(`max ${formatBytes(maxSize)}`);\n\n const maxFiles = maxFilesLimit.value;\n\n if (maxFiles > 0) parts.push(`up to ${maxFiles} file${maxFiles !== 1 ? 's' : ''}`);\n\n return parts.join(' · ');\n });\n\n // ============================================\n // File Management\n // ============================================\n function addFiles(newFiles: File[], originalEvent?: Event): void {\n if (isDisabled.value) return;\n\n const acceptVal = props.accept.value;\n const isMultiple = Boolean(props.multiple.value);\n let incoming = Array.from(newFiles);\n\n if (!isMultiple) incoming = incoming.slice(0, 1);\n\n incoming = incoming.filter(\n (f) =>\n matchesAccept(f, acceptVal ? acceptVal.split(',').map((t) => t.trim()) : []) &&\n isFileSizeAllowed(f, maxSizeLimit.value),\n );\n\n let updated: File[] = isMultiple ? [...files.value] : [];\n\n for (const f of incoming) {\n if (!updated.includes(f)) updated.push(f);\n }\n\n if (maxFilesLimit.value > 0 && updated.length > maxFilesLimit.value) {\n updated = updated.slice(0, maxFilesLimit.value);\n }\n\n files.value = updated;\n emit('change', { files: files.value, originalEvent, value: files.value });\n }\n function removeFile(file: File, originalEvent?: Event): void {\n files.value = files.value.filter((f) => f !== file);\n emit('remove', { file, files: files.value, originalEvent, value: files.value });\n emit('change', { files: files.value, originalEvent, value: files.value });\n }\n\n // ============================================\n // Gallery Preview URLs\n // ============================================\n // Object URLs are created lazily (only while `gallery` is enabled) and revoked as soon\n // as their file is no longer selected, plus unconditionally on disconnect — otherwise\n // each preview leaks its backing blob for the life of the page.\n const previewUrls = new Map<File, string>();\n\n function getPreviewUrl(file: File): string {\n let url = previewUrls.get(file);\n\n if (!url) {\n url = URL.createObjectURL(file);\n previewUrls.set(file, url);\n }\n\n return url;\n }\n\n function revokeStalePreviewUrls(activeFiles: File[]): void {\n const keep = new Set(activeFiles);\n\n for (const [file, url] of previewUrls) {\n if (!keep.has(file)) {\n URL.revokeObjectURL(url);\n previewUrls.delete(file);\n }\n }\n }\n\n watch(files, revokeStalePreviewUrls);\n\n onCleanup(() => {\n for (const url of previewUrls.values()) URL.revokeObjectURL(url);\n\n previewUrls.clear();\n });\n\n // ============================================\n // Mount\n // ============================================\n // ============================================\n // Template\n // ============================================\n onElement(inputRef, (inp) => {\n props.ref.value?.(inp);\n\n const sub = watch(props.ref, (cb) => {\n cb?.(inp);\n });\n\n return () => {\n sub.dispose();\n props.ref.value?.(null);\n };\n });\n\n onMounted(() => {\n const inp = inputRef.value!;\n const dz = dropzoneRef.value!;\n let skipNextClick = false;\n const pressControl = createInteraction({\n disabled: isDisabled,\n onPress: () => {\n inp.click();\n },\n });\n\n // Native input → add files\n onEvent(inp, 'change', (e: Event) => {\n const input = e.target as HTMLInputElement;\n\n if (input.files?.length) addFiles(Array.from(input.files), e);\n\n input.value = ''; // reset so the same file triggers change again\n });\n // Click dropzone → open file picker\n onEvent(dz, 'click', (e: MouseEvent) => {\n if (e.target === inp) return;\n\n if (skipNextClick) {\n skipNextClick = false;\n\n return;\n }\n\n if (!isDisabled.value) inp.click();\n });\n // Keyboard: Enter / Space → open picker\n onEvent(dz, 'keydown', (e: KeyboardEvent) => {\n skipNextClick = pressControl.handleKeydown(e) && e.key === 'Enter';\n });\n\n const dropZone = createDropZone({\n disabled: isDisabled.value,\n element: dz,\n onDrop: (droppedFiles) => addFiles(droppedFiles),\n onHoverChange: (hovered) => {\n isDragging.value = hovered;\n },\n });\n\n onCleanup(() => dropZone.dispose());\n });\n\n return html`\n <div class=\"file-input-wrapper\" part=\"wrapper\">\n <label class=\"label-outside\" id=\"${labelId}\" part=\"label\" ?hidden=${() => !props.label.value}\n >${props.label}</label\n >\n <div\n class=\"dropzone\"\n part=\"dropzone\"\n ref=${dropzoneRef}\n role=\"button\"\n :tabindex=\"${() => (isDisabled.value ? '-1' : '0')}\"\n :aria-disabled=\"${() => String(isDisabled.value)}\"\n :aria-label=\"${() => (!props.label.value ? 'File upload drop zone' : null)}\"\n :aria-labelledby=\"${() => (props.label.value ? labelId : null)}\"\n aria-describedby=\"${helperId}\">\n <input\n type=\"file\"\n ref=${inputRef}\n part=\"input\"\n id=\"${fileInputId}\"\n :accept=\"${props.accept}\"\n ?multiple=\"${props.multiple}\"\n ?required=\"${props.required}\"\n ?disabled=\"${isDisabled}\"\n :name=\"${props.name}\"\n hidden\n inert\n tabindex=\"-1\" />\n <div class=\"dropzone-content\">\n <span class=\"dropzone-icon\" aria-hidden=\"true\">\n <ore-icon name=\"upload\" size=\"36\" stroke-width=\"1.5\" aria-hidden=\"true\"></ore-icon>\n </span>\n <span class=\"dropzone-title\">Drop files here or <u>click to browse</u></span>\n <span class=\"dropzone-hint\" ?hidden=${() => !hintText.value}>${hintText}</span>\n </div>\n </div>\n <ul\n class=\"${() => (props.gallery.value ? 'file-grid' : 'file-list')}\"\n part=\"${() => (props.gallery.value ? 'gallery' : null)}\"\n role=\"list\"\n aria-label=\"Selected files\"\n ?hidden=${() => files.value.length === 0}>\n ${() =>\n files.value.map((file: File) =>\n props.gallery.value\n ? html`\n <li class=\"file-card\">\n ${\n // Decorative: the file name is already announced via the visible\n // `.file-card-name` caption below — repeating it as `alt` text would\n // duplicate it (and often trips redundant-alt checks, since real\n // filenames commonly contain words like \"photo\" or \"image\").\n isImageFile(file)\n ? // Object URLs use the `blob:` scheme, which ore's attribute-level\n // XSS guard blocks unconditionally on `src` (and other\n // URL-accepting attributes) — set it as a DOM property via `ref`\n // instead, bypassing that string-based check. Safe here: the value\n // comes from `URL.createObjectURL(file)` on a real `File` object we\n // control, never from untrusted text.\n html`<img\n class=\"file-thumb\"\n alt=\"\"\n ref=\"${(el: HTMLImageElement | null) => {\n if (el) el.src = getPreviewUrl(file);\n }}\" />`\n : html`<span class=\"file-thumb file-thumb-generic\" aria-hidden=\"true\">\n <ore-icon name=\"file\" size=\"28\" stroke-width=\"1.5\" aria-hidden=\"true\"></ore-icon>\n </span>`\n }\n <span class=\"file-card-name\" title=\"${file.name}\">${file.name}</span>\n <button\n class=\"file-card-remove\"\n type=\"button\"\n aria-label=\"${`Remove ${file.name}`}\"\n @click=${(e: Event) => removeFile(file, e)}>\n <ore-icon name=\"x\" size=\"12\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>\n `\n : html`\n <li class=\"file-item\">\n <span class=\"file-icon\" aria-hidden=\"true\">\n <ore-icon name=\"file\" size=\"18\" stroke-width=\"1.75\" aria-hidden=\"true\"></ore-icon>\n </span>\n <span class=\"file-meta\">\n <span class=\"file-name\" title=\"${file.name}\">${file.name}</span>\n <span class=\"file-size\">${formatBytes(file.size)}</span>\n </span>\n <button\n class=\"file-remove\"\n type=\"button\"\n aria-label=\"${`Remove ${file.name}`}\"\n @click=${(e: Event) => removeFile(file, e)}>\n <ore-icon name=\"x\" size=\"12\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>\n `,\n )}\n </ul>\n <div class=\"helper-text\" id=\"${helperId}\" part=\"helper\" ?hidden=${() => isInvalid.value || !props.helper.value}>\n ${props.helper}\n </div>\n <div\n class=\"helper-text helper-text-error\"\n id=\"${errorId}\"\n role=\"alert\"\n part=\"error\"\n ?hidden=${() => !isInvalid.value}>\n ${() => props.error.value ?? ''}\n </div>\n </div>\n `;\n },\n shadow: { delegatesFocus: true },\n styles: [\n ...fieldMixins,\n sizeVariantMixin(FILE_INPUT_SIZE_PRESET),\n forcedColorsFocusMixin('.dropzone'),\n componentStyles,\n ],\n});\n"],"mappings":"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"}