@vielzeug/refine 1.1.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. package/dist/accordion-item.cjs +4 -4
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js +41 -41
  4. package/dist/accordion-item.js.map +1 -1
  5. package/dist/accordion.cjs +1 -1
  6. package/dist/accordion.cjs.map +1 -1
  7. package/dist/accordion.js +21 -21
  8. package/dist/accordion.js.map +1 -1
  9. package/dist/alert.cjs +5 -5
  10. package/dist/alert.cjs.map +1 -1
  11. package/dist/alert.js +21 -21
  12. package/dist/alert.js.map +1 -1
  13. package/dist/async.cjs +10 -10
  14. package/dist/async.cjs.map +1 -1
  15. package/dist/async.js +27 -27
  16. package/dist/async.js.map +1 -1
  17. package/dist/avatar.cjs +2 -2
  18. package/dist/avatar.cjs.map +1 -1
  19. package/dist/avatar.js +30 -30
  20. package/dist/avatar.js.map +1 -1
  21. package/dist/badge.cjs +1 -1
  22. package/dist/badge.cjs.map +1 -1
  23. package/dist/badge.js +1 -1
  24. package/dist/box.cjs +1 -1
  25. package/dist/box.cjs.map +1 -1
  26. package/dist/box.js +1 -1
  27. package/dist/breadcrumb.cjs +2 -2
  28. package/dist/breadcrumb.cjs.map +1 -1
  29. package/dist/breadcrumb.js +20 -20
  30. package/dist/breadcrumb.js.map +1 -1
  31. package/dist/button-group.cjs +1 -1
  32. package/dist/button-group.cjs.map +1 -1
  33. package/dist/button-group.js +7 -7
  34. package/dist/button-group.js.map +1 -1
  35. package/dist/button.cjs +6 -6
  36. package/dist/button.cjs.map +1 -1
  37. package/dist/button.js +44 -42
  38. package/dist/button.js.map +1 -1
  39. package/dist/calendar.cjs +28 -28
  40. package/dist/calendar.cjs.map +1 -1
  41. package/dist/calendar.js +93 -91
  42. package/dist/calendar.js.map +1 -1
  43. package/dist/card.cjs +6 -6
  44. package/dist/card.cjs.map +1 -1
  45. package/dist/card.js +35 -34
  46. package/dist/card.js.map +1 -1
  47. package/dist/carousel.cjs +19 -19
  48. package/dist/carousel.cjs.map +1 -1
  49. package/dist/carousel.js +111 -111
  50. package/dist/carousel.js.map +1 -1
  51. package/dist/chat-message.cjs +47 -0
  52. package/dist/chat-message.cjs.map +1 -0
  53. package/dist/chat-message.js +121 -0
  54. package/dist/chat-message.js.map +1 -0
  55. package/dist/checkbox-group.cjs +9 -9
  56. package/dist/checkbox-group.cjs.map +1 -1
  57. package/dist/checkbox-group.js +54 -52
  58. package/dist/checkbox-group.js.map +1 -1
  59. package/dist/checkbox.cjs +4 -4
  60. package/dist/checkbox.cjs.map +1 -1
  61. package/dist/checkbox.js +39 -37
  62. package/dist/checkbox.js.map +1 -1
  63. package/dist/chip.cjs +14 -14
  64. package/dist/chip.cjs.map +1 -1
  65. package/dist/chip.js +43 -43
  66. package/dist/chip.js.map +1 -1
  67. package/dist/code-window.cjs +1 -1
  68. package/dist/code-window.cjs.map +1 -1
  69. package/dist/code-window.js +1 -1
  70. package/dist/combobox.cjs +25 -25
  71. package/dist/combobox.cjs.map +1 -1
  72. package/dist/combobox.js +181 -179
  73. package/dist/combobox.js.map +1 -1
  74. package/dist/command-palette.cjs +62 -0
  75. package/dist/command-palette.cjs.map +1 -0
  76. package/dist/command-palette.js +179 -0
  77. package/dist/command-palette.js.map +1 -0
  78. package/dist/content/avatar/{avatar-group.css?inline.cjs → avatar-group.css.cjs} +1 -1
  79. package/dist/content/avatar/avatar-group.css.cjs.map +1 -0
  80. package/dist/content/avatar/{avatar-group.css?inline.js → avatar-group.css.js} +1 -1
  81. package/dist/content/avatar/avatar-group.css.js.map +1 -0
  82. package/dist/content/avatar/{avatar.css?inline.cjs → avatar.css.cjs} +1 -1
  83. package/dist/content/avatar/avatar.css.cjs.map +1 -0
  84. package/dist/content/avatar/{avatar.css?inline.js → avatar.css.js} +1 -1
  85. package/dist/content/avatar/avatar.css.js.map +1 -0
  86. package/dist/content/breadcrumb/{breadcrumb-item.css?inline.cjs → breadcrumb-item.css.cjs} +1 -1
  87. package/dist/content/breadcrumb/breadcrumb-item.css.cjs.map +1 -0
  88. package/dist/content/breadcrumb/{breadcrumb-item.css?inline.js → breadcrumb-item.css.js} +1 -1
  89. package/dist/content/breadcrumb/breadcrumb-item.css.js.map +1 -0
  90. package/dist/content/breadcrumb/{breadcrumb.css?inline.cjs → breadcrumb.css.cjs} +1 -1
  91. package/dist/content/breadcrumb/breadcrumb.css.cjs.map +1 -0
  92. package/dist/content/breadcrumb/{breadcrumb.css?inline.js → breadcrumb.css.js} +1 -1
  93. package/dist/content/breadcrumb/breadcrumb.css.js.map +1 -0
  94. package/dist/content/card/{card.css?inline.cjs → card.css.cjs} +1 -1
  95. package/dist/content/card/card.css.cjs.map +1 -0
  96. package/dist/content/card/{card.css?inline.js → card.css.js} +1 -1
  97. package/dist/content/card/card.css.js.map +1 -0
  98. package/dist/content/carousel/carousel-slide.cjs +1 -1
  99. package/dist/content/carousel/carousel-slide.cjs.map +1 -1
  100. package/dist/content/carousel/{carousel-slide.css?inline.cjs → carousel-slide.css.cjs} +1 -1
  101. package/dist/content/carousel/carousel-slide.css.cjs.map +1 -0
  102. package/dist/content/carousel/{carousel-slide.css?inline.js → carousel-slide.css.js} +1 -1
  103. package/dist/content/carousel/carousel-slide.css.js.map +1 -0
  104. package/dist/content/carousel/carousel-slide.js +7 -7
  105. package/dist/content/carousel/carousel-slide.js.map +1 -1
  106. package/dist/content/carousel/{carousel.css?inline.cjs → carousel.css.cjs} +1 -1
  107. package/dist/content/carousel/carousel.css.cjs.map +1 -0
  108. package/dist/content/carousel/{carousel.css?inline.js → carousel.css.js} +1 -1
  109. package/dist/content/carousel/carousel.css.js.map +1 -0
  110. package/dist/content/chat-message/chat-message.css.cjs +2 -0
  111. package/dist/content/chat-message/chat-message.css.cjs.map +1 -0
  112. package/dist/content/chat-message/chat-message.css.js +6 -0
  113. package/dist/content/chat-message/chat-message.css.js.map +1 -0
  114. package/dist/content/chat-message/chat-message.d.ts +87 -0
  115. package/dist/content/chat-message/chat-message.d.ts.map +1 -0
  116. package/dist/content/code-window/{code-window.css?inline.cjs → code-window.css.cjs} +1 -1
  117. package/dist/content/code-window/code-window.css.cjs.map +1 -0
  118. package/dist/content/code-window/{code-window.css?inline.js → code-window.css.js} +1 -1
  119. package/dist/content/code-window/code-window.css.js.map +1 -0
  120. package/dist/content/copy-command/{copy-command.css?inline.cjs → copy-command.css.cjs} +1 -1
  121. package/dist/content/copy-command/copy-command.css.cjs.map +1 -0
  122. package/dist/content/copy-command/{copy-command.css?inline.js → copy-command.css.js} +1 -1
  123. package/dist/content/copy-command/copy-command.css.js.map +1 -0
  124. package/dist/content/icon/{icon.css?inline.cjs → icon.css.cjs} +1 -1
  125. package/dist/content/icon/icon.css.cjs.map +1 -0
  126. package/dist/content/icon/{icon.css?inline.js → icon.css.js} +1 -1
  127. package/dist/content/icon/icon.css.js.map +1 -0
  128. package/dist/content/index.d.ts +2 -0
  129. package/dist/content/index.d.ts.map +1 -1
  130. package/dist/content/pagination/{pagination.css?inline.cjs → pagination.css.cjs} +1 -1
  131. package/dist/content/pagination/pagination.css.cjs.map +1 -0
  132. package/dist/content/pagination/{pagination.css?inline.js → pagination.css.js} +1 -1
  133. package/dist/content/pagination/pagination.css.js.map +1 -0
  134. package/dist/content/separator/{separator.css?inline.cjs → separator.css.cjs} +1 -1
  135. package/dist/content/separator/separator.css.cjs.map +1 -0
  136. package/dist/content/separator/{separator.css?inline.js → separator.css.js} +1 -1
  137. package/dist/content/separator/separator.css.js.map +1 -0
  138. package/dist/content/table/{table.css?inline.cjs → table.css.cjs} +1 -1
  139. package/dist/content/table/table.css.cjs.map +1 -0
  140. package/dist/content/table/{table.css?inline.js → table.css.js} +1 -1
  141. package/dist/content/table/table.css.js.map +1 -0
  142. package/dist/content/text/{text.css?inline.cjs → text.css.cjs} +1 -1
  143. package/dist/content/text/text.css.cjs.map +1 -0
  144. package/dist/content/text/{text.css?inline.js → text.css.js} +1 -1
  145. package/dist/content/text/text.css.js.map +1 -0
  146. package/dist/copy-command.cjs +5 -5
  147. package/dist/copy-command.cjs.map +1 -1
  148. package/dist/copy-command.js +25 -25
  149. package/dist/copy-command.js.map +1 -1
  150. package/dist/custom-elements.json +4716 -3980
  151. package/dist/datagrid.cjs +109 -109
  152. package/dist/datagrid.cjs.map +1 -1
  153. package/dist/datagrid.js +194 -194
  154. package/dist/datagrid.js.map +1 -1
  155. package/dist/date-picker.cjs +40 -40
  156. package/dist/date-picker.cjs.map +1 -1
  157. package/dist/date-picker.js +116 -114
  158. package/dist/date-picker.js.map +1 -1
  159. package/dist/dialog.cjs +5 -5
  160. package/dist/dialog.cjs.map +1 -1
  161. package/dist/dialog.js +28 -28
  162. package/dist/dialog.js.map +1 -1
  163. package/dist/disclosure/accordion/{accordion.css?inline.cjs → accordion.css.cjs} +1 -1
  164. package/dist/disclosure/accordion/accordion.css.cjs.map +1 -0
  165. package/dist/disclosure/accordion/{accordion.css?inline.js → accordion.css.js} +1 -1
  166. package/dist/disclosure/accordion/accordion.css.js.map +1 -0
  167. package/dist/disclosure/accordion-item/{accordion-item.css?inline.cjs → accordion-item.css.cjs} +1 -1
  168. package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -0
  169. package/dist/disclosure/accordion-item/{accordion-item.css?inline.js → accordion-item.css.js} +1 -1
  170. package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -0
  171. package/dist/disclosure/tab-item/{tab-item.css?inline.cjs → tab-item.css.cjs} +1 -1
  172. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -0
  173. package/dist/disclosure/tab-item/{tab-item.css?inline.js → tab-item.css.js} +1 -1
  174. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -0
  175. package/dist/disclosure/tab-panel/{tab-panel.css?inline.cjs → tab-panel.css.cjs} +1 -1
  176. package/dist/disclosure/tab-panel/tab-panel.css.cjs.map +1 -0
  177. package/dist/disclosure/tab-panel/{tab-panel.css?inline.js → tab-panel.css.js} +1 -1
  178. package/dist/disclosure/tab-panel/tab-panel.css.js.map +1 -0
  179. package/dist/disclosure/tabs/{tabs.css?inline.cjs → tabs.css.cjs} +1 -1
  180. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -0
  181. package/dist/disclosure/tabs/{tabs.css?inline.js → tabs.css.js} +1 -1
  182. package/dist/disclosure/tabs/tabs.css.js.map +1 -0
  183. package/dist/drawer.cjs +9 -9
  184. package/dist/drawer.cjs.map +1 -1
  185. package/dist/drawer.js +80 -80
  186. package/dist/drawer.js.map +1 -1
  187. package/dist/feedback/alert/{alert.css?inline.cjs → alert.css.cjs} +1 -1
  188. package/dist/feedback/alert/alert.css.cjs.map +1 -0
  189. package/dist/feedback/alert/{alert.css?inline.js → alert.css.js} +1 -1
  190. package/dist/feedback/alert/alert.css.js.map +1 -0
  191. package/dist/feedback/async/{async.css?inline.cjs → async.css.cjs} +1 -1
  192. package/dist/feedback/async/async.css.cjs.map +1 -0
  193. package/dist/feedback/async/{async.css?inline.js → async.css.js} +1 -1
  194. package/dist/feedback/async/async.css.js.map +1 -0
  195. package/dist/feedback/badge/{badge.css?inline.cjs → badge.css.cjs} +1 -1
  196. package/dist/feedback/badge/badge.css.cjs.map +1 -0
  197. package/dist/feedback/badge/{badge.css?inline.js → badge.css.js} +1 -1
  198. package/dist/feedback/badge/badge.css.js.map +1 -0
  199. package/dist/feedback/chip/{chip.css?inline.cjs → chip.css.cjs} +1 -1
  200. package/dist/feedback/chip/chip.css.cjs.map +1 -0
  201. package/dist/feedback/chip/{chip.css?inline.js → chip.css.js} +1 -1
  202. package/dist/feedback/chip/chip.css.js.map +1 -0
  203. package/dist/feedback/index.d.ts +2 -0
  204. package/dist/feedback/index.d.ts.map +1 -1
  205. package/dist/feedback/password-strength/{password-strength.css?inline.cjs → password-strength.css.cjs} +1 -1
  206. package/dist/feedback/password-strength/password-strength.css.cjs.map +1 -0
  207. package/dist/feedback/password-strength/{password-strength.css?inline.js → password-strength.css.js} +1 -1
  208. package/dist/feedback/password-strength/password-strength.css.js.map +1 -0
  209. package/dist/feedback/progress/{progress.css?inline.cjs → progress.css.cjs} +1 -1
  210. package/dist/feedback/progress/progress.css.cjs.map +1 -0
  211. package/dist/feedback/progress/{progress.css?inline.js → progress.css.js} +1 -1
  212. package/dist/feedback/progress/progress.css.js.map +1 -0
  213. package/dist/feedback/skeleton/{skeleton.css?inline.cjs → skeleton.css.cjs} +1 -1
  214. package/dist/feedback/skeleton/skeleton.css.cjs.map +1 -0
  215. package/dist/feedback/skeleton/{skeleton.css?inline.js → skeleton.css.js} +1 -1
  216. package/dist/feedback/skeleton/skeleton.css.js.map +1 -0
  217. package/dist/feedback/toast/{toast.css?inline.cjs → toast.css.cjs} +1 -1
  218. package/dist/feedback/toast/toast.css.cjs.map +1 -0
  219. package/dist/feedback/toast/{toast.css?inline.js → toast.css.js} +1 -1
  220. package/dist/feedback/toast/toast.css.js.map +1 -0
  221. package/dist/feedback/toast/toast.d.ts.map +1 -1
  222. package/dist/feedback/typing-indicator/typing-indicator.css.cjs +2 -0
  223. package/dist/feedback/typing-indicator/typing-indicator.css.cjs.map +1 -0
  224. package/dist/feedback/typing-indicator/typing-indicator.css.js +6 -0
  225. package/dist/feedback/typing-indicator/typing-indicator.css.js.map +1 -0
  226. package/dist/feedback/typing-indicator/typing-indicator.d.ts +42 -0
  227. package/dist/feedback/typing-indicator/typing-indicator.d.ts.map +1 -0
  228. package/dist/file-input.cjs +56 -34
  229. package/dist/file-input.cjs.map +1 -1
  230. package/dist/file-input.js +143 -104
  231. package/dist/file-input.js.map +1 -1
  232. package/dist/form.cjs +3 -3
  233. package/dist/form.cjs.map +1 -1
  234. package/dist/form.js +28 -25
  235. package/dist/form.js.map +1 -1
  236. package/dist/grid-item.cjs +1 -1
  237. package/dist/grid-item.cjs.map +1 -1
  238. package/dist/grid-item.js +19 -19
  239. package/dist/grid-item.js.map +1 -1
  240. package/dist/grid.cjs +1 -1
  241. package/dist/grid.cjs.map +1 -1
  242. package/dist/grid.js +48 -48
  243. package/dist/grid.js.map +1 -1
  244. package/dist/icon.cjs +1 -1
  245. package/dist/icon.cjs.map +1 -1
  246. package/dist/icon.js +26 -26
  247. package/dist/icon.js.map +1 -1
  248. package/dist/index.cjs +1 -1
  249. package/dist/index.js +52 -49
  250. package/dist/input.cjs +25 -25
  251. package/dist/input.cjs.map +1 -1
  252. package/dist/input.js +75 -73
  253. package/dist/input.js.map +1 -1
  254. package/dist/inputs/button/{button.css?inline.cjs → button.css.cjs} +1 -1
  255. package/dist/inputs/button/button.css.cjs.map +1 -0
  256. package/dist/inputs/button/{button.css?inline.js → button.css.js} +1 -1
  257. package/dist/inputs/button/button.css.js.map +1 -0
  258. package/dist/inputs/button/button.d.ts.map +1 -1
  259. package/dist/inputs/button-group/{button-group.css?inline.cjs → button-group.css.cjs} +1 -1
  260. package/dist/inputs/button-group/button-group.css.cjs.map +1 -0
  261. package/dist/inputs/button-group/{button-group.css?inline.js → button-group.css.js} +1 -1
  262. package/dist/inputs/button-group/button-group.css.js.map +1 -0
  263. package/dist/inputs/calendar/{calendar.css?inline.cjs → calendar.css.cjs} +1 -1
  264. package/dist/inputs/calendar/calendar.css.cjs.map +1 -0
  265. package/dist/inputs/calendar/{calendar.css?inline.js → calendar.css.js} +1 -1
  266. package/dist/inputs/calendar/calendar.css.js.map +1 -0
  267. package/dist/inputs/calendar/calendar.d.ts.map +1 -1
  268. package/dist/inputs/checkbox/{checkbox.css?inline.cjs → checkbox.css.cjs} +1 -1
  269. package/dist/inputs/checkbox/checkbox.css.cjs.map +1 -0
  270. package/dist/inputs/checkbox/{checkbox.css?inline.js → checkbox.css.js} +1 -1
  271. package/dist/inputs/checkbox/checkbox.css.js.map +1 -0
  272. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -1
  273. package/dist/inputs/checkbox-group/{checkbox-group.css?inline.cjs → checkbox-group.css.cjs} +1 -1
  274. package/dist/inputs/checkbox-group/checkbox-group.css.cjs.map +1 -0
  275. package/dist/inputs/checkbox-group/{checkbox-group.css?inline.js → checkbox-group.css.js} +1 -1
  276. package/dist/inputs/checkbox-group/checkbox-group.css.js.map +1 -0
  277. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -1
  278. package/dist/inputs/combobox/{combobox.css?inline.cjs → combobox.css.cjs} +1 -1
  279. package/dist/inputs/combobox/combobox.css.cjs.map +1 -0
  280. package/dist/inputs/combobox/{combobox.css?inline.js → combobox.css.js} +1 -1
  281. package/dist/inputs/combobox/combobox.css.js.map +1 -0
  282. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  283. package/dist/inputs/datagrid/{datagrid.css?inline.cjs → datagrid.css.cjs} +1 -1
  284. package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -0
  285. package/dist/inputs/datagrid/{datagrid.css?inline.js → datagrid.css.js} +1 -1
  286. package/dist/inputs/datagrid/datagrid.css.js.map +1 -0
  287. package/dist/inputs/date-picker/{date-picker.css?inline.cjs → date-picker.css.cjs} +1 -1
  288. package/dist/inputs/date-picker/date-picker.css.cjs.map +1 -0
  289. package/dist/inputs/date-picker/{date-picker.css?inline.js → date-picker.css.js} +1 -1
  290. package/dist/inputs/date-picker/date-picker.css.js.map +1 -0
  291. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -1
  292. package/dist/inputs/file-input/{file-input.css?inline.cjs → file-input.css.cjs} +2 -2
  293. package/dist/inputs/file-input/file-input.css.cjs.map +1 -0
  294. package/dist/inputs/file-input/{file-input.css?inline.js → file-input.css.js} +2 -2
  295. package/dist/inputs/file-input/file-input.css.js.map +1 -0
  296. package/dist/inputs/file-input/file-input.d.ts +9 -0
  297. package/dist/inputs/file-input/file-input.d.ts.map +1 -1
  298. package/dist/inputs/form/{form.css?inline.cjs → form.css.cjs} +1 -1
  299. package/dist/inputs/form/form.css.cjs.map +1 -0
  300. package/dist/inputs/form/{form.css?inline.js → form.css.js} +1 -1
  301. package/dist/inputs/form/form.css.js.map +1 -0
  302. package/dist/inputs/input/{input.css?inline.cjs → input.css.cjs} +1 -1
  303. package/dist/inputs/input/input.css.cjs.map +1 -0
  304. package/dist/inputs/input/{input.css?inline.js → input.css.js} +1 -1
  305. package/dist/inputs/input/input.css.js.map +1 -0
  306. package/dist/inputs/input/input.d.ts.map +1 -1
  307. package/dist/inputs/number-input/{number-input.css?inline.cjs → number-input.css.cjs} +1 -1
  308. package/dist/inputs/number-input/number-input.css.cjs.map +1 -0
  309. package/dist/inputs/number-input/{number-input.css?inline.js → number-input.css.js} +1 -1
  310. package/dist/inputs/number-input/number-input.css.js.map +1 -0
  311. package/dist/inputs/otp-input/{otp-input.css?inline.cjs → otp-input.css.cjs} +1 -1
  312. package/dist/inputs/otp-input/otp-input.css.cjs.map +1 -0
  313. package/dist/inputs/otp-input/{otp-input.css?inline.js → otp-input.css.js} +1 -1
  314. package/dist/inputs/otp-input/otp-input.css.js.map +1 -0
  315. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -1
  316. package/dist/inputs/radio/{radio.css?inline.cjs → radio.css.cjs} +1 -1
  317. package/dist/inputs/radio/radio.css.cjs.map +1 -0
  318. package/dist/inputs/radio/{radio.css?inline.js → radio.css.js} +1 -1
  319. package/dist/inputs/radio/radio.css.js.map +1 -0
  320. package/dist/inputs/radio/radio.d.ts.map +1 -1
  321. package/dist/inputs/radio-group/{radio-group.css?inline.cjs → radio-group.css.cjs} +1 -1
  322. package/dist/inputs/radio-group/radio-group.css.cjs.map +1 -0
  323. package/dist/inputs/radio-group/{radio-group.css?inline.js → radio-group.css.js} +1 -1
  324. package/dist/inputs/radio-group/radio-group.css.js.map +1 -0
  325. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -1
  326. package/dist/inputs/rating/{rating.css?inline.cjs → rating.css.cjs} +1 -1
  327. package/dist/inputs/rating/rating.css.cjs.map +1 -0
  328. package/dist/inputs/rating/{rating.css?inline.js → rating.css.js} +1 -1
  329. package/dist/inputs/rating/rating.css.js.map +1 -0
  330. package/dist/inputs/rating/rating.d.ts.map +1 -1
  331. package/dist/inputs/select/{select.css?inline.cjs → select.css.cjs} +1 -1
  332. package/dist/inputs/select/select.css.cjs.map +1 -0
  333. package/dist/inputs/select/{select.css?inline.js → select.css.js} +1 -1
  334. package/dist/inputs/select/select.css.js.map +1 -0
  335. package/dist/inputs/select/select.d.ts.map +1 -1
  336. package/dist/inputs/shared/field-binding.cjs +1 -1
  337. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  338. package/dist/inputs/shared/field-binding.d.ts +1 -2
  339. package/dist/inputs/shared/field-binding.d.ts.map +1 -1
  340. package/dist/inputs/shared/field-binding.js +3 -2
  341. package/dist/inputs/shared/field-binding.js.map +1 -1
  342. package/dist/inputs/shared/form-context.cjs +1 -1
  343. package/dist/inputs/shared/form-context.cjs.map +1 -1
  344. package/dist/inputs/shared/form-context.d.ts +4 -4
  345. package/dist/inputs/shared/form-context.d.ts.map +1 -1
  346. package/dist/inputs/shared/form-context.js +10 -10
  347. package/dist/inputs/shared/form-context.js.map +1 -1
  348. package/dist/inputs/slider/{slider.css?inline.cjs → slider.css.cjs} +1 -1
  349. package/dist/inputs/slider/slider.css.cjs.map +1 -0
  350. package/dist/inputs/slider/{slider.css?inline.js → slider.css.js} +1 -1
  351. package/dist/inputs/slider/slider.css.js.map +1 -0
  352. package/dist/inputs/slider/slider.d.ts.map +1 -1
  353. package/dist/inputs/switch/{switch.css?inline.cjs → switch.css.cjs} +1 -1
  354. package/dist/inputs/switch/switch.css.cjs.map +1 -0
  355. package/dist/inputs/switch/{switch.css?inline.js → switch.css.js} +1 -1
  356. package/dist/inputs/switch/switch.css.js.map +1 -0
  357. package/dist/inputs/switch/switch.d.ts.map +1 -1
  358. package/dist/inputs/textarea/{textarea.css?inline.cjs → textarea.css.cjs} +1 -1
  359. package/dist/inputs/textarea/textarea.css.cjs.map +1 -0
  360. package/dist/inputs/textarea/{textarea.css?inline.js → textarea.css.js} +1 -1
  361. package/dist/inputs/textarea/textarea.css.js.map +1 -0
  362. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  363. package/dist/inputs/time-picker/{time-picker.css?inline.cjs → time-picker.css.cjs} +1 -1
  364. package/dist/inputs/time-picker/time-picker.css.cjs.map +1 -0
  365. package/dist/inputs/time-picker/{time-picker.css?inline.js → time-picker.css.js} +1 -1
  366. package/dist/inputs/time-picker/time-picker.css.js.map +1 -0
  367. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -1
  368. package/dist/keymap/dist/_dev.cjs +2 -0
  369. package/dist/keymap/dist/_dev.cjs.map +1 -0
  370. package/dist/keymap/dist/_dev.js +4 -0
  371. package/dist/keymap/dist/_dev.js.map +1 -0
  372. package/dist/keymap/dist/format.cjs +1 -0
  373. package/dist/keymap/dist/format.js +1 -0
  374. package/dist/keymap/dist/index.cjs +1 -0
  375. package/dist/keymap/dist/index.js +4 -0
  376. package/dist/keymap/dist/keymap.cjs +2 -0
  377. package/dist/keymap/dist/keymap.cjs.map +1 -0
  378. package/dist/keymap/dist/keymap.js +221 -0
  379. package/dist/keymap/dist/keymap.js.map +1 -0
  380. package/dist/keymap/dist/layer.cjs +1 -0
  381. package/dist/keymap/dist/layer.js +1 -0
  382. package/dist/layout/box/{box.css?inline.cjs → box.css.cjs} +1 -1
  383. package/dist/layout/box/box.css.cjs.map +1 -0
  384. package/dist/layout/box/{box.css?inline.js → box.css.js} +1 -1
  385. package/dist/layout/box/box.css.js.map +1 -0
  386. package/dist/layout/grid/{grid.css?inline.cjs → grid.css.cjs} +1 -1
  387. package/dist/layout/grid/grid.css.cjs.map +1 -0
  388. package/dist/layout/grid/{grid.css?inline.js → grid.css.js} +1 -1
  389. package/dist/layout/grid/grid.css.js.map +1 -0
  390. package/dist/layout/grid-item/{grid-item.css?inline.cjs → grid-item.css.cjs} +1 -1
  391. package/dist/layout/grid-item/grid-item.css.cjs.map +1 -0
  392. package/dist/layout/grid-item/{grid-item.css?inline.js → grid-item.css.js} +1 -1
  393. package/dist/layout/grid-item/grid-item.css.js.map +1 -0
  394. package/dist/layout/navbar/{navbar.css?inline.cjs → navbar.css.cjs} +1 -1
  395. package/dist/layout/navbar/navbar.css.cjs.map +1 -0
  396. package/dist/layout/navbar/{navbar.css?inline.js → navbar.css.js} +1 -1
  397. package/dist/layout/navbar/navbar.css.js.map +1 -0
  398. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  399. package/dist/layout/sidebar/{sidebar-group.css?inline.cjs → sidebar-group.css.cjs} +1 -1
  400. package/dist/layout/sidebar/sidebar-group.css.cjs.map +1 -0
  401. package/dist/layout/sidebar/{sidebar-group.css?inline.js → sidebar-group.css.js} +1 -1
  402. package/dist/layout/sidebar/sidebar-group.css.js.map +1 -0
  403. package/dist/layout/sidebar/{sidebar-item.css?inline.cjs → sidebar-item.css.cjs} +1 -1
  404. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -0
  405. package/dist/layout/sidebar/{sidebar-item.css?inline.js → sidebar-item.css.js} +1 -1
  406. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -0
  407. package/dist/layout/sidebar/{sidebar.css?inline.cjs → sidebar.css.cjs} +1 -1
  408. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -0
  409. package/dist/layout/sidebar/{sidebar.css?inline.js → sidebar.css.js} +1 -1
  410. package/dist/layout/sidebar/sidebar.css.js.map +1 -0
  411. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  412. package/dist/menu.cjs +5 -5
  413. package/dist/menu.cjs.map +1 -1
  414. package/dist/menu.js +85 -85
  415. package/dist/menu.js.map +1 -1
  416. package/dist/navbar.cjs +15 -15
  417. package/dist/navbar.cjs.map +1 -1
  418. package/dist/navbar.js +127 -127
  419. package/dist/navbar.js.map +1 -1
  420. package/dist/number-input.cjs +11 -11
  421. package/dist/number-input.cjs.map +1 -1
  422. package/dist/number-input.js +69 -69
  423. package/dist/number-input.js.map +1 -1
  424. package/dist/ore/dist/_dev.cjs.map +1 -1
  425. package/dist/ore/dist/_dev.js.map +1 -1
  426. package/dist/ore/dist/base-element.cjs +1 -1
  427. package/dist/ore/dist/base-element.cjs.map +1 -1
  428. package/dist/ore/dist/base-element.js +37 -35
  429. package/dist/ore/dist/base-element.js.map +1 -1
  430. package/dist/ore/dist/context.cjs +1 -1
  431. package/dist/ore/dist/context.cjs.map +1 -1
  432. package/dist/ore/dist/context.js +6 -33
  433. package/dist/ore/dist/context.js.map +1 -1
  434. package/dist/ore/dist/define.cjs.map +1 -1
  435. package/dist/ore/dist/define.js.map +1 -1
  436. package/dist/ore/dist/directives/raw.cjs +1 -1
  437. package/dist/ore/dist/directives/raw.cjs.map +1 -1
  438. package/dist/ore/dist/directives/raw.js +20 -17
  439. package/dist/ore/dist/directives/raw.js.map +1 -1
  440. package/dist/ore/dist/directives/when.cjs +1 -1
  441. package/dist/ore/dist/directives/when.cjs.map +1 -1
  442. package/dist/ore/dist/directives/when.js +29 -24
  443. package/dist/ore/dist/directives/when.js.map +1 -1
  444. package/dist/ore/dist/errors.cjs +2 -2
  445. package/dist/ore/dist/errors.cjs.map +1 -1
  446. package/dist/ore/dist/errors.js +12 -3
  447. package/dist/ore/dist/errors.js.map +1 -1
  448. package/dist/ore/dist/forms/context.cjs +2 -0
  449. package/dist/ore/dist/forms/context.cjs.map +1 -0
  450. package/dist/ore/dist/forms/context.js +6 -0
  451. package/dist/ore/dist/forms/context.js.map +1 -0
  452. package/dist/ore/dist/forms/field.cjs +2 -0
  453. package/dist/ore/dist/forms/field.cjs.map +1 -0
  454. package/dist/ore/dist/forms/field.js +35 -0
  455. package/dist/ore/dist/forms/field.js.map +1 -0
  456. package/dist/ore/dist/forms.cjs +1 -0
  457. package/dist/ore/dist/forms.js +3 -0
  458. package/dist/ore/dist/props.cjs +1 -1
  459. package/dist/ore/dist/props.cjs.map +1 -1
  460. package/dist/ore/dist/props.js +29 -27
  461. package/dist/ore/dist/props.js.map +1 -1
  462. package/dist/ore/dist/runtime.cjs +1 -1
  463. package/dist/ore/dist/runtime.cjs.map +1 -1
  464. package/dist/ore/dist/runtime.js +13 -23
  465. package/dist/ore/dist/runtime.js.map +1 -1
  466. package/dist/ore/dist/testing/render-hook.cjs +1 -1
  467. package/dist/ore/dist/testing/render-hook.js +0 -1
  468. package/dist/ore/dist/utils/dom.cjs +1 -1
  469. package/dist/ore/dist/utils/dom.cjs.map +1 -1
  470. package/dist/ore/dist/utils/dom.js +2 -6
  471. package/dist/ore/dist/utils/dom.js.map +1 -1
  472. package/dist/otp-input.cjs +9 -9
  473. package/dist/otp-input.cjs.map +1 -1
  474. package/dist/otp-input.js +70 -68
  475. package/dist/otp-input.js.map +1 -1
  476. package/dist/overlay/command-palette/command-palette-items.cjs +2 -0
  477. package/dist/overlay/command-palette/command-palette-items.cjs.map +1 -0
  478. package/dist/overlay/command-palette/command-palette-items.d.ts +22 -0
  479. package/dist/overlay/command-palette/command-palette-items.d.ts.map +1 -0
  480. package/dist/overlay/command-palette/command-palette-items.js +55 -0
  481. package/dist/overlay/command-palette/command-palette-items.js.map +1 -0
  482. package/dist/overlay/command-palette/command-palette.css.cjs +2 -0
  483. package/dist/overlay/command-palette/command-palette.css.cjs.map +1 -0
  484. package/dist/overlay/command-palette/command-palette.css.js +6 -0
  485. package/dist/overlay/command-palette/command-palette.css.js.map +1 -0
  486. package/dist/overlay/command-palette/command-palette.d.ts +72 -0
  487. package/dist/overlay/command-palette/command-palette.d.ts.map +1 -0
  488. package/dist/overlay/command-palette/command-palette.types.d.ts +76 -0
  489. package/dist/overlay/command-palette/command-palette.types.d.ts.map +1 -0
  490. package/dist/overlay/dialog/{dialog.css?inline.cjs → dialog.css.cjs} +1 -1
  491. package/dist/overlay/dialog/dialog.css.cjs.map +1 -0
  492. package/dist/overlay/dialog/{dialog.css?inline.js → dialog.css.js} +1 -1
  493. package/dist/overlay/dialog/dialog.css.js.map +1 -0
  494. package/dist/overlay/drawer/{drawer.css?inline.cjs → drawer.css.cjs} +1 -1
  495. package/dist/overlay/drawer/drawer.css.cjs.map +1 -0
  496. package/dist/overlay/drawer/{drawer.css?inline.js → drawer.css.js} +1 -1
  497. package/dist/overlay/drawer/drawer.css.js.map +1 -0
  498. package/dist/overlay/drawer/drawer.d.ts.map +1 -1
  499. package/dist/overlay/index.d.ts +2 -0
  500. package/dist/overlay/index.d.ts.map +1 -1
  501. package/dist/overlay/menu/{menu-item.css?inline.cjs → menu-item.css.cjs} +1 -1
  502. package/dist/overlay/menu/menu-item.css.cjs.map +1 -0
  503. package/dist/overlay/menu/{menu-item.css?inline.js → menu-item.css.js} +1 -1
  504. package/dist/overlay/menu/menu-item.css.js.map +1 -0
  505. package/dist/overlay/menu/{menu-separator.css?inline.cjs → menu-separator.css.cjs} +1 -1
  506. package/dist/overlay/menu/menu-separator.css.cjs.map +1 -0
  507. package/dist/overlay/menu/{menu-separator.css?inline.js → menu-separator.css.js} +1 -1
  508. package/dist/overlay/menu/menu-separator.css.js.map +1 -0
  509. package/dist/overlay/menu/{menu.css?inline.cjs → menu.css.cjs} +1 -1
  510. package/dist/overlay/menu/menu.css.cjs.map +1 -0
  511. package/dist/overlay/menu/{menu.css?inline.js → menu.css.js} +1 -1
  512. package/dist/overlay/menu/menu.css.js.map +1 -0
  513. package/dist/overlay/menu/menu.d.ts.map +1 -1
  514. package/dist/overlay/popover/{popover.css?inline.cjs → popover.css.cjs} +1 -1
  515. package/dist/overlay/popover/popover.css.cjs.map +1 -0
  516. package/dist/overlay/popover/{popover.css?inline.js → popover.css.js} +1 -1
  517. package/dist/overlay/popover/popover.css.js.map +1 -0
  518. package/dist/overlay/popover/popover.d.ts.map +1 -1
  519. package/dist/overlay/tooltip/{tooltip.css?inline.cjs → tooltip.css.cjs} +1 -1
  520. package/dist/overlay/tooltip/tooltip.css.cjs.map +1 -0
  521. package/dist/overlay/tooltip/{tooltip.css?inline.js → tooltip.css.js} +1 -1
  522. package/dist/overlay/tooltip/tooltip.css.js.map +1 -0
  523. package/dist/pagination.cjs +12 -12
  524. package/dist/pagination.cjs.map +1 -1
  525. package/dist/pagination.js +39 -38
  526. package/dist/pagination.js.map +1 -1
  527. package/dist/password-strength.cjs +8 -8
  528. package/dist/password-strength.cjs.map +1 -1
  529. package/dist/password-strength.js +34 -34
  530. package/dist/password-strength.js.map +1 -1
  531. package/dist/popover.cjs +4 -4
  532. package/dist/popover.cjs.map +1 -1
  533. package/dist/popover.js +30 -30
  534. package/dist/popover.js.map +1 -1
  535. package/dist/progress.cjs +1 -1
  536. package/dist/progress.cjs.map +1 -1
  537. package/dist/progress.js +30 -30
  538. package/dist/progress.js.map +1 -1
  539. package/dist/radio-group.cjs +11 -11
  540. package/dist/radio-group.cjs.map +1 -1
  541. package/dist/radio-group.js +67 -63
  542. package/dist/radio-group.js.map +1 -1
  543. package/dist/radio.cjs +4 -4
  544. package/dist/radio.cjs.map +1 -1
  545. package/dist/radio.js +69 -67
  546. package/dist/radio.js.map +1 -1
  547. package/dist/rating.cjs +4 -4
  548. package/dist/rating.cjs.map +1 -1
  549. package/dist/rating.js +57 -55
  550. package/dist/rating.js.map +1 -1
  551. package/dist/refine.cjs +753 -620
  552. package/dist/refine.cjs.map +1 -1
  553. package/dist/refine.iife.js +742 -609
  554. package/dist/refine.iife.js.map +1 -1
  555. package/dist/refine.js +777 -644
  556. package/dist/refine.js.map +1 -1
  557. package/dist/select.cjs +37 -37
  558. package/dist/select.cjs.map +1 -1
  559. package/dist/select.js +130 -128
  560. package/dist/select.js.map +1 -1
  561. package/dist/separator.cjs +1 -1
  562. package/dist/separator.cjs.map +1 -1
  563. package/dist/separator.js +1 -1
  564. package/dist/sidebar.cjs +22 -22
  565. package/dist/sidebar.cjs.map +1 -1
  566. package/dist/sidebar.js +135 -135
  567. package/dist/sidebar.js.map +1 -1
  568. package/dist/skeleton.cjs +2 -2
  569. package/dist/skeleton.cjs.map +1 -1
  570. package/dist/skeleton.js +28 -28
  571. package/dist/skeleton.js.map +1 -1
  572. package/dist/slider.cjs +13 -13
  573. package/dist/slider.cjs.map +1 -1
  574. package/dist/slider.js +142 -140
  575. package/dist/slider.js.map +1 -1
  576. package/dist/switch.cjs +4 -4
  577. package/dist/switch.cjs.map +1 -1
  578. package/dist/switch.js +35 -33
  579. package/dist/switch.js.map +1 -1
  580. package/dist/tab-item.cjs +5 -5
  581. package/dist/tab-item.cjs.map +1 -1
  582. package/dist/tab-item.js +25 -25
  583. package/dist/tab-item.js.map +1 -1
  584. package/dist/tab-panel.cjs +6 -6
  585. package/dist/tab-panel.cjs.map +1 -1
  586. package/dist/tab-panel.js +24 -24
  587. package/dist/tab-panel.js.map +1 -1
  588. package/dist/table.cjs +1 -1
  589. package/dist/table.cjs.map +1 -1
  590. package/dist/table.js +36 -35
  591. package/dist/table.js.map +1 -1
  592. package/dist/tabs.cjs +3 -3
  593. package/dist/tabs.cjs.map +1 -1
  594. package/dist/tabs.js +61 -61
  595. package/dist/tabs.js.map +1 -1
  596. package/dist/text.cjs +1 -1
  597. package/dist/text.cjs.map +1 -1
  598. package/dist/text.js +16 -16
  599. package/dist/text.js.map +1 -1
  600. package/dist/textarea.cjs +15 -15
  601. package/dist/textarea.cjs.map +1 -1
  602. package/dist/textarea.js +67 -65
  603. package/dist/textarea.js.map +1 -1
  604. package/dist/time-picker.cjs +31 -31
  605. package/dist/time-picker.cjs.map +1 -1
  606. package/dist/time-picker.js +115 -113
  607. package/dist/time-picker.js.map +1 -1
  608. package/dist/toast.cjs +14 -14
  609. package/dist/toast.cjs.map +1 -1
  610. package/dist/toast.js +85 -85
  611. package/dist/toast.js.map +1 -1
  612. package/dist/tooltip.cjs +5 -5
  613. package/dist/tooltip.cjs.map +1 -1
  614. package/dist/tooltip.js +55 -55
  615. package/dist/tooltip.js.map +1 -1
  616. package/dist/typing-indicator.cjs +8 -0
  617. package/dist/typing-indicator.cjs.map +1 -0
  618. package/dist/typing-indicator.js +49 -0
  619. package/dist/typing-indicator.js.map +1 -0
  620. package/package.json +21 -2
  621. package/dist/content/avatar/avatar-group.css?inline.cjs.map +0 -1
  622. package/dist/content/avatar/avatar-group.css?inline.js.map +0 -1
  623. package/dist/content/avatar/avatar.css?inline.cjs.map +0 -1
  624. package/dist/content/avatar/avatar.css?inline.js.map +0 -1
  625. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +0 -1
  626. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +0 -1
  627. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +0 -1
  628. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +0 -1
  629. package/dist/content/card/card.css?inline.cjs.map +0 -1
  630. package/dist/content/card/card.css?inline.js.map +0 -1
  631. package/dist/content/carousel/carousel-slide.css?inline.cjs.map +0 -1
  632. package/dist/content/carousel/carousel-slide.css?inline.js.map +0 -1
  633. package/dist/content/carousel/carousel.css?inline.cjs.map +0 -1
  634. package/dist/content/carousel/carousel.css?inline.js.map +0 -1
  635. package/dist/content/code-window/code-window.css?inline.cjs.map +0 -1
  636. package/dist/content/code-window/code-window.css?inline.js.map +0 -1
  637. package/dist/content/copy-command/copy-command.css?inline.cjs.map +0 -1
  638. package/dist/content/copy-command/copy-command.css?inline.js.map +0 -1
  639. package/dist/content/icon/icon.css?inline.cjs.map +0 -1
  640. package/dist/content/icon/icon.css?inline.js.map +0 -1
  641. package/dist/content/pagination/pagination.css?inline.cjs.map +0 -1
  642. package/dist/content/pagination/pagination.css?inline.js.map +0 -1
  643. package/dist/content/separator/separator.css?inline.cjs.map +0 -1
  644. package/dist/content/separator/separator.css?inline.js.map +0 -1
  645. package/dist/content/table/table.css?inline.cjs.map +0 -1
  646. package/dist/content/table/table.css?inline.js.map +0 -1
  647. package/dist/content/text/text.css?inline.cjs.map +0 -1
  648. package/dist/content/text/text.css?inline.js.map +0 -1
  649. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +0 -1
  650. package/dist/disclosure/accordion/accordion.css?inline.js.map +0 -1
  651. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +0 -1
  652. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +0 -1
  653. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +0 -1
  654. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +0 -1
  655. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +0 -1
  656. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +0 -1
  657. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +0 -1
  658. package/dist/disclosure/tabs/tabs.css?inline.js.map +0 -1
  659. package/dist/feedback/alert/alert.css?inline.cjs.map +0 -1
  660. package/dist/feedback/alert/alert.css?inline.js.map +0 -1
  661. package/dist/feedback/async/async.css?inline.cjs.map +0 -1
  662. package/dist/feedback/async/async.css?inline.js.map +0 -1
  663. package/dist/feedback/badge/badge.css?inline.cjs.map +0 -1
  664. package/dist/feedback/badge/badge.css?inline.js.map +0 -1
  665. package/dist/feedback/chip/chip.css?inline.cjs.map +0 -1
  666. package/dist/feedback/chip/chip.css?inline.js.map +0 -1
  667. package/dist/feedback/password-strength/password-strength.css?inline.cjs.map +0 -1
  668. package/dist/feedback/password-strength/password-strength.css?inline.js.map +0 -1
  669. package/dist/feedback/progress/progress.css?inline.cjs.map +0 -1
  670. package/dist/feedback/progress/progress.css?inline.js.map +0 -1
  671. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +0 -1
  672. package/dist/feedback/skeleton/skeleton.css?inline.js.map +0 -1
  673. package/dist/feedback/toast/toast.css?inline.cjs.map +0 -1
  674. package/dist/feedback/toast/toast.css?inline.js.map +0 -1
  675. package/dist/inputs/button/button.css?inline.cjs.map +0 -1
  676. package/dist/inputs/button/button.css?inline.js.map +0 -1
  677. package/dist/inputs/button-group/button-group.css?inline.cjs.map +0 -1
  678. package/dist/inputs/button-group/button-group.css?inline.js.map +0 -1
  679. package/dist/inputs/calendar/calendar.css?inline.cjs.map +0 -1
  680. package/dist/inputs/calendar/calendar.css?inline.js.map +0 -1
  681. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +0 -1
  682. package/dist/inputs/checkbox/checkbox.css?inline.js.map +0 -1
  683. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +0 -1
  684. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +0 -1
  685. package/dist/inputs/combobox/combobox.css?inline.cjs.map +0 -1
  686. package/dist/inputs/combobox/combobox.css?inline.js.map +0 -1
  687. package/dist/inputs/datagrid/datagrid.css?inline.cjs.map +0 -1
  688. package/dist/inputs/datagrid/datagrid.css?inline.js.map +0 -1
  689. package/dist/inputs/date-picker/date-picker.css?inline.cjs.map +0 -1
  690. package/dist/inputs/date-picker/date-picker.css?inline.js.map +0 -1
  691. package/dist/inputs/file-input/file-input.css?inline.cjs.map +0 -1
  692. package/dist/inputs/file-input/file-input.css?inline.js.map +0 -1
  693. package/dist/inputs/form/form.css?inline.cjs.map +0 -1
  694. package/dist/inputs/form/form.css?inline.js.map +0 -1
  695. package/dist/inputs/input/input.css?inline.cjs.map +0 -1
  696. package/dist/inputs/input/input.css?inline.js.map +0 -1
  697. package/dist/inputs/number-input/number-input.css?inline.cjs.map +0 -1
  698. package/dist/inputs/number-input/number-input.css?inline.js.map +0 -1
  699. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +0 -1
  700. package/dist/inputs/otp-input/otp-input.css?inline.js.map +0 -1
  701. package/dist/inputs/radio/radio.css?inline.cjs.map +0 -1
  702. package/dist/inputs/radio/radio.css?inline.js.map +0 -1
  703. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +0 -1
  704. package/dist/inputs/radio-group/radio-group.css?inline.js.map +0 -1
  705. package/dist/inputs/rating/rating.css?inline.cjs.map +0 -1
  706. package/dist/inputs/rating/rating.css?inline.js.map +0 -1
  707. package/dist/inputs/select/select.css?inline.cjs.map +0 -1
  708. package/dist/inputs/select/select.css?inline.js.map +0 -1
  709. package/dist/inputs/slider/slider.css?inline.cjs.map +0 -1
  710. package/dist/inputs/slider/slider.css?inline.js.map +0 -1
  711. package/dist/inputs/switch/switch.css?inline.cjs.map +0 -1
  712. package/dist/inputs/switch/switch.css?inline.js.map +0 -1
  713. package/dist/inputs/textarea/textarea.css?inline.cjs.map +0 -1
  714. package/dist/inputs/textarea/textarea.css?inline.js.map +0 -1
  715. package/dist/inputs/time-picker/time-picker.css?inline.cjs.map +0 -1
  716. package/dist/inputs/time-picker/time-picker.css?inline.js.map +0 -1
  717. package/dist/layout/box/box.css?inline.cjs.map +0 -1
  718. package/dist/layout/box/box.css?inline.js.map +0 -1
  719. package/dist/layout/grid/grid.css?inline.cjs.map +0 -1
  720. package/dist/layout/grid/grid.css?inline.js.map +0 -1
  721. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +0 -1
  722. package/dist/layout/grid-item/grid-item.css?inline.js.map +0 -1
  723. package/dist/layout/navbar/navbar.css?inline.cjs.map +0 -1
  724. package/dist/layout/navbar/navbar.css?inline.js.map +0 -1
  725. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +0 -1
  726. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +0 -1
  727. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +0 -1
  728. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +0 -1
  729. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +0 -1
  730. package/dist/layout/sidebar/sidebar.css?inline.js.map +0 -1
  731. package/dist/ore/dist/aria.cjs +0 -2
  732. package/dist/ore/dist/aria.cjs.map +0 -1
  733. package/dist/ore/dist/aria.js +0 -37
  734. package/dist/ore/dist/aria.js.map +0 -1
  735. package/dist/ore/dist/context-bag.cjs +0 -2
  736. package/dist/ore/dist/context-bag.cjs.map +0 -1
  737. package/dist/ore/dist/context-bag.js +0 -28
  738. package/dist/ore/dist/context-bag.js.map +0 -1
  739. package/dist/ore/dist/host-bind.cjs +0 -2
  740. package/dist/ore/dist/host-bind.cjs.map +0 -1
  741. package/dist/ore/dist/host-bind.js +0 -60
  742. package/dist/ore/dist/host-bind.js.map +0 -1
  743. package/dist/ore/dist/slots.cjs +0 -2
  744. package/dist/ore/dist/slots.cjs.map +0 -1
  745. package/dist/ore/dist/slots.js +0 -61
  746. package/dist/ore/dist/slots.js.map +0 -1
  747. package/dist/ore/dist/utils/aria.cjs +0 -2
  748. package/dist/ore/dist/utils/aria.cjs.map +0 -1
  749. package/dist/ore/dist/utils/aria.js +0 -6
  750. package/dist/ore/dist/utils/aria.js.map +0 -1
  751. package/dist/ore/dist/utils/emit.cjs +0 -2
  752. package/dist/ore/dist/utils/emit.cjs.map +0 -1
  753. package/dist/ore/dist/utils/emit.js +0 -16
  754. package/dist/ore/dist/utils/emit.js.map +0 -1
  755. package/dist/overlay/dialog/dialog.css?inline.cjs.map +0 -1
  756. package/dist/overlay/dialog/dialog.css?inline.js.map +0 -1
  757. package/dist/overlay/drawer/drawer.css?inline.cjs.map +0 -1
  758. package/dist/overlay/drawer/drawer.css?inline.js.map +0 -1
  759. package/dist/overlay/menu/menu-item.css?inline.cjs.map +0 -1
  760. package/dist/overlay/menu/menu-item.css?inline.js.map +0 -1
  761. package/dist/overlay/menu/menu-separator.css?inline.cjs.map +0 -1
  762. package/dist/overlay/menu/menu-separator.css?inline.js.map +0 -1
  763. package/dist/overlay/menu/menu.css?inline.cjs.map +0 -1
  764. package/dist/overlay/menu/menu.css?inline.js.map +0 -1
  765. package/dist/overlay/popover/popover.css?inline.cjs.map +0 -1
  766. package/dist/overlay/popover/popover.css?inline.js.map +0 -1
  767. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +0 -1
  768. package/dist/overlay/tooltip/tooltip.css?inline.js.map +0 -1
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./styles/mixins/shape.css.cjs"),n=require("./styles/mixins/theme.css.cjs"),r=require("./shared/prop-bundles.cjs"),i=require("./content/pagination/pagination.css?inline.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");function s(e,t,n){let r=t,i=[];if(r<=2+2*n+3)return Array.from({length:r},(e,t)=>t+1);let a=Math.max(e-n,2),o=Math.min(e+n,r-1);i.push(1),a>3?i.push(`ellipsis-start`):a===3&&i.push(2);for(let e=a;e<=o;e++)i.push(e);return o<r-1-1?i.push(`ellipsis-end`):o===r-1-1&&i.push(r-1),i.push(r),i}var c=`ore-pagination`;(0,a.define)(c,{props:{...r.themableBundle,...r.sizableBundle,label:a.prop.string(`Pagination`),page:a.prop.number(1),"show-first-last":a.prop.bool(!1),"show-prev-next":a.prop.bool(!1),siblings:a.prop.number(1),"total-pages":a.prop.number(1),variant:a.prop.string()},setup(e,{bind:t,el:n,emit:r}){function i(t){let i=e[`total-pages`].value||1,a=Math.min(Math.max(1,t),i);a!==e.page.value&&(n.setAttribute(`page`,String(a)),r(`change`,{page:a}))}let c=(0,o.computed)(()=>s(e.page.value||1,e[`total-pages`].value||1,e.siblings.value??1)),l=(0,o.computed)(()=>(e.page.value||1)<=1),u=(0,o.computed)(()=>(e.page.value||1)>=(e[`total-pages`].value||1));return a.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./styles/mixins/shape.css.cjs"),n=require("./styles/mixins/theme.css.cjs"),r=require("./shared/prop-bundles.cjs"),i=require("./content/pagination/pagination.css.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");function s(e,t,n){let r=t,i=[];if(r<=2+2*n+3)return Array.from({length:r},(e,t)=>t+1);let a=Math.max(e-n,2),o=Math.min(e+n,r-1);i.push(1),a>3?i.push(`ellipsis-start`):a===3&&i.push(2);for(let e=a;e<=o;e++)i.push(e);return o<r-1-1?i.push(`ellipsis-end`):o===r-1-1&&i.push(r-1),i.push(r),i}var c=`ore-pagination`;(0,a.define)(c,{props:{...r.themableBundle,...r.sizableBundle,label:a.prop.string(`Pagination`),page:a.prop.number(1),"show-first-last":a.prop.bool(!1),"show-prev-next":a.prop.bool(!1),siblings:a.prop.number(1),"total-pages":a.prop.number(1),variant:a.prop.string()},setup(e){let t=(0,a.getHost)(),n=(0,a.useEmit)();function r(r){let i=e[`total-pages`].value||1,a=Math.min(Math.max(1,r),i);a!==e.page.value&&(t.setAttribute(`page`,String(a)),n(`change`,{page:a}))}let i=(0,o.computed)(()=>s(e.page.value||1,e[`total-pages`].value||1,e.siblings.value??1)),c=(0,o.computed)(()=>(e.page.value||1)<=1),l=(0,o.computed)(()=>(e.page.value||1)>=(e[`total-pages`].value||1));return a.html`
2
2
  <nav :aria-label="${e.label}" part="nav">
3
3
  <ol class="pagination" part="list">
4
4
  ${()=>e[`show-first-last`].value?a.html`<li>
@@ -7,8 +7,8 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
7
7
  class="nav-btn"
8
8
  part="first-btn"
9
9
  aria-label="First page"
10
- ?disabled=${l}
11
- @click=${()=>i(1)}>
10
+ ?disabled=${c}
11
+ @click=${()=>r(1)}>
12
12
  <ore-icon name="chevrons-left" size="16" aria-hidden="true"></ore-icon>
13
13
  </button>
14
14
  </li>`:``}
@@ -18,20 +18,20 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
18
18
  class="nav-btn"
19
19
  part="prev-btn"
20
20
  aria-label="Previous page"
21
- ?disabled=${l}
22
- @click=${()=>i((e.page.value||1)-1)}>
21
+ ?disabled=${c}
22
+ @click=${()=>r((e.page.value||1)-1)}>
23
23
  <ore-icon name="chevron-left" size="16" aria-hidden="true"></ore-icon>
24
24
  </button>
25
25
  </li>`:``}
26
26
  <li style="display: contents;">
27
- ${()=>c.value.map(t=>{if(t===`ellipsis-start`||t===`ellipsis-end`)return a.html`<span class="ellipsis" aria-hidden="true">&hellip;</span>`;let n=t,r=n===(e.page.value||1),o=`Page ${n}`;return r?a.html`<button
27
+ ${()=>i.value.map(t=>{if(t===`ellipsis-start`||t===`ellipsis-end`)return a.html`<span class="ellipsis" aria-hidden="true">&hellip;</span>`;let n=t,i=n===(e.page.value||1),o=`Page ${n}`;return i?a.html`<button
28
28
  type="button"
29
29
  part="page-btn"
30
30
  aria-label="${o}"
31
31
  aria-current="page"
32
- @click=${()=>i(n)}>
32
+ @click=${()=>r(n)}>
33
33
  ${n}
34
- </button>`:a.html`<button type="button" part="page-btn" aria-label="${o}" @click=${()=>i(n)}>
34
+ </button>`:a.html`<button type="button" part="page-btn" aria-label="${o}" @click=${()=>r(n)}>
35
35
  ${n}
36
36
  </button>`})}
37
37
  </li>
@@ -41,8 +41,8 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
41
41
  class="nav-btn"
42
42
  part="next-btn"
43
43
  aria-label="Next page"
44
- ?disabled=${u}
45
- @click=${()=>i((e.page.value||1)+1)}>
44
+ ?disabled=${l}
45
+ @click=${()=>r((e.page.value||1)+1)}>
46
46
  <ore-icon name="chevron-right" size="16" aria-hidden="true"></ore-icon>
47
47
  </button>
48
48
  </li>`:``}
@@ -52,8 +52,8 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
52
52
  class="nav-btn"
53
53
  part="last-btn"
54
54
  aria-label="Last page"
55
- ?disabled=${u}
56
- @click=${()=>i(e[`total-pages`].value||1)}>
55
+ ?disabled=${l}
56
+ @click=${()=>r(e[`total-pages`].value||1)}>
57
57
  <ore-icon name="chevrons-right" size="16" aria-hidden="true"></ore-icon>
58
58
  </button>
59
59
  </li>`:``}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.cjs","names":[],"sources":["../src/content/pagination/pagination.ts"],"sourcesContent":["import { define, html, prop } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport '../icon/icon';\nimport '../../inputs/button/button';\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\nimport { sizableBundle, themableBundle } from '../../shared';\nimport { coarsePointerMixin, colorThemeMixin, sizeVariantMixin } from '../../styles';\nimport componentStyles from './pagination.css?inline';\n\nexport type OrePaginationEvents = {\n change: { page: number };\n};\n\nexport type OrePaginationProps = {\n color?: ThemeColor;\n label?: string;\n page?: number;\n 'show-first-last'?: boolean;\n 'show-prev-next'?: boolean;\n siblings?: number;\n size?: ComponentSize;\n 'total-pages'?: number;\n variant?: VisualVariant;\n};\n\nfunction buildPageRange(\n currentPage: number,\n totalPages: number,\n siblings: number,\n): Array<number | 'ellipsis-start' | 'ellipsis-end'> {\n const BOUNDARY = 1; // always show first and last page\n const total = totalPages;\n const pages: Array<number | 'ellipsis-start' | 'ellipsis-end'> = [];\n\n // If total is small enough, show all pages\n if (total <= 2 * BOUNDARY + 2 * siblings + 3) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const leftSibling = Math.max(currentPage - siblings, BOUNDARY + 1);\n const rightSibling = Math.min(currentPage + siblings, total - BOUNDARY);\n\n pages.push(1);\n\n if (leftSibling > BOUNDARY + 2) pages.push('ellipsis-start');\n else if (leftSibling === BOUNDARY + 2) pages.push(BOUNDARY + 1);\n\n for (let i = leftSibling; i <= rightSibling; i++) pages.push(i);\n\n if (rightSibling < total - BOUNDARY - 1) pages.push('ellipsis-end');\n else if (rightSibling === total - BOUNDARY - 1) pages.push(total - BOUNDARY);\n\n pages.push(total);\n\n return pages;\n}\n\n/**\n * Page-based navigation control.\n *\n * @element ore-pagination\n *\n * @attr {number} page - Current page (1-indexed, default: 1)\n * @attr {number} total-pages - Total number of pages (required)\n * @attr {number} siblings - Sibling pages around current (default: 1)\n * @attr {boolean} show-first-last - Show first/last page buttons (default: false)\n * @attr {boolean} show-prev-next - Show prev/next buttons (default: false)\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant for nav buttons: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'frost' (default: 'ghost')\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} label - Accessible nav label (default: 'Pagination')\n *\n * @fires change - Emitted when the page changes, with { page: number }\n *\n * @cssprop --pagination-item-size - Width/height of each item\n * @cssprop --pagination-gap - Gap between items\n * @cssprop --pagination-radius - Border radius of items\n *\n * @part page-btn - Page button.\n * @part nav - Navigation container.\n * @part list - List container.\n * @part first-btn - First page button.\n * @part prev-btn - Previous page button.\n * @part next-btn - Next page button.\n * @part last-btn - Last page button.\n * @example\n * ```html\n * <!-- Basic -->\n * <ore-pagination page=\"3\" total-pages=\"10\" color=\"primary\"></ore-pagination>\n *\n * <!-- With prev/next and first/last buttons -->\n * <ore-pagination page=\"5\" total-pages=\"20\" show-prev-next show-first-last siblings=\"2\"></ore-pagination>\n *\n * <!-- Compact size -->\n * <ore-pagination page=\"1\" total-pages=\"5\" size=\"sm\" variant=\"ghost\"></ore-pagination>\n * ```\n */\nexport const PAGINATION_TAG = 'ore-pagination' as const;\ndefine<OrePaginationProps, OrePaginationEvents>(PAGINATION_TAG, {\n props: {\n ...themableBundle,\n ...sizableBundle,\n label: prop.string('Pagination'),\n page: prop.number(1),\n 'show-first-last': prop.bool(false),\n 'show-prev-next': prop.bool(false),\n siblings: prop.number(1),\n 'total-pages': prop.number(1),\n variant: prop.string<VisualVariant>(),\n },\n setup(props, { bind: _bind, el, emit }) {\n function goTo(page: number) {\n const total = props['total-pages'].value || 1;\n const next = Math.min(Math.max(1, page), total);\n\n if (next === props.page.value) return;\n\n el.setAttribute('page', String(next));\n emit('change', { page: next });\n }\n\n const pageItems = computed(() =>\n buildPageRange(props.page.value || 1, props['total-pages'].value || 1, props.siblings.value ?? 1),\n );\n\n const isFirst = computed(() => (props.page.value || 1) <= 1);\n const isLast = computed(() => (props.page.value || 1) >= (props['total-pages'].value || 1));\n\n return html`\n <nav :aria-label=\"${props.label}\" part=\"nav\">\n <ol class=\"pagination\" part=\"list\">\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"first-btn\"\n aria-label=\"First page\"\n ?disabled=${isFirst}\n @click=${() => goTo(1)}>\n <ore-icon name=\"chevrons-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"prev-btn\"\n aria-label=\"Previous page\"\n ?disabled=${isFirst}\n @click=${() => goTo((props.page.value || 1) - 1)}>\n <ore-icon name=\"chevron-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n <li style=\"display: contents;\">\n ${() =>\n pageItems.value.map((item) => {\n if (item === 'ellipsis-start' || item === 'ellipsis-end') {\n return html`<span class=\"ellipsis\" aria-hidden=\"true\">&hellip;</span>`;\n }\n\n const pg = item as number;\n const isCurrent = pg === (props.page.value || 1);\n const pgLabel = `Page ${pg}`;\n\n return isCurrent\n ? html`<button\n type=\"button\"\n part=\"page-btn\"\n aria-label=\"${pgLabel}\"\n aria-current=\"page\"\n @click=${() => goTo(pg)}>\n ${pg}\n </button>`\n : html`<button type=\"button\" part=\"page-btn\" aria-label=\"${pgLabel}\" @click=${() => goTo(pg)}>\n ${pg}\n </button>`;\n })}\n </li>\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"next-btn\"\n aria-label=\"Next page\"\n ?disabled=${isLast}\n @click=${() => goTo((props.page.value || 1) + 1)}>\n <ore-icon name=\"chevron-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"last-btn\"\n aria-label=\"Last page\"\n ?disabled=${isLast}\n @click=${() => goTo(props['total-pages'].value || 1)}>\n <ore-icon name=\"chevrons-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n </ol>\n </nav>\n `;\n },\n\n styles: [coarsePointerMixin, colorThemeMixin, sizeVariantMixin(), componentStyles],\n});\n"],"mappings":"kXA2BA,SAAS,EACP,EACA,EACA,EACmD,CACnD,IACM,EAAQ,EACR,EAA2D,CAAC,EAGlE,GAAI,GAAS,EAAe,EAAI,EAAW,EACzC,OAAO,MAAM,KAAK,CAAE,OAAQ,CAAM,GAAI,EAAG,IAAM,EAAI,CAAC,EAGtD,IAAM,EAAc,KAAK,IAAI,EAAc,EAAU,CAAY,EAC3D,EAAe,KAAK,IAAI,EAAc,EAAU,EAAQ,CAAQ,EAEtE,EAAM,KAAK,CAAC,EAER,EAAc,EAAc,EAAM,KAAK,gBAAgB,EAClD,IAAgB,GAAc,EAAM,KAAK,CAAY,EAE9D,IAAK,IAAI,EAAI,EAAa,GAAK,EAAc,IAAK,EAAM,KAAK,CAAC,EAO9D,OALI,EAAe,EAAQ,EAAW,EAAG,EAAM,KAAK,cAAc,EACzD,IAAiB,EAAQ,EAAW,GAAG,EAAM,KAAK,EAAQ,CAAQ,EAE3E,EAAM,KAAK,CAAK,EAET,CACT,CA0CA,IAAa,EAAiB,8BACkB,EAAgB,CAC9D,MAAO,CACL,GAAG,EAAA,eACH,GAAG,EAAA,cACH,MAAO,EAAA,KAAK,OAAO,YAAY,EAC/B,KAAM,EAAA,KAAK,OAAO,CAAC,EACnB,kBAAmB,EAAA,KAAK,KAAK,EAAK,EAClC,iBAAkB,EAAA,KAAK,KAAK,EAAK,EACjC,SAAU,EAAA,KAAK,OAAO,CAAC,EACvB,cAAe,EAAA,KAAK,OAAO,CAAC,EAC5B,QAAS,EAAA,KAAK,OAAsB,CACtC,EACA,MAAM,EAAO,CAAE,KAAM,EAAO,KAAI,QAAQ,CACtC,SAAS,EAAK,EAAc,CAC1B,IAAM,EAAQ,EAAM,cAAc,CAAC,OAAS,EACtC,EAAO,KAAK,IAAI,KAAK,IAAI,EAAG,CAAI,EAAG,CAAK,EAE1C,IAAS,EAAM,KAAK,QAExB,EAAG,aAAa,OAAQ,OAAO,CAAI,CAAC,EACpC,EAAK,SAAU,CAAE,KAAM,CAAK,CAAC,EAC/B,CAEA,IAAM,GAAA,EAAA,EAAA,SAAA,KACJ,EAAe,EAAM,KAAK,OAAS,EAAG,EAAM,cAAc,CAAC,OAAS,EAAG,EAAM,SAAS,OAAS,CAAC,CAClG,EAEM,GAAA,EAAA,EAAA,SAAA,MAA0B,EAAM,KAAK,OAAS,IAAM,CAAC,EACrD,GAAA,EAAA,EAAA,SAAA,MAAyB,EAAM,KAAK,OAAS,KAAO,EAAM,cAAc,CAAC,OAAS,EAAE,EAE1F,MAAO,GAAA,IAAI;0BACW,EAAM,MAAM;;gBAG1B,EAAM,kBAAkB,CAAC,MACrB,EAAA,IAAI;;;;;;gCAMY,EAAQ;iCACL,EAAK,CAAC,EAAE;;;uBAI3B,GAAG;gBAEP,EAAM,iBAAiB,CAAC,MACpB,EAAA,IAAI;;;;;;gCAMY,EAAQ;iCACL,GAAM,EAAM,KAAK,OAAS,GAAK,CAAC,EAAE;;;uBAIrD,GAAG;;kBAGL,EAAU,MAAM,IAAK,GAAS,CAC5B,GAAI,IAAS,kBAAoB,IAAS,eACxC,MAAO,GAAA,IAAI,4DAGb,IAAM,EAAK,EACL,EAAY,KAAQ,EAAM,KAAK,OAAS,GACxC,EAAU,QAAQ,IAExB,OAAO,EACH,EAAA,IAAI;;;oCAGY,EAAQ;;mCAEP,EAAK,CAAE,EAAE;wBACtB,EAAG;+BAEP,EAAA,IAAI,qDAAqD,EAAQ,eAAiB,EAAK,CAAE,EAAE;wBACvF,EAAG;8BAEb,CAAC,EAAE;;gBAGL,EAAM,iBAAiB,CAAC,MACpB,EAAA,IAAI;;;;;;gCAMY,EAAO;iCACJ,GAAM,EAAM,KAAK,OAAS,GAAK,CAAC,EAAE;;;uBAIrD,GAAG;gBAEP,EAAM,kBAAkB,CAAC,MACrB,EAAA,IAAI;;;;;;gCAMY,EAAO;iCACJ,EAAK,EAAM,cAAc,CAAC,OAAS,CAAC,EAAE;;;uBAIzD,GAAG;;;KAIjB,EAEA,OAAQ,CAAC,EAAA,mBAAoB,EAAA,gBAAiB,EAAA,iBAAiB,EAAG,EAAA,OAAe,CACnF,CAAC"}
1
+ {"version":3,"file":"pagination.cjs","names":[],"sources":["../src/content/pagination/pagination.ts"],"sourcesContent":["import { define, html, prop, getHost, useEmit } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport '../icon/icon';\nimport '../../inputs/button/button';\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\nimport { sizableBundle, themableBundle } from '../../shared';\nimport { coarsePointerMixin, colorThemeMixin, sizeVariantMixin } from '../../styles';\nimport componentStyles from './pagination.css?inline';\n\nexport type OrePaginationEvents = {\n change: { page: number };\n};\n\nexport type OrePaginationProps = {\n color?: ThemeColor;\n label?: string;\n page?: number;\n 'show-first-last'?: boolean;\n 'show-prev-next'?: boolean;\n siblings?: number;\n size?: ComponentSize;\n 'total-pages'?: number;\n variant?: VisualVariant;\n};\n\nfunction buildPageRange(\n currentPage: number,\n totalPages: number,\n siblings: number,\n): Array<number | 'ellipsis-start' | 'ellipsis-end'> {\n const BOUNDARY = 1; // always show first and last page\n const total = totalPages;\n const pages: Array<number | 'ellipsis-start' | 'ellipsis-end'> = [];\n\n // If total is small enough, show all pages\n if (total <= 2 * BOUNDARY + 2 * siblings + 3) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const leftSibling = Math.max(currentPage - siblings, BOUNDARY + 1);\n const rightSibling = Math.min(currentPage + siblings, total - BOUNDARY);\n\n pages.push(1);\n\n if (leftSibling > BOUNDARY + 2) pages.push('ellipsis-start');\n else if (leftSibling === BOUNDARY + 2) pages.push(BOUNDARY + 1);\n\n for (let i = leftSibling; i <= rightSibling; i++) pages.push(i);\n\n if (rightSibling < total - BOUNDARY - 1) pages.push('ellipsis-end');\n else if (rightSibling === total - BOUNDARY - 1) pages.push(total - BOUNDARY);\n\n pages.push(total);\n\n return pages;\n}\n\n/**\n * Page-based navigation control.\n *\n * @element ore-pagination\n *\n * @attr {number} page - Current page (1-indexed, default: 1)\n * @attr {number} total-pages - Total number of pages (required)\n * @attr {number} siblings - Sibling pages around current (default: 1)\n * @attr {boolean} show-first-last - Show first/last page buttons (default: false)\n * @attr {boolean} show-prev-next - Show prev/next buttons (default: false)\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant for nav buttons: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'frost' (default: 'ghost')\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} label - Accessible nav label (default: 'Pagination')\n *\n * @fires change - Emitted when the page changes, with { page: number }\n *\n * @cssprop --pagination-item-size - Width/height of each item\n * @cssprop --pagination-gap - Gap between items\n * @cssprop --pagination-radius - Border radius of items\n *\n * @part page-btn - Page button.\n * @part nav - Navigation container.\n * @part list - List container.\n * @part first-btn - First page button.\n * @part prev-btn - Previous page button.\n * @part next-btn - Next page button.\n * @part last-btn - Last page button.\n * @example\n * ```html\n * <!-- Basic -->\n * <ore-pagination page=\"3\" total-pages=\"10\" color=\"primary\"></ore-pagination>\n *\n * <!-- With prev/next and first/last buttons -->\n * <ore-pagination page=\"5\" total-pages=\"20\" show-prev-next show-first-last siblings=\"2\"></ore-pagination>\n *\n * <!-- Compact size -->\n * <ore-pagination page=\"1\" total-pages=\"5\" size=\"sm\" variant=\"ghost\"></ore-pagination>\n * ```\n */\nexport const PAGINATION_TAG = 'ore-pagination' as const;\ndefine<OrePaginationProps>(PAGINATION_TAG, {\n props: {\n ...themableBundle,\n ...sizableBundle,\n label: prop.string('Pagination'),\n page: prop.number(1),\n 'show-first-last': prop.bool(false),\n 'show-prev-next': prop.bool(false),\n siblings: prop.number(1),\n 'total-pages': prop.number(1),\n variant: prop.string<VisualVariant>(),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OrePaginationEvents>();\n\n function goTo(page: number) {\n const total = props['total-pages'].value || 1;\n const next = Math.min(Math.max(1, page), total);\n\n if (next === props.page.value) return;\n\n el.setAttribute('page', String(next));\n emit('change', { page: next });\n }\n\n const pageItems = computed(() =>\n buildPageRange(props.page.value || 1, props['total-pages'].value || 1, props.siblings.value ?? 1),\n );\n\n const isFirst = computed(() => (props.page.value || 1) <= 1);\n const isLast = computed(() => (props.page.value || 1) >= (props['total-pages'].value || 1));\n\n return html`\n <nav :aria-label=\"${props.label}\" part=\"nav\">\n <ol class=\"pagination\" part=\"list\">\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"first-btn\"\n aria-label=\"First page\"\n ?disabled=${isFirst}\n @click=${() => goTo(1)}>\n <ore-icon name=\"chevrons-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"prev-btn\"\n aria-label=\"Previous page\"\n ?disabled=${isFirst}\n @click=${() => goTo((props.page.value || 1) - 1)}>\n <ore-icon name=\"chevron-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n <li style=\"display: contents;\">\n ${() =>\n pageItems.value.map((item) => {\n if (item === 'ellipsis-start' || item === 'ellipsis-end') {\n return html`<span class=\"ellipsis\" aria-hidden=\"true\">&hellip;</span>`;\n }\n\n const pg = item as number;\n const isCurrent = pg === (props.page.value || 1);\n const pgLabel = `Page ${pg}`;\n\n return isCurrent\n ? html`<button\n type=\"button\"\n part=\"page-btn\"\n aria-label=\"${pgLabel}\"\n aria-current=\"page\"\n @click=${() => goTo(pg)}>\n ${pg}\n </button>`\n : html`<button type=\"button\" part=\"page-btn\" aria-label=\"${pgLabel}\" @click=${() => goTo(pg)}>\n ${pg}\n </button>`;\n })}\n </li>\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"next-btn\"\n aria-label=\"Next page\"\n ?disabled=${isLast}\n @click=${() => goTo((props.page.value || 1) + 1)}>\n <ore-icon name=\"chevron-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"last-btn\"\n aria-label=\"Last page\"\n ?disabled=${isLast}\n @click=${() => goTo(props['total-pages'].value || 1)}>\n <ore-icon name=\"chevrons-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n </ol>\n </nav>\n `;\n },\n\n styles: [coarsePointerMixin, colorThemeMixin, sizeVariantMixin(), componentStyles],\n});\n"],"mappings":"2WA2BA,SAAS,EACP,EACA,EACA,EACmD,CACnD,IACM,EAAQ,EACR,EAA2D,CAAC,EAGlE,GAAI,GAAS,EAAe,EAAI,EAAW,EACzC,OAAO,MAAM,KAAK,CAAE,OAAQ,CAAM,GAAI,EAAG,IAAM,EAAI,CAAC,EAGtD,IAAM,EAAc,KAAK,IAAI,EAAc,EAAU,CAAY,EAC3D,EAAe,KAAK,IAAI,EAAc,EAAU,EAAQ,CAAQ,EAEtE,EAAM,KAAK,CAAC,EAER,EAAc,EAAc,EAAM,KAAK,gBAAgB,EAClD,IAAgB,GAAc,EAAM,KAAK,CAAY,EAE9D,IAAK,IAAI,EAAI,EAAa,GAAK,EAAc,IAAK,EAAM,KAAK,CAAC,EAO9D,OALI,EAAe,EAAQ,EAAW,EAAG,EAAM,KAAK,cAAc,EACzD,IAAiB,EAAQ,EAAW,GAAG,EAAM,KAAK,EAAQ,CAAQ,EAE3E,EAAM,KAAK,CAAK,EAET,CACT,CA0CA,IAAa,EAAiB,8BACH,EAAgB,CACzC,MAAO,CACL,GAAG,EAAA,eACH,GAAG,EAAA,cACH,MAAO,EAAA,KAAK,OAAO,YAAY,EAC/B,KAAM,EAAA,KAAK,OAAO,CAAC,EACnB,kBAAmB,EAAA,KAAK,KAAK,EAAK,EAClC,iBAAkB,EAAA,KAAK,KAAK,EAAK,EACjC,SAAU,EAAA,KAAK,OAAO,CAAC,EACvB,cAAe,EAAA,KAAK,OAAO,CAAC,EAC5B,QAAS,EAAA,KAAK,OAAsB,CACtC,EACA,MAAM,EAAO,CACX,IAAM,GAAA,EAAA,EAAA,QAAA,CAAa,EACb,GAAA,EAAA,EAAA,QAAA,CAAoC,EAE1C,SAAS,EAAK,EAAc,CAC1B,IAAM,EAAQ,EAAM,cAAc,CAAC,OAAS,EACtC,EAAO,KAAK,IAAI,KAAK,IAAI,EAAG,CAAI,EAAG,CAAK,EAE1C,IAAS,EAAM,KAAK,QAExB,EAAG,aAAa,OAAQ,OAAO,CAAI,CAAC,EACpC,EAAK,SAAU,CAAE,KAAM,CAAK,CAAC,EAC/B,CAEA,IAAM,GAAA,EAAA,EAAA,SAAA,KACJ,EAAe,EAAM,KAAK,OAAS,EAAG,EAAM,cAAc,CAAC,OAAS,EAAG,EAAM,SAAS,OAAS,CAAC,CAClG,EAEM,GAAA,EAAA,EAAA,SAAA,MAA0B,EAAM,KAAK,OAAS,IAAM,CAAC,EACrD,GAAA,EAAA,EAAA,SAAA,MAAyB,EAAM,KAAK,OAAS,KAAO,EAAM,cAAc,CAAC,OAAS,EAAE,EAE1F,MAAO,GAAA,IAAI;0BACW,EAAM,MAAM;;gBAG1B,EAAM,kBAAkB,CAAC,MACrB,EAAA,IAAI;;;;;;gCAMY,EAAQ;iCACL,EAAK,CAAC,EAAE;;;uBAI3B,GAAG;gBAEP,EAAM,iBAAiB,CAAC,MACpB,EAAA,IAAI;;;;;;gCAMY,EAAQ;iCACL,GAAM,EAAM,KAAK,OAAS,GAAK,CAAC,EAAE;;;uBAIrD,GAAG;;kBAGL,EAAU,MAAM,IAAK,GAAS,CAC5B,GAAI,IAAS,kBAAoB,IAAS,eACxC,MAAO,GAAA,IAAI,4DAGb,IAAM,EAAK,EACL,EAAY,KAAQ,EAAM,KAAK,OAAS,GACxC,EAAU,QAAQ,IAExB,OAAO,EACH,EAAA,IAAI;;;oCAGY,EAAQ;;mCAEP,EAAK,CAAE,EAAE;wBACtB,EAAG;+BAEP,EAAA,IAAI,qDAAqD,EAAQ,eAAiB,EAAK,CAAE,EAAE;wBACvF,EAAG;8BAEb,CAAC,EAAE;;gBAGL,EAAM,iBAAiB,CAAC,MACpB,EAAA,IAAI;;;;;;gCAMY,EAAO;iCACJ,GAAM,EAAM,KAAK,OAAS,GAAK,CAAC,EAAE;;;uBAIrD,GAAG;gBAEP,EAAM,kBAAkB,CAAC,MACrB,EAAA,IAAI;;;;;;gCAMY,EAAO;iCACJ,EAAK,EAAM,cAAc,CAAC,OAAS,CAAC,EAAE;;;uBAIzD,GAAG;;;KAIjB,EAEA,OAAQ,CAAC,EAAA,mBAAoB,EAAA,gBAAiB,EAAA,iBAAiB,EAAG,EAAA,OAAe,CACnF,CAAC"}
@@ -2,11 +2,11 @@ import { coarsePointerMixin as e } from "./styles/mixins/accessibility.css.js";
2
2
  import { sizeVariantMixin as t } from "./styles/mixins/shape.css.js";
3
3
  import { colorThemeMixin as n } from "./styles/mixins/theme.css.js";
4
4
  import { sizableBundle as r, themableBundle as i } from "./shared/prop-bundles.js";
5
- import a from "./content/pagination/pagination.css?inline.js";
6
- import { define as o, html as s, prop as c } from "@vielzeug/ore";
7
- import { computed as l } from "@vielzeug/ripple";
5
+ import a from "./content/pagination/pagination.css.js";
6
+ import { define as o, getHost as s, html as c, prop as l, useEmit as u } from "@vielzeug/ore";
7
+ import { computed as d } from "@vielzeug/ripple";
8
8
  //#region src/content/pagination/pagination.ts
9
- function u(e, t, n) {
9
+ function f(e, t, n) {
10
10
  let r = t, i = [];
11
11
  if (r <= 2 + 2 * n + 3) return Array.from({ length: r }, (e, t) => t + 1);
12
12
  let a = Math.max(e - n, 2), o = Math.min(e + n, r - 1);
@@ -14,85 +14,86 @@ function u(e, t, n) {
14
14
  for (let e = a; e <= o; e++) i.push(e);
15
15
  return o < r - 1 - 1 ? i.push("ellipsis-end") : o === r - 1 - 1 && i.push(r - 1), i.push(r), i;
16
16
  }
17
- var d = "ore-pagination";
18
- o(d, {
17
+ var p = "ore-pagination";
18
+ o(p, {
19
19
  props: {
20
20
  ...i,
21
21
  ...r,
22
- label: c.string("Pagination"),
23
- page: c.number(1),
24
- "show-first-last": c.bool(!1),
25
- "show-prev-next": c.bool(!1),
26
- siblings: c.number(1),
27
- "total-pages": c.number(1),
28
- variant: c.string()
22
+ label: l.string("Pagination"),
23
+ page: l.number(1),
24
+ "show-first-last": l.bool(!1),
25
+ "show-prev-next": l.bool(!1),
26
+ siblings: l.number(1),
27
+ "total-pages": l.number(1),
28
+ variant: l.string()
29
29
  },
30
- setup(e, { bind: t, el: n, emit: r }) {
31
- function i(t) {
32
- let i = e["total-pages"].value || 1, a = Math.min(Math.max(1, t), i);
33
- a !== e.page.value && (n.setAttribute("page", String(a)), r("change", { page: a }));
30
+ setup(e) {
31
+ let t = s(), n = u();
32
+ function r(r) {
33
+ let i = e["total-pages"].value || 1, a = Math.min(Math.max(1, r), i);
34
+ a !== e.page.value && (t.setAttribute("page", String(a)), n("change", { page: a }));
34
35
  }
35
- let a = l(() => u(e.page.value || 1, e["total-pages"].value || 1, e.siblings.value ?? 1)), o = l(() => (e.page.value || 1) <= 1), c = l(() => (e.page.value || 1) >= (e["total-pages"].value || 1));
36
- return s`
36
+ let i = d(() => f(e.page.value || 1, e["total-pages"].value || 1, e.siblings.value ?? 1)), a = d(() => (e.page.value || 1) <= 1), o = d(() => (e.page.value || 1) >= (e["total-pages"].value || 1));
37
+ return c`
37
38
  <nav :aria-label="${e.label}" part="nav">
38
39
  <ol class="pagination" part="list">
39
- ${() => e["show-first-last"].value ? s`<li>
40
+ ${() => e["show-first-last"].value ? c`<li>
40
41
  <button
41
42
  type="button"
42
43
  class="nav-btn"
43
44
  part="first-btn"
44
45
  aria-label="First page"
45
- ?disabled=${o}
46
- @click=${() => i(1)}>
46
+ ?disabled=${a}
47
+ @click=${() => r(1)}>
47
48
  <ore-icon name="chevrons-left" size="16" aria-hidden="true"></ore-icon>
48
49
  </button>
49
50
  </li>` : ""}
50
- ${() => e["show-prev-next"].value ? s`<li>
51
+ ${() => e["show-prev-next"].value ? c`<li>
51
52
  <button
52
53
  type="button"
53
54
  class="nav-btn"
54
55
  part="prev-btn"
55
56
  aria-label="Previous page"
56
- ?disabled=${o}
57
- @click=${() => i((e.page.value || 1) - 1)}>
57
+ ?disabled=${a}
58
+ @click=${() => r((e.page.value || 1) - 1)}>
58
59
  <ore-icon name="chevron-left" size="16" aria-hidden="true"></ore-icon>
59
60
  </button>
60
61
  </li>` : ""}
61
62
  <li style="display: contents;">
62
- ${() => a.value.map((t) => {
63
- if (t === "ellipsis-start" || t === "ellipsis-end") return s`<span class="ellipsis" aria-hidden="true">&hellip;</span>`;
64
- let n = t, r = n === (e.page.value || 1), a = `Page ${n}`;
65
- return r ? s`<button
63
+ ${() => i.value.map((t) => {
64
+ if (t === "ellipsis-start" || t === "ellipsis-end") return c`<span class="ellipsis" aria-hidden="true">&hellip;</span>`;
65
+ let n = t, i = n === (e.page.value || 1), a = `Page ${n}`;
66
+ return i ? c`<button
66
67
  type="button"
67
68
  part="page-btn"
68
69
  aria-label="${a}"
69
70
  aria-current="page"
70
- @click=${() => i(n)}>
71
+ @click=${() => r(n)}>
71
72
  ${n}
72
- </button>` : s`<button type="button" part="page-btn" aria-label="${a}" @click=${() => i(n)}>
73
+ </button>` : c`<button type="button" part="page-btn" aria-label="${a}" @click=${() => r(n)}>
73
74
  ${n}
74
75
  </button>`;
75
76
  })}
76
77
  </li>
77
- ${() => e["show-prev-next"].value ? s`<li>
78
+ ${() => e["show-prev-next"].value ? c`<li>
78
79
  <button
79
80
  type="button"
80
81
  class="nav-btn"
81
82
  part="next-btn"
82
83
  aria-label="Next page"
83
- ?disabled=${c}
84
- @click=${() => i((e.page.value || 1) + 1)}>
84
+ ?disabled=${o}
85
+ @click=${() => r((e.page.value || 1) + 1)}>
85
86
  <ore-icon name="chevron-right" size="16" aria-hidden="true"></ore-icon>
86
87
  </button>
87
88
  </li>` : ""}
88
- ${() => e["show-first-last"].value ? s`<li>
89
+ ${() => e["show-first-last"].value ? c`<li>
89
90
  <button
90
91
  type="button"
91
92
  class="nav-btn"
92
93
  part="last-btn"
93
94
  aria-label="Last page"
94
- ?disabled=${c}
95
- @click=${() => i(e["total-pages"].value || 1)}>
95
+ ?disabled=${o}
96
+ @click=${() => r(e["total-pages"].value || 1)}>
96
97
  <ore-icon name="chevrons-right" size="16" aria-hidden="true"></ore-icon>
97
98
  </button>
98
99
  </li>` : ""}
@@ -108,6 +109,6 @@ o(d, {
108
109
  ]
109
110
  });
110
111
  //#endregion
111
- export { d as PAGINATION_TAG };
112
+ export { p as PAGINATION_TAG };
112
113
 
113
114
  //# sourceMappingURL=pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.js","names":[],"sources":["../src/content/pagination/pagination.ts"],"sourcesContent":["import { define, html, prop } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport '../icon/icon';\nimport '../../inputs/button/button';\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\nimport { sizableBundle, themableBundle } from '../../shared';\nimport { coarsePointerMixin, colorThemeMixin, sizeVariantMixin } from '../../styles';\nimport componentStyles from './pagination.css?inline';\n\nexport type OrePaginationEvents = {\n change: { page: number };\n};\n\nexport type OrePaginationProps = {\n color?: ThemeColor;\n label?: string;\n page?: number;\n 'show-first-last'?: boolean;\n 'show-prev-next'?: boolean;\n siblings?: number;\n size?: ComponentSize;\n 'total-pages'?: number;\n variant?: VisualVariant;\n};\n\nfunction buildPageRange(\n currentPage: number,\n totalPages: number,\n siblings: number,\n): Array<number | 'ellipsis-start' | 'ellipsis-end'> {\n const BOUNDARY = 1; // always show first and last page\n const total = totalPages;\n const pages: Array<number | 'ellipsis-start' | 'ellipsis-end'> = [];\n\n // If total is small enough, show all pages\n if (total <= 2 * BOUNDARY + 2 * siblings + 3) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const leftSibling = Math.max(currentPage - siblings, BOUNDARY + 1);\n const rightSibling = Math.min(currentPage + siblings, total - BOUNDARY);\n\n pages.push(1);\n\n if (leftSibling > BOUNDARY + 2) pages.push('ellipsis-start');\n else if (leftSibling === BOUNDARY + 2) pages.push(BOUNDARY + 1);\n\n for (let i = leftSibling; i <= rightSibling; i++) pages.push(i);\n\n if (rightSibling < total - BOUNDARY - 1) pages.push('ellipsis-end');\n else if (rightSibling === total - BOUNDARY - 1) pages.push(total - BOUNDARY);\n\n pages.push(total);\n\n return pages;\n}\n\n/**\n * Page-based navigation control.\n *\n * @element ore-pagination\n *\n * @attr {number} page - Current page (1-indexed, default: 1)\n * @attr {number} total-pages - Total number of pages (required)\n * @attr {number} siblings - Sibling pages around current (default: 1)\n * @attr {boolean} show-first-last - Show first/last page buttons (default: false)\n * @attr {boolean} show-prev-next - Show prev/next buttons (default: false)\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant for nav buttons: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'frost' (default: 'ghost')\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} label - Accessible nav label (default: 'Pagination')\n *\n * @fires change - Emitted when the page changes, with { page: number }\n *\n * @cssprop --pagination-item-size - Width/height of each item\n * @cssprop --pagination-gap - Gap between items\n * @cssprop --pagination-radius - Border radius of items\n *\n * @part page-btn - Page button.\n * @part nav - Navigation container.\n * @part list - List container.\n * @part first-btn - First page button.\n * @part prev-btn - Previous page button.\n * @part next-btn - Next page button.\n * @part last-btn - Last page button.\n * @example\n * ```html\n * <!-- Basic -->\n * <ore-pagination page=\"3\" total-pages=\"10\" color=\"primary\"></ore-pagination>\n *\n * <!-- With prev/next and first/last buttons -->\n * <ore-pagination page=\"5\" total-pages=\"20\" show-prev-next show-first-last siblings=\"2\"></ore-pagination>\n *\n * <!-- Compact size -->\n * <ore-pagination page=\"1\" total-pages=\"5\" size=\"sm\" variant=\"ghost\"></ore-pagination>\n * ```\n */\nexport const PAGINATION_TAG = 'ore-pagination' as const;\ndefine<OrePaginationProps, OrePaginationEvents>(PAGINATION_TAG, {\n props: {\n ...themableBundle,\n ...sizableBundle,\n label: prop.string('Pagination'),\n page: prop.number(1),\n 'show-first-last': prop.bool(false),\n 'show-prev-next': prop.bool(false),\n siblings: prop.number(1),\n 'total-pages': prop.number(1),\n variant: prop.string<VisualVariant>(),\n },\n setup(props, { bind: _bind, el, emit }) {\n function goTo(page: number) {\n const total = props['total-pages'].value || 1;\n const next = Math.min(Math.max(1, page), total);\n\n if (next === props.page.value) return;\n\n el.setAttribute('page', String(next));\n emit('change', { page: next });\n }\n\n const pageItems = computed(() =>\n buildPageRange(props.page.value || 1, props['total-pages'].value || 1, props.siblings.value ?? 1),\n );\n\n const isFirst = computed(() => (props.page.value || 1) <= 1);\n const isLast = computed(() => (props.page.value || 1) >= (props['total-pages'].value || 1));\n\n return html`\n <nav :aria-label=\"${props.label}\" part=\"nav\">\n <ol class=\"pagination\" part=\"list\">\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"first-btn\"\n aria-label=\"First page\"\n ?disabled=${isFirst}\n @click=${() => goTo(1)}>\n <ore-icon name=\"chevrons-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"prev-btn\"\n aria-label=\"Previous page\"\n ?disabled=${isFirst}\n @click=${() => goTo((props.page.value || 1) - 1)}>\n <ore-icon name=\"chevron-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n <li style=\"display: contents;\">\n ${() =>\n pageItems.value.map((item) => {\n if (item === 'ellipsis-start' || item === 'ellipsis-end') {\n return html`<span class=\"ellipsis\" aria-hidden=\"true\">&hellip;</span>`;\n }\n\n const pg = item as number;\n const isCurrent = pg === (props.page.value || 1);\n const pgLabel = `Page ${pg}`;\n\n return isCurrent\n ? html`<button\n type=\"button\"\n part=\"page-btn\"\n aria-label=\"${pgLabel}\"\n aria-current=\"page\"\n @click=${() => goTo(pg)}>\n ${pg}\n </button>`\n : html`<button type=\"button\" part=\"page-btn\" aria-label=\"${pgLabel}\" @click=${() => goTo(pg)}>\n ${pg}\n </button>`;\n })}\n </li>\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"next-btn\"\n aria-label=\"Next page\"\n ?disabled=${isLast}\n @click=${() => goTo((props.page.value || 1) + 1)}>\n <ore-icon name=\"chevron-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"last-btn\"\n aria-label=\"Last page\"\n ?disabled=${isLast}\n @click=${() => goTo(props['total-pages'].value || 1)}>\n <ore-icon name=\"chevrons-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n </ol>\n </nav>\n `;\n },\n\n styles: [coarsePointerMixin, colorThemeMixin, sizeVariantMixin(), componentStyles],\n});\n"],"mappings":";;;;;;;;AA2BA,SAAS,EACP,GACA,GACA,GACmD;CACnD,IACM,IAAQ,GACR,IAA2D,CAAC;CAGlE,IAAI,KAAS,IAAe,IAAI,IAAW,GACzC,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAGtD,IAAM,IAAc,KAAK,IAAI,IAAc,GAAU,CAAY,GAC3D,IAAe,KAAK,IAAI,IAAc,GAAU,IAAQ,CAAQ;CAItE,AAFA,EAAM,KAAK,CAAC,GAER,IAAc,IAAc,EAAM,KAAK,gBAAgB,IAClD,MAAgB,KAAc,EAAM,KAAK,CAAY;CAE9D,KAAK,IAAI,IAAI,GAAa,KAAK,GAAc,KAAK,EAAM,KAAK,CAAC;CAO9D,OALI,IAAe,IAAQ,IAAW,IAAG,EAAM,KAAK,cAAc,IACzD,MAAiB,IAAQ,IAAW,KAAG,EAAM,KAAK,IAAQ,CAAQ,GAE3E,EAAM,KAAK,CAAK,GAET;AACT;AA0CA,IAAa,IAAiB;AAC9B,EAAgD,GAAgB;CAC9D,OAAO;EACL,GAAG;EACH,GAAG;EACH,OAAO,EAAK,OAAO,YAAY;EAC/B,MAAM,EAAK,OAAO,CAAC;EACnB,mBAAmB,EAAK,KAAK,EAAK;EAClC,kBAAkB,EAAK,KAAK,EAAK;EACjC,UAAU,EAAK,OAAO,CAAC;EACvB,eAAe,EAAK,OAAO,CAAC;EAC5B,SAAS,EAAK,OAAsB;CACtC;CACA,MAAM,GAAO,EAAE,MAAM,GAAO,OAAI,WAAQ;EACtC,SAAS,EAAK,GAAc;GAC1B,IAAM,IAAQ,EAAM,cAAc,CAAC,SAAS,GACtC,IAAO,KAAK,IAAI,KAAK,IAAI,GAAG,CAAI,GAAG,CAAK;GAE1C,MAAS,EAAM,KAAK,UAExB,EAAG,aAAa,QAAQ,OAAO,CAAI,CAAC,GACpC,EAAK,UAAU,EAAE,MAAM,EAAK,CAAC;EAC/B;EAEA,IAAM,IAAY,QAChB,EAAe,EAAM,KAAK,SAAS,GAAG,EAAM,cAAc,CAAC,SAAS,GAAG,EAAM,SAAS,SAAS,CAAC,CAClG,GAEM,IAAU,SAAgB,EAAM,KAAK,SAAS,MAAM,CAAC,GACrD,IAAS,SAAgB,EAAM,KAAK,SAAS,OAAO,EAAM,cAAc,CAAC,SAAS,EAAE;EAE1F,OAAO,CAAI;0BACW,EAAM,MAAM;;kBAG1B,EAAM,kBAAkB,CAAC,QACrB,CAAI;;;;;;gCAMY,EAAQ;mCACL,EAAK,CAAC,EAAE;;;yBAI3B,GAAG;kBAEP,EAAM,iBAAiB,CAAC,QACpB,CAAI;;;;;;gCAMY,EAAQ;mCACL,GAAM,EAAM,KAAK,SAAS,KAAK,CAAC,EAAE;;;yBAIrD,GAAG;;oBAGL,EAAU,MAAM,KAAK,MAAS;GAC5B,IAAI,MAAS,oBAAoB,MAAS,gBACxC,OAAO,CAAI;GAGb,IAAM,IAAK,GACL,IAAY,OAAQ,EAAM,KAAK,SAAS,IACxC,IAAU,QAAQ;GAExB,OAAO,IACH,CAAI;;;oCAGY,EAAQ;;qCAEP,EAAK,CAAE,EAAE;wBACtB,EAAG;iCAEP,CAAI,qDAAqD,EAAQ,iBAAiB,EAAK,CAAE,EAAE;wBACvF,EAAG;;EAEb,CAAC,EAAE;;kBAGL,EAAM,iBAAiB,CAAC,QACpB,CAAI;;;;;;gCAMY,EAAO;mCACJ,GAAM,EAAM,KAAK,SAAS,KAAK,CAAC,EAAE;;;yBAIrD,GAAG;kBAEP,EAAM,kBAAkB,CAAC,QACrB,CAAI;;;;;;gCAMY,EAAO;mCACJ,EAAK,EAAM,cAAc,CAAC,SAAS,CAAC,EAAE;;;yBAIzD,GAAG;;;;CAIjB;CAEA,QAAQ;EAAC;EAAoB;EAAiB,EAAiB;EAAG;CAAe;AACnF,CAAC"}
1
+ {"version":3,"file":"pagination.js","names":[],"sources":["../src/content/pagination/pagination.ts"],"sourcesContent":["import { define, html, prop, getHost, useEmit } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport '../icon/icon';\nimport '../../inputs/button/button';\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\nimport { sizableBundle, themableBundle } from '../../shared';\nimport { coarsePointerMixin, colorThemeMixin, sizeVariantMixin } from '../../styles';\nimport componentStyles from './pagination.css?inline';\n\nexport type OrePaginationEvents = {\n change: { page: number };\n};\n\nexport type OrePaginationProps = {\n color?: ThemeColor;\n label?: string;\n page?: number;\n 'show-first-last'?: boolean;\n 'show-prev-next'?: boolean;\n siblings?: number;\n size?: ComponentSize;\n 'total-pages'?: number;\n variant?: VisualVariant;\n};\n\nfunction buildPageRange(\n currentPage: number,\n totalPages: number,\n siblings: number,\n): Array<number | 'ellipsis-start' | 'ellipsis-end'> {\n const BOUNDARY = 1; // always show first and last page\n const total = totalPages;\n const pages: Array<number | 'ellipsis-start' | 'ellipsis-end'> = [];\n\n // If total is small enough, show all pages\n if (total <= 2 * BOUNDARY + 2 * siblings + 3) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const leftSibling = Math.max(currentPage - siblings, BOUNDARY + 1);\n const rightSibling = Math.min(currentPage + siblings, total - BOUNDARY);\n\n pages.push(1);\n\n if (leftSibling > BOUNDARY + 2) pages.push('ellipsis-start');\n else if (leftSibling === BOUNDARY + 2) pages.push(BOUNDARY + 1);\n\n for (let i = leftSibling; i <= rightSibling; i++) pages.push(i);\n\n if (rightSibling < total - BOUNDARY - 1) pages.push('ellipsis-end');\n else if (rightSibling === total - BOUNDARY - 1) pages.push(total - BOUNDARY);\n\n pages.push(total);\n\n return pages;\n}\n\n/**\n * Page-based navigation control.\n *\n * @element ore-pagination\n *\n * @attr {number} page - Current page (1-indexed, default: 1)\n * @attr {number} total-pages - Total number of pages (required)\n * @attr {number} siblings - Sibling pages around current (default: 1)\n * @attr {boolean} show-first-last - Show first/last page buttons (default: false)\n * @attr {boolean} show-prev-next - Show prev/next buttons (default: false)\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant for nav buttons: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'frost' (default: 'ghost')\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} label - Accessible nav label (default: 'Pagination')\n *\n * @fires change - Emitted when the page changes, with { page: number }\n *\n * @cssprop --pagination-item-size - Width/height of each item\n * @cssprop --pagination-gap - Gap between items\n * @cssprop --pagination-radius - Border radius of items\n *\n * @part page-btn - Page button.\n * @part nav - Navigation container.\n * @part list - List container.\n * @part first-btn - First page button.\n * @part prev-btn - Previous page button.\n * @part next-btn - Next page button.\n * @part last-btn - Last page button.\n * @example\n * ```html\n * <!-- Basic -->\n * <ore-pagination page=\"3\" total-pages=\"10\" color=\"primary\"></ore-pagination>\n *\n * <!-- With prev/next and first/last buttons -->\n * <ore-pagination page=\"5\" total-pages=\"20\" show-prev-next show-first-last siblings=\"2\"></ore-pagination>\n *\n * <!-- Compact size -->\n * <ore-pagination page=\"1\" total-pages=\"5\" size=\"sm\" variant=\"ghost\"></ore-pagination>\n * ```\n */\nexport const PAGINATION_TAG = 'ore-pagination' as const;\ndefine<OrePaginationProps>(PAGINATION_TAG, {\n props: {\n ...themableBundle,\n ...sizableBundle,\n label: prop.string('Pagination'),\n page: prop.number(1),\n 'show-first-last': prop.bool(false),\n 'show-prev-next': prop.bool(false),\n siblings: prop.number(1),\n 'total-pages': prop.number(1),\n variant: prop.string<VisualVariant>(),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OrePaginationEvents>();\n\n function goTo(page: number) {\n const total = props['total-pages'].value || 1;\n const next = Math.min(Math.max(1, page), total);\n\n if (next === props.page.value) return;\n\n el.setAttribute('page', String(next));\n emit('change', { page: next });\n }\n\n const pageItems = computed(() =>\n buildPageRange(props.page.value || 1, props['total-pages'].value || 1, props.siblings.value ?? 1),\n );\n\n const isFirst = computed(() => (props.page.value || 1) <= 1);\n const isLast = computed(() => (props.page.value || 1) >= (props['total-pages'].value || 1));\n\n return html`\n <nav :aria-label=\"${props.label}\" part=\"nav\">\n <ol class=\"pagination\" part=\"list\">\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"first-btn\"\n aria-label=\"First page\"\n ?disabled=${isFirst}\n @click=${() => goTo(1)}>\n <ore-icon name=\"chevrons-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"prev-btn\"\n aria-label=\"Previous page\"\n ?disabled=${isFirst}\n @click=${() => goTo((props.page.value || 1) - 1)}>\n <ore-icon name=\"chevron-left\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n <li style=\"display: contents;\">\n ${() =>\n pageItems.value.map((item) => {\n if (item === 'ellipsis-start' || item === 'ellipsis-end') {\n return html`<span class=\"ellipsis\" aria-hidden=\"true\">&hellip;</span>`;\n }\n\n const pg = item as number;\n const isCurrent = pg === (props.page.value || 1);\n const pgLabel = `Page ${pg}`;\n\n return isCurrent\n ? html`<button\n type=\"button\"\n part=\"page-btn\"\n aria-label=\"${pgLabel}\"\n aria-current=\"page\"\n @click=${() => goTo(pg)}>\n ${pg}\n </button>`\n : html`<button type=\"button\" part=\"page-btn\" aria-label=\"${pgLabel}\" @click=${() => goTo(pg)}>\n ${pg}\n </button>`;\n })}\n </li>\n ${() =>\n props['show-prev-next'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"next-btn\"\n aria-label=\"Next page\"\n ?disabled=${isLast}\n @click=${() => goTo((props.page.value || 1) + 1)}>\n <ore-icon name=\"chevron-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n ${() =>\n props['show-first-last'].value\n ? html`<li>\n <button\n type=\"button\"\n class=\"nav-btn\"\n part=\"last-btn\"\n aria-label=\"Last page\"\n ?disabled=${isLast}\n @click=${() => goTo(props['total-pages'].value || 1)}>\n <ore-icon name=\"chevrons-right\" size=\"16\" aria-hidden=\"true\"></ore-icon>\n </button>\n </li>`\n : ''}\n </ol>\n </nav>\n `;\n },\n\n styles: [coarsePointerMixin, colorThemeMixin, sizeVariantMixin(), componentStyles],\n});\n"],"mappings":";;;;;;;;AA2BA,SAAS,EACP,GACA,GACA,GACmD;CACnD,IACM,IAAQ,GACR,IAA2D,CAAC;CAGlE,IAAI,KAAS,IAAe,IAAI,IAAW,GACzC,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAGtD,IAAM,IAAc,KAAK,IAAI,IAAc,GAAU,CAAY,GAC3D,IAAe,KAAK,IAAI,IAAc,GAAU,IAAQ,CAAQ;CAItE,AAFA,EAAM,KAAK,CAAC,GAER,IAAc,IAAc,EAAM,KAAK,gBAAgB,IAClD,MAAgB,KAAc,EAAM,KAAK,CAAY;CAE9D,KAAK,IAAI,IAAI,GAAa,KAAK,GAAc,KAAK,EAAM,KAAK,CAAC;CAO9D,OALI,IAAe,IAAQ,IAAW,IAAG,EAAM,KAAK,cAAc,IACzD,MAAiB,IAAQ,IAAW,KAAG,EAAM,KAAK,IAAQ,CAAQ,GAE3E,EAAM,KAAK,CAAK,GAET;AACT;AA0CA,IAAa,IAAiB;AAC9B,EAA2B,GAAgB;CACzC,OAAO;EACL,GAAG;EACH,GAAG;EACH,OAAO,EAAK,OAAO,YAAY;EAC/B,MAAM,EAAK,OAAO,CAAC;EACnB,mBAAmB,EAAK,KAAK,EAAK;EAClC,kBAAkB,EAAK,KAAK,EAAK;EACjC,UAAU,EAAK,OAAO,CAAC;EACvB,eAAe,EAAK,OAAO,CAAC;EAC5B,SAAS,EAAK,OAAsB;CACtC;CACA,MAAM,GAAO;EACX,IAAM,IAAK,EAAQ,GACb,IAAO,EAA6B;EAE1C,SAAS,EAAK,GAAc;GAC1B,IAAM,IAAQ,EAAM,cAAc,CAAC,SAAS,GACtC,IAAO,KAAK,IAAI,KAAK,IAAI,GAAG,CAAI,GAAG,CAAK;GAE1C,MAAS,EAAM,KAAK,UAExB,EAAG,aAAa,QAAQ,OAAO,CAAI,CAAC,GACpC,EAAK,UAAU,EAAE,MAAM,EAAK,CAAC;EAC/B;EAEA,IAAM,IAAY,QAChB,EAAe,EAAM,KAAK,SAAS,GAAG,EAAM,cAAc,CAAC,SAAS,GAAG,EAAM,SAAS,SAAS,CAAC,CAClG,GAEM,IAAU,SAAgB,EAAM,KAAK,SAAS,MAAM,CAAC,GACrD,IAAS,SAAgB,EAAM,KAAK,SAAS,OAAO,EAAM,cAAc,CAAC,SAAS,EAAE;EAE1F,OAAO,CAAI;0BACW,EAAM,MAAM;;kBAG1B,EAAM,kBAAkB,CAAC,QACrB,CAAI;;;;;;gCAMY,EAAQ;mCACL,EAAK,CAAC,EAAE;;;yBAI3B,GAAG;kBAEP,EAAM,iBAAiB,CAAC,QACpB,CAAI;;;;;;gCAMY,EAAQ;mCACL,GAAM,EAAM,KAAK,SAAS,KAAK,CAAC,EAAE;;;yBAIrD,GAAG;;oBAGL,EAAU,MAAM,KAAK,MAAS;GAC5B,IAAI,MAAS,oBAAoB,MAAS,gBACxC,OAAO,CAAI;GAGb,IAAM,IAAK,GACL,IAAY,OAAQ,EAAM,KAAK,SAAS,IACxC,IAAU,QAAQ;GAExB,OAAO,IACH,CAAI;;;oCAGY,EAAQ;;qCAEP,EAAK,CAAE,EAAE;wBACtB,EAAG;iCAEP,CAAI,qDAAqD,EAAQ,iBAAiB,EAAK,CAAE,EAAE;wBACvF,EAAG;;EAEb,CAAC,EAAE;;kBAGL,EAAM,iBAAiB,CAAC,QACpB,CAAI;;;;;;gCAMY,EAAO;mCACJ,GAAM,EAAM,KAAK,SAAS,KAAK,CAAC,EAAE;;;yBAIrD,GAAG;kBAEP,EAAM,kBAAkB,CAAC,QACrB,CAAI;;;;;;gCAMY,EAAO;mCACJ,EAAK,EAAM,cAAc,CAAC,SAAS,CAAC,EAAE;;;yBAIzD,GAAG;;;;CAIjB;CAEA,QAAQ;EAAC;EAAoB;EAAiB,EAAiB;EAAG;CAAe;AACnF,CAAC"}
@@ -1,19 +1,19 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./feedback/password-strength/password-strength.css?inline.cjs");let n=require("@vielzeug/ore"),r=require("@vielzeug/ripple");var i=`ore-password-strength`;(0,n.define)(i,{props:{label:n.prop.string(`Password strength`),labels:n.prop.json(void 0),score:n.prop.number(-1),"show-label":n.prop.bool(!0),value:n.prop.string()},setup(e,{bind:t,el:i}){let a={empty:``,fair:`Fair`,good:`Good`,strong:`Strong`,weak:`Weak`},o=[`empty`,`weak`,`fair`,`good`,`strong`],s=e=>{if(!e)return 0;if(e.length<6)return 1;let t=/[a-z]/.test(e),n=/[A-Z]/.test(e),r=/\d/.test(e),i=/[^a-zA-Z0-9]/.test(e);return e.length>=12&&t&&n&&r&&i?4:(t||n)&&(r||i)&&e.length>=8?3:(t||n)&&e.length>=8?2:1},c=()=>{let t=e.score.value??-1,n=t>=0?Math.max(0,Math.min(4,Math.trunc(t))):s(e.value.value??``);return o[n]},l=(0,r.computed)(()=>{let t=e.score.value??-1;return t>=0?Math.max(0,Math.min(4,Math.trunc(t))):s(e.value.value??``)}),u=(0,r.computed)(()=>{let t=e.labels.value;return Array.isArray(t)&&t.length===5?String(t[l.value]??``):a[c()]}),d=(0,r.computed)(()=>l.value===0?null:u.value||null);t({attr:{"data-level":()=>c()}});let f=e=>()=>`segment${l.value>=e?` active`:``}`;return n.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./feedback/password-strength/password-strength.css.cjs");let n=require("@vielzeug/ore"),r=require("@vielzeug/ripple");var i=`ore-password-strength`;(0,n.define)(i,{props:{label:n.prop.string(`Password strength`),labels:n.prop.json(void 0),score:n.prop.number(-1),"show-label":n.prop.bool(!0),value:n.prop.string()},setup(e){let t={empty:``,fair:`Fair`,good:`Good`,strong:`Strong`,weak:`Weak`},i=[`empty`,`weak`,`fair`,`good`,`strong`],a=e=>{if(!e)return 0;if(e.length<6)return 1;let t=/[a-z]/.test(e),n=/[A-Z]/.test(e),r=/\d/.test(e),i=/[^a-zA-Z0-9]/.test(e);return e.length>=12&&t&&n&&r&&i?4:(t||n)&&(r||i)&&e.length>=8?3:(t||n)&&e.length>=8?2:1},o=()=>{let t=e.score.value??-1,n=t>=0?Math.max(0,Math.min(4,Math.trunc(t))):a(e.value.value??``);return i[n]},s=(0,r.computed)(()=>{let t=e.score.value??-1;return t>=0?Math.max(0,Math.min(4,Math.trunc(t))):a(e.value.value??``)}),c=(0,r.computed)(()=>{let n=e.labels.value;return Array.isArray(n)&&n.length===5?String(n[s.value]??``):t[o()]}),l=(0,r.computed)(()=>s.value===0?null:c.value||null);(0,n.bind)({attr:{"data-level":()=>o()}});let u=e=>()=>`segment${s.value>=e?` active`:``}`;return n.html`
2
2
  <div
3
3
  class="meter"
4
4
  role="meter"
5
5
  :aria-label="${e.label}"
6
6
  aria-valuemin="0"
7
7
  aria-valuemax="4"
8
- :aria-valuenow="${()=>String(l.value)}"
9
- :aria-valuetext="${()=>d.value}">
8
+ :aria-valuenow="${()=>String(s.value)}"
9
+ :aria-valuetext="${()=>l.value}">
10
10
  <div class="segments" aria-hidden="true">
11
- <div class="${f(1)}"></div>
12
- <div class="${f(2)}"></div>
13
- <div class="${f(3)}"></div>
14
- <div class="${f(4)}"></div>
11
+ <div class="${u(1)}"></div>
12
+ <div class="${u(2)}"></div>
13
+ <div class="${u(3)}"></div>
14
+ <div class="${u(4)}"></div>
15
15
  </div>
16
16
  </div>
17
- ${()=>e[`show-label`].value?n.html`<span class="level-label" aria-live="polite" aria-atomic="true">${()=>u.value}</span>`:``}
17
+ ${()=>e[`show-label`].value?n.html`<span class="level-label" aria-live="polite" aria-atomic="true">${()=>c.value}</span>`:``}
18
18
  `},styles:[e.reducedMotionMixin,t.default]}),exports.PASSWORD_STRENGTH_TAG=i;
19
19
  //# sourceMappingURL=password-strength.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-strength.cjs","names":[],"sources":["../src/feedback/password-strength/password-strength.ts"],"sourcesContent":["import { define, html, prop } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport { reducedMotionMixin } from '../../styles';\nimport componentStyles from './password-strength.css?inline';\n\n/** Scoring levels for password strength. */\nexport type PasswordStrengthLevel = 'empty' | 'weak' | 'fair' | 'good' | 'strong';\n\n/** Props accepted by <ore-password-strength>. */\nexport type OrePasswordStrengthProps = {\n /** Accessible name for assistive technology. Default: 'Password strength'. */\n label?: string;\n /**\n * Optional level labels in order: empty, weak, fair, good, strong.\n * If omitted or invalid length, defaults are used.\n */\n labels?: string[];\n /**\n * Optional score override (0..4). Use this to integrate external scorers\n * such as zxcvbn while keeping block rendering and accessibility behavior.\n * -1 means no override (default).\n */\n score?: number;\n /** Whether to render visible textual feedback. Default: true. */\n 'show-label'?: boolean;\n /** Password string to evaluate. */\n value?: string;\n};\n\n/**\n * Strong password meter with segmented progress visualization.\n *\n * Built-in scoring is heuristic and conservative:\n * - length < 6 => weak\n * - length >= 8 with mixed case => fair\n * - + digit or symbol => good\n * - length >= 12 with mixed case, digit and symbol => strong\n *\n * @element ore-password-strength\n *\n * @attr {string} value - Password string to evaluate\n * @attr {number} score - Optional score override (0..4). Use -1 for no override (default: -1)\n * @attr {boolean} show-label - Show visible feedback label (default: true)\n * @attr {string} label - Accessible name (default: 'Password strength')\n *\n * @cssprop --password-strength-height Segment bar height\n * @cssprop --password-strength-gap Gap between segments\n * @cssprop --password-strength-radius Segment corner radius\n * @cssprop --password-strength-track-bg Inactive segment color\n * @cssprop --password-strength-label-size Visible label font size\n * @cssprop --password-strength-label-color Visible label color\n * @cssprop --password-strength-weak-color Weak state segment color\n * @cssprop --password-strength-fair-color Fair state segment color\n * @cssprop --password-strength-good-color Good state segment color\n * @cssprop --password-strength-strong-color Strong state segment color\n *\n * @example\n * ```html\n * <!-- Pair with an ore-input to evaluate in real time -->\n * <ore-input type=\"password\" label=\"Password\" name=\"password\" id=\"pwd\"></ore-input>\n * <ore-password-strength id=\"meter\"></ore-password-strength>\n * <script type=\"module\">\n * document.getElementById('pwd').addEventListener('input', (e) => {\n * document.getElementById('meter').value = e.target.value;\n * });\n * </script>\n *\n * <!-- Fixed score display (e.g. from a server-side score) -->\n * <ore-password-strength score=\"3\"></ore-password-strength>\n * ```\n */\nexport const PASSWORD_STRENGTH_TAG = 'ore-password-strength' as const;\ndefine<OrePasswordStrengthProps>(PASSWORD_STRENGTH_TAG, {\n props: {\n label: prop.string('Password strength'),\n labels: prop.json(undefined as string[] | undefined),\n score: prop.number(-1),\n 'show-label': prop.bool(true),\n value: prop.string(),\n },\n\n setup(props, { bind, el: _el }) {\n const defaultLabels: Record<PasswordStrengthLevel, string> = {\n empty: '',\n fair: 'Fair',\n good: 'Good',\n strong: 'Strong',\n weak: 'Weak',\n };\n\n const levels: PasswordStrengthLevel[] = ['empty', 'weak', 'fair', 'good', 'strong'];\n\n const computeScore = (password: string): 0 | 1 | 2 | 3 | 4 => {\n if (!password) return 0;\n\n if (password.length < 6) return 1;\n\n const hasLower = /[a-z]/.test(password);\n const hasUpper = /[A-Z]/.test(password);\n const hasDigit = /\\d/.test(password);\n const hasSymbol = /[^a-zA-Z0-9]/.test(password);\n const long = password.length >= 12;\n\n if (long && hasLower && hasUpper && hasDigit && hasSymbol) return 4;\n\n if ((hasLower || hasUpper) && (hasDigit || hasSymbol) && password.length >= 8) return 3;\n\n if ((hasLower || hasUpper) && password.length >= 8) return 2;\n\n return 1;\n };\n\n const computeLevel = (): PasswordStrengthLevel => {\n const external = props.score.value ?? -1;\n const finalScore =\n external >= 0 ? Math.max(0, Math.min(4, Math.trunc(external))) : computeScore(props.value.value ?? '');\n\n return levels[finalScore];\n };\n\n const score = computed<0 | 1 | 2 | 3 | 4>(() => {\n // score >= 0 means an external override was provided\n const external = props.score.value ?? -1;\n\n if (external >= 0) {\n return Math.max(0, Math.min(4, Math.trunc(external))) as 0 | 1 | 2 | 3 | 4;\n }\n\n return computeScore(props.value.value ?? '');\n });\n\n const levelLabel = computed<string>(() => {\n const custom = props.labels.value;\n\n if (Array.isArray(custom) && custom.length === 5) return String(custom[score.value] ?? '');\n\n return defaultLabels[computeLevel()];\n });\n\n const ariaValueText = computed<string | null>(() => {\n if (score.value === 0) return null;\n\n return levelLabel.value || null;\n });\n\n // Sync level change to data-level attribute reactively\n bind({\n attr: {\n 'data-level': () => computeLevel(),\n },\n });\n\n const segClass = (threshold: number) => () => `segment${score.value >= threshold ? ' active' : ''}`;\n\n return html`\n <div\n class=\"meter\"\n role=\"meter\"\n :aria-label=\"${props.label}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"4\"\n :aria-valuenow=\"${() => String(score.value)}\"\n :aria-valuetext=\"${() => ariaValueText.value}\">\n <div class=\"segments\" aria-hidden=\"true\">\n <div class=\"${segClass(1)}\"></div>\n <div class=\"${segClass(2)}\"></div>\n <div class=\"${segClass(3)}\"></div>\n <div class=\"${segClass(4)}\"></div>\n </div>\n </div>\n ${() =>\n props['show-label'].value\n ? html`<span class=\"level-label\" aria-live=\"polite\" aria-atomic=\"true\">${() => levelLabel.value}</span>`\n : ''}\n `;\n },\n\n styles: [reducedMotionMixin, componentStyles],\n});\n"],"mappings":"oQAwEA,IAAa,EAAwB,qCACJ,EAAuB,CACtD,MAAO,CACL,MAAO,EAAA,KAAK,OAAO,mBAAmB,EACtC,OAAQ,EAAA,KAAK,KAAK,IAAA,EAAiC,EACnD,MAAO,EAAA,KAAK,OAAO,EAAE,EACrB,aAAc,EAAA,KAAK,KAAK,EAAI,EAC5B,MAAO,EAAA,KAAK,OAAO,CACrB,EAEA,MAAM,EAAO,CAAE,OAAM,GAAI,GAAO,CAC9B,IAAM,EAAuD,CAC3D,MAAO,GACP,KAAM,OACN,KAAM,OACN,OAAQ,SACR,KAAM,MACR,EAEM,EAAkC,CAAC,QAAS,OAAQ,OAAQ,OAAQ,QAAQ,EAE5E,EAAgB,GAAwC,CAC5D,GAAI,CAAC,EAAU,MAAO,GAEtB,GAAI,EAAS,OAAS,EAAG,MAAO,GAEhC,IAAM,EAAW,QAAQ,KAAK,CAAQ,EAChC,EAAW,QAAQ,KAAK,CAAQ,EAChC,EAAW,KAAK,KAAK,CAAQ,EAC7B,EAAY,eAAe,KAAK,CAAQ,EAS9C,OARa,EAAS,QAAU,IAEpB,GAAY,GAAY,GAAY,EAAkB,GAE7D,GAAY,KAAc,GAAY,IAAc,EAAS,QAAU,EAAU,GAEjF,GAAY,IAAa,EAAS,QAAU,EAAU,EAEpD,CACT,EAEM,MAA4C,CAChD,IAAM,EAAW,EAAM,MAAM,OAAS,GAChC,EACJ,GAAY,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,EAAI,EAAa,EAAM,MAAM,OAAS,EAAE,EAEvG,OAAO,EAAO,EAChB,EAEM,GAAA,EAAA,EAAA,SAAA,KAA0C,CAE9C,IAAM,EAAW,EAAM,MAAM,OAAS,GAMtC,OAJI,GAAY,EACP,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,EAG/C,EAAa,EAAM,MAAM,OAAS,EAAE,CAC7C,CAAC,EAEK,GAAA,EAAA,EAAA,SAAA,KAAoC,CACxC,IAAM,EAAS,EAAM,OAAO,MAI5B,OAFI,MAAM,QAAQ,CAAM,GAAK,EAAO,SAAW,EAAU,OAAO,EAAO,EAAM,QAAU,EAAE,EAElF,EAAc,EAAa,EACpC,CAAC,EAEK,GAAA,EAAA,EAAA,SAAA,KACA,EAAM,QAAU,EAAU,KAEvB,EAAW,OAAS,IAC5B,EAGD,EAAK,CACH,KAAM,CACJ,iBAAoB,EAAa,CACnC,CACF,CAAC,EAED,IAAM,EAAY,OAA4B,UAAU,EAAM,OAAS,EAAY,UAAY,KAE/F,MAAO,GAAA,IAAI;;;;uBAIQ,EAAM,MAAM;;;8BAGH,OAAO,EAAM,KAAK,EAAE;+BACnB,EAAc,MAAM;;wBAE7B,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;;;YAI5B,EAAM,aAAa,CAAC,MAChB,EAAA,IAAI,uEAAyE,EAAW,MAAM,SAC9F,GAAG;KAEb,EAEA,OAAQ,CAAC,EAAA,mBAAoB,EAAA,OAAe,CAC9C,CAAC"}
1
+ {"version":3,"file":"password-strength.cjs","names":[],"sources":["../src/feedback/password-strength/password-strength.ts"],"sourcesContent":["import { bind, define, html, prop } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport { reducedMotionMixin } from '../../styles';\nimport componentStyles from './password-strength.css?inline';\n\n/** Scoring levels for password strength. */\nexport type PasswordStrengthLevel = 'empty' | 'weak' | 'fair' | 'good' | 'strong';\n\n/** Props accepted by <ore-password-strength>. */\nexport type OrePasswordStrengthProps = {\n /** Accessible name for assistive technology. Default: 'Password strength'. */\n label?: string;\n /**\n * Optional level labels in order: empty, weak, fair, good, strong.\n * If omitted or invalid length, defaults are used.\n */\n labels?: string[];\n /**\n * Optional score override (0..4). Use this to integrate external scorers\n * such as zxcvbn while keeping block rendering and accessibility behavior.\n * -1 means no override (default).\n */\n score?: number;\n /** Whether to render visible textual feedback. Default: true. */\n 'show-label'?: boolean;\n /** Password string to evaluate. */\n value?: string;\n};\n\n/**\n * Strong password meter with segmented progress visualization.\n *\n * Built-in scoring is heuristic and conservative:\n * - length < 6 => weak\n * - length >= 8 with mixed case => fair\n * - + digit or symbol => good\n * - length >= 12 with mixed case, digit and symbol => strong\n *\n * @element ore-password-strength\n *\n * @attr {string} value - Password string to evaluate\n * @attr {number} score - Optional score override (0..4). Use -1 for no override (default: -1)\n * @attr {boolean} show-label - Show visible feedback label (default: true)\n * @attr {string} label - Accessible name (default: 'Password strength')\n *\n * @cssprop --password-strength-height Segment bar height\n * @cssprop --password-strength-gap Gap between segments\n * @cssprop --password-strength-radius Segment corner radius\n * @cssprop --password-strength-track-bg Inactive segment color\n * @cssprop --password-strength-label-size Visible label font size\n * @cssprop --password-strength-label-color Visible label color\n * @cssprop --password-strength-weak-color Weak state segment color\n * @cssprop --password-strength-fair-color Fair state segment color\n * @cssprop --password-strength-good-color Good state segment color\n * @cssprop --password-strength-strong-color Strong state segment color\n *\n * @example\n * ```html\n * <!-- Pair with an ore-input to evaluate in real time -->\n * <ore-input type=\"password\" label=\"Password\" name=\"password\" id=\"pwd\"></ore-input>\n * <ore-password-strength id=\"meter\"></ore-password-strength>\n * <script type=\"module\">\n * document.getElementById('pwd').addEventListener('input', (e) => {\n * document.getElementById('meter').value = e.target.value;\n * });\n * </script>\n *\n * <!-- Fixed score display (e.g. from a server-side score) -->\n * <ore-password-strength score=\"3\"></ore-password-strength>\n * ```\n */\nexport const PASSWORD_STRENGTH_TAG = 'ore-password-strength' as const;\ndefine<OrePasswordStrengthProps>(PASSWORD_STRENGTH_TAG, {\n props: {\n label: prop.string('Password strength'),\n labels: prop.json(undefined as string[] | undefined),\n score: prop.number(-1),\n 'show-label': prop.bool(true),\n value: prop.string(),\n },\n\n setup(props) {\n const defaultLabels: Record<PasswordStrengthLevel, string> = {\n empty: '',\n fair: 'Fair',\n good: 'Good',\n strong: 'Strong',\n weak: 'Weak',\n };\n\n const levels: PasswordStrengthLevel[] = ['empty', 'weak', 'fair', 'good', 'strong'];\n\n const computeScore = (password: string): 0 | 1 | 2 | 3 | 4 => {\n if (!password) return 0;\n\n if (password.length < 6) return 1;\n\n const hasLower = /[a-z]/.test(password);\n const hasUpper = /[A-Z]/.test(password);\n const hasDigit = /\\d/.test(password);\n const hasSymbol = /[^a-zA-Z0-9]/.test(password);\n const long = password.length >= 12;\n\n if (long && hasLower && hasUpper && hasDigit && hasSymbol) return 4;\n\n if ((hasLower || hasUpper) && (hasDigit || hasSymbol) && password.length >= 8) return 3;\n\n if ((hasLower || hasUpper) && password.length >= 8) return 2;\n\n return 1;\n };\n\n const computeLevel = (): PasswordStrengthLevel => {\n const external = props.score.value ?? -1;\n const finalScore =\n external >= 0 ? Math.max(0, Math.min(4, Math.trunc(external))) : computeScore(props.value.value ?? '');\n\n return levels[finalScore];\n };\n\n const score = computed<0 | 1 | 2 | 3 | 4>(() => {\n // score >= 0 means an external override was provided\n const external = props.score.value ?? -1;\n\n if (external >= 0) {\n return Math.max(0, Math.min(4, Math.trunc(external))) as 0 | 1 | 2 | 3 | 4;\n }\n\n return computeScore(props.value.value ?? '');\n });\n\n const levelLabel = computed<string>(() => {\n const custom = props.labels.value;\n\n if (Array.isArray(custom) && custom.length === 5) return String(custom[score.value] ?? '');\n\n return defaultLabels[computeLevel()];\n });\n\n const ariaValueText = computed<string | null>(() => {\n if (score.value === 0) return null;\n\n return levelLabel.value || null;\n });\n\n // Sync level change to data-level attribute reactively\n bind({\n attr: {\n 'data-level': () => computeLevel(),\n },\n });\n\n const segClass = (threshold: number) => () => `segment${score.value >= threshold ? ' active' : ''}`;\n\n return html`\n <div\n class=\"meter\"\n role=\"meter\"\n :aria-label=\"${props.label}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"4\"\n :aria-valuenow=\"${() => String(score.value)}\"\n :aria-valuetext=\"${() => ariaValueText.value}\">\n <div class=\"segments\" aria-hidden=\"true\">\n <div class=\"${segClass(1)}\"></div>\n <div class=\"${segClass(2)}\"></div>\n <div class=\"${segClass(3)}\"></div>\n <div class=\"${segClass(4)}\"></div>\n </div>\n </div>\n ${() =>\n props['show-label'].value\n ? html`<span class=\"level-label\" aria-live=\"polite\" aria-atomic=\"true\">${() => levelLabel.value}</span>`\n : ''}\n `;\n },\n\n styles: [reducedMotionMixin, componentStyles],\n});\n"],"mappings":"6PAwEA,IAAa,EAAwB,qCACJ,EAAuB,CACtD,MAAO,CACL,MAAO,EAAA,KAAK,OAAO,mBAAmB,EACtC,OAAQ,EAAA,KAAK,KAAK,IAAA,EAAiC,EACnD,MAAO,EAAA,KAAK,OAAO,EAAE,EACrB,aAAc,EAAA,KAAK,KAAK,EAAI,EAC5B,MAAO,EAAA,KAAK,OAAO,CACrB,EAEA,MAAM,EAAO,CACX,IAAM,EAAuD,CAC3D,MAAO,GACP,KAAM,OACN,KAAM,OACN,OAAQ,SACR,KAAM,MACR,EAEM,EAAkC,CAAC,QAAS,OAAQ,OAAQ,OAAQ,QAAQ,EAE5E,EAAgB,GAAwC,CAC5D,GAAI,CAAC,EAAU,MAAO,GAEtB,GAAI,EAAS,OAAS,EAAG,MAAO,GAEhC,IAAM,EAAW,QAAQ,KAAK,CAAQ,EAChC,EAAW,QAAQ,KAAK,CAAQ,EAChC,EAAW,KAAK,KAAK,CAAQ,EAC7B,EAAY,eAAe,KAAK,CAAQ,EAS9C,OARa,EAAS,QAAU,IAEpB,GAAY,GAAY,GAAY,EAAkB,GAE7D,GAAY,KAAc,GAAY,IAAc,EAAS,QAAU,EAAU,GAEjF,GAAY,IAAa,EAAS,QAAU,EAAU,EAEpD,CACT,EAEM,MAA4C,CAChD,IAAM,EAAW,EAAM,MAAM,OAAS,GAChC,EACJ,GAAY,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,EAAI,EAAa,EAAM,MAAM,OAAS,EAAE,EAEvG,OAAO,EAAO,EAChB,EAEM,GAAA,EAAA,EAAA,SAAA,KAA0C,CAE9C,IAAM,EAAW,EAAM,MAAM,OAAS,GAMtC,OAJI,GAAY,EACP,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,EAG/C,EAAa,EAAM,MAAM,OAAS,EAAE,CAC7C,CAAC,EAEK,GAAA,EAAA,EAAA,SAAA,KAAoC,CACxC,IAAM,EAAS,EAAM,OAAO,MAI5B,OAFI,MAAM,QAAQ,CAAM,GAAK,EAAO,SAAW,EAAU,OAAO,EAAO,EAAM,QAAU,EAAE,EAElF,EAAc,EAAa,EACpC,CAAC,EAEK,GAAA,EAAA,EAAA,SAAA,KACA,EAAM,QAAU,EAAU,KAEvB,EAAW,OAAS,IAC5B,GAGD,EAAA,EAAA,KAAA,CAAK,CACH,KAAM,CACJ,iBAAoB,EAAa,CACnC,CACF,CAAC,EAED,IAAM,EAAY,OAA4B,UAAU,EAAM,OAAS,EAAY,UAAY,KAE/F,MAAO,GAAA,IAAI;;;;uBAIQ,EAAM,MAAM;;;8BAGH,OAAO,EAAM,KAAK,EAAE;+BACnB,EAAc,MAAM;;wBAE7B,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;;;YAI5B,EAAM,aAAa,CAAC,MAChB,EAAA,IAAI,uEAAyE,EAAW,MAAM,SAC9F,GAAG;KAEb,EAEA,OAAQ,CAAC,EAAA,mBAAoB,EAAA,OAAe,CAC9C,CAAC"}
@@ -1,69 +1,69 @@
1
1
  import { reducedMotionMixin as e } from "./styles/mixins/accessibility.css.js";
2
- import t from "./feedback/password-strength/password-strength.css?inline.js";
3
- import { define as n, html as r, prop as i } from "@vielzeug/ore";
4
- import { computed as a } from "@vielzeug/ripple";
2
+ import t from "./feedback/password-strength/password-strength.css.js";
3
+ import { bind as n, define as r, html as i, prop as a } from "@vielzeug/ore";
4
+ import { computed as o } from "@vielzeug/ripple";
5
5
  //#region src/feedback/password-strength/password-strength.ts
6
- var o = "ore-password-strength";
7
- n(o, {
6
+ var s = "ore-password-strength";
7
+ r(s, {
8
8
  props: {
9
- label: i.string("Password strength"),
10
- labels: i.json(void 0),
11
- score: i.number(-1),
12
- "show-label": i.bool(!0),
13
- value: i.string()
9
+ label: a.string("Password strength"),
10
+ labels: a.json(void 0),
11
+ score: a.number(-1),
12
+ "show-label": a.bool(!0),
13
+ value: a.string()
14
14
  },
15
- setup(e, { bind: t, el: n }) {
16
- let i = {
15
+ setup(e) {
16
+ let t = {
17
17
  empty: "",
18
18
  fair: "Fair",
19
19
  good: "Good",
20
20
  strong: "Strong",
21
21
  weak: "Weak"
22
- }, o = [
22
+ }, r = [
23
23
  "empty",
24
24
  "weak",
25
25
  "fair",
26
26
  "good",
27
27
  "strong"
28
- ], s = (e) => {
28
+ ], a = (e) => {
29
29
  if (!e) return 0;
30
30
  if (e.length < 6) return 1;
31
31
  let t = /[a-z]/.test(e), n = /[A-Z]/.test(e), r = /\d/.test(e), i = /[^a-zA-Z0-9]/.test(e);
32
32
  return e.length >= 12 && t && n && r && i ? 4 : (t || n) && (r || i) && e.length >= 8 ? 3 : (t || n) && e.length >= 8 ? 2 : 1;
33
- }, c = () => {
34
- let t = e.score.value ?? -1, n = t >= 0 ? Math.max(0, Math.min(4, Math.trunc(t))) : s(e.value.value ?? "");
35
- return o[n];
36
- }, l = a(() => {
33
+ }, s = () => {
34
+ let t = e.score.value ?? -1, n = t >= 0 ? Math.max(0, Math.min(4, Math.trunc(t))) : a(e.value.value ?? "");
35
+ return r[n];
36
+ }, c = o(() => {
37
37
  let t = e.score.value ?? -1;
38
- return t >= 0 ? Math.max(0, Math.min(4, Math.trunc(t))) : s(e.value.value ?? "");
39
- }), u = a(() => {
40
- let t = e.labels.value;
41
- return Array.isArray(t) && t.length === 5 ? String(t[l.value] ?? "") : i[c()];
42
- }), d = a(() => l.value === 0 ? null : u.value || null);
43
- t({ attr: { "data-level": () => c() } });
44
- let f = (e) => () => `segment${l.value >= e ? " active" : ""}`;
45
- return r`
38
+ return t >= 0 ? Math.max(0, Math.min(4, Math.trunc(t))) : a(e.value.value ?? "");
39
+ }), l = o(() => {
40
+ let n = e.labels.value;
41
+ return Array.isArray(n) && n.length === 5 ? String(n[c.value] ?? "") : t[s()];
42
+ }), u = o(() => c.value === 0 ? null : l.value || null);
43
+ n({ attr: { "data-level": () => s() } });
44
+ let d = (e) => () => `segment${c.value >= e ? " active" : ""}`;
45
+ return i`
46
46
  <div
47
47
  class="meter"
48
48
  role="meter"
49
49
  :aria-label="${e.label}"
50
50
  aria-valuemin="0"
51
51
  aria-valuemax="4"
52
- :aria-valuenow="${() => String(l.value)}"
53
- :aria-valuetext="${() => d.value}">
52
+ :aria-valuenow="${() => String(c.value)}"
53
+ :aria-valuetext="${() => u.value}">
54
54
  <div class="segments" aria-hidden="true">
55
- <div class="${f(1)}"></div>
56
- <div class="${f(2)}"></div>
57
- <div class="${f(3)}"></div>
58
- <div class="${f(4)}"></div>
55
+ <div class="${d(1)}"></div>
56
+ <div class="${d(2)}"></div>
57
+ <div class="${d(3)}"></div>
58
+ <div class="${d(4)}"></div>
59
59
  </div>
60
60
  </div>
61
- ${() => e["show-label"].value ? r`<span class="level-label" aria-live="polite" aria-atomic="true">${() => u.value}</span>` : ""}
61
+ ${() => e["show-label"].value ? i`<span class="level-label" aria-live="polite" aria-atomic="true">${() => l.value}</span>` : ""}
62
62
  `;
63
63
  },
64
64
  styles: [e, t]
65
65
  });
66
66
  //#endregion
67
- export { o as PASSWORD_STRENGTH_TAG };
67
+ export { s as PASSWORD_STRENGTH_TAG };
68
68
 
69
69
  //# sourceMappingURL=password-strength.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-strength.js","names":[],"sources":["../src/feedback/password-strength/password-strength.ts"],"sourcesContent":["import { define, html, prop } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport { reducedMotionMixin } from '../../styles';\nimport componentStyles from './password-strength.css?inline';\n\n/** Scoring levels for password strength. */\nexport type PasswordStrengthLevel = 'empty' | 'weak' | 'fair' | 'good' | 'strong';\n\n/** Props accepted by <ore-password-strength>. */\nexport type OrePasswordStrengthProps = {\n /** Accessible name for assistive technology. Default: 'Password strength'. */\n label?: string;\n /**\n * Optional level labels in order: empty, weak, fair, good, strong.\n * If omitted or invalid length, defaults are used.\n */\n labels?: string[];\n /**\n * Optional score override (0..4). Use this to integrate external scorers\n * such as zxcvbn while keeping block rendering and accessibility behavior.\n * -1 means no override (default).\n */\n score?: number;\n /** Whether to render visible textual feedback. Default: true. */\n 'show-label'?: boolean;\n /** Password string to evaluate. */\n value?: string;\n};\n\n/**\n * Strong password meter with segmented progress visualization.\n *\n * Built-in scoring is heuristic and conservative:\n * - length < 6 => weak\n * - length >= 8 with mixed case => fair\n * - + digit or symbol => good\n * - length >= 12 with mixed case, digit and symbol => strong\n *\n * @element ore-password-strength\n *\n * @attr {string} value - Password string to evaluate\n * @attr {number} score - Optional score override (0..4). Use -1 for no override (default: -1)\n * @attr {boolean} show-label - Show visible feedback label (default: true)\n * @attr {string} label - Accessible name (default: 'Password strength')\n *\n * @cssprop --password-strength-height Segment bar height\n * @cssprop --password-strength-gap Gap between segments\n * @cssprop --password-strength-radius Segment corner radius\n * @cssprop --password-strength-track-bg Inactive segment color\n * @cssprop --password-strength-label-size Visible label font size\n * @cssprop --password-strength-label-color Visible label color\n * @cssprop --password-strength-weak-color Weak state segment color\n * @cssprop --password-strength-fair-color Fair state segment color\n * @cssprop --password-strength-good-color Good state segment color\n * @cssprop --password-strength-strong-color Strong state segment color\n *\n * @example\n * ```html\n * <!-- Pair with an ore-input to evaluate in real time -->\n * <ore-input type=\"password\" label=\"Password\" name=\"password\" id=\"pwd\"></ore-input>\n * <ore-password-strength id=\"meter\"></ore-password-strength>\n * <script type=\"module\">\n * document.getElementById('pwd').addEventListener('input', (e) => {\n * document.getElementById('meter').value = e.target.value;\n * });\n * </script>\n *\n * <!-- Fixed score display (e.g. from a server-side score) -->\n * <ore-password-strength score=\"3\"></ore-password-strength>\n * ```\n */\nexport const PASSWORD_STRENGTH_TAG = 'ore-password-strength' as const;\ndefine<OrePasswordStrengthProps>(PASSWORD_STRENGTH_TAG, {\n props: {\n label: prop.string('Password strength'),\n labels: prop.json(undefined as string[] | undefined),\n score: prop.number(-1),\n 'show-label': prop.bool(true),\n value: prop.string(),\n },\n\n setup(props, { bind, el: _el }) {\n const defaultLabels: Record<PasswordStrengthLevel, string> = {\n empty: '',\n fair: 'Fair',\n good: 'Good',\n strong: 'Strong',\n weak: 'Weak',\n };\n\n const levels: PasswordStrengthLevel[] = ['empty', 'weak', 'fair', 'good', 'strong'];\n\n const computeScore = (password: string): 0 | 1 | 2 | 3 | 4 => {\n if (!password) return 0;\n\n if (password.length < 6) return 1;\n\n const hasLower = /[a-z]/.test(password);\n const hasUpper = /[A-Z]/.test(password);\n const hasDigit = /\\d/.test(password);\n const hasSymbol = /[^a-zA-Z0-9]/.test(password);\n const long = password.length >= 12;\n\n if (long && hasLower && hasUpper && hasDigit && hasSymbol) return 4;\n\n if ((hasLower || hasUpper) && (hasDigit || hasSymbol) && password.length >= 8) return 3;\n\n if ((hasLower || hasUpper) && password.length >= 8) return 2;\n\n return 1;\n };\n\n const computeLevel = (): PasswordStrengthLevel => {\n const external = props.score.value ?? -1;\n const finalScore =\n external >= 0 ? Math.max(0, Math.min(4, Math.trunc(external))) : computeScore(props.value.value ?? '');\n\n return levels[finalScore];\n };\n\n const score = computed<0 | 1 | 2 | 3 | 4>(() => {\n // score >= 0 means an external override was provided\n const external = props.score.value ?? -1;\n\n if (external >= 0) {\n return Math.max(0, Math.min(4, Math.trunc(external))) as 0 | 1 | 2 | 3 | 4;\n }\n\n return computeScore(props.value.value ?? '');\n });\n\n const levelLabel = computed<string>(() => {\n const custom = props.labels.value;\n\n if (Array.isArray(custom) && custom.length === 5) return String(custom[score.value] ?? '');\n\n return defaultLabels[computeLevel()];\n });\n\n const ariaValueText = computed<string | null>(() => {\n if (score.value === 0) return null;\n\n return levelLabel.value || null;\n });\n\n // Sync level change to data-level attribute reactively\n bind({\n attr: {\n 'data-level': () => computeLevel(),\n },\n });\n\n const segClass = (threshold: number) => () => `segment${score.value >= threshold ? ' active' : ''}`;\n\n return html`\n <div\n class=\"meter\"\n role=\"meter\"\n :aria-label=\"${props.label}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"4\"\n :aria-valuenow=\"${() => String(score.value)}\"\n :aria-valuetext=\"${() => ariaValueText.value}\">\n <div class=\"segments\" aria-hidden=\"true\">\n <div class=\"${segClass(1)}\"></div>\n <div class=\"${segClass(2)}\"></div>\n <div class=\"${segClass(3)}\"></div>\n <div class=\"${segClass(4)}\"></div>\n </div>\n </div>\n ${() =>\n props['show-label'].value\n ? html`<span class=\"level-label\" aria-live=\"polite\" aria-atomic=\"true\">${() => levelLabel.value}</span>`\n : ''}\n `;\n },\n\n styles: [reducedMotionMixin, componentStyles],\n});\n"],"mappings":";;;;;AAwEA,IAAa,IAAwB;AACrC,EAAiC,GAAuB;CACtD,OAAO;EACL,OAAO,EAAK,OAAO,mBAAmB;EACtC,QAAQ,EAAK,KAAK,KAAA,CAAiC;EACnD,OAAO,EAAK,OAAO,EAAE;EACrB,cAAc,EAAK,KAAK,EAAI;EAC5B,OAAO,EAAK,OAAO;CACrB;CAEA,MAAM,GAAO,EAAE,SAAM,IAAI,KAAO;EAC9B,IAAM,IAAuD;GAC3D,OAAO;GACP,MAAM;GACN,MAAM;GACN,QAAQ;GACR,MAAM;EACR,GAEM,IAAkC;GAAC;GAAS;GAAQ;GAAQ;GAAQ;EAAQ,GAE5E,KAAgB,MAAwC;GAC5D,IAAI,CAAC,GAAU,OAAO;GAEtB,IAAI,EAAS,SAAS,GAAG,OAAO;GAEhC,IAAM,IAAW,QAAQ,KAAK,CAAQ,GAChC,IAAW,QAAQ,KAAK,CAAQ,GAChC,IAAW,KAAK,KAAK,CAAQ,GAC7B,IAAY,eAAe,KAAK,CAAQ;GAS9C,OARa,EAAS,UAAU,MAEpB,KAAY,KAAY,KAAY,IAAkB,KAE7D,KAAY,OAAc,KAAY,MAAc,EAAS,UAAU,IAAU,KAEjF,KAAY,MAAa,EAAS,UAAU,IAAU,IAEpD;EACT,GAEM,UAA4C;GAChD,IAAM,IAAW,EAAM,MAAM,SAAS,IAChC,IACJ,KAAY,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,IAAI,EAAa,EAAM,MAAM,SAAS,EAAE;GAEvG,OAAO,EAAO;EAChB,GAEM,IAAQ,QAAkC;GAE9C,IAAM,IAAW,EAAM,MAAM,SAAS;GAMtC,OAJI,KAAY,IACP,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,IAG/C,EAAa,EAAM,MAAM,SAAS,EAAE;EAC7C,CAAC,GAEK,IAAa,QAAuB;GACxC,IAAM,IAAS,EAAM,OAAO;GAI5B,OAFI,MAAM,QAAQ,CAAM,KAAK,EAAO,WAAW,IAAU,OAAO,EAAO,EAAM,UAAU,EAAE,IAElF,EAAc,EAAa;EACpC,CAAC,GAEK,IAAgB,QAChB,EAAM,UAAU,IAAU,OAEvB,EAAW,SAAS,IAC5B;EAGD,EAAK,EACH,MAAM,EACJ,oBAAoB,EAAa,EACnC,EACF,CAAC;EAED,IAAM,KAAY,YAA4B,UAAU,EAAM,SAAS,IAAY,YAAY;EAE/F,OAAO,CAAI;;;;uBAIQ,EAAM,MAAM;;;gCAGH,OAAO,EAAM,KAAK,EAAE;iCACnB,EAAc,MAAM;;wBAE7B,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;;;cAI5B,EAAM,aAAa,CAAC,QAChB,CAAI,yEAAyE,EAAW,MAAM,WAC9F,GAAG;;CAEb;CAEA,QAAQ,CAAC,GAAoB,CAAe;AAC9C,CAAC"}
1
+ {"version":3,"file":"password-strength.js","names":[],"sources":["../src/feedback/password-strength/password-strength.ts"],"sourcesContent":["import { bind, define, html, prop } from '@vielzeug/ore';\nimport { computed } from '@vielzeug/ripple';\n\nimport { reducedMotionMixin } from '../../styles';\nimport componentStyles from './password-strength.css?inline';\n\n/** Scoring levels for password strength. */\nexport type PasswordStrengthLevel = 'empty' | 'weak' | 'fair' | 'good' | 'strong';\n\n/** Props accepted by <ore-password-strength>. */\nexport type OrePasswordStrengthProps = {\n /** Accessible name for assistive technology. Default: 'Password strength'. */\n label?: string;\n /**\n * Optional level labels in order: empty, weak, fair, good, strong.\n * If omitted or invalid length, defaults are used.\n */\n labels?: string[];\n /**\n * Optional score override (0..4). Use this to integrate external scorers\n * such as zxcvbn while keeping block rendering and accessibility behavior.\n * -1 means no override (default).\n */\n score?: number;\n /** Whether to render visible textual feedback. Default: true. */\n 'show-label'?: boolean;\n /** Password string to evaluate. */\n value?: string;\n};\n\n/**\n * Strong password meter with segmented progress visualization.\n *\n * Built-in scoring is heuristic and conservative:\n * - length < 6 => weak\n * - length >= 8 with mixed case => fair\n * - + digit or symbol => good\n * - length >= 12 with mixed case, digit and symbol => strong\n *\n * @element ore-password-strength\n *\n * @attr {string} value - Password string to evaluate\n * @attr {number} score - Optional score override (0..4). Use -1 for no override (default: -1)\n * @attr {boolean} show-label - Show visible feedback label (default: true)\n * @attr {string} label - Accessible name (default: 'Password strength')\n *\n * @cssprop --password-strength-height Segment bar height\n * @cssprop --password-strength-gap Gap between segments\n * @cssprop --password-strength-radius Segment corner radius\n * @cssprop --password-strength-track-bg Inactive segment color\n * @cssprop --password-strength-label-size Visible label font size\n * @cssprop --password-strength-label-color Visible label color\n * @cssprop --password-strength-weak-color Weak state segment color\n * @cssprop --password-strength-fair-color Fair state segment color\n * @cssprop --password-strength-good-color Good state segment color\n * @cssprop --password-strength-strong-color Strong state segment color\n *\n * @example\n * ```html\n * <!-- Pair with an ore-input to evaluate in real time -->\n * <ore-input type=\"password\" label=\"Password\" name=\"password\" id=\"pwd\"></ore-input>\n * <ore-password-strength id=\"meter\"></ore-password-strength>\n * <script type=\"module\">\n * document.getElementById('pwd').addEventListener('input', (e) => {\n * document.getElementById('meter').value = e.target.value;\n * });\n * </script>\n *\n * <!-- Fixed score display (e.g. from a server-side score) -->\n * <ore-password-strength score=\"3\"></ore-password-strength>\n * ```\n */\nexport const PASSWORD_STRENGTH_TAG = 'ore-password-strength' as const;\ndefine<OrePasswordStrengthProps>(PASSWORD_STRENGTH_TAG, {\n props: {\n label: prop.string('Password strength'),\n labels: prop.json(undefined as string[] | undefined),\n score: prop.number(-1),\n 'show-label': prop.bool(true),\n value: prop.string(),\n },\n\n setup(props) {\n const defaultLabels: Record<PasswordStrengthLevel, string> = {\n empty: '',\n fair: 'Fair',\n good: 'Good',\n strong: 'Strong',\n weak: 'Weak',\n };\n\n const levels: PasswordStrengthLevel[] = ['empty', 'weak', 'fair', 'good', 'strong'];\n\n const computeScore = (password: string): 0 | 1 | 2 | 3 | 4 => {\n if (!password) return 0;\n\n if (password.length < 6) return 1;\n\n const hasLower = /[a-z]/.test(password);\n const hasUpper = /[A-Z]/.test(password);\n const hasDigit = /\\d/.test(password);\n const hasSymbol = /[^a-zA-Z0-9]/.test(password);\n const long = password.length >= 12;\n\n if (long && hasLower && hasUpper && hasDigit && hasSymbol) return 4;\n\n if ((hasLower || hasUpper) && (hasDigit || hasSymbol) && password.length >= 8) return 3;\n\n if ((hasLower || hasUpper) && password.length >= 8) return 2;\n\n return 1;\n };\n\n const computeLevel = (): PasswordStrengthLevel => {\n const external = props.score.value ?? -1;\n const finalScore =\n external >= 0 ? Math.max(0, Math.min(4, Math.trunc(external))) : computeScore(props.value.value ?? '');\n\n return levels[finalScore];\n };\n\n const score = computed<0 | 1 | 2 | 3 | 4>(() => {\n // score >= 0 means an external override was provided\n const external = props.score.value ?? -1;\n\n if (external >= 0) {\n return Math.max(0, Math.min(4, Math.trunc(external))) as 0 | 1 | 2 | 3 | 4;\n }\n\n return computeScore(props.value.value ?? '');\n });\n\n const levelLabel = computed<string>(() => {\n const custom = props.labels.value;\n\n if (Array.isArray(custom) && custom.length === 5) return String(custom[score.value] ?? '');\n\n return defaultLabels[computeLevel()];\n });\n\n const ariaValueText = computed<string | null>(() => {\n if (score.value === 0) return null;\n\n return levelLabel.value || null;\n });\n\n // Sync level change to data-level attribute reactively\n bind({\n attr: {\n 'data-level': () => computeLevel(),\n },\n });\n\n const segClass = (threshold: number) => () => `segment${score.value >= threshold ? ' active' : ''}`;\n\n return html`\n <div\n class=\"meter\"\n role=\"meter\"\n :aria-label=\"${props.label}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"4\"\n :aria-valuenow=\"${() => String(score.value)}\"\n :aria-valuetext=\"${() => ariaValueText.value}\">\n <div class=\"segments\" aria-hidden=\"true\">\n <div class=\"${segClass(1)}\"></div>\n <div class=\"${segClass(2)}\"></div>\n <div class=\"${segClass(3)}\"></div>\n <div class=\"${segClass(4)}\"></div>\n </div>\n </div>\n ${() =>\n props['show-label'].value\n ? html`<span class=\"level-label\" aria-live=\"polite\" aria-atomic=\"true\">${() => levelLabel.value}</span>`\n : ''}\n `;\n },\n\n styles: [reducedMotionMixin, componentStyles],\n});\n"],"mappings":";;;;;AAwEA,IAAa,IAAwB;AACrC,EAAiC,GAAuB;CACtD,OAAO;EACL,OAAO,EAAK,OAAO,mBAAmB;EACtC,QAAQ,EAAK,KAAK,KAAA,CAAiC;EACnD,OAAO,EAAK,OAAO,EAAE;EACrB,cAAc,EAAK,KAAK,EAAI;EAC5B,OAAO,EAAK,OAAO;CACrB;CAEA,MAAM,GAAO;EACX,IAAM,IAAuD;GAC3D,OAAO;GACP,MAAM;GACN,MAAM;GACN,QAAQ;GACR,MAAM;EACR,GAEM,IAAkC;GAAC;GAAS;GAAQ;GAAQ;GAAQ;EAAQ,GAE5E,KAAgB,MAAwC;GAC5D,IAAI,CAAC,GAAU,OAAO;GAEtB,IAAI,EAAS,SAAS,GAAG,OAAO;GAEhC,IAAM,IAAW,QAAQ,KAAK,CAAQ,GAChC,IAAW,QAAQ,KAAK,CAAQ,GAChC,IAAW,KAAK,KAAK,CAAQ,GAC7B,IAAY,eAAe,KAAK,CAAQ;GAS9C,OARa,EAAS,UAAU,MAEpB,KAAY,KAAY,KAAY,IAAkB,KAE7D,KAAY,OAAc,KAAY,MAAc,EAAS,UAAU,IAAU,KAEjF,KAAY,MAAa,EAAS,UAAU,IAAU,IAEpD;EACT,GAEM,UAA4C;GAChD,IAAM,IAAW,EAAM,MAAM,SAAS,IAChC,IACJ,KAAY,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,IAAI,EAAa,EAAM,MAAM,SAAS,EAAE;GAEvG,OAAO,EAAO;EAChB,GAEM,IAAQ,QAAkC;GAE9C,IAAM,IAAW,EAAM,MAAM,SAAS;GAMtC,OAJI,KAAY,IACP,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,CAAQ,CAAC,CAAC,IAG/C,EAAa,EAAM,MAAM,SAAS,EAAE;EAC7C,CAAC,GAEK,IAAa,QAAuB;GACxC,IAAM,IAAS,EAAM,OAAO;GAI5B,OAFI,MAAM,QAAQ,CAAM,KAAK,EAAO,WAAW,IAAU,OAAO,EAAO,EAAM,UAAU,EAAE,IAElF,EAAc,EAAa;EACpC,CAAC,GAEK,IAAgB,QAChB,EAAM,UAAU,IAAU,OAEvB,EAAW,SAAS,IAC5B;EAGD,EAAK,EACH,MAAM,EACJ,oBAAoB,EAAa,EACnC,EACF,CAAC;EAED,IAAM,KAAY,YAA4B,UAAU,EAAM,SAAS,IAAY,YAAY;EAE/F,OAAO,CAAI;;;;uBAIQ,EAAM,MAAM;;;gCAGH,OAAO,EAAM,KAAK,EAAE;iCACnB,EAAc,MAAM;;wBAE7B,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;wBACZ,EAAS,CAAC,EAAE;;;cAI5B,EAAM,aAAa,CAAC,QAChB,CAAI,yEAAyE,EAAW,MAAM,WAC9F,GAAG;;CAEb;CAEA,QAAQ,CAAC,GAAoB,CAAe;AAC9C,CAAC"}
package/dist/popover.cjs CHANGED
@@ -1,15 +1,15 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./shared/prop-bundles.cjs"),n=require("./headless/parse.cjs"),r=require("./overlay/shared/use-floating-trigger.cjs"),i=require("./overlay/popover/popover.css?inline.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");require("@vielzeug/orbit");var s=8,c=new Set([`click`,`focus`,`hover`]),l=[`click`],u=e=>n.parseStringTriggers(String(e??``),c,l),d=`ore-popover`;(0,a.define)(d,{props:{...t.disablableBundle,label:a.prop.string(),offset:a.prop.number(s),open:a.prop.json(void 0),placement:a.prop.oneOf([`bottom`,`bottom-end`,`bottom-start`,`left`,`left-end`,`left-start`,`right`,`right-end`,`right-start`,`top`,`top-end`,`top-start`],`bottom`),trigger:a.prop.string(`click`)},setup(e,{aria:t,el:n,emit:i,onCleanup:s,onMounted:c,slots:l}){let d=n.shadowRoot,f=(0,o.computed)(()=>!!e.disabled.value),p=(0,a.createStableId)(`popover`),m=(0,o.computed)(()=>u(e.trigger.value)),h=null,g=r.useFloatingTrigger({bindTriggerAria:e=>t(e,{controls:()=>p,disabled:()=>String(f.value),expanded:()=>String(g.visible.value),haspopup:`dialog`}),disabled:f,getHost:()=>n,getPanel:()=>h,offset:e.offset,onCleanup:s,onClose:e=>i(`close`,{reason:e}),onOpen:e=>i(`open`,{reason:e}),openProp:e.open,placement:(0,o.computed)(()=>e.placement.value),slot:()=>d?.querySelector(`slot:not([name])`)??null,slotElements:l.elements(),triggers:m});return c(()=>g.mount()),a.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./shared/prop-bundles.cjs"),n=require("./headless/parse.cjs"),r=require("./overlay/shared/use-floating-trigger.cjs"),i=require("./overlay/popover/popover.css.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");require("@vielzeug/orbit");var s=8,c=new Set([`click`,`focus`,`hover`]),l=[`click`],u=e=>n.parseStringTriggers(String(e??``),c,l),d=`ore-popover`;(0,a.define)(d,{props:{...t.disablableBundle,label:a.prop.string(),offset:a.prop.number(s),open:a.prop.json(void 0),placement:a.prop.oneOf([`bottom`,`bottom-end`,`bottom-start`,`left`,`left-end`,`left-start`,`right`,`right-end`,`right-start`,`top`,`top-end`,`top-start`],`bottom`),trigger:a.prop.string(`click`)},setup(e){let t=(0,a.getHost)(),n=(0,a.useEmit)(),i=(0,a.useSlots)(),s=t.shadowRoot,c=(0,o.computed)(()=>!!e.disabled.value),l=(0,a.createStableId)(`popover`),d=(0,o.computed)(()=>u(e.trigger.value)),f=null,p=r.useFloatingTrigger({bindTriggerAria:e=>(0,a.aria)(e,{controls:()=>l,disabled:()=>String(c.value),expanded:()=>String(p.visible.value),haspopup:`dialog`}),disabled:c,getHost:()=>t,getPanel:()=>f,offset:e.offset,onCleanup:a.onCleanup,onClose:e=>n(`close`,{reason:e}),onOpen:e=>n(`open`,{reason:e}),openProp:e.open,placement:(0,o.computed)(()=>e.placement.value),slot:()=>s?.querySelector(`slot:not([name])`)??null,slotElements:i.elements(),triggers:d});return(0,a.onMounted)(()=>p.mount()),a.html`
2
2
  <slot></slot>
3
3
  <div
4
4
  class="panel"
5
5
  part="panel"
6
- id="${p}"
6
+ id="${l}"
7
7
  role="dialog"
8
8
  aria-modal="false"
9
9
  popover="manual"
10
10
  :aria-label="${e.label}"
11
- :aria-hidden="${()=>String(!g.visible.value)}"
12
- ref=${e=>{h=e}}>
11
+ :aria-hidden="${()=>String(!p.visible.value)}"
12
+ ref=${e=>{f=e}}>
13
13
  <slot name="content"></slot>
14
14
  </div>
15
15
  `},styles:[e.reducedMotionMixin,i.default]}),exports.POPOVER_TAG=d;