@vielzeug/refine 26.10.0 → 26.10.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 (463) hide show
  1. package/README.md +1 -1
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js.map +1 -1
  4. package/dist/accordion.cjs.map +1 -1
  5. package/dist/accordion.js.map +1 -1
  6. package/dist/async.cjs.map +1 -1
  7. package/dist/async.js.map +1 -1
  8. package/dist/badge.cjs.map +1 -1
  9. package/dist/badge.js.map +1 -1
  10. package/dist/box.cjs.map +1 -1
  11. package/dist/box.js.map +1 -1
  12. package/dist/button.cjs +3 -3
  13. package/dist/button.cjs.map +1 -1
  14. package/dist/button.js +3 -3
  15. package/dist/button.js.map +1 -1
  16. package/dist/calendar.cjs.map +1 -1
  17. package/dist/calendar.js.map +1 -1
  18. package/dist/carousel.cjs.map +1 -1
  19. package/dist/carousel.js.map +1 -1
  20. package/dist/chat-message.cjs.map +1 -1
  21. package/dist/chat-message.js.map +1 -1
  22. package/dist/chat-panel.cjs.map +1 -1
  23. package/dist/chat-panel.js.map +1 -1
  24. package/dist/checkbox-group.cjs.map +1 -1
  25. package/dist/checkbox-group.js.map +1 -1
  26. package/dist/chip.cjs.map +1 -1
  27. package/dist/chip.js.map +1 -1
  28. package/dist/code-window.cjs.map +1 -1
  29. package/dist/code-window.js.map +1 -1
  30. package/dist/combobox.cjs.map +1 -1
  31. package/dist/combobox.js.map +1 -1
  32. package/dist/command-palette.cjs.map +1 -1
  33. package/dist/command-palette.js.map +1 -1
  34. package/dist/content/card/card.css.cjs.map +1 -1
  35. package/dist/content/card/card.css.js.map +1 -1
  36. package/dist/content/carousel/carousel-slide.css.cjs.map +1 -1
  37. package/dist/content/carousel/carousel-slide.css.js.map +1 -1
  38. package/dist/content/carousel/carousel.css.cjs.map +1 -1
  39. package/dist/content/carousel/carousel.css.js.map +1 -1
  40. package/dist/content/carousel/carousel.d.ts +5 -5
  41. package/dist/content/chat-message/chat-message.css.cjs +1 -1
  42. package/dist/content/chat-message/chat-message.css.cjs.map +1 -1
  43. package/dist/content/chat-message/chat-message.css.js +1 -1
  44. package/dist/content/chat-message/chat-message.css.js.map +1 -1
  45. package/dist/content/chat-message/chat-message.d.ts +4 -4
  46. package/dist/content/chat-message/chat-message.d.ts.map +1 -1
  47. package/dist/content/chat-panel/chat-panel.d.ts +1 -1
  48. package/dist/content/code-window/code-window.css.cjs.map +1 -1
  49. package/dist/content/code-window/code-window.css.js.map +1 -1
  50. package/dist/content/code-window/code-window.d.ts +4 -4
  51. package/dist/content/index.d.ts +4 -0
  52. package/dist/content/index.d.ts.map +1 -1
  53. package/dist/content/list/_list-item-reveal.cjs.map +1 -1
  54. package/dist/content/list/_list-item-reveal.d.ts +4 -4
  55. package/dist/content/list/_list-item-reveal.d.ts.map +1 -1
  56. package/dist/content/list/_list-item-reveal.js.map +1 -1
  57. package/dist/content/list/list-item.css.cjs.map +1 -1
  58. package/dist/content/list/list-item.css.js.map +1 -1
  59. package/dist/content/list/list-item.d.ts +8 -8
  60. package/dist/content/list/list-item.d.ts.map +1 -1
  61. package/dist/content/list/list.d.ts +8 -8
  62. package/dist/content/list/list.d.ts.map +1 -1
  63. package/dist/content/qr-code/qr-code.d.ts +1 -1
  64. package/dist/content/rank-list/rank-item.css.cjs +2 -0
  65. package/dist/content/rank-list/rank-item.css.cjs.map +1 -0
  66. package/dist/content/rank-list/rank-item.css.js +2 -0
  67. package/dist/content/rank-list/rank-item.css.js.map +1 -0
  68. package/dist/content/rank-list/rank-item.d.ts +68 -0
  69. package/dist/content/rank-list/rank-item.d.ts.map +1 -0
  70. package/dist/content/rank-list/rank-list.css.cjs +2 -0
  71. package/dist/content/rank-list/rank-list.css.cjs.map +1 -0
  72. package/dist/content/rank-list/rank-list.css.js +2 -0
  73. package/dist/content/rank-list/rank-list.css.js.map +1 -0
  74. package/dist/content/rank-list/rank-list.d.ts +44 -0
  75. package/dist/content/rank-list/rank-list.d.ts.map +1 -0
  76. package/dist/content/separator/separator.d.ts +1 -1
  77. package/dist/content/separator/separator.d.ts.map +1 -1
  78. package/dist/content/speech-player/speech-player.css.cjs.map +1 -1
  79. package/dist/content/speech-player/speech-player.css.js.map +1 -1
  80. package/dist/content/speech-player/speech-player.d.ts +12 -12
  81. package/dist/content/speech-player/speech-player.d.ts.map +1 -1
  82. package/dist/content/stepper/step.css.cjs.map +1 -1
  83. package/dist/content/stepper/step.css.js.map +1 -1
  84. package/dist/content/stepper/step.d.ts +3 -3
  85. package/dist/content/stepper/step.d.ts.map +1 -1
  86. package/dist/content/stepper/stepper.css.cjs.map +1 -1
  87. package/dist/content/stepper/stepper.css.js.map +1 -1
  88. package/dist/content/stepper/stepper.d.ts +3 -3
  89. package/dist/content/stepper/stepper.d.ts.map +1 -1
  90. package/dist/content/table/table.css.cjs.map +1 -1
  91. package/dist/content/table/table.css.js.map +1 -1
  92. package/dist/content/table/table.d.ts +3 -3
  93. package/dist/content/table/table.d.ts.map +1 -1
  94. package/dist/content/text/text.css.cjs.map +1 -1
  95. package/dist/content/text/text.css.js.map +1 -1
  96. package/dist/content/text/text.d.ts +2 -2
  97. package/dist/content/text/text.d.ts.map +1 -1
  98. package/dist/cookie-banner.cjs.map +1 -1
  99. package/dist/cookie-banner.js.map +1 -1
  100. package/dist/copy-command.cjs +1 -1
  101. package/dist/copy-command.cjs.map +1 -1
  102. package/dist/copy-command.js +1 -1
  103. package/dist/copy-command.js.map +1 -1
  104. package/dist/core/announcer.cjs.map +1 -1
  105. package/dist/core/announcer.d.ts +2 -2
  106. package/dist/core/announcer.js.map +1 -1
  107. package/dist/core/aria-reflection.cjs.map +1 -1
  108. package/dist/core/aria-reflection.d.ts +3 -3
  109. package/dist/core/aria-reflection.js.map +1 -1
  110. package/dist/core/auto-resize.cjs.map +1 -1
  111. package/dist/core/auto-resize.d.ts +1 -1
  112. package/dist/core/auto-resize.js.map +1 -1
  113. package/dist/core/checkable.cjs.map +1 -1
  114. package/dist/core/checkable.d.ts +2 -2
  115. package/dist/core/checkable.d.ts.map +1 -1
  116. package/dist/core/checkable.js.map +1 -1
  117. package/dist/core/choice-field.cjs.map +1 -1
  118. package/dist/core/choice-field.d.ts +3 -3
  119. package/dist/core/choice-field.d.ts.map +1 -1
  120. package/dist/core/choice-field.js.map +1 -1
  121. package/dist/core/composer.cjs.map +1 -1
  122. package/dist/core/composer.d.ts +4 -4
  123. package/dist/core/composer.d.ts.map +1 -1
  124. package/dist/core/composer.js.map +1 -1
  125. package/dist/core/date-picker.cjs.map +1 -1
  126. package/dist/core/date-picker.d.ts +5 -5
  127. package/dist/core/date-picker.d.ts.map +1 -1
  128. package/dist/core/date-picker.js.map +1 -1
  129. package/dist/core/direction.cjs.map +1 -1
  130. package/dist/core/direction.d.ts +1 -1
  131. package/dist/core/direction.js.map +1 -1
  132. package/dist/core/field-base.cjs.map +1 -1
  133. package/dist/core/field-base.d.ts +9 -9
  134. package/dist/core/field-base.d.ts.map +1 -1
  135. package/dist/core/field-base.js.map +1 -1
  136. package/dist/core/focus.cjs.map +1 -1
  137. package/dist/core/focus.d.ts +1 -1
  138. package/dist/core/focus.js.map +1 -1
  139. package/dist/core/icon-registry.cjs.map +1 -1
  140. package/dist/core/icon-registry.d.ts +1 -1
  141. package/dist/core/icon-registry.js.map +1 -1
  142. package/dist/core/icons.cjs.map +1 -1
  143. package/dist/core/icons.js.map +1 -1
  144. package/dist/core/keyboard.cjs.map +1 -1
  145. package/dist/core/keyboard.d.ts +1 -1
  146. package/dist/core/keyboard.js.map +1 -1
  147. package/dist/core/numbers.cjs.map +1 -1
  148. package/dist/core/numbers.d.ts +1 -1
  149. package/dist/core/numbers.js.map +1 -1
  150. package/dist/core/overlay.cjs.map +1 -1
  151. package/dist/core/overlay.d.ts +6 -6
  152. package/dist/core/overlay.js.map +1 -1
  153. package/dist/core/parse.cjs.map +1 -1
  154. package/dist/core/parse.d.ts +1 -1
  155. package/dist/core/parse.js.map +1 -1
  156. package/dist/core/positioner.cjs.map +1 -1
  157. package/dist/core/positioner.d.ts +3 -3
  158. package/dist/core/positioner.js.map +1 -1
  159. package/dist/core/ref-callback.cjs.map +1 -1
  160. package/dist/core/ref-callback.d.ts +2 -2
  161. package/dist/core/ref-callback.d.ts.map +1 -1
  162. package/dist/core/ref-callback.js.map +1 -1
  163. package/dist/core/text-field.cjs.map +1 -1
  164. package/dist/core/text-field.d.ts +6 -6
  165. package/dist/core/text-field.d.ts.map +1 -1
  166. package/dist/core/text-field.js.map +1 -1
  167. package/dist/counter.cjs +1 -0
  168. package/dist/counter.cjs.map +1 -1
  169. package/dist/counter.js +1 -0
  170. package/dist/counter.js.map +1 -1
  171. package/dist/custom-elements.json +315 -87
  172. package/dist/datagrid.cjs.map +1 -1
  173. package/dist/datagrid.js.map +1 -1
  174. package/dist/date-picker.cjs +1 -1
  175. package/dist/date-picker.cjs.map +1 -1
  176. package/dist/date-picker.js +1 -1
  177. package/dist/date-picker.js.map +1 -1
  178. package/dist/dialog.cjs.map +1 -1
  179. package/dist/dialog.js.map +1 -1
  180. package/dist/disclosure/accordion-item/accordion-item.css.cjs +1 -1
  181. package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -1
  182. package/dist/disclosure/accordion-item/accordion-item.css.js +1 -1
  183. package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -1
  184. package/dist/disclosure/tab-item/tab-item.d.ts +1 -1
  185. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
  186. package/dist/drawer.cjs.map +1 -1
  187. package/dist/drawer.js.map +1 -1
  188. package/dist/feedback/alert/alert.css.cjs.map +1 -1
  189. package/dist/feedback/alert/alert.css.js.map +1 -1
  190. package/dist/feedback/badge/badge.css.cjs.map +1 -1
  191. package/dist/feedback/badge/badge.css.js.map +1 -1
  192. package/dist/feedback/badge/badge.d.ts +1 -1
  193. package/dist/feedback/badge/badge.d.ts.map +1 -1
  194. package/dist/feedback/chip/chip.css.cjs.map +1 -1
  195. package/dist/feedback/chip/chip.css.js.map +1 -1
  196. package/dist/feedback/chip/chip.d.ts +3 -3
  197. package/dist/feedback/chip/chip.d.ts.map +1 -1
  198. package/dist/feedback/cookie-banner/cookie-banner.css.cjs.map +1 -1
  199. package/dist/feedback/cookie-banner/cookie-banner.css.js.map +1 -1
  200. package/dist/feedback/cookie-banner/cookie-banner.d.ts +8 -8
  201. package/dist/feedback/cookie-banner/cookie-banner.d.ts.map +1 -1
  202. package/dist/feedback/progress/progress.css.cjs.map +1 -1
  203. package/dist/feedback/progress/progress.css.js.map +1 -1
  204. package/dist/feedback/progress/progress.d.ts +1 -1
  205. package/dist/feedback/progress/progress.d.ts.map +1 -1
  206. package/dist/feedback/skeleton/skeleton.css.cjs.map +1 -1
  207. package/dist/feedback/skeleton/skeleton.css.js.map +1 -1
  208. package/dist/feedback/skeleton/skeleton.d.ts +1 -1
  209. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -1
  210. package/dist/feedback/toast/toast.css.cjs +1 -1
  211. package/dist/feedback/toast/toast.css.cjs.map +1 -1
  212. package/dist/feedback/toast/toast.css.js +1 -1
  213. package/dist/feedback/toast/toast.css.js.map +1 -1
  214. package/dist/feedback/toast/toast.d.ts +1 -1
  215. package/dist/feedback/toast/toast.d.ts.map +1 -1
  216. package/dist/feedback/typing-indicator/typing-indicator.d.ts +2 -2
  217. package/dist/file-input.cjs +1 -1
  218. package/dist/file-input.cjs.map +1 -1
  219. package/dist/file-input.js +1 -1
  220. package/dist/file-input.js.map +1 -1
  221. package/dist/frameworks/elements.d.ts +1 -1
  222. package/dist/grid-item.cjs.map +1 -1
  223. package/dist/grid-item.js.map +1 -1
  224. package/dist/grid.cjs.map +1 -1
  225. package/dist/grid.js.map +1 -1
  226. package/dist/icon.cjs.map +1 -1
  227. package/dist/icon.js.map +1 -1
  228. package/dist/input.cjs.map +1 -1
  229. package/dist/input.js.map +1 -1
  230. package/dist/inputs/button/button.css.cjs.map +1 -1
  231. package/dist/inputs/button/button.css.js.map +1 -1
  232. package/dist/inputs/button/button.d.ts +3 -3
  233. package/dist/inputs/button/button.d.ts.map +1 -1
  234. package/dist/inputs/calendar/calendar.css.cjs.map +1 -1
  235. package/dist/inputs/calendar/calendar.css.js.map +1 -1
  236. package/dist/inputs/calendar/calendar.d.ts +2 -2
  237. package/dist/inputs/checkbox-group/checkbox-group.d.ts +2 -2
  238. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -1
  239. package/dist/inputs/combobox/combobox.css.cjs.map +1 -1
  240. package/dist/inputs/combobox/combobox.css.js.map +1 -1
  241. package/dist/inputs/counter/counter.css.cjs +1 -1
  242. package/dist/inputs/counter/counter.css.cjs.map +1 -1
  243. package/dist/inputs/counter/counter.css.js +1 -1
  244. package/dist/inputs/counter/counter.css.js.map +1 -1
  245. package/dist/inputs/counter/counter.d.ts +2 -1
  246. package/dist/inputs/counter/counter.d.ts.map +1 -1
  247. package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -1
  248. package/dist/inputs/datagrid/datagrid.css.js.map +1 -1
  249. package/dist/inputs/datagrid/datagrid.d.ts +5 -5
  250. package/dist/inputs/date-picker/date-picker.css.cjs.map +1 -1
  251. package/dist/inputs/date-picker/date-picker.css.js.map +1 -1
  252. package/dist/inputs/date-picker/date-picker.d.ts +1 -1
  253. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  254. package/dist/inputs/file-input/file-input-upload.d.ts +6 -6
  255. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  256. package/dist/inputs/file-input/file-input.css.cjs.map +1 -1
  257. package/dist/inputs/file-input/file-input.css.js.map +1 -1
  258. package/dist/inputs/file-input/file-input.d.ts +6 -6
  259. package/dist/inputs/input/input.css.cjs +1 -1
  260. package/dist/inputs/input/input.css.cjs.map +1 -1
  261. package/dist/inputs/input/input.css.js +1 -1
  262. package/dist/inputs/input/input.css.js.map +1 -1
  263. package/dist/inputs/input/input.d.ts +6 -6
  264. package/dist/inputs/input/input.d.ts.map +1 -1
  265. package/dist/inputs/message-composer/message-composer.css.cjs.map +1 -1
  266. package/dist/inputs/message-composer/message-composer.css.js.map +1 -1
  267. package/dist/inputs/message-composer/message-composer.d.ts +7 -7
  268. package/dist/inputs/message-composer/message-composer.d.ts.map +1 -1
  269. package/dist/inputs/number-input/number-input.css.cjs.map +1 -1
  270. package/dist/inputs/number-input/number-input.css.js.map +1 -1
  271. package/dist/inputs/number-input/number-input.d.ts +2 -2
  272. package/dist/inputs/otp-input/otp-input.css.cjs.map +1 -1
  273. package/dist/inputs/otp-input/otp-input.css.js.map +1 -1
  274. package/dist/inputs/qr-scanner/qr-scanner.d.ts +1 -1
  275. package/dist/inputs/qr-scanner/qr-scanner.d.ts.map +1 -1
  276. package/dist/inputs/rating/rating.d.ts +1 -1
  277. package/dist/inputs/rating/rating.d.ts.map +1 -1
  278. package/dist/inputs/select/select.css.cjs +1 -1
  279. package/dist/inputs/select/select.css.cjs.map +1 -1
  280. package/dist/inputs/select/select.css.js +1 -1
  281. package/dist/inputs/select/select.css.js.map +1 -1
  282. package/dist/inputs/select/select.d.ts +1 -1
  283. package/dist/inputs/select/select.d.ts.map +1 -1
  284. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  285. package/dist/inputs/shared/field-binding.d.ts +2 -2
  286. package/dist/inputs/shared/field-binding.d.ts.map +1 -1
  287. package/dist/inputs/shared/field-binding.js.map +1 -1
  288. package/dist/inputs/shared/native-field-event.cjs.map +1 -1
  289. package/dist/inputs/shared/native-field-event.d.ts +1 -1
  290. package/dist/inputs/shared/native-field-event.js.map +1 -1
  291. package/dist/inputs/shared/templates.cjs.map +1 -1
  292. package/dist/inputs/shared/templates.d.ts +3 -3
  293. package/dist/inputs/shared/templates.js.map +1 -1
  294. package/dist/inputs/slider/slider.css.cjs.map +1 -1
  295. package/dist/inputs/slider/slider.css.js.map +1 -1
  296. package/dist/inputs/slider/slider.d.ts +1 -1
  297. package/dist/inputs/slider/slider.d.ts.map +1 -1
  298. package/dist/inputs/textarea/textarea.css.cjs.map +1 -1
  299. package/dist/inputs/textarea/textarea.css.js.map +1 -1
  300. package/dist/inputs/textarea/textarea.d.ts +1 -1
  301. package/dist/inputs/time-picker/time-picker.css.cjs.map +1 -1
  302. package/dist/inputs/time-picker/time-picker.css.js.map +1 -1
  303. package/dist/inputs/time-picker/time-picker.d.ts +1 -1
  304. package/dist/layout/box/box.css.cjs.map +1 -1
  305. package/dist/layout/box/box.css.js.map +1 -1
  306. package/dist/layout/box/box.d.ts +1 -1
  307. package/dist/layout/grid/grid.d.ts +1 -1
  308. package/dist/layout/grid-item/grid-item.d.ts +3 -3
  309. package/dist/layout/grid-item/grid-item.d.ts.map +1 -1
  310. package/dist/layout/navbar/navbar.css.cjs +1 -1
  311. package/dist/layout/navbar/navbar.css.cjs.map +1 -1
  312. package/dist/layout/navbar/navbar.css.js +1 -1
  313. package/dist/layout/navbar/navbar.css.js.map +1 -1
  314. package/dist/layout/navbar/navbar.d.ts +3 -3
  315. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -1
  316. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -1
  317. package/dist/layout/sidebar/sidebar.d.ts +5 -5
  318. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  319. package/dist/list-item.cjs.map +1 -1
  320. package/dist/list-item.js.map +1 -1
  321. package/dist/list.cjs.map +1 -1
  322. package/dist/list.js.map +1 -1
  323. package/dist/menu.cjs +6 -5
  324. package/dist/menu.cjs.map +1 -1
  325. package/dist/menu.js +6 -5
  326. package/dist/menu.js.map +1 -1
  327. package/dist/message-composer.cjs.map +1 -1
  328. package/dist/message-composer.js.map +1 -1
  329. package/dist/navbar.cjs.map +1 -1
  330. package/dist/navbar.js.map +1 -1
  331. package/dist/number-input.cjs.map +1 -1
  332. package/dist/number-input.js.map +1 -1
  333. package/dist/otp-input.cjs.map +1 -1
  334. package/dist/otp-input.js.map +1 -1
  335. package/dist/overlay/command-palette/command-palette-items.cjs.map +1 -1
  336. package/dist/overlay/command-palette/command-palette-items.d.ts +1 -1
  337. package/dist/overlay/command-palette/command-palette-items.js.map +1 -1
  338. package/dist/overlay/command-palette/command-palette.css.cjs.map +1 -1
  339. package/dist/overlay/command-palette/command-palette.css.js.map +1 -1
  340. package/dist/overlay/command-palette/command-palette.d.ts +3 -3
  341. package/dist/overlay/command-palette/command-palette.types.d.ts +6 -6
  342. package/dist/overlay/command-palette/command-palette.types.d.ts.map +1 -1
  343. package/dist/overlay/dialog/dialog.css.cjs +1 -1
  344. package/dist/overlay/dialog/dialog.css.cjs.map +1 -1
  345. package/dist/overlay/dialog/dialog.css.js +1 -1
  346. package/dist/overlay/dialog/dialog.css.js.map +1 -1
  347. package/dist/overlay/dialog/dialog.d.ts +2 -2
  348. package/dist/overlay/dialog/dialog.d.ts.map +1 -1
  349. package/dist/overlay/drawer/drawer.css.cjs.map +1 -1
  350. package/dist/overlay/drawer/drawer.css.js.map +1 -1
  351. package/dist/overlay/drawer/drawer.d.ts +1 -1
  352. package/dist/overlay/drawer/drawer.d.ts.map +1 -1
  353. package/dist/overlay/menu/menu-item.css.cjs.map +1 -1
  354. package/dist/overlay/menu/menu-item.css.js.map +1 -1
  355. package/dist/overlay/menu/menu.d.ts.map +1 -1
  356. package/dist/overlay/shared/use-dialog.cjs.map +1 -1
  357. package/dist/overlay/shared/use-dialog.d.ts +6 -6
  358. package/dist/overlay/shared/use-dialog.d.ts.map +1 -1
  359. package/dist/overlay/shared/use-dialog.js.map +1 -1
  360. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
  361. package/dist/overlay/shared/use-floating-trigger.d.ts +1 -1
  362. package/dist/overlay/shared/use-floating-trigger.d.ts.map +1 -1
  363. package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
  364. package/dist/overlay/tooltip/tooltip.css.cjs.map +1 -1
  365. package/dist/overlay/tooltip/tooltip.css.js.map +1 -1
  366. package/dist/progress.cjs.map +1 -1
  367. package/dist/progress.js.map +1 -1
  368. package/dist/qr-code.cjs.map +1 -1
  369. package/dist/qr-code.js.map +1 -1
  370. package/dist/qr-scanner.cjs.map +1 -1
  371. package/dist/qr-scanner.js.map +1 -1
  372. package/dist/radio-group.cjs.map +1 -1
  373. package/dist/radio-group.js.map +1 -1
  374. package/dist/radio.cjs.map +1 -1
  375. package/dist/radio.js.map +1 -1
  376. package/dist/rank-item.cjs +21 -0
  377. package/dist/rank-item.cjs.map +1 -0
  378. package/dist/rank-item.js +21 -0
  379. package/dist/rank-item.js.map +1 -0
  380. package/dist/rank-list.cjs +4 -0
  381. package/dist/rank-list.cjs.map +1 -0
  382. package/dist/rank-list.js +4 -0
  383. package/dist/rank-list.js.map +1 -0
  384. package/dist/rating.cjs.map +1 -1
  385. package/dist/rating.js.map +1 -1
  386. package/dist/refine.cjs +103 -80
  387. package/dist/refine.cjs.map +1 -1
  388. package/dist/refine.iife.js +103 -80
  389. package/dist/refine.iife.js.map +1 -1
  390. package/dist/refine.js +104 -81
  391. package/dist/refine.js.map +1 -1
  392. package/dist/select.cjs.map +1 -1
  393. package/dist/select.js.map +1 -1
  394. package/dist/separator.cjs.map +1 -1
  395. package/dist/separator.js.map +1 -1
  396. package/dist/shared/index.d.ts +3 -3
  397. package/dist/shared/size-presets.cjs.map +1 -1
  398. package/dist/shared/size-presets.d.ts +4 -4
  399. package/dist/shared/size-presets.js.map +1 -1
  400. package/dist/shared/types.d.ts +1 -1
  401. package/dist/sidebar.cjs.map +1 -1
  402. package/dist/sidebar.js.map +1 -1
  403. package/dist/skeleton.cjs.map +1 -1
  404. package/dist/skeleton.js.map +1 -1
  405. package/dist/slider.cjs.map +1 -1
  406. package/dist/slider.js.map +1 -1
  407. package/dist/speech-player.cjs.map +1 -1
  408. package/dist/speech-player.js.map +1 -1
  409. package/dist/step.cjs.map +1 -1
  410. package/dist/step.js.map +1 -1
  411. package/dist/stepper.cjs.map +1 -1
  412. package/dist/stepper.js.map +1 -1
  413. package/dist/styles/fouc.css +2 -2
  414. package/dist/styles/mixins/accessibility.css.cjs.map +1 -1
  415. package/dist/styles/mixins/accessibility.css.d.ts +4 -4
  416. package/dist/styles/mixins/accessibility.css.js.map +1 -1
  417. package/dist/styles/mixins/animation.css.cjs +2 -2
  418. package/dist/styles/mixins/animation.css.cjs.map +1 -1
  419. package/dist/styles/mixins/animation.css.d.ts +4 -4
  420. package/dist/styles/mixins/animation.css.js +2 -2
  421. package/dist/styles/mixins/animation.css.js.map +1 -1
  422. package/dist/styles/mixins/field-variants.css.cjs +2 -2
  423. package/dist/styles/mixins/field-variants.css.cjs.map +1 -1
  424. package/dist/styles/mixins/field-variants.css.d.ts +6 -6
  425. package/dist/styles/mixins/field-variants.css.d.ts.map +1 -1
  426. package/dist/styles/mixins/field-variants.css.js +2 -2
  427. package/dist/styles/mixins/field-variants.css.js.map +1 -1
  428. package/dist/styles/mixins/shape.css.cjs.map +1 -1
  429. package/dist/styles/mixins/shape.css.d.ts +9 -9
  430. package/dist/styles/mixins/shape.css.d.ts.map +1 -1
  431. package/dist/styles/mixins/shape.css.js.map +1 -1
  432. package/dist/styles/mixins/variants.css.cjs.map +1 -1
  433. package/dist/styles/mixins/variants.css.d.ts +1 -1
  434. package/dist/styles/mixins/variants.css.js.map +1 -1
  435. package/dist/styles/theme.css +36 -28
  436. package/dist/tab-item.cjs.map +1 -1
  437. package/dist/tab-item.js.map +1 -1
  438. package/dist/tab-panel.cjs.map +1 -1
  439. package/dist/tab-panel.js.map +1 -1
  440. package/dist/table.cjs.map +1 -1
  441. package/dist/table.js.map +1 -1
  442. package/dist/text.cjs.map +1 -1
  443. package/dist/text.js.map +1 -1
  444. package/dist/textarea.cjs.map +1 -1
  445. package/dist/textarea.js.map +1 -1
  446. package/dist/theme.cjs.map +1 -1
  447. package/dist/theme.d.ts +2 -2
  448. package/dist/theme.js.map +1 -1
  449. package/dist/time-picker.cjs +1 -1
  450. package/dist/time-picker.cjs.map +1 -1
  451. package/dist/time-picker.js +1 -1
  452. package/dist/time-picker.js.map +1 -1
  453. package/dist/toast.cjs.map +1 -1
  454. package/dist/toast.js.map +1 -1
  455. package/dist/types/elements.d.ts +6 -2
  456. package/dist/typing-indicator.cjs.map +1 -1
  457. package/dist/typing-indicator.js.map +1 -1
  458. package/dist/utils/css.cjs.map +1 -1
  459. package/dist/utils/css.js.map +1 -1
  460. package/dist/utils/link.cjs.map +1 -1
  461. package/dist/utils/link.d.ts +2 -2
  462. package/dist/utils/link.js.map +1 -1
  463. package/package.json +31 -14
@@ -1 +1 @@
1
- {"version":3,"file":"number-input.css.js","names":[],"sources":["../../../src/inputs/number-input/number-input.css?inline"],"sourcesContent":["@layer refine.base {\n /* No explicit `width` here, on purpose — matches every other field's own `:host` (`ore-input`,\n `ore-select`, `ore-combobox`, `ore-date-picker`). A grid/flex item with `width: auto` (the\n default) stretches to fill its track by default; the old `width: fit-content` here overrode\n that default and forced this one field to shrink-wrap while every sibling field stretched to\n match the column, e.g. in a 2-column form grid.\n `min-width` is different: every field above sets the same `12rem` floor (each via its own\n `--<field>-min-width` custom property) so that a row of mixed field types — this one included\n — doesn't shrink-wrap to noticeably different widths purely because their *content* (a typed\n number vs. a selected option's label vs. free text) happens to differ. */\n :host {\n display: inline-flex;\n min-width: var(--number-input-min-width, 12rem);\n }\n\n /* Explicit opt-in still forces full width outside a stretching grid/flex context — same\n convention as ore-input's own :host([fullwidth]). The floor drops so the field follows a\n track narrower than 12rem instead of overflowing it. */\n :host([fullwidth]) {\n width: 100%;\n min-width: 0;\n }\n\n /* The inner `ore-input` (class=\"field\", see number-input.ts) is a flex item of this `:host`'s\n own `inline-flex` box — without `flex: 1` it only ever grows to its own `min-width` (12rem)\n and no further, leaving this component visibly narrower than its host once the host itself\n stretches to fill a wider grid/flex track (e.g. next to a full-width sibling field). `flex: 1`\n lets it grow to match; its own `min-width` (inherited from `ore-input`'s `:host`) still holds\n as the shrink floor, so this doesn't affect the min-width consistency across field types. */\n .field {\n flex: 1;\n }\n\n /* Centre the typed number inside the field */\n .field::part(input) {\n text-align: center;\n }\n\n /* Stepper buttons — slotted into ore-input's own prefix/suffix, so they render inside its\n bordered box like its built-in clear/password-toggle buttons, not as separate controls. */\n button[part='decrement-btn'],\n button[part='increment-btn'] {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-6);\n min-width: var(--size-6);\n height: var(--size-6);\n min-height: var(--size-6);\n padding: 0;\n color: var(--color-contrast-600);\n cursor: pointer;\n background: transparent;\n border: none;\n border-radius: var(--rounded-sm);\n transition:\n color var(--transition-fast),\n background var(--transition-fast);\n }\n\n button[part='decrement-btn']:hover:not(:disabled),\n button[part='increment-btn']:hover:not(:disabled) {\n color: var(--color-contrast-900);\n background: var(--color-contrast-150, var(--color-contrast-100));\n }\n\n button[part='decrement-btn']:active:not(:disabled),\n button[part='increment-btn']:active:not(:disabled) {\n background: var(--color-contrast-200);\n }\n\n button[part='decrement-btn']:disabled,\n button[part='increment-btn']:disabled {\n color: var(--color-contrast-300);\n cursor: not-allowed;\n background: transparent;\n }\n\n button[part='decrement-btn']:focus-visible,\n button[part='increment-btn']:focus-visible {\n outline: 2px solid var(--color-primary-500);\n outline-offset: -2px;\n }\n}\n\n/* ========================================\n Disabled State — intentionally unlayered\n ======================================== */\n\n/*\n * `disabledStateMixin` (passed directly in `styles:`, not via `fieldMixins`) dims\n * `:host([disabled])` with `opacity: 0.5` as bare, unlayered CSS. Cascade layers always lose to\n * unlayered rules regardless of source order or specificity, so overriding that from inside any\n * `@layer` block in this file would be a no-op — this has to stay unlayered too, to actually win.\n * See `ore-input`'s `input.css` for the same pattern.\n *\n * The visible surface here is entirely the inner `ore-input`'s own `.field` (already fixed to a\n * grayscale look, not opacity) plus these slotted stepper buttons (muted via `:disabled` above,\n * also not opacity) — so this host itself needs no compensating background/color, just dropping\n * the blanket opacity that would otherwise wash out both of those over again.\n */\n:host([disabled]) {\n opacity: 1;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"number-input.css.js","names":[],"sources":["../../../src/inputs/number-input/number-input.css?inline"],"sourcesContent":["@layer refine.base {\n /* No explicit `width` here, on purpose: matches every other field's own `:host` (`ore-input`,\n `ore-select`, `ore-combobox`, `ore-date-picker`). A grid/flex item with `width: auto` (the\n default) stretches to fill its track by default; the old `width: fit-content` here overrode\n that default and forced this one field to shrink-wrap while every sibling field stretched to\n match the column, e.g. in a 2-column form grid.\n `min-width` is different: every field above sets the same `12rem` floor (each via its own\n `--<field>-min-width` custom property) so a row of mixed field types, including this one,\n doesn't shrink-wrap to noticeably different widths purely because their *content* (a typed\n number vs. a selected option's label vs. free text) happens to differ. */\n :host {\n display: inline-flex;\n min-width: var(--number-input-min-width, 12rem);\n }\n\n /* Explicit opt-in still forces full width outside a stretching grid/flex context: same\n convention as ore-input's own :host([fullwidth]). The floor drops so the field follows a\n track narrower than 12rem instead of overflowing it. */\n :host([fullwidth]) {\n width: 100%;\n min-width: 0;\n }\n\n /* The inner `ore-input` (class=\"field\", see number-input.ts) is a flex item of this `:host`'s\n own `inline-flex` box: without `flex: 1` it only ever grows to its own `min-width` (12rem)\n and no further, leaving this component visibly narrower than its host once the host itself\n stretches to fill a wider grid/flex track (e.g. next to a full-width sibling field). `flex: 1`\n lets it grow to match; its own `min-width` (inherited from `ore-input`'s `:host`) still holds\n as the shrink floor, so this doesn't affect the min-width consistency across field types. */\n .field {\n flex: 1;\n }\n\n /* Centre the typed number inside the field */\n .field::part(input) {\n text-align: center;\n }\n\n /* Stepper buttons: slotted into ore-input's own prefix/suffix, so they render inside its\n bordered box like its built-in clear/password-toggle buttons, not as separate controls. */\n button[part='decrement-btn'],\n button[part='increment-btn'] {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--size-6);\n min-width: var(--size-6);\n height: var(--size-6);\n min-height: var(--size-6);\n padding: 0;\n color: var(--color-contrast-600);\n cursor: pointer;\n background: transparent;\n border: none;\n border-radius: var(--rounded-sm);\n transition:\n color var(--transition-fast),\n background var(--transition-fast);\n }\n\n button[part='decrement-btn']:hover:not(:disabled),\n button[part='increment-btn']:hover:not(:disabled) {\n color: var(--color-contrast-900);\n background: var(--color-contrast-150, var(--color-contrast-100));\n }\n\n button[part='decrement-btn']:active:not(:disabled),\n button[part='increment-btn']:active:not(:disabled) {\n background: var(--color-contrast-200);\n }\n\n button[part='decrement-btn']:disabled,\n button[part='increment-btn']:disabled {\n color: var(--color-contrast-300);\n cursor: not-allowed;\n background: transparent;\n }\n\n button[part='decrement-btn']:focus-visible,\n button[part='increment-btn']:focus-visible {\n outline: 2px solid var(--color-primary-500);\n outline-offset: -2px;\n }\n}\n\n/* ========================================\n Disabled State: intentionally unlayered\n ======================================== */\n\n/*\n * `disabledStateMixin` (passed directly in `styles:`, not via `fieldMixins`) dims\n * `:host([disabled])` with `opacity: 0.5` as bare, unlayered CSS. Cascade layers always lose to\n * unlayered rules regardless of source order or specificity, so overriding that from inside any\n * `@layer` block in this file would be a no-op: this has to stay unlayered too, to actually win.\n * See `ore-input`'s `input.css` for the same pattern.\n *\n * The visible surface here is entirely the inner `ore-input`'s own `.field` (already fixed to a\n * grayscale look, not opacity) plus these slotted stepper buttons (muted via `:disabled` above,\n * also not opacity), so this host itself needs no compensating background/color, just dropping\n * the blanket opacity that would otherwise wash out both of those over again.\n */\n:host([disabled]) {\n opacity: 1;\n}\n"],"mappings":""}
@@ -25,7 +25,7 @@ export type OreNumberInputProps = {
25
25
  'large-step'?: number;
26
26
  /**
27
27
  * Shows an inline spinner inside the field and forces the control into `disabled` for the
28
- * duration — use while an async validation/submission request is in flight to prevent
28
+ * duration: use while an async validation/submission request is in flight to prevent
29
29
  * double-submits.
30
30
  */
31
31
  loading?: boolean;
@@ -53,7 +53,7 @@ export type OreNumberInputProps = {
53
53
  step?: number;
54
54
  /**
55
55
  * Shows an inline green check icon inside the field to confirm the value has
56
- * passed validation. Ignored while `error` is set — an error always wins.
56
+ * passed validation. Ignored while `error` is set: an error always wins.
57
57
  */
58
58
  success?: boolean;
59
59
  /** Current numeric value */
@@ -1 +1 @@
1
- {"version":3,"file":"otp-input.css.cjs","names":[],"sources":["../../../src/inputs/otp-input/otp-input.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_cell-size: var(--otp-cell-size, var(--size-12));\n --_cell-gap: var(--otp-cell-gap, var(--size-2));\n --_cell-font-size: var(--otp-cell-font-size, var(--text-xl));\n --_cell-radius: var(--otp-cell-radius, var(--rounded-lg));\n --_cell-border: var(--otp-cell-border, var(--border));\n\n /* --_bg/--_border-color (not --_cell-*-prefixed, unlike the rest of this component's tokens)\n — this is the shared name `fieldVariantMixin` reads/writes, matching `ore-input`/`ore-\n textarea`/`ore-message-composer`. Public override is still `--otp-cell-bg`/`--otp-cell-\n border-color` either way. */\n --_border-color: var(--otp-cell-border-color, var(--color-contrast-300));\n --_bg: var(--otp-cell-bg, var(--color-canvas));\n --_cell-focus-border: var(--otp-cell-focus-border, var(--_theme-base, var(--color-contrast-700)));\n\n display: inline-flex;\n flex-direction: column;\n gap: var(--size-1);\n }\n\n .otp-group {\n display: flex;\n gap: var(--_cell-gap);\n align-items: center;\n }\n\n .cell {\n box-sizing: border-box;\n display: block;\n width: var(--_cell-size);\n height: var(--_cell-size);\n padding: 0;\n font-size: var(--_cell-font-size);\n font-weight: var(--font-semibold);\n line-height: 1;\n color: var(--color-contrast-900);\n text-align: center;\n caret-color: var(--_cell-focus-border);\n background: var(--_bg);\n border: var(--_cell-border) solid var(--_border-color);\n border-radius: var(--_cell-radius);\n transition:\n border-color var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n .cell::selection {\n background: var(--_theme-backdrop, var(--color-contrast-100));\n }\n\n /* Ring box-shadow lives in `@layer refine.variants` below, not here — every variant's own\n rest-state `box-shadow` (`fieldVariantMixin`'s solid/outline/ghost rules) is *also* in\n `refine.variants`, and cascade layers decide the winner before specificity ever gets\n consulted. A `refine.base` box-shadow here would always lose to those, focused or not. */\n .cell:focus {\n outline: none;\n border-color: var(--_cell-focus-border);\n }\n\n .cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .separator {\n font-size: var(--_cell-font-size);\n color: var(--color-contrast-400);\n user-select: none;\n }\n}\n\n/*\n * The solid/flat/bordered/outline/ghost variant switch (previously `@layer refine.variants`\n * here) now lives in `fieldVariantMixin({ accentVar: '--_cell-focus-border', container: '.cell',\n * tokenPrefix: 'otp-cell' })` in `otp-input.ts`'s `styles` array — shared with `ore-input`/\n * `ore-textarea`/`ore-message-composer` instead of hand-duplicated. `accentVar` overrides the\n * shared `--_theme-focus` accent with this component's own per-cell focus-color token, since\n * that (not the shared theme-focus token) is what `flat`/`bordered` mixed into their border\n * color here even before this shared version existed.\n */\n@layer refine.variants {\n /* Focus glow — the same `--_theme-shadow` halo `ore-input`/`ore-textarea`/`ore-message-\n composer` use, kept out of the shared mixin only because `.cell` is the focusable element\n itself (not a wrapper, so this is `:focus` not `:focus-within`, and it targets `.cell`\n directly rather than a mixin-supplied `container`). `flat` excluded — the mixin's own\n `flat:focus-within` rule already sets a bespoke `box-shadow` for it. */\n :host(:not([disabled], [variant='flat'])) .cell:focus {\n box-shadow: var(--_theme-shadow, var(--color-primary-focus-shadow));\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --_cell-size: var(--size-9);\n --_cell-font-size: var(--text-base);\n }\n\n :host([size='lg']) {\n --_cell-size: var(--size-14);\n --_cell-font-size: var(--text-2xl);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"otp-input.css.cjs","names":[],"sources":["../../../src/inputs/otp-input/otp-input.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_cell-size: var(--otp-cell-size, var(--size-12));\n --_cell-gap: var(--otp-cell-gap, var(--size-2));\n --_cell-font-size: var(--otp-cell-font-size, var(--text-xl));\n --_cell-radius: var(--otp-cell-radius, var(--rounded-lg));\n --_cell-border: var(--otp-cell-border, var(--border));\n\n /* --_bg/--_border-color are shared names used by `fieldVariantMixin`, unlike this\n component's other `--_cell-*` tokens. The public overrides remain\n `--otp-cell-bg` and `--otp-cell-border-color`. */\n --_border-color: var(--otp-cell-border-color, var(--color-contrast-300));\n --_bg: var(--otp-cell-bg, var(--color-canvas));\n --_cell-focus-border: var(--otp-cell-focus-border, var(--_theme-base, var(--color-contrast-700)));\n\n display: inline-flex;\n flex-direction: column;\n gap: var(--size-1);\n }\n\n .otp-group {\n display: flex;\n gap: var(--_cell-gap);\n align-items: center;\n }\n\n .cell {\n box-sizing: border-box;\n display: block;\n width: var(--_cell-size);\n height: var(--_cell-size);\n padding: 0;\n font-size: var(--_cell-font-size);\n font-weight: var(--font-semibold);\n line-height: 1;\n color: var(--color-contrast-900);\n text-align: center;\n caret-color: var(--_cell-focus-border);\n background: var(--_bg);\n border: var(--_cell-border) solid var(--_border-color);\n border-radius: var(--_cell-radius);\n transition:\n border-color var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n .cell::selection {\n background: var(--_theme-backdrop, var(--color-contrast-100));\n }\n\n /* Ring box-shadow lives in `@layer refine.variants` below, not here: every variant's own\n rest-state `box-shadow` (`fieldVariantMixin`'s solid/outline/ghost rules) is *also* in\n `refine.variants`, and cascade layers decide the winner before specificity ever gets\n consulted. A `refine.base` box-shadow here would always lose to those, focused or not. */\n .cell:focus {\n outline: none;\n border-color: var(--_cell-focus-border);\n }\n\n .cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .separator {\n font-size: var(--_cell-font-size);\n color: var(--color-contrast-400);\n user-select: none;\n }\n}\n\n/*\n * The solid/flat/bordered/outline/ghost variant switch (previously `@layer refine.variants`\n * here) now lives in `fieldVariantMixin({ accentVar: '--_cell-focus-border', container: '.cell',\n * tokenPrefix: 'otp-cell' })` in `otp-input.ts`'s `styles` array: shared with `ore-input`/\n * `ore-textarea`/`ore-message-composer` instead of hand-duplicated. `accentVar` overrides the\n * shared `--_theme-focus` accent with this component's own per-cell focus-color token, since\n * that (not the shared theme-focus token) is what `flat`/`bordered` mixed into their border\n * color here even before this shared version existed.\n */\n@layer refine.variants {\n /* Focus glow: the same `--_theme-shadow` halo `ore-input`/`ore-textarea`/`ore-message-\n composer` use, kept out of the shared mixin only because `.cell` is the focusable element\n itself (not a wrapper, so this is `:focus` not `:focus-within`, and it targets `.cell`\n directly rather than a mixin-supplied `container`). `flat` excluded: the mixin's own\n `flat:focus-within` rule already sets a bespoke `box-shadow` for it. */\n :host(:not([disabled], [variant='flat'])) .cell:focus {\n box-shadow: var(--_theme-shadow, var(--color-primary-focus-shadow));\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --_cell-size: var(--size-9);\n --_cell-font-size: var(--text-base);\n }\n\n :host([size='lg']) {\n --_cell-size: var(--size-14);\n --_cell-font-size: var(--text-2xl);\n }\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"otp-input.css.js","names":[],"sources":["../../../src/inputs/otp-input/otp-input.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_cell-size: var(--otp-cell-size, var(--size-12));\n --_cell-gap: var(--otp-cell-gap, var(--size-2));\n --_cell-font-size: var(--otp-cell-font-size, var(--text-xl));\n --_cell-radius: var(--otp-cell-radius, var(--rounded-lg));\n --_cell-border: var(--otp-cell-border, var(--border));\n\n /* --_bg/--_border-color (not --_cell-*-prefixed, unlike the rest of this component's tokens)\n — this is the shared name `fieldVariantMixin` reads/writes, matching `ore-input`/`ore-\n textarea`/`ore-message-composer`. Public override is still `--otp-cell-bg`/`--otp-cell-\n border-color` either way. */\n --_border-color: var(--otp-cell-border-color, var(--color-contrast-300));\n --_bg: var(--otp-cell-bg, var(--color-canvas));\n --_cell-focus-border: var(--otp-cell-focus-border, var(--_theme-base, var(--color-contrast-700)));\n\n display: inline-flex;\n flex-direction: column;\n gap: var(--size-1);\n }\n\n .otp-group {\n display: flex;\n gap: var(--_cell-gap);\n align-items: center;\n }\n\n .cell {\n box-sizing: border-box;\n display: block;\n width: var(--_cell-size);\n height: var(--_cell-size);\n padding: 0;\n font-size: var(--_cell-font-size);\n font-weight: var(--font-semibold);\n line-height: 1;\n color: var(--color-contrast-900);\n text-align: center;\n caret-color: var(--_cell-focus-border);\n background: var(--_bg);\n border: var(--_cell-border) solid var(--_border-color);\n border-radius: var(--_cell-radius);\n transition:\n border-color var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n .cell::selection {\n background: var(--_theme-backdrop, var(--color-contrast-100));\n }\n\n /* Ring box-shadow lives in `@layer refine.variants` below, not here — every variant's own\n rest-state `box-shadow` (`fieldVariantMixin`'s solid/outline/ghost rules) is *also* in\n `refine.variants`, and cascade layers decide the winner before specificity ever gets\n consulted. A `refine.base` box-shadow here would always lose to those, focused or not. */\n .cell:focus {\n outline: none;\n border-color: var(--_cell-focus-border);\n }\n\n .cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .separator {\n font-size: var(--_cell-font-size);\n color: var(--color-contrast-400);\n user-select: none;\n }\n}\n\n/*\n * The solid/flat/bordered/outline/ghost variant switch (previously `@layer refine.variants`\n * here) now lives in `fieldVariantMixin({ accentVar: '--_cell-focus-border', container: '.cell',\n * tokenPrefix: 'otp-cell' })` in `otp-input.ts`'s `styles` array — shared with `ore-input`/\n * `ore-textarea`/`ore-message-composer` instead of hand-duplicated. `accentVar` overrides the\n * shared `--_theme-focus` accent with this component's own per-cell focus-color token, since\n * that (not the shared theme-focus token) is what `flat`/`bordered` mixed into their border\n * color here even before this shared version existed.\n */\n@layer refine.variants {\n /* Focus glow — the same `--_theme-shadow` halo `ore-input`/`ore-textarea`/`ore-message-\n composer` use, kept out of the shared mixin only because `.cell` is the focusable element\n itself (not a wrapper, so this is `:focus` not `:focus-within`, and it targets `.cell`\n directly rather than a mixin-supplied `container`). `flat` excluded — the mixin's own\n `flat:focus-within` rule already sets a bespoke `box-shadow` for it. */\n :host(:not([disabled], [variant='flat'])) .cell:focus {\n box-shadow: var(--_theme-shadow, var(--color-primary-focus-shadow));\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --_cell-size: var(--size-9);\n --_cell-font-size: var(--text-base);\n }\n\n :host([size='lg']) {\n --_cell-size: var(--size-14);\n --_cell-font-size: var(--text-2xl);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"otp-input.css.js","names":[],"sources":["../../../src/inputs/otp-input/otp-input.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_cell-size: var(--otp-cell-size, var(--size-12));\n --_cell-gap: var(--otp-cell-gap, var(--size-2));\n --_cell-font-size: var(--otp-cell-font-size, var(--text-xl));\n --_cell-radius: var(--otp-cell-radius, var(--rounded-lg));\n --_cell-border: var(--otp-cell-border, var(--border));\n\n /* --_bg/--_border-color are shared names used by `fieldVariantMixin`, unlike this\n component's other `--_cell-*` tokens. The public overrides remain\n `--otp-cell-bg` and `--otp-cell-border-color`. */\n --_border-color: var(--otp-cell-border-color, var(--color-contrast-300));\n --_bg: var(--otp-cell-bg, var(--color-canvas));\n --_cell-focus-border: var(--otp-cell-focus-border, var(--_theme-base, var(--color-contrast-700)));\n\n display: inline-flex;\n flex-direction: column;\n gap: var(--size-1);\n }\n\n .otp-group {\n display: flex;\n gap: var(--_cell-gap);\n align-items: center;\n }\n\n .cell {\n box-sizing: border-box;\n display: block;\n width: var(--_cell-size);\n height: var(--_cell-size);\n padding: 0;\n font-size: var(--_cell-font-size);\n font-weight: var(--font-semibold);\n line-height: 1;\n color: var(--color-contrast-900);\n text-align: center;\n caret-color: var(--_cell-focus-border);\n background: var(--_bg);\n border: var(--_cell-border) solid var(--_border-color);\n border-radius: var(--_cell-radius);\n transition:\n border-color var(--transition-fast),\n box-shadow var(--transition-fast);\n }\n\n .cell::selection {\n background: var(--_theme-backdrop, var(--color-contrast-100));\n }\n\n /* Ring box-shadow lives in `@layer refine.variants` below, not here: every variant's own\n rest-state `box-shadow` (`fieldVariantMixin`'s solid/outline/ghost rules) is *also* in\n `refine.variants`, and cascade layers decide the winner before specificity ever gets\n consulted. A `refine.base` box-shadow here would always lose to those, focused or not. */\n .cell:focus {\n outline: none;\n border-color: var(--_cell-focus-border);\n }\n\n .cell:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .separator {\n font-size: var(--_cell-font-size);\n color: var(--color-contrast-400);\n user-select: none;\n }\n}\n\n/*\n * The solid/flat/bordered/outline/ghost variant switch (previously `@layer refine.variants`\n * here) now lives in `fieldVariantMixin({ accentVar: '--_cell-focus-border', container: '.cell',\n * tokenPrefix: 'otp-cell' })` in `otp-input.ts`'s `styles` array: shared with `ore-input`/\n * `ore-textarea`/`ore-message-composer` instead of hand-duplicated. `accentVar` overrides the\n * shared `--_theme-focus` accent with this component's own per-cell focus-color token, since\n * that (not the shared theme-focus token) is what `flat`/`bordered` mixed into their border\n * color here even before this shared version existed.\n */\n@layer refine.variants {\n /* Focus glow: the same `--_theme-shadow` halo `ore-input`/`ore-textarea`/`ore-message-\n composer` use, kept out of the shared mixin only because `.cell` is the focusable element\n itself (not a wrapper, so this is `:focus` not `:focus-within`, and it targets `.cell`\n directly rather than a mixin-supplied `container`). `flat` excluded: the mixin's own\n `flat:focus-within` rule already sets a bespoke `box-shadow` for it. */\n :host(:not([disabled], [variant='flat'])) .cell:focus {\n box-shadow: var(--_theme-shadow, var(--color-primary-focus-shadow));\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --_cell-size: var(--size-9);\n --_cell-font-size: var(--text-base);\n }\n\n :host([size='lg']) {\n --_cell-size: var(--size-14);\n --_cell-font-size: var(--text-2xl);\n }\n}\n"],"mappings":""}
@@ -2,7 +2,7 @@ import { type QrScanner, type QrScannerOptions, SigilError } from '@vielzeug/sig
2
2
  import type { ComponentSize, RoundedSize } from '../../types';
3
3
  export { ICON_TAG } from '../../content/icon/icon';
4
4
  export { BUTTON_TAG } from '../button/button';
5
- /** Testing hook — inject a fake `createQrScanner` without touching globals. */
5
+ /** Testing hook: inject a fake `createQrScanner` without touching globals. */
6
6
  export type QrScannerFactory = (options: QrScannerOptions) => QrScanner;
7
7
  /** Component-level view states; sigil's transport states are mapped onto these. */
8
8
  export type OreQrScannerStatus = 'idle' | 'starting' | 'scanning' | 'result' | 'unsupported' | 'denied' | 'error';
@@ -1 +1 @@
1
- {"version":3,"file":"qr-scanner.d.ts","sourceRoot":"","sources":["../../../src/inputs/qr-scanner/qr-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,UAAU,EAGX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI9D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,SAAS,CAAC;AAExE,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElH,sCAAsC;AACtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACvC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,mFAAmF;IACnF,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,gDAAgD;IAChD,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,8DAA8D;IAC9D,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,gFAAgF;IAChF,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;IAC7B,mEAAmE;IACnE,MAAM,EAAE;QAAE,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC;CACxC,CAAC;AAgBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,cAAc,EAAG,gBAAyB,CAAC"}
1
+ {"version":3,"file":"qr-scanner.d.ts","sourceRoot":"","sources":["../../../src/inputs/qr-scanner/qr-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,UAAU,EAGX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI9D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,SAAS,CAAC;AAExE,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElH,sCAAsC;AACtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACvC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,mFAAmF;IACnF,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,gDAAgD;IAChD,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,8DAA8D;IAC9D,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,gFAAgF;IAChF,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;IAC7B,mEAAmE;IACnE,MAAM,EAAE;QAAE,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC;CACxC,CAAC;AAgBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,cAAc,EAAG,gBAAyB,CAAC"}
@@ -10,7 +10,7 @@ export type OreRatingProps = {
10
10
  color?: ThemeColor;
11
11
  /** Disable interaction */
12
12
  disabled?: boolean;
13
- /** Error message — marks the field as invalid (fallback when the `error` slot is empty) */
13
+ /** Error message: marks the field as invalid (fallback when the `error` slot is empty) */
14
14
  error?: string;
15
15
  /** Helper text displayed below the stars (fallback when the `helper` slot is empty) */
16
16
  helper?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../../src/inputs/rating/rating.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,mBAAmB;AACnB,MAAM,MAAM,cAAc,GAAG;IAC3B,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC"}
1
+ {"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../../src/inputs/rating/rating.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,mBAAmB;AACnB,MAAM,MAAM,cAAc,GAAG;IAC3B,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC"}
@@ -1,2 +1,2 @@
1
- var e=`@layer refine.base{:host{--input-min-width:var(--select-min-width,12rem);min-width:var(--select-min-width,12rem);display:inline-block}:host([fullwidth]){--input-min-width:0;width:100%;min-width:0;display:block}::slotted(option),::slotted(optgroup){display:none}.trigger{cursor:pointer;width:100%}.trigger::part(input){cursor:pointer;caret-color:#0000;-webkit-user-select:none;user-select:none}.chips-row{gap:var(--size-1);flex-wrap:wrap;align-items:center;min-width:0;display:flex}.chips-row[hidden]{display:none}.trigger-selected-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.trigger-selected-icon{color:var(--color-contrast-500);flex-shrink:0}.trigger-selected-icon--image{object-fit:contain;flex-shrink:0;width:1.25em;height:1.25em}.trigger-suffix{gap:var(--size-1);color:var(--color-contrast-500);align-items:center;display:flex}.trigger-icon{transition:transform var(--transition-fast);justify-content:center;align-items:center;display:flex}:host([open]) .trigger-icon{transform:rotate(180deg)}.loader{width:1em;height:1em;animation:var(--_motion-animation,spin var(--transition-loader) infinite);border:2px solid;border-radius:50%;flex-shrink:0;display:none}.loader:not(: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))){border-right-color:#0000}.loader: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)){border-left-color:#0000}@keyframes spin{to{transform:rotate(360deg)}}:host([loading]) .loader{display:inline-block}.dropdown{z-index:var(--z-dropdown,8000);box-sizing:border-box;gap:var(--size-0-5);max-height:260px;padding:var(--size-1);overscroll-behavior:contain;pointer-events:none;background:var(--color-canvas);border:var(--border) solid var(--color-contrast-200);border-radius:var(--_radius);box-shadow:var(--shadow-lg);opacity:0;-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));transform:translateY(var(--overlay-enter-translate-y));transition:var(--_motion-transition,opacity var(--transition-fast), transform var(--transition-fast), display var(--transition-fast) allow-discrete);flex-direction:column;margin:0;display:flex;position:fixed;inset:0 auto auto 0;overflow-y:auto}.dropdown:not(: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))){text-align:left}.dropdown: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)){text-align:right}.dropdown[data-open]{pointer-events:auto;opacity:1;transform:translateY(0)}@starting-style{.dropdown[data-open]{opacity:0;transform:translateY(var(--overlay-enter-translate-y))}}.options-list{flex-direction:column;gap:0;display:flex}.option{gap:var(--size-2);padding:var(--size-1-5) var(--size-2-5);font-size:var(--text-sm);line-height:var(--leading-normal);cursor:pointer;border-radius:var(--rounded-sm);transition:background var(--transition-fast), color var(--transition-fast);align-items:center;display:flex}.option>span:first-of-type{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.option-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.option-icon{color:var(--color-contrast-500);flex-shrink:0}.option-icon--image{object-fit:contain;width:1.25em;height:1.25em}.option[data-selected] .option-icon{color:var(--_theme-base)}.disabled-reason{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);color:var(--text-color-tertiary);white-space:nowrap;flex:0 45%;overflow:hidden}.disabled-reason:not(: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))){text-align:right}.disabled-reason: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)){text-align:left}.option:hover:not([data-disabled]){background:var(--color-contrast-100)}.option[data-focused]:not([data-disabled]){color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100))}.option[data-selected]{font-weight:var(--font-medium);color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50))}.option[data-selected][data-focused]{background:color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100))}.option[data-disabled]{color:var(--color-contrast-500);cursor:not-allowed}.option-check{color:var(--_theme-base);opacity:0;transition:opacity var(--transition-fast);flex-shrink:0;display:inline-flex}.option-check:not(: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))){margin-left:auto}.option-check: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)){margin-right:auto}.option[data-selected] .option-check{opacity:1}.optgroup-label{padding:var(--size-1-5) var(--size-2-5) var(--size-1);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:var(--tracking-wide,.05em)}.dropdown-loading,.dropdown-empty{padding:var(--size-3) var(--size-2-5);font-size:var(--text-sm);color:var(--color-contrast-500);text-align:center}}`;exports.default=e;
1
+ var e=`@layer refine.base{:host{--input-min-width:var(--select-min-width,12rem);--_radius:var(--select-radius,var(--rounded-lg));min-width:var(--select-min-width,12rem);display:inline-block}:host([fullwidth]){--input-min-width:0;width:100%;min-width:0;display:block}::slotted(option),::slotted(optgroup){display:none}.trigger{cursor:pointer;width:100%}.trigger::part(input){cursor:pointer;caret-color:#0000;-webkit-user-select:none;user-select:none}.chips-row{gap:var(--size-1);flex-wrap:wrap;align-items:center;min-width:0;display:flex}.chips-row[hidden]{display:none}.trigger-selected-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.trigger-selected-icon{color:var(--color-contrast-500);flex-shrink:0}.trigger-selected-icon--image{object-fit:contain;flex-shrink:0;width:1.25em;height:1.25em}.trigger-suffix{gap:var(--size-1);color:var(--color-contrast-500);align-items:center;display:flex}.trigger-icon{transition:transform var(--transition-fast);justify-content:center;align-items:center;display:flex}:host([open]) .trigger-icon{transform:rotate(180deg)}.loader{width:1em;height:1em;animation:var(--_motion-animation,spin var(--transition-loader) infinite);border:2px solid;border-radius:50%;flex-shrink:0;display:none}.loader:not(: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))){border-right-color:#0000}.loader: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)){border-left-color:#0000}@keyframes spin{to{transform:rotate(360deg)}}:host([loading]) .loader{display:inline-block}.dropdown{z-index:var(--z-dropdown,8000);box-sizing:border-box;gap:var(--size-0-5);max-height:260px;padding:var(--size-1);overscroll-behavior:contain;pointer-events:none;background:var(--color-canvas);border:var(--border) solid var(--color-contrast-200);border-radius:var(--_radius);box-shadow:var(--shadow-lg);opacity:0;-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));transform:translateY(var(--overlay-enter-translate-y));transition:var(--_motion-transition,opacity var(--transition-fast), transform var(--transition-fast), display var(--transition-fast) allow-discrete);flex-direction:column;margin:0;display:flex;position:fixed;inset:0 auto auto 0;overflow-y:auto}.dropdown:not(: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))){text-align:left}.dropdown: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)){text-align:right}.dropdown[data-open]{pointer-events:auto;opacity:1;transform:translateY(0)}@starting-style{.dropdown[data-open]{opacity:0;transform:translateY(var(--overlay-enter-translate-y))}}.options-list{flex-direction:column;gap:0;display:flex}.option{gap:var(--size-2);padding:var(--size-1-5) var(--size-2-5);font-size:var(--text-sm);line-height:var(--leading-normal);cursor:pointer;border-radius:var(--rounded-sm);transition:background var(--transition-fast), color var(--transition-fast);align-items:center;display:flex}.option>span:first-of-type{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.option-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.option-icon{color:var(--color-contrast-500);flex-shrink:0}.option-icon--image{object-fit:contain;width:1.25em;height:1.25em}.option[data-selected] .option-icon{color:var(--_theme-base)}.disabled-reason{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);color:var(--text-color-tertiary);white-space:nowrap;flex:0 45%;overflow:hidden}.disabled-reason:not(: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))){text-align:right}.disabled-reason: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)){text-align:left}.option:hover:not([data-disabled]){background:var(--color-contrast-100)}.option[data-focused]:not([data-disabled]){color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100))}.option[data-selected]{font-weight:var(--font-medium);color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50))}.option[data-selected][data-focused]{background:color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100))}.option[data-disabled]{color:var(--color-contrast-500);cursor:not-allowed}.option-check{color:var(--_theme-base);opacity:0;transition:opacity var(--transition-fast);flex-shrink:0;display:inline-flex}.option-check:not(: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))){margin-left:auto}.option-check: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)){margin-right:auto}.option[data-selected] .option-check{opacity:1}.optgroup-label{padding:var(--size-1-5) var(--size-2-5) var(--size-1);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:var(--tracking-wide,.05em)}.dropdown-loading,.dropdown-empty{padding:var(--size-3) var(--size-2-5);font-size:var(--text-sm);color:var(--color-contrast-500);text-align:center}}`;exports.default=e;
2
2
  //# sourceMappingURL=select.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.css.cjs","names":[],"sources":["../../../src/inputs/select/select.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n /* Pass this select's width floor down to the ore-input trigger. Without this, the\n trigger keeps the input's own 12rem floor, so a select sized below it (via\n `--select-min-width` or a constraining flex/grid track) renders a trigger wider\n than its host — overflowing it, clipped by whatever ancestor hides overflow. */\n --input-min-width: var(--select-min-width, 12rem);\n display: inline-block;\n min-width: var(--select-min-width, 12rem);\n }\n\n :host([fullwidth]) {\n /* Full width means the trigger fills the host exactly — keep the input floor from\n holding it above a container narrower than the 12rem default. */\n --input-min-width: 0;\n display: block;\n width: 100%;\n min-width: 0;\n }\n\n /* Hide native <option> elements — we render our own UI */\n ::slotted(option),\n ::slotted(optgroup) {\n display: none;\n }\n\n /* ore-input is readonly so pointer defaults to text — override to pointer.\n `width: 100%` matters just as much: `:host` is `display: inline-block`, which — unlike a\n flex/grid container with `align-items`/`justify-items: stretch` — never stretches its own\n children to fill its own box. Without this, `.trigger` (an `ore-input`, whose own `:host`\n only guarantees a 12rem *minimum*) stays shrink-wrapped to that minimum even when this\n select's own host has already been stretched wider by an ancestor grid/flex track — visibly\n narrower than a sibling field (e.g. `ore-number-input`) occupying the same-width track. */\n .trigger {\n width: 100%;\n cursor: pointer;\n }\n\n .trigger::part(input) {\n cursor: pointer;\n caret-color: transparent;\n user-select: none;\n }\n\n /* Chips slot inside ore-input prefix */\n .chips-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-1);\n align-items: center;\n min-width: 0;\n }\n\n .chips-row[hidden] {\n display: none;\n }\n\n /* Selected option's icon(s) inside the ore-input prefix (single-select only). */\n .trigger-selected-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .trigger-selected-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n .trigger-selected-icon--image {\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n /* Suffix: loader (left) + chevron (right) */\n .trigger-suffix {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n color: var(--color-contrast-500);\n }\n\n .trigger-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--transition-fast);\n }\n\n :host([open]) .trigger-icon {\n transform: rotate(180deg);\n }\n\n .loader {\n display: none;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n border: 2px solid currentcolor;\n border-inline-end-color: transparent;\n border-radius: 50%;\n animation: var(--_motion-animation, spin var(--transition-loader) infinite);\n }\n\n /* Keyframe must live in shadow DOM — @keyframes don't inherit across shadow roots */\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n :host([loading]) .loader {\n display: inline-block;\n }\n\n /* ========================================\n Dropdown Listbox\n ======================================== */\n\n .dropdown {\n position: fixed;\n inset: 0 auto auto 0;\n z-index: var(--z-dropdown, 8000);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--size-0-5);\n max-height: 260px;\n padding: var(--size-1);\n margin: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n text-align: start;\n pointer-events: none;\n background: var(--color-canvas);\n border: var(--border) solid var(--color-contrast-200);\n border-radius: var(--_radius);\n box-shadow: var(--shadow-lg);\n\n /* Hidden by default */\n opacity: 0;\n backdrop-filter: blur(var(--blur-md));\n transform: translateY(var(--overlay-enter-translate-y));\n transition: var(\n --_motion-transition,\n opacity var(--transition-fast),\n transform var(--transition-fast),\n display var(--transition-fast) allow-discrete\n );\n }\n\n .dropdown[data-open] {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n\n @starting-style {\n opacity: 0;\n transform: translateY(var(--overlay-enter-translate-y));\n }\n }\n\n .options-list {\n display: flex;\n flex-direction: column;\n gap: 0;\n }\n\n /* ========================================\n Option Items\n ======================================== */\n\n .option {\n display: flex;\n gap: var(--size-2);\n align-items: center;\n padding: var(--size-1-5) var(--size-2-5);\n font-size: var(--text-sm);\n line-height: var(--leading-normal);\n cursor: pointer;\n border-radius: var(--rounded-sm);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n /* Truncate long labels to keep option rows compact and readable. */\n .option > span:first-of-type {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Leading icon group rendered when an option provides one or more icons. */\n .option-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .option-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n /* Image icons (URL or data: sources) — sized to match the lucide icon variant. */\n .option-icon--image {\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n .option[data-selected] .option-icon {\n color: var(--_theme-base);\n }\n\n .disabled-reason {\n flex: 0 1 45%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--text-color-tertiary);\n text-align: end;\n white-space: nowrap;\n }\n\n .option:hover:not([data-disabled]) {\n background: var(--color-contrast-100);\n }\n\n .option[data-focused]:not([data-disabled]) {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100));\n }\n\n .option[data-selected] {\n font-weight: var(--font-medium);\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50));\n }\n\n .option[data-selected][data-focused] {\n background: color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100));\n }\n\n .option[data-disabled] {\n color: var(--color-contrast-500);\n cursor: not-allowed;\n }\n\n .option-check {\n display: inline-flex;\n flex-shrink: 0;\n margin-inline-start: auto;\n color: var(--_theme-base);\n opacity: 0;\n transition: opacity var(--transition-fast);\n }\n\n .option[data-selected] .option-check {\n opacity: 1;\n }\n\n /* ========================================\n Option Groups\n ======================================== */\n\n .optgroup-label {\n padding: var(--size-1-5) var(--size-2-5) var(--size-1);\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n text-transform: uppercase;\n letter-spacing: var(--tracking-wide, 0.05em);\n }\n\n /* ========================================\n Loading / No-Results\n ======================================== */\n\n .dropdown-loading,\n .dropdown-empty {\n padding: var(--size-3) var(--size-2-5);\n font-size: var(--text-sm);\n color: var(--color-contrast-500);\n text-align: center;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"select.css.cjs","names":[],"sources":["../../../src/inputs/select/select.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n /* Pass this select's width floor down to the ore-input trigger. Without this, the\n trigger keeps the input's own 12rem floor, so a select sized below it (via\n `--select-min-width` or a constraining flex/grid track) renders a trigger wider\n than its host: overflowing it, clipped by whatever ancestor hides overflow. */\n --input-min-width: var(--select-min-width, 12rem);\n --_radius: var(--select-radius, var(--rounded-lg));\n display: inline-block;\n min-width: var(--select-min-width, 12rem);\n }\n\n :host([fullwidth]) {\n /* Full width means the trigger fills the host exactly: keep the input floor from\n holding it above a container narrower than the 12rem default. */\n --input-min-width: 0;\n display: block;\n width: 100%;\n min-width: 0;\n }\n\n /* Hide native <option> elements: we render our own UI */\n ::slotted(option),\n ::slotted(optgroup) {\n display: none;\n }\n\n /* ore-input is readonly so pointer defaults to text: override to pointer.\n `width: 100%` matters just as much: `:host` is `display: inline-block`, which: unlike a\n flex/grid container with `align-items`/`justify-items: stretch`: never stretches its own\n children to fill its own box. Without this, `.trigger` (an `ore-input`, whose own `:host`\n only guarantees a 12rem *minimum*) stays shrink-wrapped to that minimum even when this\n select's own host has already been stretched wider by an ancestor grid/flex track: visibly\n narrower than a sibling field (e.g. `ore-number-input`) occupying the same-width track. */\n .trigger {\n width: 100%;\n cursor: pointer;\n }\n\n .trigger::part(input) {\n cursor: pointer;\n caret-color: transparent;\n user-select: none;\n }\n\n /* Chips slot inside ore-input prefix */\n .chips-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-1);\n align-items: center;\n min-width: 0;\n }\n\n .chips-row[hidden] {\n display: none;\n }\n\n /* Selected option's icon(s) inside the ore-input prefix (single-select only). */\n .trigger-selected-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .trigger-selected-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n .trigger-selected-icon--image {\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n /* Suffix: loader (left) + chevron (right) */\n .trigger-suffix {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n color: var(--color-contrast-500);\n }\n\n .trigger-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--transition-fast);\n }\n\n :host([open]) .trigger-icon {\n transform: rotate(180deg);\n }\n\n .loader {\n display: none;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n border: 2px solid currentcolor;\n border-inline-end-color: transparent;\n border-radius: 50%;\n animation: var(--_motion-animation, spin var(--transition-loader) infinite);\n }\n\n /* Keyframe must live in shadow DOM: @keyframes don't inherit across shadow roots */\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n :host([loading]) .loader {\n display: inline-block;\n }\n\n /* ========================================\n Dropdown Listbox\n ======================================== */\n\n .dropdown {\n position: fixed;\n inset: 0 auto auto 0;\n z-index: var(--z-dropdown, 8000);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--size-0-5);\n max-height: 260px;\n padding: var(--size-1);\n margin: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n text-align: start;\n pointer-events: none;\n background: var(--color-canvas);\n border: var(--border) solid var(--color-contrast-200);\n border-radius: var(--_radius);\n box-shadow: var(--shadow-lg);\n\n /* Hidden by default */\n opacity: 0;\n backdrop-filter: blur(var(--blur-md));\n transform: translateY(var(--overlay-enter-translate-y));\n transition: var(\n --_motion-transition,\n opacity var(--transition-fast),\n transform var(--transition-fast),\n display var(--transition-fast) allow-discrete\n );\n }\n\n .dropdown[data-open] {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n\n @starting-style {\n opacity: 0;\n transform: translateY(var(--overlay-enter-translate-y));\n }\n }\n\n .options-list {\n display: flex;\n flex-direction: column;\n gap: 0;\n }\n\n /* ========================================\n Option Items\n ======================================== */\n\n .option {\n display: flex;\n gap: var(--size-2);\n align-items: center;\n padding: var(--size-1-5) var(--size-2-5);\n font-size: var(--text-sm);\n line-height: var(--leading-normal);\n cursor: pointer;\n border-radius: var(--rounded-sm);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n /* Truncate long labels to keep option rows compact and readable. */\n .option > span:first-of-type {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Leading icon group rendered when an option provides one or more icons. */\n .option-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .option-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n /* Image icons (URL or data: sources): sized to match the lucide icon variant. */\n .option-icon--image {\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n .option[data-selected] .option-icon {\n color: var(--_theme-base);\n }\n\n .disabled-reason {\n flex: 0 1 45%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--text-color-tertiary);\n text-align: end;\n white-space: nowrap;\n }\n\n .option:hover:not([data-disabled]) {\n background: var(--color-contrast-100);\n }\n\n .option[data-focused]:not([data-disabled]) {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100));\n }\n\n .option[data-selected] {\n font-weight: var(--font-medium);\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50));\n }\n\n .option[data-selected][data-focused] {\n background: color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100));\n }\n\n .option[data-disabled] {\n color: var(--color-contrast-500);\n cursor: not-allowed;\n }\n\n .option-check {\n display: inline-flex;\n flex-shrink: 0;\n margin-inline-start: auto;\n color: var(--_theme-base);\n opacity: 0;\n transition: opacity var(--transition-fast);\n }\n\n .option[data-selected] .option-check {\n opacity: 1;\n }\n\n /* ========================================\n Option Groups\n ======================================== */\n\n .optgroup-label {\n padding: var(--size-1-5) var(--size-2-5) var(--size-1);\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n text-transform: uppercase;\n letter-spacing: var(--tracking-wide, 0.05em);\n }\n\n /* ========================================\n Loading / No-Results\n ======================================== */\n\n .dropdown-loading,\n .dropdown-empty {\n padding: var(--size-3) var(--size-2-5);\n font-size: var(--text-sm);\n color: var(--color-contrast-500);\n text-align: center;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- var e=`@layer refine.base{:host{--input-min-width:var(--select-min-width,12rem);min-width:var(--select-min-width,12rem);display:inline-block}:host([fullwidth]){--input-min-width:0;width:100%;min-width:0;display:block}::slotted(option),::slotted(optgroup){display:none}.trigger{cursor:pointer;width:100%}.trigger::part(input){cursor:pointer;caret-color:#0000;-webkit-user-select:none;user-select:none}.chips-row{gap:var(--size-1);flex-wrap:wrap;align-items:center;min-width:0;display:flex}.chips-row[hidden]{display:none}.trigger-selected-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.trigger-selected-icon{color:var(--color-contrast-500);flex-shrink:0}.trigger-selected-icon--image{object-fit:contain;flex-shrink:0;width:1.25em;height:1.25em}.trigger-suffix{gap:var(--size-1);color:var(--color-contrast-500);align-items:center;display:flex}.trigger-icon{transition:transform var(--transition-fast);justify-content:center;align-items:center;display:flex}:host([open]) .trigger-icon{transform:rotate(180deg)}.loader{width:1em;height:1em;animation:var(--_motion-animation,spin var(--transition-loader) infinite);border:2px solid;border-radius:50%;flex-shrink:0;display:none}.loader:not(: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))){border-right-color:#0000}.loader: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)){border-left-color:#0000}@keyframes spin{to{transform:rotate(360deg)}}:host([loading]) .loader{display:inline-block}.dropdown{z-index:var(--z-dropdown,8000);box-sizing:border-box;gap:var(--size-0-5);max-height:260px;padding:var(--size-1);overscroll-behavior:contain;pointer-events:none;background:var(--color-canvas);border:var(--border) solid var(--color-contrast-200);border-radius:var(--_radius);box-shadow:var(--shadow-lg);opacity:0;-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));transform:translateY(var(--overlay-enter-translate-y));transition:var(--_motion-transition,opacity var(--transition-fast), transform var(--transition-fast), display var(--transition-fast) allow-discrete);flex-direction:column;margin:0;display:flex;position:fixed;inset:0 auto auto 0;overflow-y:auto}.dropdown:not(: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))){text-align:left}.dropdown: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)){text-align:right}.dropdown[data-open]{pointer-events:auto;opacity:1;transform:translateY(0)}@starting-style{.dropdown[data-open]{opacity:0;transform:translateY(var(--overlay-enter-translate-y))}}.options-list{flex-direction:column;gap:0;display:flex}.option{gap:var(--size-2);padding:var(--size-1-5) var(--size-2-5);font-size:var(--text-sm);line-height:var(--leading-normal);cursor:pointer;border-radius:var(--rounded-sm);transition:background var(--transition-fast), color var(--transition-fast);align-items:center;display:flex}.option>span:first-of-type{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.option-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.option-icon{color:var(--color-contrast-500);flex-shrink:0}.option-icon--image{object-fit:contain;width:1.25em;height:1.25em}.option[data-selected] .option-icon{color:var(--_theme-base)}.disabled-reason{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);color:var(--text-color-tertiary);white-space:nowrap;flex:0 45%;overflow:hidden}.disabled-reason:not(: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))){text-align:right}.disabled-reason: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)){text-align:left}.option:hover:not([data-disabled]){background:var(--color-contrast-100)}.option[data-focused]:not([data-disabled]){color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100))}.option[data-selected]{font-weight:var(--font-medium);color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50))}.option[data-selected][data-focused]{background:color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100))}.option[data-disabled]{color:var(--color-contrast-500);cursor:not-allowed}.option-check{color:var(--_theme-base);opacity:0;transition:opacity var(--transition-fast);flex-shrink:0;display:inline-flex}.option-check:not(: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))){margin-left:auto}.option-check: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)){margin-right:auto}.option[data-selected] .option-check{opacity:1}.optgroup-label{padding:var(--size-1-5) var(--size-2-5) var(--size-1);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:var(--tracking-wide,.05em)}.dropdown-loading,.dropdown-empty{padding:var(--size-3) var(--size-2-5);font-size:var(--text-sm);color:var(--color-contrast-500);text-align:center}}`;export{e as default};
1
+ var e=`@layer refine.base{:host{--input-min-width:var(--select-min-width,12rem);--_radius:var(--select-radius,var(--rounded-lg));min-width:var(--select-min-width,12rem);display:inline-block}:host([fullwidth]){--input-min-width:0;width:100%;min-width:0;display:block}::slotted(option),::slotted(optgroup){display:none}.trigger{cursor:pointer;width:100%}.trigger::part(input){cursor:pointer;caret-color:#0000;-webkit-user-select:none;user-select:none}.chips-row{gap:var(--size-1);flex-wrap:wrap;align-items:center;min-width:0;display:flex}.chips-row[hidden]{display:none}.trigger-selected-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.trigger-selected-icon{color:var(--color-contrast-500);flex-shrink:0}.trigger-selected-icon--image{object-fit:contain;flex-shrink:0;width:1.25em;height:1.25em}.trigger-suffix{gap:var(--size-1);color:var(--color-contrast-500);align-items:center;display:flex}.trigger-icon{transition:transform var(--transition-fast);justify-content:center;align-items:center;display:flex}:host([open]) .trigger-icon{transform:rotate(180deg)}.loader{width:1em;height:1em;animation:var(--_motion-animation,spin var(--transition-loader) infinite);border:2px solid;border-radius:50%;flex-shrink:0;display:none}.loader:not(: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))){border-right-color:#0000}.loader: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)){border-left-color:#0000}@keyframes spin{to{transform:rotate(360deg)}}:host([loading]) .loader{display:inline-block}.dropdown{z-index:var(--z-dropdown,8000);box-sizing:border-box;gap:var(--size-0-5);max-height:260px;padding:var(--size-1);overscroll-behavior:contain;pointer-events:none;background:var(--color-canvas);border:var(--border) solid var(--color-contrast-200);border-radius:var(--_radius);box-shadow:var(--shadow-lg);opacity:0;-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));transform:translateY(var(--overlay-enter-translate-y));transition:var(--_motion-transition,opacity var(--transition-fast), transform var(--transition-fast), display var(--transition-fast) allow-discrete);flex-direction:column;margin:0;display:flex;position:fixed;inset:0 auto auto 0;overflow-y:auto}.dropdown:not(: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))){text-align:left}.dropdown: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)){text-align:right}.dropdown[data-open]{pointer-events:auto;opacity:1;transform:translateY(0)}@starting-style{.dropdown[data-open]{opacity:0;transform:translateY(var(--overlay-enter-translate-y))}}.options-list{flex-direction:column;gap:0;display:flex}.option{gap:var(--size-2);padding:var(--size-1-5) var(--size-2-5);font-size:var(--text-sm);line-height:var(--leading-normal);cursor:pointer;border-radius:var(--rounded-sm);transition:background var(--transition-fast), color var(--transition-fast);align-items:center;display:flex}.option>span:first-of-type{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.option-icons{gap:var(--size-0-5);flex-shrink:0;align-items:center;display:inline-flex}.option-icon{color:var(--color-contrast-500);flex-shrink:0}.option-icon--image{object-fit:contain;width:1.25em;height:1.25em}.option[data-selected] .option-icon{color:var(--_theme-base)}.disabled-reason{text-overflow:ellipsis;min-width:0;font-size:var(--text-xs);color:var(--text-color-tertiary);white-space:nowrap;flex:0 45%;overflow:hidden}.disabled-reason:not(: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))){text-align:right}.disabled-reason: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)){text-align:left}.option:hover:not([data-disabled]){background:var(--color-contrast-100)}.option[data-focused]:not([data-disabled]){color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100))}.option[data-selected]{font-weight:var(--font-medium);color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50))}.option[data-selected][data-focused]{background:color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100))}.option[data-disabled]{color:var(--color-contrast-500);cursor:not-allowed}.option-check{color:var(--_theme-base);opacity:0;transition:opacity var(--transition-fast);flex-shrink:0;display:inline-flex}.option-check:not(: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))){margin-left:auto}.option-check: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)){margin-right:auto}.option[data-selected] .option-check{opacity:1}.optgroup-label{padding:var(--size-1-5) var(--size-2-5) var(--size-1);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:var(--tracking-wide,.05em)}.dropdown-loading,.dropdown-empty{padding:var(--size-3) var(--size-2-5);font-size:var(--text-sm);color:var(--color-contrast-500);text-align:center}}`;export{e as default};
2
2
  //# sourceMappingURL=select.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.css.js","names":[],"sources":["../../../src/inputs/select/select.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n /* Pass this select's width floor down to the ore-input trigger. Without this, the\n trigger keeps the input's own 12rem floor, so a select sized below it (via\n `--select-min-width` or a constraining flex/grid track) renders a trigger wider\n than its host — overflowing it, clipped by whatever ancestor hides overflow. */\n --input-min-width: var(--select-min-width, 12rem);\n display: inline-block;\n min-width: var(--select-min-width, 12rem);\n }\n\n :host([fullwidth]) {\n /* Full width means the trigger fills the host exactly — keep the input floor from\n holding it above a container narrower than the 12rem default. */\n --input-min-width: 0;\n display: block;\n width: 100%;\n min-width: 0;\n }\n\n /* Hide native <option> elements — we render our own UI */\n ::slotted(option),\n ::slotted(optgroup) {\n display: none;\n }\n\n /* ore-input is readonly so pointer defaults to text — override to pointer.\n `width: 100%` matters just as much: `:host` is `display: inline-block`, which — unlike a\n flex/grid container with `align-items`/`justify-items: stretch` — never stretches its own\n children to fill its own box. Without this, `.trigger` (an `ore-input`, whose own `:host`\n only guarantees a 12rem *minimum*) stays shrink-wrapped to that minimum even when this\n select's own host has already been stretched wider by an ancestor grid/flex track — visibly\n narrower than a sibling field (e.g. `ore-number-input`) occupying the same-width track. */\n .trigger {\n width: 100%;\n cursor: pointer;\n }\n\n .trigger::part(input) {\n cursor: pointer;\n caret-color: transparent;\n user-select: none;\n }\n\n /* Chips slot inside ore-input prefix */\n .chips-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-1);\n align-items: center;\n min-width: 0;\n }\n\n .chips-row[hidden] {\n display: none;\n }\n\n /* Selected option's icon(s) inside the ore-input prefix (single-select only). */\n .trigger-selected-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .trigger-selected-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n .trigger-selected-icon--image {\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n /* Suffix: loader (left) + chevron (right) */\n .trigger-suffix {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n color: var(--color-contrast-500);\n }\n\n .trigger-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--transition-fast);\n }\n\n :host([open]) .trigger-icon {\n transform: rotate(180deg);\n }\n\n .loader {\n display: none;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n border: 2px solid currentcolor;\n border-inline-end-color: transparent;\n border-radius: 50%;\n animation: var(--_motion-animation, spin var(--transition-loader) infinite);\n }\n\n /* Keyframe must live in shadow DOM — @keyframes don't inherit across shadow roots */\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n :host([loading]) .loader {\n display: inline-block;\n }\n\n /* ========================================\n Dropdown Listbox\n ======================================== */\n\n .dropdown {\n position: fixed;\n inset: 0 auto auto 0;\n z-index: var(--z-dropdown, 8000);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--size-0-5);\n max-height: 260px;\n padding: var(--size-1);\n margin: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n text-align: start;\n pointer-events: none;\n background: var(--color-canvas);\n border: var(--border) solid var(--color-contrast-200);\n border-radius: var(--_radius);\n box-shadow: var(--shadow-lg);\n\n /* Hidden by default */\n opacity: 0;\n backdrop-filter: blur(var(--blur-md));\n transform: translateY(var(--overlay-enter-translate-y));\n transition: var(\n --_motion-transition,\n opacity var(--transition-fast),\n transform var(--transition-fast),\n display var(--transition-fast) allow-discrete\n );\n }\n\n .dropdown[data-open] {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n\n @starting-style {\n opacity: 0;\n transform: translateY(var(--overlay-enter-translate-y));\n }\n }\n\n .options-list {\n display: flex;\n flex-direction: column;\n gap: 0;\n }\n\n /* ========================================\n Option Items\n ======================================== */\n\n .option {\n display: flex;\n gap: var(--size-2);\n align-items: center;\n padding: var(--size-1-5) var(--size-2-5);\n font-size: var(--text-sm);\n line-height: var(--leading-normal);\n cursor: pointer;\n border-radius: var(--rounded-sm);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n /* Truncate long labels to keep option rows compact and readable. */\n .option > span:first-of-type {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Leading icon group rendered when an option provides one or more icons. */\n .option-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .option-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n /* Image icons (URL or data: sources) — sized to match the lucide icon variant. */\n .option-icon--image {\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n .option[data-selected] .option-icon {\n color: var(--_theme-base);\n }\n\n .disabled-reason {\n flex: 0 1 45%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--text-color-tertiary);\n text-align: end;\n white-space: nowrap;\n }\n\n .option:hover:not([data-disabled]) {\n background: var(--color-contrast-100);\n }\n\n .option[data-focused]:not([data-disabled]) {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100));\n }\n\n .option[data-selected] {\n font-weight: var(--font-medium);\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50));\n }\n\n .option[data-selected][data-focused] {\n background: color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100));\n }\n\n .option[data-disabled] {\n color: var(--color-contrast-500);\n cursor: not-allowed;\n }\n\n .option-check {\n display: inline-flex;\n flex-shrink: 0;\n margin-inline-start: auto;\n color: var(--_theme-base);\n opacity: 0;\n transition: opacity var(--transition-fast);\n }\n\n .option[data-selected] .option-check {\n opacity: 1;\n }\n\n /* ========================================\n Option Groups\n ======================================== */\n\n .optgroup-label {\n padding: var(--size-1-5) var(--size-2-5) var(--size-1);\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n text-transform: uppercase;\n letter-spacing: var(--tracking-wide, 0.05em);\n }\n\n /* ========================================\n Loading / No-Results\n ======================================== */\n\n .dropdown-loading,\n .dropdown-empty {\n padding: var(--size-3) var(--size-2-5);\n font-size: var(--text-sm);\n color: var(--color-contrast-500);\n text-align: center;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"select.css.js","names":[],"sources":["../../../src/inputs/select/select.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n /* Pass this select's width floor down to the ore-input trigger. Without this, the\n trigger keeps the input's own 12rem floor, so a select sized below it (via\n `--select-min-width` or a constraining flex/grid track) renders a trigger wider\n than its host: overflowing it, clipped by whatever ancestor hides overflow. */\n --input-min-width: var(--select-min-width, 12rem);\n --_radius: var(--select-radius, var(--rounded-lg));\n display: inline-block;\n min-width: var(--select-min-width, 12rem);\n }\n\n :host([fullwidth]) {\n /* Full width means the trigger fills the host exactly: keep the input floor from\n holding it above a container narrower than the 12rem default. */\n --input-min-width: 0;\n display: block;\n width: 100%;\n min-width: 0;\n }\n\n /* Hide native <option> elements: we render our own UI */\n ::slotted(option),\n ::slotted(optgroup) {\n display: none;\n }\n\n /* ore-input is readonly so pointer defaults to text: override to pointer.\n `width: 100%` matters just as much: `:host` is `display: inline-block`, which: unlike a\n flex/grid container with `align-items`/`justify-items: stretch`: never stretches its own\n children to fill its own box. Without this, `.trigger` (an `ore-input`, whose own `:host`\n only guarantees a 12rem *minimum*) stays shrink-wrapped to that minimum even when this\n select's own host has already been stretched wider by an ancestor grid/flex track: visibly\n narrower than a sibling field (e.g. `ore-number-input`) occupying the same-width track. */\n .trigger {\n width: 100%;\n cursor: pointer;\n }\n\n .trigger::part(input) {\n cursor: pointer;\n caret-color: transparent;\n user-select: none;\n }\n\n /* Chips slot inside ore-input prefix */\n .chips-row {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-1);\n align-items: center;\n min-width: 0;\n }\n\n .chips-row[hidden] {\n display: none;\n }\n\n /* Selected option's icon(s) inside the ore-input prefix (single-select only). */\n .trigger-selected-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .trigger-selected-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n .trigger-selected-icon--image {\n flex-shrink: 0;\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n /* Suffix: loader (left) + chevron (right) */\n .trigger-suffix {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n color: var(--color-contrast-500);\n }\n\n .trigger-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--transition-fast);\n }\n\n :host([open]) .trigger-icon {\n transform: rotate(180deg);\n }\n\n .loader {\n display: none;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n border: 2px solid currentcolor;\n border-inline-end-color: transparent;\n border-radius: 50%;\n animation: var(--_motion-animation, spin var(--transition-loader) infinite);\n }\n\n /* Keyframe must live in shadow DOM: @keyframes don't inherit across shadow roots */\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n :host([loading]) .loader {\n display: inline-block;\n }\n\n /* ========================================\n Dropdown Listbox\n ======================================== */\n\n .dropdown {\n position: fixed;\n inset: 0 auto auto 0;\n z-index: var(--z-dropdown, 8000);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--size-0-5);\n max-height: 260px;\n padding: var(--size-1);\n margin: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n text-align: start;\n pointer-events: none;\n background: var(--color-canvas);\n border: var(--border) solid var(--color-contrast-200);\n border-radius: var(--_radius);\n box-shadow: var(--shadow-lg);\n\n /* Hidden by default */\n opacity: 0;\n backdrop-filter: blur(var(--blur-md));\n transform: translateY(var(--overlay-enter-translate-y));\n transition: var(\n --_motion-transition,\n opacity var(--transition-fast),\n transform var(--transition-fast),\n display var(--transition-fast) allow-discrete\n );\n }\n\n .dropdown[data-open] {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n\n @starting-style {\n opacity: 0;\n transform: translateY(var(--overlay-enter-translate-y));\n }\n }\n\n .options-list {\n display: flex;\n flex-direction: column;\n gap: 0;\n }\n\n /* ========================================\n Option Items\n ======================================== */\n\n .option {\n display: flex;\n gap: var(--size-2);\n align-items: center;\n padding: var(--size-1-5) var(--size-2-5);\n font-size: var(--text-sm);\n line-height: var(--leading-normal);\n cursor: pointer;\n border-radius: var(--rounded-sm);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n }\n\n /* Truncate long labels to keep option rows compact and readable. */\n .option > span:first-of-type {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Leading icon group rendered when an option provides one or more icons. */\n .option-icons {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-0-5);\n align-items: center;\n }\n\n .option-icon {\n flex-shrink: 0;\n color: var(--color-contrast-500);\n }\n\n /* Image icons (URL or data: sources): sized to match the lucide icon variant. */\n .option-icon--image {\n width: 1.25em;\n height: 1.25em;\n object-fit: contain;\n }\n\n .option[data-selected] .option-icon {\n color: var(--_theme-base);\n }\n\n .disabled-reason {\n flex: 0 1 45%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--text-color-tertiary);\n text-align: end;\n white-space: nowrap;\n }\n\n .option:hover:not([data-disabled]) {\n background: var(--color-contrast-100);\n }\n\n .option[data-focused]:not([data-disabled]) {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 12%, var(--color-contrast-100));\n }\n\n .option[data-selected] {\n font-weight: var(--font-medium);\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-base) 10%, var(--color-contrast-50));\n }\n\n .option[data-selected][data-focused] {\n background: color-mix(in oklch, var(--_theme-base) 20%, var(--color-contrast-100));\n }\n\n .option[data-disabled] {\n color: var(--color-contrast-500);\n cursor: not-allowed;\n }\n\n .option-check {\n display: inline-flex;\n flex-shrink: 0;\n margin-inline-start: auto;\n color: var(--_theme-base);\n opacity: 0;\n transition: opacity var(--transition-fast);\n }\n\n .option[data-selected] .option-check {\n opacity: 1;\n }\n\n /* ========================================\n Option Groups\n ======================================== */\n\n .optgroup-label {\n padding: var(--size-1-5) var(--size-2-5) var(--size-1);\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n text-transform: uppercase;\n letter-spacing: var(--tracking-wide, 0.05em);\n }\n\n /* ========================================\n Loading / No-Results\n ======================================== */\n\n .dropdown-loading,\n .dropdown-empty {\n padding: var(--size-3) var(--size-2-5);\n font-size: var(--text-sm);\n color: var(--color-contrast-500);\n text-align: center;\n }\n}\n"],"mappings":""}
@@ -9,7 +9,7 @@ export type OreSelectOptionInput = {
9
9
  /** Explanation displayed and announced when the option is disabled. */
10
10
  disabledReason?: string;
11
11
  group?: string;
12
- /** Icon(s) rendered before the option label — lucide name(s) or image URL(s). */
12
+ /** Icon(s) rendered before the option label: lucide name(s) or image URL(s). */
13
13
  icon?: string | string[];
14
14
  label?: string;
15
15
  value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/inputs/select/select.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAqB,MAAM,YAAY,CAAC;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAa3C,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA8BF,kCAAkC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,uBAAuB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG;IACnF,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/inputs/select/select.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAqB,MAAM,YAAY,CAAC;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAa3C,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA8BF,kCAAkC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,uBAAuB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG;IACnF,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-binding.cjs","names":[],"sources":["../../../src/inputs/shared/field-binding.ts"],"sourcesContent":["import { bind } from '@vielzeug/ore';\nimport type { Readable, Signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize } from '../../types';\n\n/**\n * Minimal shape of the handle returned by `createCheckable` that\n * `applyCheckableBinding` needs. Matches both checkbox (with `indeterminate`)\n * and switch (without).\n */\nexport type CheckableBindingHandle = {\n assistiveId: string;\n checked: Signal<boolean>;\n disabled: Readable<boolean>;\n errorText: Readable<string>;\n handleClick: (event: MouseEvent) => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n helperText: Readable<string>;\n indeterminate?: Signal<boolean>;\n labelId: string;\n /** Reflects `aria-required` — there's no native form control here to carry a real `required` attribute. */\n required?: Readable<boolean | undefined>;\n};\n\n/**\n * `prop.string()` already reflects `error`'s raw value as an attribute, but that leaves the\n * attribute present-but-empty (`error=\"\"`) once set instead of removing it — this normalizes\n * an empty error back to \"no attribute at all\". Shared by every text-field component\n * (`ore-input`, `ore-textarea`, `ore-message-composer`) since `bind()`'s own `error` writer\n * needs a derived getter, not the raw prop, to get that behavior.\n *\n * @example\n * ```ts\n * bind({ attr: { error: errorAttr(errorText), size: props.size, variant: props.variant } });\n * ```\n */\nexport const errorAttr = (errorText: Readable<string>): (() => string | undefined) => {\n return () => errorText.value || undefined;\n};\n\n/**\n * Applies the standard host bindings shared by all checkable components\n * (checkbox, switch, radio).\n *\n * Wires `role`, all ARIA attributes, `checked`, `size`, `tabindex`, the\n * `is-checked`/`is-disabled` classes, and the `click`/`keydown` event handlers.\n *\n * Pass `handle.indeterminate` for components that need it (checkbox);\n * omit it for switch/radio.\n */\nexport const applyCheckableBinding = (\n fCtxSize: Readable<ComponentSize | undefined>,\n handle: CheckableBindingHandle,\n role: 'checkbox' | 'radio' | 'switch',\n): void => {\n const {\n assistiveId,\n checked,\n disabled,\n errorText,\n handleClick,\n handleKeydown,\n helperText,\n indeterminate,\n labelId,\n required,\n } = handle;\n\n bind({\n attr: {\n ...(indeterminate !== undefined && { indeterminate }),\n 'aria-checked': () => {\n if (role === 'checkbox' && indeterminate?.value) return 'mixed';\n\n return checked.value ? 'true' : 'false';\n },\n 'aria-describedby': () => (errorText.value || helperText.value ? assistiveId : null),\n 'aria-disabled': () => (disabled.value ? 'true' : null),\n 'aria-invalid': () => (errorText.value ? 'true' : null),\n 'aria-labelledby': labelId,\n 'aria-required': () => (required?.value ? 'true' : null),\n checked,\n role,\n size: fCtxSize,\n tabindex: () => (disabled.value ? undefined : 0),\n },\n class: () => ({\n 'is-checked': checked.value,\n 'is-disabled': disabled.value,\n ...(indeterminate !== undefined && { 'is-indeterminate': indeterminate.value }),\n }),\n on: {\n click: handleClick,\n keydown: handleKeydown,\n },\n });\n};\n"],"mappings":"+BAoCA,IAAa,UAAa,OACX,EAAU,OAAS,IAAA,GAarB,uBACX,EACA,EACA,IACS,CACT,GAAM,CACJ,cACA,UACA,WACA,YACA,cACA,gBACA,aACA,gBACA,UACA,YACE,GAEJ,EAAA,EAAA,KAAA,CAAK,CACH,KAAM,CACJ,GAAI,IAAkB,IAAA,IAAa,CAAE,eAAc,EACnD,mBACM,IAAS,YAAc,GAAe,MAAc,QAEjD,EAAQ,MAAQ,OAAS,QAElC,uBAA2B,EAAU,OAAS,EAAW,MAAQ,EAAc,KAC/E,oBAAwB,EAAS,MAAQ,OAAS,KAClD,mBAAuB,EAAU,MAAQ,OAAS,KAClD,kBAAmB,EACnB,oBAAwB,GAAU,MAAQ,OAAS,KACnD,UACA,OACA,KAAM,EACN,aAAiB,EAAS,MAAQ,IAAA,GAAY,CAChD,EACA,WAAc,CACZ,aAAc,EAAQ,MACtB,cAAe,EAAS,MACxB,GAAI,IAAkB,IAAA,IAAa,CAAE,mBAAoB,EAAc,KAAM,CAC/E,GACA,GAAI,CACF,MAAO,EACP,QAAS,CACX,CACF,CAAC,CACH"}
1
+ {"version":3,"file":"field-binding.cjs","names":[],"sources":["../../../src/inputs/shared/field-binding.ts"],"sourcesContent":["import { bind } from '@vielzeug/ore';\nimport type { Readable, Signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize } from '../../types';\n\n/**\n * Minimal shape of the handle returned by `createCheckable` that\n * `applyCheckableBinding` needs. Matches both checkbox (with `indeterminate`)\n * and switch (without).\n */\nexport type CheckableBindingHandle = {\n assistiveId: string;\n checked: Signal<boolean>;\n disabled: Readable<boolean>;\n errorText: Readable<string>;\n handleClick: (event: MouseEvent) => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n helperText: Readable<string>;\n indeterminate?: Signal<boolean>;\n labelId: string;\n /** Reflects `aria-required`: there's no native form control here to carry a real `required` attribute. */\n required?: Readable<boolean | undefined>;\n};\n\n/**\n * `prop.string()` already reflects `error`'s raw value as an attribute, but that leaves the\n * attribute present-but-empty (`error=\"\"`) once set instead of removing it: this normalizes\n * an empty error back to \"no attribute at all\". Shared by every text-field component\n * (`ore-input`, `ore-textarea`, `ore-message-composer`) since `bind()`'s own `error` writer\n * needs a derived getter, not the raw prop, to get that behavior.\n *\n * @example\n * ```ts\n * bind({ attr: { error: errorAttr(errorText), size: props.size, variant: props.variant } });\n * ```\n */\nexport const errorAttr = (errorText: Readable<string>): (() => string | undefined) => {\n return () => errorText.value || undefined;\n};\n\n/**\n * Applies the standard host bindings shared by all checkable components\n * (checkbox, switch, radio).\n *\n * Wires `role`, all ARIA attributes, `checked`, `size`, `tabindex`, the\n * `is-checked`/`is-disabled` classes, and the `click`/`keydown` event handlers.\n *\n * Pass `handle.indeterminate` for components that need it (checkbox);\n * omit it for switch/radio.\n */\nexport const applyCheckableBinding = (\n fCtxSize: Readable<ComponentSize | undefined>,\n handle: CheckableBindingHandle,\n role: 'checkbox' | 'radio' | 'switch',\n): void => {\n const {\n assistiveId,\n checked,\n disabled,\n errorText,\n handleClick,\n handleKeydown,\n helperText,\n indeterminate,\n labelId,\n required,\n } = handle;\n\n bind({\n attr: {\n ...(indeterminate !== undefined && { indeterminate }),\n 'aria-checked': () => {\n if (role === 'checkbox' && indeterminate?.value) return 'mixed';\n\n return checked.value ? 'true' : 'false';\n },\n 'aria-describedby': () => (errorText.value || helperText.value ? assistiveId : null),\n 'aria-disabled': () => (disabled.value ? 'true' : null),\n 'aria-invalid': () => (errorText.value ? 'true' : null),\n 'aria-labelledby': labelId,\n 'aria-required': () => (required?.value ? 'true' : null),\n checked,\n role,\n size: fCtxSize,\n tabindex: () => (disabled.value ? undefined : 0),\n },\n class: () => ({\n 'is-checked': checked.value,\n 'is-disabled': disabled.value,\n ...(indeterminate !== undefined && { 'is-indeterminate': indeterminate.value }),\n }),\n on: {\n click: handleClick,\n keydown: handleKeydown,\n },\n });\n};\n"],"mappings":"+BAoCA,IAAa,UAAa,OACX,EAAU,OAAS,IAAA,GAarB,uBACX,EACA,EACA,IACS,CACT,GAAM,CACJ,cACA,UACA,WACA,YACA,cACA,gBACA,aACA,gBACA,UACA,YACE,GAEJ,EAAA,EAAA,KAAA,CAAK,CACH,KAAM,CACJ,GAAI,IAAkB,IAAA,IAAa,CAAE,eAAc,EACnD,mBACM,IAAS,YAAc,GAAe,MAAc,QAEjD,EAAQ,MAAQ,OAAS,QAElC,uBAA2B,EAAU,OAAS,EAAW,MAAQ,EAAc,KAC/E,oBAAwB,EAAS,MAAQ,OAAS,KAClD,mBAAuB,EAAU,MAAQ,OAAS,KAClD,kBAAmB,EACnB,oBAAwB,GAAU,MAAQ,OAAS,KACnD,UACA,OACA,KAAM,EACN,aAAiB,EAAS,MAAQ,IAAA,GAAY,CAChD,EACA,WAAc,CACZ,aAAc,EAAQ,MACtB,cAAe,EAAS,MACxB,GAAI,IAAkB,IAAA,IAAa,CAAE,mBAAoB,EAAc,KAAM,CAC/E,GACA,GAAI,CACF,MAAO,EACP,QAAS,CACX,CACF,CAAC,CACH"}
@@ -15,12 +15,12 @@ export type CheckableBindingHandle = {
15
15
  helperText: Readable<string>;
16
16
  indeterminate?: Signal<boolean>;
17
17
  labelId: string;
18
- /** Reflects `aria-required` — there's no native form control here to carry a real `required` attribute. */
18
+ /** Reflects `aria-required`: there's no native form control here to carry a real `required` attribute. */
19
19
  required?: Readable<boolean | undefined>;
20
20
  };
21
21
  /**
22
22
  * `prop.string()` already reflects `error`'s raw value as an attribute, but that leaves the
23
- * attribute present-but-empty (`error=""`) once set instead of removing it — this normalizes
23
+ * attribute present-but-empty (`error=""`) once set instead of removing it: this normalizes
24
24
  * an empty error back to "no attribute at all". Shared by every text-field component
25
25
  * (`ore-input`, `ore-textarea`, `ore-message-composer`) since `bind()`'s own `error` writer
26
26
  * needs a derived getter, not the raw prop, to get that behavior.
@@ -1 +1 @@
1
- {"version":3,"file":"field-binding.d.ts","sourceRoot":"","sources":["../../../src/inputs/shared/field-binding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;IACjD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,QAAQ,CAAC,MAAM,CAAC,KAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAEhF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC,EAC7C,QAAQ,sBAAsB,EAC9B,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,KACpC,IA0CF,CAAC"}
1
+ {"version":3,"file":"field-binding.d.ts","sourceRoot":"","sources":["../../../src/inputs/shared/field-binding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;IACjD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,QAAQ,CAAC,MAAM,CAAC,KAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAEhF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC,EAC7C,QAAQ,sBAAsB,EAC9B,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,KACpC,IA0CF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-binding.js","names":[],"sources":["../../../src/inputs/shared/field-binding.ts"],"sourcesContent":["import { bind } from '@vielzeug/ore';\nimport type { Readable, Signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize } from '../../types';\n\n/**\n * Minimal shape of the handle returned by `createCheckable` that\n * `applyCheckableBinding` needs. Matches both checkbox (with `indeterminate`)\n * and switch (without).\n */\nexport type CheckableBindingHandle = {\n assistiveId: string;\n checked: Signal<boolean>;\n disabled: Readable<boolean>;\n errorText: Readable<string>;\n handleClick: (event: MouseEvent) => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n helperText: Readable<string>;\n indeterminate?: Signal<boolean>;\n labelId: string;\n /** Reflects `aria-required` — there's no native form control here to carry a real `required` attribute. */\n required?: Readable<boolean | undefined>;\n};\n\n/**\n * `prop.string()` already reflects `error`'s raw value as an attribute, but that leaves the\n * attribute present-but-empty (`error=\"\"`) once set instead of removing it — this normalizes\n * an empty error back to \"no attribute at all\". Shared by every text-field component\n * (`ore-input`, `ore-textarea`, `ore-message-composer`) since `bind()`'s own `error` writer\n * needs a derived getter, not the raw prop, to get that behavior.\n *\n * @example\n * ```ts\n * bind({ attr: { error: errorAttr(errorText), size: props.size, variant: props.variant } });\n * ```\n */\nexport const errorAttr = (errorText: Readable<string>): (() => string | undefined) => {\n return () => errorText.value || undefined;\n};\n\n/**\n * Applies the standard host bindings shared by all checkable components\n * (checkbox, switch, radio).\n *\n * Wires `role`, all ARIA attributes, `checked`, `size`, `tabindex`, the\n * `is-checked`/`is-disabled` classes, and the `click`/`keydown` event handlers.\n *\n * Pass `handle.indeterminate` for components that need it (checkbox);\n * omit it for switch/radio.\n */\nexport const applyCheckableBinding = (\n fCtxSize: Readable<ComponentSize | undefined>,\n handle: CheckableBindingHandle,\n role: 'checkbox' | 'radio' | 'switch',\n): void => {\n const {\n assistiveId,\n checked,\n disabled,\n errorText,\n handleClick,\n handleKeydown,\n helperText,\n indeterminate,\n labelId,\n required,\n } = handle;\n\n bind({\n attr: {\n ...(indeterminate !== undefined && { indeterminate }),\n 'aria-checked': () => {\n if (role === 'checkbox' && indeterminate?.value) return 'mixed';\n\n return checked.value ? 'true' : 'false';\n },\n 'aria-describedby': () => (errorText.value || helperText.value ? assistiveId : null),\n 'aria-disabled': () => (disabled.value ? 'true' : null),\n 'aria-invalid': () => (errorText.value ? 'true' : null),\n 'aria-labelledby': labelId,\n 'aria-required': () => (required?.value ? 'true' : null),\n checked,\n role,\n size: fCtxSize,\n tabindex: () => (disabled.value ? undefined : 0),\n },\n class: () => ({\n 'is-checked': checked.value,\n 'is-disabled': disabled.value,\n ...(indeterminate !== undefined && { 'is-indeterminate': indeterminate.value }),\n }),\n on: {\n click: handleClick,\n keydown: handleKeydown,\n },\n });\n};\n"],"mappings":"qCAoCA,IAAa,UAAa,OACX,EAAU,OAAS,IAAA,GAarB,uBACX,EACA,EACA,IACS,CACT,GAAM,CACJ,cACA,UACA,WACA,YACA,cACA,gBACA,aACA,gBACA,UACA,YACE,EAEJ,EAAK,CACH,KAAM,CACJ,GAAI,IAAkB,IAAA,IAAa,CAAE,eAAc,EACnD,mBACM,IAAS,YAAc,GAAe,MAAc,QAEjD,EAAQ,MAAQ,OAAS,QAElC,uBAA2B,EAAU,OAAS,EAAW,MAAQ,EAAc,KAC/E,oBAAwB,EAAS,MAAQ,OAAS,KAClD,mBAAuB,EAAU,MAAQ,OAAS,KAClD,kBAAmB,EACnB,oBAAwB,GAAU,MAAQ,OAAS,KACnD,UACA,OACA,KAAM,EACN,aAAiB,EAAS,MAAQ,IAAA,GAAY,CAChD,EACA,WAAc,CACZ,aAAc,EAAQ,MACtB,cAAe,EAAS,MACxB,GAAI,IAAkB,IAAA,IAAa,CAAE,mBAAoB,EAAc,KAAM,CAC/E,GACA,GAAI,CACF,MAAO,EACP,QAAS,CACX,CACF,CAAC,CACH"}
1
+ {"version":3,"file":"field-binding.js","names":[],"sources":["../../../src/inputs/shared/field-binding.ts"],"sourcesContent":["import { bind } from '@vielzeug/ore';\nimport type { Readable, Signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize } from '../../types';\n\n/**\n * Minimal shape of the handle returned by `createCheckable` that\n * `applyCheckableBinding` needs. Matches both checkbox (with `indeterminate`)\n * and switch (without).\n */\nexport type CheckableBindingHandle = {\n assistiveId: string;\n checked: Signal<boolean>;\n disabled: Readable<boolean>;\n errorText: Readable<string>;\n handleClick: (event: MouseEvent) => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n helperText: Readable<string>;\n indeterminate?: Signal<boolean>;\n labelId: string;\n /** Reflects `aria-required`: there's no native form control here to carry a real `required` attribute. */\n required?: Readable<boolean | undefined>;\n};\n\n/**\n * `prop.string()` already reflects `error`'s raw value as an attribute, but that leaves the\n * attribute present-but-empty (`error=\"\"`) once set instead of removing it: this normalizes\n * an empty error back to \"no attribute at all\". Shared by every text-field component\n * (`ore-input`, `ore-textarea`, `ore-message-composer`) since `bind()`'s own `error` writer\n * needs a derived getter, not the raw prop, to get that behavior.\n *\n * @example\n * ```ts\n * bind({ attr: { error: errorAttr(errorText), size: props.size, variant: props.variant } });\n * ```\n */\nexport const errorAttr = (errorText: Readable<string>): (() => string | undefined) => {\n return () => errorText.value || undefined;\n};\n\n/**\n * Applies the standard host bindings shared by all checkable components\n * (checkbox, switch, radio).\n *\n * Wires `role`, all ARIA attributes, `checked`, `size`, `tabindex`, the\n * `is-checked`/`is-disabled` classes, and the `click`/`keydown` event handlers.\n *\n * Pass `handle.indeterminate` for components that need it (checkbox);\n * omit it for switch/radio.\n */\nexport const applyCheckableBinding = (\n fCtxSize: Readable<ComponentSize | undefined>,\n handle: CheckableBindingHandle,\n role: 'checkbox' | 'radio' | 'switch',\n): void => {\n const {\n assistiveId,\n checked,\n disabled,\n errorText,\n handleClick,\n handleKeydown,\n helperText,\n indeterminate,\n labelId,\n required,\n } = handle;\n\n bind({\n attr: {\n ...(indeterminate !== undefined && { indeterminate }),\n 'aria-checked': () => {\n if (role === 'checkbox' && indeterminate?.value) return 'mixed';\n\n return checked.value ? 'true' : 'false';\n },\n 'aria-describedby': () => (errorText.value || helperText.value ? assistiveId : null),\n 'aria-disabled': () => (disabled.value ? 'true' : null),\n 'aria-invalid': () => (errorText.value ? 'true' : null),\n 'aria-labelledby': labelId,\n 'aria-required': () => (required?.value ? 'true' : null),\n checked,\n role,\n size: fCtxSize,\n tabindex: () => (disabled.value ? undefined : 0),\n },\n class: () => ({\n 'is-checked': checked.value,\n 'is-disabled': disabled.value,\n ...(indeterminate !== undefined && { 'is-indeterminate': indeterminate.value }),\n }),\n on: {\n click: handleClick,\n keydown: handleKeydown,\n },\n });\n};\n"],"mappings":"qCAoCA,IAAa,UAAa,OACX,EAAU,OAAS,IAAA,GAarB,uBACX,EACA,EACA,IACS,CACT,GAAM,CACJ,cACA,UACA,WACA,YACA,cACA,gBACA,aACA,gBACA,UACA,YACE,EAEJ,EAAK,CACH,KAAM,CACJ,GAAI,IAAkB,IAAA,IAAa,CAAE,eAAc,EACnD,mBACM,IAAS,YAAc,GAAe,MAAc,QAEjD,EAAQ,MAAQ,OAAS,QAElC,uBAA2B,EAAU,OAAS,EAAW,MAAQ,EAAc,KAC/E,oBAAwB,EAAS,MAAQ,OAAS,KAClD,mBAAuB,EAAU,MAAQ,OAAS,KAClD,kBAAmB,EACnB,oBAAwB,GAAU,MAAQ,OAAS,KACnD,UACA,OACA,KAAM,EACN,aAAiB,EAAS,MAAQ,IAAA,GAAY,CAChD,EACA,WAAc,CACZ,aAAc,EAAQ,MACtB,cAAe,EAAS,MACxB,GAAI,IAAkB,IAAA,IAAa,CAAE,mBAAoB,EAAc,KAAM,CAC/E,GACA,GAAI,CACF,MAAO,EACP,QAAS,CACX,CACF,CAAC,CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-field-event.cjs","names":[],"sources":["../../../src/inputs/shared/native-field-event.ts"],"sourcesContent":["type FieldHost = HTMLElement & {\n checked?: boolean;\n value?: string;\n};\n\nexport const defineFieldChecked = (host: HTMLElement, get: () => boolean, set: (checked: boolean) => void): void => {\n Object.defineProperty(host, 'checked', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const defineFieldValue = (host: HTMLElement, get: () => string, set: (value: string) => void): void => {\n Object.defineProperty(host, 'value', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const dispatchNativeFieldEvent = (host: HTMLElement, type: 'change' | 'input'): void => {\n host.dispatchEvent(new Event(type, { bubbles: true, composed: true }));\n};\n\nexport const setFieldChecked = (host: HTMLElement, checked: boolean): void => {\n (host as FieldHost).checked = checked;\n};\n\nexport const setFieldValue = (host: HTMLElement, value: string): void => {\n (host as FieldHost).value = value;\n};\n\n/**\n * Reads the `value` off the element an event fired from (`event.currentTarget`), guarding the\n * cast: `undefined` when the target is missing or carries no string `value`. The read-side\n * companion to {@link setFieldValue} — consumers wiring a native `change`/`input` handler to a\n * field no longer re-derive the `(currentTarget as HTMLElement & { value: string }).value` cast.\n */\nexport const eventFieldValue = (event: Event): string | undefined => {\n const target = event.currentTarget;\n\n if (target === null || !('value' in target) || typeof target.value !== 'string') return undefined;\n\n return target.value;\n};\n\n/**\n * Reads the `checked` flag off the element an event fired from (`event.currentTarget`), guarding\n * the cast: `false` when the target is missing or carries no boolean `checked`. The read-side\n * companion to {@link setFieldChecked}.\n */\nexport const eventFieldChecked = (event: Event): boolean => {\n const target = event.currentTarget;\n\n if (target === null || !('checked' in target) || typeof target.checked !== 'boolean') return false;\n\n return target.checked;\n};\n"],"mappings":"AAKA,IAAa,oBAAsB,EAAmB,EAAoB,IAA0C,CAClH,OAAO,eAAe,EAAM,UAAW,CACrC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,kBAAoB,EAAmB,EAAmB,IAAuC,CAC5G,OAAO,eAAe,EAAM,QAAS,CACnC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,0BAA4B,EAAmB,IAAmC,CAC7F,EAAK,cAAc,IAAI,MAAM,EAAM,CAAE,QAAS,GAAM,SAAU,EAAK,CAAC,CAAC,CACvE,EAEa,iBAAmB,EAAmB,IAA2B,CAC5E,EAAoB,QAAU,CAChC,EAEa,eAAiB,EAAmB,IAAwB,CACvE,EAAoB,MAAQ,CAC9B,EAQa,gBAAmB,GAAqC,CACnE,IAAM,EAAS,EAAM,cAEjB,OAAW,MAAU,UAAW,GAAW,OAAO,EAAO,OAAU,SAEvE,OAAO,EAAO,KAChB,EAOa,kBAAqB,GAA0B,CAC1D,IAAM,EAAS,EAAM,cAIrB,OAFI,IAAW,MAAQ,EAAE,YAAa,IAAW,OAAO,EAAO,SAAY,UAAkB,GAEtF,EAAO,OAChB"}
1
+ {"version":3,"file":"native-field-event.cjs","names":[],"sources":["../../../src/inputs/shared/native-field-event.ts"],"sourcesContent":["type FieldHost = HTMLElement & {\n checked?: boolean;\n value?: string;\n};\n\nexport const defineFieldChecked = (host: HTMLElement, get: () => boolean, set: (checked: boolean) => void): void => {\n Object.defineProperty(host, 'checked', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const defineFieldValue = (host: HTMLElement, get: () => string, set: (value: string) => void): void => {\n Object.defineProperty(host, 'value', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const dispatchNativeFieldEvent = (host: HTMLElement, type: 'change' | 'input'): void => {\n host.dispatchEvent(new Event(type, { bubbles: true, composed: true }));\n};\n\nexport const setFieldChecked = (host: HTMLElement, checked: boolean): void => {\n (host as FieldHost).checked = checked;\n};\n\nexport const setFieldValue = (host: HTMLElement, value: string): void => {\n (host as FieldHost).value = value;\n};\n\n/**\n * Reads the `value` off the element an event fired from (`event.currentTarget`), guarding the\n * cast: `undefined` when the target is missing or carries no string `value`. The read-side\n * companion to {@link setFieldValue}: consumers wiring a native `change`/`input` handler to a\n * field no longer re-derive the `(currentTarget as HTMLElement & { value: string }).value` cast.\n */\nexport const eventFieldValue = (event: Event): string | undefined => {\n const target = event.currentTarget;\n\n if (target === null || !('value' in target) || typeof target.value !== 'string') return undefined;\n\n return target.value;\n};\n\n/**\n * Reads the `checked` flag off the element an event fired from (`event.currentTarget`), guarding\n * the cast: `false` when the target is missing or carries no boolean `checked`. The read-side\n * companion to {@link setFieldChecked}.\n */\nexport const eventFieldChecked = (event: Event): boolean => {\n const target = event.currentTarget;\n\n if (target === null || !('checked' in target) || typeof target.checked !== 'boolean') return false;\n\n return target.checked;\n};\n"],"mappings":"AAKA,IAAa,oBAAsB,EAAmB,EAAoB,IAA0C,CAClH,OAAO,eAAe,EAAM,UAAW,CACrC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,kBAAoB,EAAmB,EAAmB,IAAuC,CAC5G,OAAO,eAAe,EAAM,QAAS,CACnC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,0BAA4B,EAAmB,IAAmC,CAC7F,EAAK,cAAc,IAAI,MAAM,EAAM,CAAE,QAAS,GAAM,SAAU,EAAK,CAAC,CAAC,CACvE,EAEa,iBAAmB,EAAmB,IAA2B,CAC5E,EAAoB,QAAU,CAChC,EAEa,eAAiB,EAAmB,IAAwB,CACvE,EAAoB,MAAQ,CAC9B,EAQa,gBAAmB,GAAqC,CACnE,IAAM,EAAS,EAAM,cAEjB,OAAW,MAAU,UAAW,GAAW,OAAO,EAAO,OAAU,SAEvE,OAAO,EAAO,KAChB,EAOa,kBAAqB,GAA0B,CAC1D,IAAM,EAAS,EAAM,cAIrB,OAFI,IAAW,MAAQ,EAAE,YAAa,IAAW,OAAO,EAAO,SAAY,UAAkB,GAEtF,EAAO,OAChB"}
@@ -6,7 +6,7 @@ export declare const setFieldValue: (host: HTMLElement, value: string) => void;
6
6
  /**
7
7
  * Reads the `value` off the element an event fired from (`event.currentTarget`), guarding the
8
8
  * cast: `undefined` when the target is missing or carries no string `value`. The read-side
9
- * companion to {@link setFieldValue} — consumers wiring a native `change`/`input` handler to a
9
+ * companion to {@link setFieldValue}: consumers wiring a native `change`/`input` handler to a
10
10
  * field no longer re-derive the `(currentTarget as HTMLElement & { value: string }).value` cast.
11
11
  */
12
12
  export declare const eventFieldValue: (event: Event) => string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"native-field-event.js","names":[],"sources":["../../../src/inputs/shared/native-field-event.ts"],"sourcesContent":["type FieldHost = HTMLElement & {\n checked?: boolean;\n value?: string;\n};\n\nexport const defineFieldChecked = (host: HTMLElement, get: () => boolean, set: (checked: boolean) => void): void => {\n Object.defineProperty(host, 'checked', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const defineFieldValue = (host: HTMLElement, get: () => string, set: (value: string) => void): void => {\n Object.defineProperty(host, 'value', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const dispatchNativeFieldEvent = (host: HTMLElement, type: 'change' | 'input'): void => {\n host.dispatchEvent(new Event(type, { bubbles: true, composed: true }));\n};\n\nexport const setFieldChecked = (host: HTMLElement, checked: boolean): void => {\n (host as FieldHost).checked = checked;\n};\n\nexport const setFieldValue = (host: HTMLElement, value: string): void => {\n (host as FieldHost).value = value;\n};\n\n/**\n * Reads the `value` off the element an event fired from (`event.currentTarget`), guarding the\n * cast: `undefined` when the target is missing or carries no string `value`. The read-side\n * companion to {@link setFieldValue} — consumers wiring a native `change`/`input` handler to a\n * field no longer re-derive the `(currentTarget as HTMLElement & { value: string }).value` cast.\n */\nexport const eventFieldValue = (event: Event): string | undefined => {\n const target = event.currentTarget;\n\n if (target === null || !('value' in target) || typeof target.value !== 'string') return undefined;\n\n return target.value;\n};\n\n/**\n * Reads the `checked` flag off the element an event fired from (`event.currentTarget`), guarding\n * the cast: `false` when the target is missing or carries no boolean `checked`. The read-side\n * companion to {@link setFieldChecked}.\n */\nexport const eventFieldChecked = (event: Event): boolean => {\n const target = event.currentTarget;\n\n if (target === null || !('checked' in target) || typeof target.checked !== 'boolean') return false;\n\n return target.checked;\n};\n"],"mappings":"AAKA,IAAa,oBAAsB,EAAmB,EAAoB,IAA0C,CAClH,OAAO,eAAe,EAAM,UAAW,CACrC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,kBAAoB,EAAmB,EAAmB,IAAuC,CAC5G,OAAO,eAAe,EAAM,QAAS,CACnC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,0BAA4B,EAAmB,IAAmC,CAC7F,EAAK,cAAc,IAAI,MAAM,EAAM,CAAE,QAAS,GAAM,SAAU,EAAK,CAAC,CAAC,CACvE,EAEa,iBAAmB,EAAmB,IAA2B,CAC5E,EAAoB,QAAU,CAChC,EAEa,eAAiB,EAAmB,IAAwB,CACvE,EAAoB,MAAQ,CAC9B,EAQa,gBAAmB,GAAqC,CACnE,IAAM,EAAS,EAAM,cAEjB,OAAW,MAAU,UAAW,GAAW,OAAO,EAAO,OAAU,SAEvE,OAAO,EAAO,KAChB,EAOa,kBAAqB,GAA0B,CAC1D,IAAM,EAAS,EAAM,cAIrB,OAFI,IAAW,MAAQ,EAAE,YAAa,IAAW,OAAO,EAAO,SAAY,UAAkB,GAEtF,EAAO,OAChB"}
1
+ {"version":3,"file":"native-field-event.js","names":[],"sources":["../../../src/inputs/shared/native-field-event.ts"],"sourcesContent":["type FieldHost = HTMLElement & {\n checked?: boolean;\n value?: string;\n};\n\nexport const defineFieldChecked = (host: HTMLElement, get: () => boolean, set: (checked: boolean) => void): void => {\n Object.defineProperty(host, 'checked', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const defineFieldValue = (host: HTMLElement, get: () => string, set: (value: string) => void): void => {\n Object.defineProperty(host, 'value', {\n configurable: true,\n enumerable: true,\n get,\n set,\n });\n};\n\nexport const dispatchNativeFieldEvent = (host: HTMLElement, type: 'change' | 'input'): void => {\n host.dispatchEvent(new Event(type, { bubbles: true, composed: true }));\n};\n\nexport const setFieldChecked = (host: HTMLElement, checked: boolean): void => {\n (host as FieldHost).checked = checked;\n};\n\nexport const setFieldValue = (host: HTMLElement, value: string): void => {\n (host as FieldHost).value = value;\n};\n\n/**\n * Reads the `value` off the element an event fired from (`event.currentTarget`), guarding the\n * cast: `undefined` when the target is missing or carries no string `value`. The read-side\n * companion to {@link setFieldValue}: consumers wiring a native `change`/`input` handler to a\n * field no longer re-derive the `(currentTarget as HTMLElement & { value: string }).value` cast.\n */\nexport const eventFieldValue = (event: Event): string | undefined => {\n const target = event.currentTarget;\n\n if (target === null || !('value' in target) || typeof target.value !== 'string') return undefined;\n\n return target.value;\n};\n\n/**\n * Reads the `checked` flag off the element an event fired from (`event.currentTarget`), guarding\n * the cast: `false` when the target is missing or carries no boolean `checked`. The read-side\n * companion to {@link setFieldChecked}.\n */\nexport const eventFieldChecked = (event: Event): boolean => {\n const target = event.currentTarget;\n\n if (target === null || !('checked' in target) || typeof target.checked !== 'boolean') return false;\n\n return target.checked;\n};\n"],"mappings":"AAKA,IAAa,oBAAsB,EAAmB,EAAoB,IAA0C,CAClH,OAAO,eAAe,EAAM,UAAW,CACrC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,kBAAoB,EAAmB,EAAmB,IAAuC,CAC5G,OAAO,eAAe,EAAM,QAAS,CACnC,aAAc,GACd,WAAY,GACZ,MACA,KACF,CAAC,CACH,EAEa,0BAA4B,EAAmB,IAAmC,CAC7F,EAAK,cAAc,IAAI,MAAM,EAAM,CAAE,QAAS,GAAM,SAAU,EAAK,CAAC,CAAC,CACvE,EAEa,iBAAmB,EAAmB,IAA2B,CAC5E,EAAoB,QAAU,CAChC,EAEa,eAAiB,EAAmB,IAAwB,CACvE,EAAoB,MAAQ,CAC9B,EAQa,gBAAmB,GAAqC,CACnE,IAAM,EAAS,EAAM,cAEjB,OAAW,MAAU,UAAW,GAAW,OAAO,EAAO,OAAU,SAEvE,OAAO,EAAO,KAChB,EAOa,kBAAqB,GAA0B,CAC1D,IAAM,EAAS,EAAM,cAIrB,OAFI,IAAW,MAAQ,EAAE,YAAa,IAAW,OAAO,EAAO,SAAY,UAAkB,GAEtF,EAAO,OAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates.cjs","names":[],"sources":["../../../src/inputs/shared/templates.ts"],"sourcesContent":["import { html } from '@vielzeug/ore';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { type CounterState, counterClassName } from '../../core';\n\n/**\n * Renders the standard assistive text region (helper/error) used across all\n * field components. Encapsulates the repeated `aria-live`/`hidden` markup so\n * each component only passes the data.\n *\n * @param assistiveId - The stable ID shared with the ARIA `aria-describedby` attribute.\n * @param errorText - Reactive error text signal from the field primitive.\n * @param helperText - Reactive helper text signal from the field primitive.\n * @param setRef - Optional callback to capture the container element.\n */\nexport const renderHelperRegion = (\n assistiveId: string,\n errorText: Readable<string>,\n helperText: Readable<string>,\n setRef?: (el: HTMLElement | null) => void,\n) => {\n return html`\n <div\n class=\"helper-text\"\n part=\"helper-text\"\n id=\"${assistiveId}\"\n role=\"${() => (errorText.value ? 'alert' : null)}\"\n aria-live=\"polite\"\n ?hidden=\"${() => !errorText.value && !helperText.value}\"\n ref=${(el: HTMLElement | null) => {\n setRef?.(el);\n }}>\n ${() => errorText.value || helperText.value}\n </div>\n `;\n};\n\n/**\n * Inline error/success status icon shown inside a field — identical markup across\n * `ore-input`, `ore-textarea`, and `ore-message-composer` (previously hand-duplicated in all\n * three, down to the same derived-signal names).\n */\nexport const renderStatusIcon = (errorText: Readable<string>) => html`\n <span\n class=\"status-icon\"\n part=\"status-icon\"\n aria-hidden=\"true\"\n data-status=\"${() => (errorText.value ? 'error' : 'success')}\">\n ${() =>\n errorText.value\n ? html`\n <ore-icon name=\"alert-circle\" size=\"14\" stroke-width=\"2\" aria-hidden=\"true\"></ore-icon>\n `\n : html`\n <ore-icon name=\"check\" size=\"14\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n `}\n </span>\n`;\n\n/**\n * Character counter + separate helper/error text regions below a field — identical across\n * `ore-textarea` and `ore-message-composer` (kept out of `ore-input`, which slots its\n * helper/error content and drives its counter off a different data-attribute scheme via its\n * own `char-counter` part — a genuinely different shape, not worth forcing into this one).\n */\nexport const renderFieldStatusRegion = (tf: {\n assistiveId: string;\n counter: Readable<CounterState> | null;\n errorId: string;\n errorText: Readable<string>;\n helperText: Readable<string>;\n}) => html`\n <span class=\"${() => counterClassName(tf.counter?.value)}\" aria-live=\"polite\" ?hidden=\"${() => !tf.counter}\">\n ${() => tf.counter?.value.counterText.replace(' / ', '/') ?? ''}\n </span>\n <div\n id=\"${tf.assistiveId}\"\n class=\"helper-text\"\n aria-live=\"polite\"\n part=\"helper\"\n ?hidden=\"${() => !!tf.errorText.value || !tf.helperText.value}\">\n ${() => tf.helperText.value}\n </div>\n <div id=\"${tf.errorId}\" class=\"helper-text\" role=\"alert\" part=\"error\" ?hidden=\"${() => !tf.errorText.value}\">\n ${() => tf.errorText.value}\n </div>\n`;\n"],"mappings":"4EAeA,IAAa,oBACX,EACA,EACA,EACA,IAEO,EAAA,IAAI;;;;YAID,EAAY;kBACH,EAAU,MAAQ,QAAU,KAAM;;qBAEhC,CAAC,EAAU,OAAS,CAAC,EAAW,MAAM;YAChD,GAA2B,CAChC,IAAS,CAAE,CACb,EAAE;YACM,EAAU,OAAS,EAAW,MAAM;;IAUrC,iBAAoB,GAAgC,EAAA,IAAI;;;;;uBAK3C,EAAU,MAAQ,QAAU,UAAW;UAE3D,EAAU,MACN,EAAA,IAAI;;YAGJ,EAAA,IAAI;;YAEF;;EAUC,wBAA2B,GAMlC,EAAA,IAAI;qBACa,EAAA,iBAAiB,EAAG,SAAS,KAAK,EAAE,oCAAsC,CAAC,EAAG,QAAQ;UACjG,EAAG,SAAS,MAAM,YAAY,QAAQ,MAAO,GAAG,GAAK,GAAG;;;UAG1D,EAAG,YAAY;;;;mBAIJ,CAAC,CAAC,EAAG,UAAU,OAAS,CAAC,EAAG,WAAW,MAAM;UACtD,EAAG,WAAW,MAAM;;aAEnB,EAAG,QAAQ,+DAAiE,CAAC,EAAG,UAAU,MAAM;UACjG,EAAG,UAAU,MAAM"}
1
+ {"version":3,"file":"templates.cjs","names":[],"sources":["../../../src/inputs/shared/templates.ts"],"sourcesContent":["import { html } from '@vielzeug/ore';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { type CounterState, counterClassName } from '../../core';\n\n/**\n * Renders the standard assistive text region (helper/error) used across all\n * field components. Encapsulates the repeated `aria-live`/`hidden` markup so\n * each component only passes the data.\n *\n * @param assistiveId - The stable ID shared with the ARIA `aria-describedby` attribute.\n * @param errorText - Reactive error text signal from the field primitive.\n * @param helperText - Reactive helper text signal from the field primitive.\n * @param setRef - Optional callback to capture the container element.\n */\nexport const renderHelperRegion = (\n assistiveId: string,\n errorText: Readable<string>,\n helperText: Readable<string>,\n setRef?: (el: HTMLElement | null) => void,\n) => {\n return html`\n <div\n class=\"helper-text\"\n part=\"helper-text\"\n id=\"${assistiveId}\"\n role=\"${() => (errorText.value ? 'alert' : null)}\"\n aria-live=\"polite\"\n ?hidden=\"${() => !errorText.value && !helperText.value}\"\n ref=${(el: HTMLElement | null) => {\n setRef?.(el);\n }}>\n ${() => errorText.value || helperText.value}\n </div>\n `;\n};\n\n/**\n * Inline error/success status icon shown inside a field: identical markup across\n * `ore-input`, `ore-textarea`, and `ore-message-composer` (previously hand-duplicated in all\n * three, down to the same derived-signal names).\n */\nexport const renderStatusIcon = (errorText: Readable<string>) => html`\n <span\n class=\"status-icon\"\n part=\"status-icon\"\n aria-hidden=\"true\"\n data-status=\"${() => (errorText.value ? 'error' : 'success')}\">\n ${() =>\n errorText.value\n ? html`\n <ore-icon name=\"alert-circle\" size=\"14\" stroke-width=\"2\" aria-hidden=\"true\"></ore-icon>\n `\n : html`\n <ore-icon name=\"check\" size=\"14\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n `}\n </span>\n`;\n\n/**\n * Character counter + separate helper/error text regions below a field: identical across\n * `ore-textarea` and `ore-message-composer` (kept out of `ore-input`, which slots its\n * helper/error content and drives its counter off a different data-attribute scheme via its\n * own `char-counter` part: a genuinely different shape, not worth forcing into this one).\n */\nexport const renderFieldStatusRegion = (tf: {\n assistiveId: string;\n counter: Readable<CounterState> | null;\n errorId: string;\n errorText: Readable<string>;\n helperText: Readable<string>;\n}) => html`\n <span class=\"${() => counterClassName(tf.counter?.value)}\" aria-live=\"polite\" ?hidden=\"${() => !tf.counter}\">\n ${() => tf.counter?.value.counterText.replace(' / ', '/') ?? ''}\n </span>\n <div\n id=\"${tf.assistiveId}\"\n class=\"helper-text\"\n aria-live=\"polite\"\n part=\"helper\"\n ?hidden=\"${() => !!tf.errorText.value || !tf.helperText.value}\">\n ${() => tf.helperText.value}\n </div>\n <div id=\"${tf.errorId}\" class=\"helper-text\" role=\"alert\" part=\"error\" ?hidden=\"${() => !tf.errorText.value}\">\n ${() => tf.errorText.value}\n </div>\n`;\n"],"mappings":"4EAeA,IAAa,oBACX,EACA,EACA,EACA,IAEO,EAAA,IAAI;;;;YAID,EAAY;kBACH,EAAU,MAAQ,QAAU,KAAM;;qBAEhC,CAAC,EAAU,OAAS,CAAC,EAAW,MAAM;YAChD,GAA2B,CAChC,IAAS,CAAE,CACb,EAAE;YACM,EAAU,OAAS,EAAW,MAAM;;IAUrC,iBAAoB,GAAgC,EAAA,IAAI;;;;;uBAK3C,EAAU,MAAQ,QAAU,UAAW;UAE3D,EAAU,MACN,EAAA,IAAI;;YAGJ,EAAA,IAAI;;YAEF;;EAUC,wBAA2B,GAMlC,EAAA,IAAI;qBACa,EAAA,iBAAiB,EAAG,SAAS,KAAK,EAAE,oCAAsC,CAAC,EAAG,QAAQ;UACjG,EAAG,SAAS,MAAM,YAAY,QAAQ,MAAO,GAAG,GAAK,GAAG;;;UAG1D,EAAG,YAAY;;;;mBAIJ,CAAC,CAAC,EAAG,UAAU,OAAS,CAAC,EAAG,WAAW,MAAM;UACtD,EAAG,WAAW,MAAM;;aAEnB,EAAG,QAAQ,+DAAiE,CAAC,EAAG,UAAU,MAAM;UACjG,EAAG,UAAU,MAAM"}
@@ -12,16 +12,16 @@ import { type CounterState } from '../../core';
12
12
  */
13
13
  export declare const renderHelperRegion: (assistiveId: string, errorText: Readable<string>, helperText: Readable<string>, setRef?: (el: HTMLElement | null) => void) => import("@vielzeug/ore").HTMLResult;
14
14
  /**
15
- * Inline error/success status icon shown inside a field — identical markup across
15
+ * Inline error/success status icon shown inside a field: identical markup across
16
16
  * `ore-input`, `ore-textarea`, and `ore-message-composer` (previously hand-duplicated in all
17
17
  * three, down to the same derived-signal names).
18
18
  */
19
19
  export declare const renderStatusIcon: (errorText: Readable<string>) => import("@vielzeug/ore").HTMLResult;
20
20
  /**
21
- * Character counter + separate helper/error text regions below a field — identical across
21
+ * Character counter + separate helper/error text regions below a field: identical across
22
22
  * `ore-textarea` and `ore-message-composer` (kept out of `ore-input`, which slots its
23
23
  * helper/error content and drives its counter off a different data-attribute scheme via its
24
- * own `char-counter` part — a genuinely different shape, not worth forcing into this one).
24
+ * own `char-counter` part: a genuinely different shape, not worth forcing into this one).
25
25
  */
26
26
  export declare const renderFieldStatusRegion: (tf: {
27
27
  assistiveId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","names":[],"sources":["../../../src/inputs/shared/templates.ts"],"sourcesContent":["import { html } from '@vielzeug/ore';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { type CounterState, counterClassName } from '../../core';\n\n/**\n * Renders the standard assistive text region (helper/error) used across all\n * field components. Encapsulates the repeated `aria-live`/`hidden` markup so\n * each component only passes the data.\n *\n * @param assistiveId - The stable ID shared with the ARIA `aria-describedby` attribute.\n * @param errorText - Reactive error text signal from the field primitive.\n * @param helperText - Reactive helper text signal from the field primitive.\n * @param setRef - Optional callback to capture the container element.\n */\nexport const renderHelperRegion = (\n assistiveId: string,\n errorText: Readable<string>,\n helperText: Readable<string>,\n setRef?: (el: HTMLElement | null) => void,\n) => {\n return html`\n <div\n class=\"helper-text\"\n part=\"helper-text\"\n id=\"${assistiveId}\"\n role=\"${() => (errorText.value ? 'alert' : null)}\"\n aria-live=\"polite\"\n ?hidden=\"${() => !errorText.value && !helperText.value}\"\n ref=${(el: HTMLElement | null) => {\n setRef?.(el);\n }}>\n ${() => errorText.value || helperText.value}\n </div>\n `;\n};\n\n/**\n * Inline error/success status icon shown inside a field — identical markup across\n * `ore-input`, `ore-textarea`, and `ore-message-composer` (previously hand-duplicated in all\n * three, down to the same derived-signal names).\n */\nexport const renderStatusIcon = (errorText: Readable<string>) => html`\n <span\n class=\"status-icon\"\n part=\"status-icon\"\n aria-hidden=\"true\"\n data-status=\"${() => (errorText.value ? 'error' : 'success')}\">\n ${() =>\n errorText.value\n ? html`\n <ore-icon name=\"alert-circle\" size=\"14\" stroke-width=\"2\" aria-hidden=\"true\"></ore-icon>\n `\n : html`\n <ore-icon name=\"check\" size=\"14\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n `}\n </span>\n`;\n\n/**\n * Character counter + separate helper/error text regions below a field — identical across\n * `ore-textarea` and `ore-message-composer` (kept out of `ore-input`, which slots its\n * helper/error content and drives its counter off a different data-attribute scheme via its\n * own `char-counter` part — a genuinely different shape, not worth forcing into this one).\n */\nexport const renderFieldStatusRegion = (tf: {\n assistiveId: string;\n counter: Readable<CounterState> | null;\n errorId: string;\n errorText: Readable<string>;\n helperText: Readable<string>;\n}) => html`\n <span class=\"${() => counterClassName(tf.counter?.value)}\" aria-live=\"polite\" ?hidden=\"${() => !tf.counter}\">\n ${() => tf.counter?.value.counterText.replace(' / ', '/') ?? ''}\n </span>\n <div\n id=\"${tf.assistiveId}\"\n class=\"helper-text\"\n aria-live=\"polite\"\n part=\"helper\"\n ?hidden=\"${() => !!tf.errorText.value || !tf.helperText.value}\">\n ${() => tf.helperText.value}\n </div>\n <div id=\"${tf.errorId}\" class=\"helper-text\" role=\"alert\" part=\"error\" ?hidden=\"${() => !tf.errorText.value}\">\n ${() => tf.errorText.value}\n </div>\n`;\n"],"mappings":"iGAeA,IAAa,oBACX,EACA,EACA,EACA,IAEO,CAAI;;;;YAID,EAAY;kBACH,EAAU,MAAQ,QAAU,KAAM;;qBAEhC,CAAC,EAAU,OAAS,CAAC,EAAW,MAAM;YAChD,GAA2B,CAChC,IAAS,CAAE,CACb,EAAE;YACM,EAAU,OAAS,EAAW,MAAM;;IAUrC,iBAAoB,GAAgC,CAAI;;;;;uBAK3C,EAAU,MAAQ,QAAU,UAAW;UAE3D,EAAU,MACN,CAAI;;YAGJ,CAAI;;YAEF;;EAUC,wBAA2B,GAMlC,CAAI;qBACa,EAAiB,EAAG,SAAS,KAAK,EAAE,oCAAsC,CAAC,EAAG,QAAQ;UACjG,EAAG,SAAS,MAAM,YAAY,QAAQ,MAAO,GAAG,GAAK,GAAG;;;UAG1D,EAAG,YAAY;;;;mBAIJ,CAAC,CAAC,EAAG,UAAU,OAAS,CAAC,EAAG,WAAW,MAAM;UACtD,EAAG,WAAW,MAAM;;aAEnB,EAAG,QAAQ,+DAAiE,CAAC,EAAG,UAAU,MAAM;UACjG,EAAG,UAAU,MAAM"}
1
+ {"version":3,"file":"templates.js","names":[],"sources":["../../../src/inputs/shared/templates.ts"],"sourcesContent":["import { html } from '@vielzeug/ore';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { type CounterState, counterClassName } from '../../core';\n\n/**\n * Renders the standard assistive text region (helper/error) used across all\n * field components. Encapsulates the repeated `aria-live`/`hidden` markup so\n * each component only passes the data.\n *\n * @param assistiveId - The stable ID shared with the ARIA `aria-describedby` attribute.\n * @param errorText - Reactive error text signal from the field primitive.\n * @param helperText - Reactive helper text signal from the field primitive.\n * @param setRef - Optional callback to capture the container element.\n */\nexport const renderHelperRegion = (\n assistiveId: string,\n errorText: Readable<string>,\n helperText: Readable<string>,\n setRef?: (el: HTMLElement | null) => void,\n) => {\n return html`\n <div\n class=\"helper-text\"\n part=\"helper-text\"\n id=\"${assistiveId}\"\n role=\"${() => (errorText.value ? 'alert' : null)}\"\n aria-live=\"polite\"\n ?hidden=\"${() => !errorText.value && !helperText.value}\"\n ref=${(el: HTMLElement | null) => {\n setRef?.(el);\n }}>\n ${() => errorText.value || helperText.value}\n </div>\n `;\n};\n\n/**\n * Inline error/success status icon shown inside a field: identical markup across\n * `ore-input`, `ore-textarea`, and `ore-message-composer` (previously hand-duplicated in all\n * three, down to the same derived-signal names).\n */\nexport const renderStatusIcon = (errorText: Readable<string>) => html`\n <span\n class=\"status-icon\"\n part=\"status-icon\"\n aria-hidden=\"true\"\n data-status=\"${() => (errorText.value ? 'error' : 'success')}\">\n ${() =>\n errorText.value\n ? html`\n <ore-icon name=\"alert-circle\" size=\"14\" stroke-width=\"2\" aria-hidden=\"true\"></ore-icon>\n `\n : html`\n <ore-icon name=\"check\" size=\"14\" stroke-width=\"2.5\" aria-hidden=\"true\"></ore-icon>\n `}\n </span>\n`;\n\n/**\n * Character counter + separate helper/error text regions below a field: identical across\n * `ore-textarea` and `ore-message-composer` (kept out of `ore-input`, which slots its\n * helper/error content and drives its counter off a different data-attribute scheme via its\n * own `char-counter` part: a genuinely different shape, not worth forcing into this one).\n */\nexport const renderFieldStatusRegion = (tf: {\n assistiveId: string;\n counter: Readable<CounterState> | null;\n errorId: string;\n errorText: Readable<string>;\n helperText: Readable<string>;\n}) => html`\n <span class=\"${() => counterClassName(tf.counter?.value)}\" aria-live=\"polite\" ?hidden=\"${() => !tf.counter}\">\n ${() => tf.counter?.value.counterText.replace(' / ', '/') ?? ''}\n </span>\n <div\n id=\"${tf.assistiveId}\"\n class=\"helper-text\"\n aria-live=\"polite\"\n part=\"helper\"\n ?hidden=\"${() => !!tf.errorText.value || !tf.helperText.value}\">\n ${() => tf.helperText.value}\n </div>\n <div id=\"${tf.errorId}\" class=\"helper-text\" role=\"alert\" part=\"error\" ?hidden=\"${() => !tf.errorText.value}\">\n ${() => tf.errorText.value}\n </div>\n`;\n"],"mappings":"iGAeA,IAAa,oBACX,EACA,EACA,EACA,IAEO,CAAI;;;;YAID,EAAY;kBACH,EAAU,MAAQ,QAAU,KAAM;;qBAEhC,CAAC,EAAU,OAAS,CAAC,EAAW,MAAM;YAChD,GAA2B,CAChC,IAAS,CAAE,CACb,EAAE;YACM,EAAU,OAAS,EAAW,MAAM;;IAUrC,iBAAoB,GAAgC,CAAI;;;;;uBAK3C,EAAU,MAAQ,QAAU,UAAW;UAE3D,EAAU,MACN,CAAI;;YAGJ,CAAI;;YAEF;;EAUC,wBAA2B,GAMlC,CAAI;qBACa,EAAiB,EAAG,SAAS,KAAK,EAAE,oCAAsC,CAAC,EAAG,QAAQ;UACjG,EAAG,SAAS,MAAM,YAAY,QAAQ,MAAO,GAAG,GAAK,GAAG;;;UAG1D,EAAG,YAAY;;;;mBAIJ,CAAC,CAAC,EAAG,UAAU,OAAS,CAAC,EAAG,WAAW,MAAM;UACtD,EAAG,WAAW,MAAM;;aAEnB,EAAG,QAAQ,+DAAiE,CAAC,EAAG,UAAU,MAAM;UACjG,EAAG,UAAU,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"slider.css.cjs","names":[],"sources":["../../../src/inputs/slider/slider.css?inline"],"sourcesContent":["@layer refine.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n /* No unconditional `width: 100%` here, on purpose — matches every other field's own `:host`\n (`ore-input`, `ore-select`, `ore-number-input`, `ore-combobox`, `ore-date-picker`): shrink to\n `min-width` by default, opt into full width via `:host([fullwidth])` below. A hardcoded\n `width: 100%` here (the previous default) meant the slider always claimed the entire row in\n a flex layout regardless of layout intent — e.g. sitting next to a label/hint column in a\n settings-style row, it forced that column down to near its text's min-content width instead\n of sharing the row the way a same-row `ore-select`/`ore-number-input` naturally does. */\n :host {\n --_size: var(--slider-size, var(--size-5));\n --_height: var(--slider-height, var(--size-1));\n --_track: var(--slider-track-bg, var(--color-contrast-300));\n --_fill: var(--slider-fill, var(--color-neutral));\n --_thumb: var(--slider-thumb-bg, var(--color-contrast-50));\n --_thumb-size: var(--_size);\n --_thumb-inset: var(--slider-thumb-inset, var(--size-2-5));\n --_touch-target: var(--size-11);\n --_font-size: var(--text-sm);\n --_shadow: var(--color-neutral-focus-shadow);\n\n position: relative;\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--_gap, var(--size-3));\n align-items: center;\n min-width: var(--slider-min-width, 12rem);\n touch-action: none;\n cursor: pointer;\n user-select: none;\n }\n\n /* Explicit opt-in still forces full width outside a stretching grid/flex context — same\n convention as ore-input's own :host([fullwidth]). */\n :host([fullwidth]) {\n width: 100%;\n min-width: 0;\n }\n}\n\n/* ========================================\n Track, Fill & Thumb\n ======================================== */\n\n.slider-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1;\n align-items: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding-inline: var(--_thumb-inset);\n}\n\n.slider-track {\n position: relative;\n width: 100%;\n height: var(--_height);\n background: var(--_track);\n border-radius: var(--rounded-full);\n}\n\n/* Fill: always driven by --_fill-start / --_fill-width */\n.slider-fill {\n position: absolute;\n top: 0;\n left: var(--_fill-start, 0%);\n width: var(--_fill-width, 0%);\n height: 100%;\n background: var(--_fill);\n border-radius: var(--rounded-full);\n transition: var(--_motion-transition, left var(--transition-fast), width var(--transition-fast));\n}\n\n:host([data-dragging]) .slider-fill {\n transition: none;\n}\n\n.slider-thumb {\n position: absolute;\n top: 50%;\n z-index: 1;\n box-sizing: border-box;\n width: var(--_thumb-size);\n height: var(--_thumb-size);\n cursor: grab;\n background: var(--_thumb);\n border: 2px solid var(--_fill);\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translate(-50%, -50%);\n transition: var(--_motion-transition, box-shadow var(--transition-fast), left var(--transition-fast));\n will-change: transform;\n}\n\n:host([data-dragging]) .slider-thumb {\n cursor: grabbing;\n box-shadow: var(--_shadow);\n transition: var(--_motion-transition, box-shadow var(--transition-fast));\n}\n\n/* ── Single-value thumb ─────────────────────────────────── */\n\n.slider-thumb-sole {\n left: var(--_thumb-pos, 0%);\n}\n\n:host(:focus-visible) .slider-thumb-sole,\n:host(:active) .slider-thumb-sole {\n box-shadow: var(--_shadow);\n}\n\n/* ── Range thumbs ───────────────────────────────────────── */\n\n.slider-thumb-start {\n left: var(--_thumb-start, 0%);\n}\n\n.slider-thumb-end {\n left: var(--_thumb-end, 100%);\n}\n\n.slider-thumb-start:focus-visible,\n.slider-thumb-end:focus-visible {\n z-index: 2;\n outline: var(--border-2) solid var(--_fill);\n outline-offset: var(--size-0-5);\n box-shadow: var(--_shadow);\n}\n\n/* ── Visibility gating ──────────────────────────────────── */\n\n:host(:not([range])) .slider-thumb-start,\n:host(:not([range])) .slider-thumb-end {\n display: none;\n}\n\n:host([range]) .slider-thumb-sole {\n display: none;\n}\n\n@media (hover: hover) {\n :host(:not([disabled])) .slider-thumb:hover {\n box-shadow: var(--_shadow);\n }\n}\n\n@media (forced-colors: active) {\n :host(:focus-visible) .slider-thumb-sole,\n .slider-thumb-start:focus-visible,\n .slider-thumb-end:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n box-shadow: none;\n }\n}\n\n@layer refine.overrides {\n :host {\n --_fill: var(--slider-fill, var(--_theme-base));\n --_shadow: var(--_theme-shadow);\n }\n}\n\n/* ========================================\n Label\n ======================================== */\n\n.label {\n font-size: var(--_font-size);\n color: var(--color-contrast);\n white-space: nowrap;\n}\n\n.helper-text[hidden] {\n display: none;\n}\n\n.helper-text {\n width: 100%;\n font-size: var(--text-xs);\n line-height: var(--leading-tight);\n color: color-mix(in oklch, var(--color-contrast-500) 80%, var(--color-canvas));\n}\n\n.helper-text[role='alert'] {\n color: var(--color-error);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"slider.css.cjs","names":[],"sources":["../../../src/inputs/slider/slider.css?inline"],"sourcesContent":["@layer refine.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n /* No unconditional `width: 100%` here, on purpose: matches every other field's own `:host`\n (`ore-input`, `ore-select`, `ore-number-input`, `ore-combobox`, `ore-date-picker`): shrink to\n `min-width` by default, opt into full width via `:host([fullwidth])` below. A hardcoded\n `width: 100%` here (the previous default) meant the slider always claimed the entire row in\n a flex layout regardless of layout intent: e.g. sitting next to a label/hint column in a\n settings-style row, it forced that column down to near its text's min-content width instead\n of sharing the row the way a same-row `ore-select`/`ore-number-input` naturally does. */\n :host {\n --_size: var(--slider-size, var(--size-5));\n --_height: var(--slider-height, var(--size-1));\n --_track: var(--slider-track-bg, var(--color-contrast-300));\n --_fill: var(--slider-fill, var(--color-neutral));\n --_thumb: var(--slider-thumb-bg, var(--color-contrast-50));\n --_thumb-size: var(--_size);\n --_thumb-inset: var(--slider-thumb-inset, var(--size-2-5));\n --_touch-target: var(--size-11);\n --_font-size: var(--text-sm);\n --_shadow: var(--color-neutral-focus-shadow);\n\n position: relative;\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--_gap, var(--size-3));\n align-items: center;\n min-width: var(--slider-min-width, 12rem);\n touch-action: none;\n cursor: pointer;\n user-select: none;\n }\n\n /* Explicit opt-in still forces full width outside a stretching grid/flex context: same\n convention as ore-input's own :host([fullwidth]). */\n :host([fullwidth]) {\n width: 100%;\n min-width: 0;\n }\n}\n\n/* ========================================\n Track, Fill & Thumb\n ======================================== */\n\n.slider-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1;\n align-items: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding-inline: var(--_thumb-inset);\n}\n\n.slider-track {\n position: relative;\n width: 100%;\n height: var(--_height);\n background: var(--_track);\n border-radius: var(--rounded-full);\n}\n\n/* Fill: always driven by --_fill-start / --_fill-width */\n.slider-fill {\n position: absolute;\n top: 0;\n left: var(--_fill-start, 0%);\n width: var(--_fill-width, 0%);\n height: 100%;\n background: var(--_fill);\n border-radius: var(--rounded-full);\n transition: var(--_motion-transition, left var(--transition-fast), width var(--transition-fast));\n}\n\n:host([data-dragging]) .slider-fill {\n transition: none;\n}\n\n.slider-thumb {\n position: absolute;\n top: 50%;\n z-index: 1;\n box-sizing: border-box;\n width: var(--_thumb-size);\n height: var(--_thumb-size);\n cursor: grab;\n background: var(--_thumb);\n border: 2px solid var(--_fill);\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translate(-50%, -50%);\n transition: var(--_motion-transition, box-shadow var(--transition-fast), left var(--transition-fast));\n will-change: transform;\n}\n\n:host([data-dragging]) .slider-thumb {\n cursor: grabbing;\n box-shadow: var(--_shadow);\n transition: var(--_motion-transition, box-shadow var(--transition-fast));\n}\n\n/* ── Single-value thumb ─────────────────────────────────── */\n\n.slider-thumb-sole {\n left: var(--_thumb-pos, 0%);\n}\n\n:host(:focus-visible) .slider-thumb-sole,\n:host(:active) .slider-thumb-sole {\n box-shadow: var(--_shadow);\n}\n\n/* ── Range thumbs ───────────────────────────────────────── */\n\n.slider-thumb-start {\n left: var(--_thumb-start, 0%);\n}\n\n.slider-thumb-end {\n left: var(--_thumb-end, 100%);\n}\n\n.slider-thumb-start:focus-visible,\n.slider-thumb-end:focus-visible {\n z-index: 2;\n outline: var(--border-2) solid var(--_fill);\n outline-offset: var(--size-0-5);\n box-shadow: var(--_shadow);\n}\n\n/* ── Visibility gating ──────────────────────────────────── */\n\n:host(:not([range])) .slider-thumb-start,\n:host(:not([range])) .slider-thumb-end {\n display: none;\n}\n\n:host([range]) .slider-thumb-sole {\n display: none;\n}\n\n@media (hover: hover) {\n :host(:not([disabled])) .slider-thumb:hover {\n box-shadow: var(--_shadow);\n }\n}\n\n@media (forced-colors: active) {\n :host(:focus-visible) .slider-thumb-sole,\n .slider-thumb-start:focus-visible,\n .slider-thumb-end:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n box-shadow: none;\n }\n}\n\n@layer refine.overrides {\n :host {\n --_fill: var(--slider-fill, var(--_theme-base));\n --_shadow: var(--_theme-shadow);\n }\n}\n\n/* ========================================\n Label\n ======================================== */\n\n.label {\n font-size: var(--_font-size);\n color: var(--color-contrast);\n white-space: nowrap;\n}\n\n.helper-text[hidden] {\n display: none;\n}\n\n.helper-text {\n width: 100%;\n font-size: var(--text-xs);\n line-height: var(--leading-tight);\n color: color-mix(in oklch, var(--color-contrast-500) 80%, var(--color-canvas));\n}\n\n.helper-text[role='alert'] {\n color: var(--color-error);\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"slider.css.js","names":[],"sources":["../../../src/inputs/slider/slider.css?inline"],"sourcesContent":["@layer refine.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n /* No unconditional `width: 100%` here, on purpose — matches every other field's own `:host`\n (`ore-input`, `ore-select`, `ore-number-input`, `ore-combobox`, `ore-date-picker`): shrink to\n `min-width` by default, opt into full width via `:host([fullwidth])` below. A hardcoded\n `width: 100%` here (the previous default) meant the slider always claimed the entire row in\n a flex layout regardless of layout intent — e.g. sitting next to a label/hint column in a\n settings-style row, it forced that column down to near its text's min-content width instead\n of sharing the row the way a same-row `ore-select`/`ore-number-input` naturally does. */\n :host {\n --_size: var(--slider-size, var(--size-5));\n --_height: var(--slider-height, var(--size-1));\n --_track: var(--slider-track-bg, var(--color-contrast-300));\n --_fill: var(--slider-fill, var(--color-neutral));\n --_thumb: var(--slider-thumb-bg, var(--color-contrast-50));\n --_thumb-size: var(--_size);\n --_thumb-inset: var(--slider-thumb-inset, var(--size-2-5));\n --_touch-target: var(--size-11);\n --_font-size: var(--text-sm);\n --_shadow: var(--color-neutral-focus-shadow);\n\n position: relative;\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--_gap, var(--size-3));\n align-items: center;\n min-width: var(--slider-min-width, 12rem);\n touch-action: none;\n cursor: pointer;\n user-select: none;\n }\n\n /* Explicit opt-in still forces full width outside a stretching grid/flex context — same\n convention as ore-input's own :host([fullwidth]). */\n :host([fullwidth]) {\n width: 100%;\n min-width: 0;\n }\n}\n\n/* ========================================\n Track, Fill & Thumb\n ======================================== */\n\n.slider-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1;\n align-items: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding-inline: var(--_thumb-inset);\n}\n\n.slider-track {\n position: relative;\n width: 100%;\n height: var(--_height);\n background: var(--_track);\n border-radius: var(--rounded-full);\n}\n\n/* Fill: always driven by --_fill-start / --_fill-width */\n.slider-fill {\n position: absolute;\n top: 0;\n left: var(--_fill-start, 0%);\n width: var(--_fill-width, 0%);\n height: 100%;\n background: var(--_fill);\n border-radius: var(--rounded-full);\n transition: var(--_motion-transition, left var(--transition-fast), width var(--transition-fast));\n}\n\n:host([data-dragging]) .slider-fill {\n transition: none;\n}\n\n.slider-thumb {\n position: absolute;\n top: 50%;\n z-index: 1;\n box-sizing: border-box;\n width: var(--_thumb-size);\n height: var(--_thumb-size);\n cursor: grab;\n background: var(--_thumb);\n border: 2px solid var(--_fill);\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translate(-50%, -50%);\n transition: var(--_motion-transition, box-shadow var(--transition-fast), left var(--transition-fast));\n will-change: transform;\n}\n\n:host([data-dragging]) .slider-thumb {\n cursor: grabbing;\n box-shadow: var(--_shadow);\n transition: var(--_motion-transition, box-shadow var(--transition-fast));\n}\n\n/* ── Single-value thumb ─────────────────────────────────── */\n\n.slider-thumb-sole {\n left: var(--_thumb-pos, 0%);\n}\n\n:host(:focus-visible) .slider-thumb-sole,\n:host(:active) .slider-thumb-sole {\n box-shadow: var(--_shadow);\n}\n\n/* ── Range thumbs ───────────────────────────────────────── */\n\n.slider-thumb-start {\n left: var(--_thumb-start, 0%);\n}\n\n.slider-thumb-end {\n left: var(--_thumb-end, 100%);\n}\n\n.slider-thumb-start:focus-visible,\n.slider-thumb-end:focus-visible {\n z-index: 2;\n outline: var(--border-2) solid var(--_fill);\n outline-offset: var(--size-0-5);\n box-shadow: var(--_shadow);\n}\n\n/* ── Visibility gating ──────────────────────────────────── */\n\n:host(:not([range])) .slider-thumb-start,\n:host(:not([range])) .slider-thumb-end {\n display: none;\n}\n\n:host([range]) .slider-thumb-sole {\n display: none;\n}\n\n@media (hover: hover) {\n :host(:not([disabled])) .slider-thumb:hover {\n box-shadow: var(--_shadow);\n }\n}\n\n@media (forced-colors: active) {\n :host(:focus-visible) .slider-thumb-sole,\n .slider-thumb-start:focus-visible,\n .slider-thumb-end:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n box-shadow: none;\n }\n}\n\n@layer refine.overrides {\n :host {\n --_fill: var(--slider-fill, var(--_theme-base));\n --_shadow: var(--_theme-shadow);\n }\n}\n\n/* ========================================\n Label\n ======================================== */\n\n.label {\n font-size: var(--_font-size);\n color: var(--color-contrast);\n white-space: nowrap;\n}\n\n.helper-text[hidden] {\n display: none;\n}\n\n.helper-text {\n width: 100%;\n font-size: var(--text-xs);\n line-height: var(--leading-tight);\n color: color-mix(in oklch, var(--color-contrast-500) 80%, var(--color-canvas));\n}\n\n.helper-text[role='alert'] {\n color: var(--color-error);\n}\n"],"mappings":""}
1
+ {"version":3,"file":"slider.css.js","names":[],"sources":["../../../src/inputs/slider/slider.css?inline"],"sourcesContent":["@layer refine.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n /* No unconditional `width: 100%` here, on purpose: matches every other field's own `:host`\n (`ore-input`, `ore-select`, `ore-number-input`, `ore-combobox`, `ore-date-picker`): shrink to\n `min-width` by default, opt into full width via `:host([fullwidth])` below. A hardcoded\n `width: 100%` here (the previous default) meant the slider always claimed the entire row in\n a flex layout regardless of layout intent: e.g. sitting next to a label/hint column in a\n settings-style row, it forced that column down to near its text's min-content width instead\n of sharing the row the way a same-row `ore-select`/`ore-number-input` naturally does. */\n :host {\n --_size: var(--slider-size, var(--size-5));\n --_height: var(--slider-height, var(--size-1));\n --_track: var(--slider-track-bg, var(--color-contrast-300));\n --_fill: var(--slider-fill, var(--color-neutral));\n --_thumb: var(--slider-thumb-bg, var(--color-contrast-50));\n --_thumb-size: var(--_size);\n --_thumb-inset: var(--slider-thumb-inset, var(--size-2-5));\n --_touch-target: var(--size-11);\n --_font-size: var(--text-sm);\n --_shadow: var(--color-neutral-focus-shadow);\n\n position: relative;\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--_gap, var(--size-3));\n align-items: center;\n min-width: var(--slider-min-width, 12rem);\n touch-action: none;\n cursor: pointer;\n user-select: none;\n }\n\n /* Explicit opt-in still forces full width outside a stretching grid/flex context: same\n convention as ore-input's own :host([fullwidth]). */\n :host([fullwidth]) {\n width: 100%;\n min-width: 0;\n }\n}\n\n/* ========================================\n Track, Fill & Thumb\n ======================================== */\n\n.slider-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1;\n align-items: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding-inline: var(--_thumb-inset);\n}\n\n.slider-track {\n position: relative;\n width: 100%;\n height: var(--_height);\n background: var(--_track);\n border-radius: var(--rounded-full);\n}\n\n/* Fill: always driven by --_fill-start / --_fill-width */\n.slider-fill {\n position: absolute;\n top: 0;\n left: var(--_fill-start, 0%);\n width: var(--_fill-width, 0%);\n height: 100%;\n background: var(--_fill);\n border-radius: var(--rounded-full);\n transition: var(--_motion-transition, left var(--transition-fast), width var(--transition-fast));\n}\n\n:host([data-dragging]) .slider-fill {\n transition: none;\n}\n\n.slider-thumb {\n position: absolute;\n top: 50%;\n z-index: 1;\n box-sizing: border-box;\n width: var(--_thumb-size);\n height: var(--_thumb-size);\n cursor: grab;\n background: var(--_thumb);\n border: 2px solid var(--_fill);\n border-radius: var(--rounded-full);\n box-shadow: var(--shadow-sm);\n transform: translate(-50%, -50%);\n transition: var(--_motion-transition, box-shadow var(--transition-fast), left var(--transition-fast));\n will-change: transform;\n}\n\n:host([data-dragging]) .slider-thumb {\n cursor: grabbing;\n box-shadow: var(--_shadow);\n transition: var(--_motion-transition, box-shadow var(--transition-fast));\n}\n\n/* ── Single-value thumb ─────────────────────────────────── */\n\n.slider-thumb-sole {\n left: var(--_thumb-pos, 0%);\n}\n\n:host(:focus-visible) .slider-thumb-sole,\n:host(:active) .slider-thumb-sole {\n box-shadow: var(--_shadow);\n}\n\n/* ── Range thumbs ───────────────────────────────────────── */\n\n.slider-thumb-start {\n left: var(--_thumb-start, 0%);\n}\n\n.slider-thumb-end {\n left: var(--_thumb-end, 100%);\n}\n\n.slider-thumb-start:focus-visible,\n.slider-thumb-end:focus-visible {\n z-index: 2;\n outline: var(--border-2) solid var(--_fill);\n outline-offset: var(--size-0-5);\n box-shadow: var(--_shadow);\n}\n\n/* ── Visibility gating ──────────────────────────────────── */\n\n:host(:not([range])) .slider-thumb-start,\n:host(:not([range])) .slider-thumb-end {\n display: none;\n}\n\n:host([range]) .slider-thumb-sole {\n display: none;\n}\n\n@media (hover: hover) {\n :host(:not([disabled])) .slider-thumb:hover {\n box-shadow: var(--_shadow);\n }\n}\n\n@media (forced-colors: active) {\n :host(:focus-visible) .slider-thumb-sole,\n .slider-thumb-start:focus-visible,\n .slider-thumb-end:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n box-shadow: none;\n }\n}\n\n@layer refine.overrides {\n :host {\n --_fill: var(--slider-fill, var(--_theme-base));\n --_shadow: var(--_theme-shadow);\n }\n}\n\n/* ========================================\n Label\n ======================================== */\n\n.label {\n font-size: var(--_font-size);\n color: var(--color-contrast);\n white-space: nowrap;\n}\n\n.helper-text[hidden] {\n display: none;\n}\n\n.helper-text {\n width: 100%;\n font-size: var(--text-xs);\n line-height: var(--leading-tight);\n color: color-mix(in oklch, var(--color-contrast-500) 80%, var(--color-canvas));\n}\n\n.helper-text[role='alert'] {\n color: var(--color-error);\n}\n"],"mappings":""}
@@ -9,7 +9,7 @@ export type OreSliderProps = {
9
9
  color?: ThemeColor;
10
10
  /** Disable interaction */
11
11
  disabled?: boolean;
12
- /** Error message — marks the field as invalid (fallback when the `error` slot is empty) */
12
+ /** Error message: marks the field as invalid (fallback when the `error` slot is empty) */
13
13
  error?: string;
14
14
  /** Range mode: lower bound */
15
15
  from?: number | string;
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/inputs/slider/slider.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAW7D,kCAAkC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,8BAA8B;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC"}
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/inputs/slider/slider.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAW7D,kCAAkC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qBAAqB;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,8BAA8B;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC"}