@vielzeug/refine 1.1.3 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (799) hide show
  1. package/dist/accordion-item.cjs +4 -4
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js +41 -41
  4. package/dist/accordion-item.js.map +1 -1
  5. package/dist/accordion.cjs +1 -1
  6. package/dist/accordion.cjs.map +1 -1
  7. package/dist/accordion.js +21 -21
  8. package/dist/accordion.js.map +1 -1
  9. package/dist/alert.cjs +5 -5
  10. package/dist/alert.cjs.map +1 -1
  11. package/dist/alert.js +21 -21
  12. package/dist/alert.js.map +1 -1
  13. package/dist/async.cjs +10 -10
  14. package/dist/async.cjs.map +1 -1
  15. package/dist/async.js +27 -27
  16. package/dist/async.js.map +1 -1
  17. package/dist/avatar.cjs +2 -2
  18. package/dist/avatar.cjs.map +1 -1
  19. package/dist/avatar.js +30 -30
  20. package/dist/avatar.js.map +1 -1
  21. package/dist/badge.cjs +1 -1
  22. package/dist/badge.cjs.map +1 -1
  23. package/dist/badge.js +1 -1
  24. package/dist/box.cjs +1 -1
  25. package/dist/box.cjs.map +1 -1
  26. package/dist/box.js +1 -1
  27. package/dist/breadcrumb.cjs +2 -2
  28. package/dist/breadcrumb.cjs.map +1 -1
  29. package/dist/breadcrumb.js +20 -20
  30. package/dist/breadcrumb.js.map +1 -1
  31. package/dist/button-group.cjs +1 -1
  32. package/dist/button-group.cjs.map +1 -1
  33. package/dist/button-group.js +7 -7
  34. package/dist/button-group.js.map +1 -1
  35. package/dist/button.cjs +6 -6
  36. package/dist/button.cjs.map +1 -1
  37. package/dist/button.js +47 -45
  38. package/dist/button.js.map +1 -1
  39. package/dist/calendar.cjs +28 -28
  40. package/dist/calendar.cjs.map +1 -1
  41. package/dist/calendar.js +93 -91
  42. package/dist/calendar.js.map +1 -1
  43. package/dist/card.cjs +6 -6
  44. package/dist/card.cjs.map +1 -1
  45. package/dist/card.js +35 -34
  46. package/dist/card.js.map +1 -1
  47. package/dist/carousel.cjs +19 -19
  48. package/dist/carousel.cjs.map +1 -1
  49. package/dist/carousel.js +111 -111
  50. package/dist/carousel.js.map +1 -1
  51. package/dist/chat-message.cjs +47 -0
  52. package/dist/chat-message.cjs.map +1 -0
  53. package/dist/chat-message.js +121 -0
  54. package/dist/chat-message.js.map +1 -0
  55. package/dist/checkbox-group.cjs +9 -9
  56. package/dist/checkbox-group.cjs.map +1 -1
  57. package/dist/checkbox-group.js +54 -52
  58. package/dist/checkbox-group.js.map +1 -1
  59. package/dist/checkbox.cjs +4 -4
  60. package/dist/checkbox.cjs.map +1 -1
  61. package/dist/checkbox.js +39 -37
  62. package/dist/checkbox.js.map +1 -1
  63. package/dist/chip.cjs +14 -14
  64. package/dist/chip.cjs.map +1 -1
  65. package/dist/chip.js +43 -43
  66. package/dist/chip.js.map +1 -1
  67. package/dist/code-window.cjs +1 -1
  68. package/dist/code-window.cjs.map +1 -1
  69. package/dist/code-window.js +1 -1
  70. package/dist/combobox.cjs +25 -25
  71. package/dist/combobox.cjs.map +1 -1
  72. package/dist/combobox.js +181 -179
  73. package/dist/combobox.js.map +1 -1
  74. package/dist/command-palette.cjs +62 -0
  75. package/dist/command-palette.cjs.map +1 -0
  76. package/dist/command-palette.js +179 -0
  77. package/dist/command-palette.js.map +1 -0
  78. package/dist/content/avatar/{avatar-group.css?inline.cjs → avatar-group.css.cjs} +1 -1
  79. package/dist/content/avatar/avatar-group.css.cjs.map +1 -0
  80. package/dist/content/avatar/{avatar-group.css?inline.js → avatar-group.css.js} +1 -1
  81. package/dist/content/avatar/avatar-group.css.js.map +1 -0
  82. package/dist/content/avatar/{avatar.css?inline.cjs → avatar.css.cjs} +1 -1
  83. package/dist/content/avatar/avatar.css.cjs.map +1 -0
  84. package/dist/content/avatar/{avatar.css?inline.js → avatar.css.js} +1 -1
  85. package/dist/content/avatar/avatar.css.js.map +1 -0
  86. package/dist/content/breadcrumb/{breadcrumb-item.css?inline.cjs → breadcrumb-item.css.cjs} +1 -1
  87. package/dist/content/breadcrumb/breadcrumb-item.css.cjs.map +1 -0
  88. package/dist/content/breadcrumb/{breadcrumb-item.css?inline.js → breadcrumb-item.css.js} +1 -1
  89. package/dist/content/breadcrumb/breadcrumb-item.css.js.map +1 -0
  90. package/dist/content/breadcrumb/{breadcrumb.css?inline.cjs → breadcrumb.css.cjs} +1 -1
  91. package/dist/content/breadcrumb/breadcrumb.css.cjs.map +1 -0
  92. package/dist/content/breadcrumb/{breadcrumb.css?inline.js → breadcrumb.css.js} +1 -1
  93. package/dist/content/breadcrumb/breadcrumb.css.js.map +1 -0
  94. package/dist/content/card/card.css.cjs +2 -0
  95. package/dist/content/card/card.css.cjs.map +1 -0
  96. package/dist/content/card/card.css.js +6 -0
  97. package/dist/content/card/card.css.js.map +1 -0
  98. package/dist/content/carousel/carousel-slide.cjs +1 -1
  99. package/dist/content/carousel/carousel-slide.cjs.map +1 -1
  100. package/dist/content/carousel/{carousel-slide.css?inline.cjs → carousel-slide.css.cjs} +1 -1
  101. package/dist/content/carousel/carousel-slide.css.cjs.map +1 -0
  102. package/dist/content/carousel/{carousel-slide.css?inline.js → carousel-slide.css.js} +1 -1
  103. package/dist/content/carousel/carousel-slide.css.js.map +1 -0
  104. package/dist/content/carousel/carousel-slide.js +7 -7
  105. package/dist/content/carousel/carousel-slide.js.map +1 -1
  106. package/dist/content/carousel/{carousel.css?inline.cjs → carousel.css.cjs} +1 -1
  107. package/dist/content/carousel/carousel.css.cjs.map +1 -0
  108. package/dist/content/carousel/{carousel.css?inline.js → carousel.css.js} +1 -1
  109. package/dist/content/carousel/carousel.css.js.map +1 -0
  110. package/dist/content/chat-message/chat-message.css.cjs +2 -0
  111. package/dist/content/chat-message/chat-message.css.cjs.map +1 -0
  112. package/dist/content/chat-message/chat-message.css.js +6 -0
  113. package/dist/content/chat-message/chat-message.css.js.map +1 -0
  114. package/dist/content/chat-message/chat-message.d.ts +87 -0
  115. package/dist/content/chat-message/chat-message.d.ts.map +1 -0
  116. package/dist/content/code-window/{code-window.css?inline.cjs → code-window.css.cjs} +1 -1
  117. package/dist/content/code-window/code-window.css.cjs.map +1 -0
  118. package/dist/content/code-window/{code-window.css?inline.js → code-window.css.js} +1 -1
  119. package/dist/content/code-window/code-window.css.js.map +1 -0
  120. package/dist/content/copy-command/{copy-command.css?inline.cjs → copy-command.css.cjs} +1 -1
  121. package/dist/content/copy-command/copy-command.css.cjs.map +1 -0
  122. package/dist/content/copy-command/{copy-command.css?inline.js → copy-command.css.js} +1 -1
  123. package/dist/content/copy-command/copy-command.css.js.map +1 -0
  124. package/dist/content/icon/icon.css.cjs +2 -0
  125. package/dist/content/icon/icon.css.cjs.map +1 -0
  126. package/dist/content/icon/icon.css.js +6 -0
  127. package/dist/content/icon/icon.css.js.map +1 -0
  128. package/dist/content/index.d.ts +2 -0
  129. package/dist/content/index.d.ts.map +1 -1
  130. package/dist/content/pagination/{pagination.css?inline.cjs → pagination.css.cjs} +1 -1
  131. package/dist/content/pagination/pagination.css.cjs.map +1 -0
  132. package/dist/content/pagination/{pagination.css?inline.js → pagination.css.js} +1 -1
  133. package/dist/content/pagination/pagination.css.js.map +1 -0
  134. package/dist/content/separator/{separator.css?inline.cjs → separator.css.cjs} +1 -1
  135. package/dist/content/separator/separator.css.cjs.map +1 -0
  136. package/dist/content/separator/{separator.css?inline.js → separator.css.js} +1 -1
  137. package/dist/content/separator/separator.css.js.map +1 -0
  138. package/dist/content/table/{table.css?inline.cjs → table.css.cjs} +1 -1
  139. package/dist/content/table/table.css.cjs.map +1 -0
  140. package/dist/content/table/{table.css?inline.js → table.css.js} +1 -1
  141. package/dist/content/table/table.css.js.map +1 -0
  142. package/dist/content/text/{text.css?inline.cjs → text.css.cjs} +1 -1
  143. package/dist/content/text/text.css.cjs.map +1 -0
  144. package/dist/content/text/{text.css?inline.js → text.css.js} +1 -1
  145. package/dist/content/text/text.css.js.map +1 -0
  146. package/dist/copy-command.cjs +5 -5
  147. package/dist/copy-command.cjs.map +1 -1
  148. package/dist/copy-command.js +25 -25
  149. package/dist/copy-command.js.map +1 -1
  150. package/dist/custom-elements.json +4463 -3727
  151. package/dist/datagrid.cjs +109 -109
  152. package/dist/datagrid.cjs.map +1 -1
  153. package/dist/datagrid.js +194 -194
  154. package/dist/datagrid.js.map +1 -1
  155. package/dist/date-picker.cjs +40 -40
  156. package/dist/date-picker.cjs.map +1 -1
  157. package/dist/date-picker.js +116 -114
  158. package/dist/date-picker.js.map +1 -1
  159. package/dist/dialog.cjs +5 -5
  160. package/dist/dialog.cjs.map +1 -1
  161. package/dist/dialog.js +28 -28
  162. package/dist/dialog.js.map +1 -1
  163. package/dist/disclosure/accordion/{accordion.css?inline.cjs → accordion.css.cjs} +1 -1
  164. package/dist/disclosure/accordion/accordion.css.cjs.map +1 -0
  165. package/dist/disclosure/accordion/{accordion.css?inline.js → accordion.css.js} +1 -1
  166. package/dist/disclosure/accordion/accordion.css.js.map +1 -0
  167. package/dist/disclosure/accordion-item/{accordion-item.css?inline.cjs → accordion-item.css.cjs} +1 -1
  168. package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -0
  169. package/dist/disclosure/accordion-item/{accordion-item.css?inline.js → accordion-item.css.js} +1 -1
  170. package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -0
  171. package/dist/disclosure/tab-item/{tab-item.css?inline.cjs → tab-item.css.cjs} +1 -1
  172. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -0
  173. package/dist/disclosure/tab-item/{tab-item.css?inline.js → tab-item.css.js} +1 -1
  174. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -0
  175. package/dist/disclosure/tab-panel/{tab-panel.css?inline.cjs → tab-panel.css.cjs} +1 -1
  176. package/dist/disclosure/tab-panel/tab-panel.css.cjs.map +1 -0
  177. package/dist/disclosure/tab-panel/{tab-panel.css?inline.js → tab-panel.css.js} +1 -1
  178. package/dist/disclosure/tab-panel/tab-panel.css.js.map +1 -0
  179. package/dist/disclosure/tabs/{tabs.css?inline.cjs → tabs.css.cjs} +1 -1
  180. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -0
  181. package/dist/disclosure/tabs/{tabs.css?inline.js → tabs.css.js} +1 -1
  182. package/dist/disclosure/tabs/tabs.css.js.map +1 -0
  183. package/dist/drawer.cjs +9 -9
  184. package/dist/drawer.cjs.map +1 -1
  185. package/dist/drawer.js +80 -80
  186. package/dist/drawer.js.map +1 -1
  187. package/dist/feedback/alert/{alert.css?inline.cjs → alert.css.cjs} +1 -1
  188. package/dist/feedback/alert/alert.css.cjs.map +1 -0
  189. package/dist/feedback/alert/{alert.css?inline.js → alert.css.js} +1 -1
  190. package/dist/feedback/alert/alert.css.js.map +1 -0
  191. package/dist/feedback/async/{async.css?inline.cjs → async.css.cjs} +1 -1
  192. package/dist/feedback/async/async.css.cjs.map +1 -0
  193. package/dist/feedback/async/{async.css?inline.js → async.css.js} +1 -1
  194. package/dist/feedback/async/async.css.js.map +1 -0
  195. package/dist/feedback/badge/{badge.css?inline.cjs → badge.css.cjs} +1 -1
  196. package/dist/feedback/badge/badge.css.cjs.map +1 -0
  197. package/dist/feedback/badge/{badge.css?inline.js → badge.css.js} +1 -1
  198. package/dist/feedback/badge/badge.css.js.map +1 -0
  199. package/dist/feedback/chip/{chip.css?inline.cjs → chip.css.cjs} +1 -1
  200. package/dist/feedback/chip/chip.css.cjs.map +1 -0
  201. package/dist/feedback/chip/{chip.css?inline.js → chip.css.js} +1 -1
  202. package/dist/feedback/chip/chip.css.js.map +1 -0
  203. package/dist/feedback/index.d.ts +2 -0
  204. package/dist/feedback/index.d.ts.map +1 -1
  205. package/dist/feedback/password-strength/{password-strength.css?inline.cjs → password-strength.css.cjs} +1 -1
  206. package/dist/feedback/password-strength/password-strength.css.cjs.map +1 -0
  207. package/dist/feedback/password-strength/{password-strength.css?inline.js → password-strength.css.js} +1 -1
  208. package/dist/feedback/password-strength/password-strength.css.js.map +1 -0
  209. package/dist/feedback/progress/{progress.css?inline.cjs → progress.css.cjs} +1 -1
  210. package/dist/feedback/progress/progress.css.cjs.map +1 -0
  211. package/dist/feedback/progress/{progress.css?inline.js → progress.css.js} +1 -1
  212. package/dist/feedback/progress/progress.css.js.map +1 -0
  213. package/dist/feedback/skeleton/{skeleton.css?inline.cjs → skeleton.css.cjs} +1 -1
  214. package/dist/feedback/skeleton/skeleton.css.cjs.map +1 -0
  215. package/dist/feedback/skeleton/{skeleton.css?inline.js → skeleton.css.js} +1 -1
  216. package/dist/feedback/skeleton/skeleton.css.js.map +1 -0
  217. package/dist/feedback/toast/toast.css.cjs +2 -0
  218. package/dist/feedback/toast/toast.css.cjs.map +1 -0
  219. package/dist/feedback/toast/toast.css.js +6 -0
  220. package/dist/feedback/toast/toast.css.js.map +1 -0
  221. package/dist/feedback/toast/toast.d.ts.map +1 -1
  222. package/dist/feedback/typing-indicator/typing-indicator.css.cjs +2 -0
  223. package/dist/feedback/typing-indicator/typing-indicator.css.cjs.map +1 -0
  224. package/dist/feedback/typing-indicator/typing-indicator.css.js +6 -0
  225. package/dist/feedback/typing-indicator/typing-indicator.css.js.map +1 -0
  226. package/dist/feedback/typing-indicator/typing-indicator.d.ts +42 -0
  227. package/dist/feedback/typing-indicator/typing-indicator.d.ts.map +1 -0
  228. package/dist/file-input.cjs +56 -34
  229. package/dist/file-input.cjs.map +1 -1
  230. package/dist/file-input.js +143 -104
  231. package/dist/file-input.js.map +1 -1
  232. package/dist/form.cjs +3 -3
  233. package/dist/form.cjs.map +1 -1
  234. package/dist/form.js +28 -25
  235. package/dist/form.js.map +1 -1
  236. package/dist/grid-item.cjs +1 -1
  237. package/dist/grid-item.cjs.map +1 -1
  238. package/dist/grid-item.js +19 -19
  239. package/dist/grid-item.js.map +1 -1
  240. package/dist/grid.cjs +1 -1
  241. package/dist/grid.cjs.map +1 -1
  242. package/dist/grid.js +48 -48
  243. package/dist/grid.js.map +1 -1
  244. package/dist/icon.cjs +1 -1
  245. package/dist/icon.cjs.map +1 -1
  246. package/dist/icon.js +26 -26
  247. package/dist/icon.js.map +1 -1
  248. package/dist/index.cjs +1 -1
  249. package/dist/index.js +52 -49
  250. package/dist/input.cjs +25 -25
  251. package/dist/input.cjs.map +1 -1
  252. package/dist/input.js +75 -73
  253. package/dist/input.js.map +1 -1
  254. package/dist/inputs/button/button.css.cjs +2 -0
  255. package/dist/inputs/button/button.css.cjs.map +1 -0
  256. package/dist/inputs/button/button.css.js +6 -0
  257. package/dist/inputs/button/button.css.js.map +1 -0
  258. package/dist/inputs/button/button.d.ts.map +1 -1
  259. package/dist/inputs/button-group/{button-group.css?inline.cjs → button-group.css.cjs} +1 -1
  260. package/dist/inputs/button-group/button-group.css.cjs.map +1 -0
  261. package/dist/inputs/button-group/{button-group.css?inline.js → button-group.css.js} +1 -1
  262. package/dist/inputs/button-group/button-group.css.js.map +1 -0
  263. package/dist/inputs/calendar/{calendar.css?inline.cjs → calendar.css.cjs} +1 -1
  264. package/dist/inputs/calendar/calendar.css.cjs.map +1 -0
  265. package/dist/inputs/calendar/{calendar.css?inline.js → calendar.css.js} +1 -1
  266. package/dist/inputs/calendar/calendar.css.js.map +1 -0
  267. package/dist/inputs/calendar/calendar.d.ts.map +1 -1
  268. package/dist/inputs/checkbox/{checkbox.css?inline.cjs → checkbox.css.cjs} +2 -2
  269. package/dist/inputs/checkbox/checkbox.css.cjs.map +1 -0
  270. package/dist/inputs/checkbox/{checkbox.css?inline.js → checkbox.css.js} +2 -2
  271. package/dist/inputs/checkbox/checkbox.css.js.map +1 -0
  272. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -1
  273. package/dist/inputs/checkbox-group/{checkbox-group.css?inline.cjs → checkbox-group.css.cjs} +2 -2
  274. package/dist/inputs/checkbox-group/checkbox-group.css.cjs.map +1 -0
  275. package/dist/inputs/checkbox-group/{checkbox-group.css?inline.js → checkbox-group.css.js} +2 -2
  276. package/dist/inputs/checkbox-group/checkbox-group.css.js.map +1 -0
  277. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -1
  278. package/dist/inputs/combobox/{combobox.css?inline.cjs → combobox.css.cjs} +1 -1
  279. package/dist/inputs/combobox/combobox.css.cjs.map +1 -0
  280. package/dist/inputs/combobox/{combobox.css?inline.js → combobox.css.js} +1 -1
  281. package/dist/inputs/combobox/combobox.css.js.map +1 -0
  282. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  283. package/dist/inputs/datagrid/{datagrid.css?inline.cjs → datagrid.css.cjs} +1 -1
  284. package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -0
  285. package/dist/inputs/datagrid/{datagrid.css?inline.js → datagrid.css.js} +1 -1
  286. package/dist/inputs/datagrid/datagrid.css.js.map +1 -0
  287. package/dist/inputs/date-picker/{date-picker.css?inline.cjs → date-picker.css.cjs} +1 -1
  288. package/dist/inputs/date-picker/date-picker.css.cjs.map +1 -0
  289. package/dist/inputs/date-picker/{date-picker.css?inline.js → date-picker.css.js} +1 -1
  290. package/dist/inputs/date-picker/date-picker.css.js.map +1 -0
  291. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -1
  292. package/dist/inputs/file-input/file-input.css.cjs +2 -0
  293. package/dist/inputs/file-input/file-input.css.cjs.map +1 -0
  294. package/dist/inputs/file-input/file-input.css.js +6 -0
  295. package/dist/inputs/file-input/file-input.css.js.map +1 -0
  296. package/dist/inputs/file-input/file-input.d.ts +9 -0
  297. package/dist/inputs/file-input/file-input.d.ts.map +1 -1
  298. package/dist/inputs/form/{form.css?inline.cjs → form.css.cjs} +1 -1
  299. package/dist/inputs/form/form.css.cjs.map +1 -0
  300. package/dist/inputs/form/{form.css?inline.js → form.css.js} +1 -1
  301. package/dist/inputs/form/form.css.js.map +1 -0
  302. package/dist/inputs/input/input.css.cjs +2 -0
  303. package/dist/inputs/input/input.css.cjs.map +1 -0
  304. package/dist/inputs/input/input.css.js +6 -0
  305. package/dist/inputs/input/input.css.js.map +1 -0
  306. package/dist/inputs/input/input.d.ts.map +1 -1
  307. package/dist/inputs/number-input/{number-input.css?inline.cjs → number-input.css.cjs} +1 -1
  308. package/dist/inputs/number-input/number-input.css.cjs.map +1 -0
  309. package/dist/inputs/number-input/{number-input.css?inline.js → number-input.css.js} +1 -1
  310. package/dist/inputs/number-input/number-input.css.js.map +1 -0
  311. package/dist/inputs/otp-input/{otp-input.css?inline.cjs → otp-input.css.cjs} +2 -2
  312. package/dist/inputs/otp-input/otp-input.css.cjs.map +1 -0
  313. package/dist/inputs/otp-input/{otp-input.css?inline.js → otp-input.css.js} +2 -2
  314. package/dist/inputs/otp-input/otp-input.css.js.map +1 -0
  315. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -1
  316. package/dist/inputs/radio/{radio.css?inline.cjs → radio.css.cjs} +2 -2
  317. package/dist/inputs/radio/radio.css.cjs.map +1 -0
  318. package/dist/inputs/radio/{radio.css?inline.js → radio.css.js} +2 -2
  319. package/dist/inputs/radio/radio.css.js.map +1 -0
  320. package/dist/inputs/radio/radio.d.ts.map +1 -1
  321. package/dist/inputs/radio-group/{radio-group.css?inline.cjs → radio-group.css.cjs} +2 -2
  322. package/dist/inputs/radio-group/radio-group.css.cjs.map +1 -0
  323. package/dist/inputs/radio-group/{radio-group.css?inline.js → radio-group.css.js} +2 -2
  324. package/dist/inputs/radio-group/radio-group.css.js.map +1 -0
  325. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -1
  326. package/dist/inputs/rating/{rating.css?inline.cjs → rating.css.cjs} +2 -2
  327. package/dist/inputs/rating/rating.css.cjs.map +1 -0
  328. package/dist/inputs/rating/{rating.css?inline.js → rating.css.js} +2 -2
  329. package/dist/inputs/rating/rating.css.js.map +1 -0
  330. package/dist/inputs/rating/rating.d.ts.map +1 -1
  331. package/dist/inputs/select/{select.css?inline.cjs → select.css.cjs} +1 -1
  332. package/dist/inputs/select/select.css.cjs.map +1 -0
  333. package/dist/inputs/select/{select.css?inline.js → select.css.js} +1 -1
  334. package/dist/inputs/select/select.css.js.map +1 -0
  335. package/dist/inputs/select/select.d.ts.map +1 -1
  336. package/dist/inputs/shared/field-binding.cjs +1 -1
  337. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  338. package/dist/inputs/shared/field-binding.d.ts +1 -2
  339. package/dist/inputs/shared/field-binding.d.ts.map +1 -1
  340. package/dist/inputs/shared/field-binding.js +3 -2
  341. package/dist/inputs/shared/field-binding.js.map +1 -1
  342. package/dist/inputs/shared/form-context.cjs +1 -1
  343. package/dist/inputs/shared/form-context.cjs.map +1 -1
  344. package/dist/inputs/shared/form-context.d.ts +4 -4
  345. package/dist/inputs/shared/form-context.d.ts.map +1 -1
  346. package/dist/inputs/shared/form-context.js +10 -10
  347. package/dist/inputs/shared/form-context.js.map +1 -1
  348. package/dist/inputs/slider/{slider.css?inline.cjs → slider.css.cjs} +2 -2
  349. package/dist/inputs/slider/slider.css.cjs.map +1 -0
  350. package/dist/inputs/slider/{slider.css?inline.js → slider.css.js} +2 -2
  351. package/dist/inputs/slider/slider.css.js.map +1 -0
  352. package/dist/inputs/slider/slider.d.ts.map +1 -1
  353. package/dist/inputs/switch/{switch.css?inline.cjs → switch.css.cjs} +2 -2
  354. package/dist/inputs/switch/switch.css.cjs.map +1 -0
  355. package/dist/inputs/switch/{switch.css?inline.js → switch.css.js} +2 -2
  356. package/dist/inputs/switch/switch.css.js.map +1 -0
  357. package/dist/inputs/switch/switch.d.ts.map +1 -1
  358. package/dist/inputs/textarea/textarea.css.cjs +2 -0
  359. package/dist/inputs/textarea/textarea.css.cjs.map +1 -0
  360. package/dist/inputs/textarea/textarea.css.js +6 -0
  361. package/dist/inputs/textarea/textarea.css.js.map +1 -0
  362. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  363. package/dist/inputs/time-picker/{time-picker.css?inline.cjs → time-picker.css.cjs} +1 -1
  364. package/dist/inputs/time-picker/time-picker.css.cjs.map +1 -0
  365. package/dist/inputs/time-picker/{time-picker.css?inline.js → time-picker.css.js} +1 -1
  366. package/dist/inputs/time-picker/time-picker.css.js.map +1 -0
  367. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -1
  368. package/dist/keymap/dist/_dev.cjs +2 -0
  369. package/dist/keymap/dist/_dev.cjs.map +1 -0
  370. package/dist/keymap/dist/_dev.js +4 -0
  371. package/dist/keymap/dist/_dev.js.map +1 -0
  372. package/dist/keymap/dist/format.cjs +1 -0
  373. package/dist/keymap/dist/format.js +1 -0
  374. package/dist/keymap/dist/index.cjs +1 -0
  375. package/dist/keymap/dist/index.js +4 -0
  376. package/dist/keymap/dist/keymap.cjs +2 -0
  377. package/dist/keymap/dist/keymap.cjs.map +1 -0
  378. package/dist/keymap/dist/keymap.js +221 -0
  379. package/dist/keymap/dist/keymap.js.map +1 -0
  380. package/dist/keymap/dist/layer.cjs +1 -0
  381. package/dist/keymap/dist/layer.js +1 -0
  382. package/dist/layout/box/{box.css?inline.cjs → box.css.cjs} +1 -1
  383. package/dist/layout/box/box.css.cjs.map +1 -0
  384. package/dist/layout/box/{box.css?inline.js → box.css.js} +1 -1
  385. package/dist/layout/box/box.css.js.map +1 -0
  386. package/dist/layout/grid/{grid.css?inline.cjs → grid.css.cjs} +1 -1
  387. package/dist/layout/grid/grid.css.cjs.map +1 -0
  388. package/dist/layout/grid/{grid.css?inline.js → grid.css.js} +1 -1
  389. package/dist/layout/grid/grid.css.js.map +1 -0
  390. package/dist/layout/grid-item/{grid-item.css?inline.cjs → grid-item.css.cjs} +1 -1
  391. package/dist/layout/grid-item/grid-item.css.cjs.map +1 -0
  392. package/dist/layout/grid-item/{grid-item.css?inline.js → grid-item.css.js} +1 -1
  393. package/dist/layout/grid-item/grid-item.css.js.map +1 -0
  394. package/dist/layout/navbar/navbar.css.cjs +2 -0
  395. package/dist/layout/navbar/navbar.css.cjs.map +1 -0
  396. package/dist/layout/navbar/navbar.css.js +6 -0
  397. package/dist/layout/navbar/navbar.css.js.map +1 -0
  398. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  399. package/dist/layout/sidebar/{sidebar-group.css?inline.cjs → sidebar-group.css.cjs} +1 -1
  400. package/dist/layout/sidebar/sidebar-group.css.cjs.map +1 -0
  401. package/dist/layout/sidebar/{sidebar-group.css?inline.js → sidebar-group.css.js} +1 -1
  402. package/dist/layout/sidebar/sidebar-group.css.js.map +1 -0
  403. package/dist/layout/sidebar/{sidebar-item.css?inline.cjs → sidebar-item.css.cjs} +1 -1
  404. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -0
  405. package/dist/layout/sidebar/{sidebar-item.css?inline.js → sidebar-item.css.js} +1 -1
  406. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -0
  407. package/dist/layout/sidebar/sidebar.css.cjs +2 -0
  408. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -0
  409. package/dist/layout/sidebar/sidebar.css.js +6 -0
  410. package/dist/layout/sidebar/sidebar.css.js.map +1 -0
  411. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  412. package/dist/menu.cjs +5 -5
  413. package/dist/menu.cjs.map +1 -1
  414. package/dist/menu.js +85 -85
  415. package/dist/menu.js.map +1 -1
  416. package/dist/navbar.cjs +15 -15
  417. package/dist/navbar.cjs.map +1 -1
  418. package/dist/navbar.js +127 -127
  419. package/dist/navbar.js.map +1 -1
  420. package/dist/number-input.cjs +11 -11
  421. package/dist/number-input.cjs.map +1 -1
  422. package/dist/number-input.js +69 -69
  423. package/dist/number-input.js.map +1 -1
  424. package/dist/ore/dist/_dev.cjs.map +1 -1
  425. package/dist/ore/dist/_dev.js.map +1 -1
  426. package/dist/ore/dist/base-element.cjs +1 -1
  427. package/dist/ore/dist/base-element.cjs.map +1 -1
  428. package/dist/ore/dist/base-element.js +37 -35
  429. package/dist/ore/dist/base-element.js.map +1 -1
  430. package/dist/ore/dist/context.cjs +1 -1
  431. package/dist/ore/dist/context.cjs.map +1 -1
  432. package/dist/ore/dist/context.js +6 -33
  433. package/dist/ore/dist/context.js.map +1 -1
  434. package/dist/ore/dist/define.cjs.map +1 -1
  435. package/dist/ore/dist/define.js.map +1 -1
  436. package/dist/ore/dist/directives/raw.cjs +1 -1
  437. package/dist/ore/dist/directives/raw.cjs.map +1 -1
  438. package/dist/ore/dist/directives/raw.js +20 -17
  439. package/dist/ore/dist/directives/raw.js.map +1 -1
  440. package/dist/ore/dist/directives/when.cjs +1 -1
  441. package/dist/ore/dist/directives/when.cjs.map +1 -1
  442. package/dist/ore/dist/directives/when.js +29 -24
  443. package/dist/ore/dist/directives/when.js.map +1 -1
  444. package/dist/ore/dist/errors.cjs +2 -2
  445. package/dist/ore/dist/errors.cjs.map +1 -1
  446. package/dist/ore/dist/errors.js +12 -3
  447. package/dist/ore/dist/errors.js.map +1 -1
  448. package/dist/ore/dist/forms/context.cjs +2 -0
  449. package/dist/ore/dist/forms/context.cjs.map +1 -0
  450. package/dist/ore/dist/forms/context.js +6 -0
  451. package/dist/ore/dist/forms/context.js.map +1 -0
  452. package/dist/ore/dist/forms/field.cjs +2 -0
  453. package/dist/ore/dist/forms/field.cjs.map +1 -0
  454. package/dist/ore/dist/forms/field.js +35 -0
  455. package/dist/ore/dist/forms/field.js.map +1 -0
  456. package/dist/ore/dist/forms.cjs +1 -0
  457. package/dist/ore/dist/forms.js +3 -0
  458. package/dist/ore/dist/props.cjs +1 -1
  459. package/dist/ore/dist/props.cjs.map +1 -1
  460. package/dist/ore/dist/props.js +29 -27
  461. package/dist/ore/dist/props.js.map +1 -1
  462. package/dist/ore/dist/runtime.cjs +1 -1
  463. package/dist/ore/dist/runtime.cjs.map +1 -1
  464. package/dist/ore/dist/runtime.js +13 -23
  465. package/dist/ore/dist/runtime.js.map +1 -1
  466. package/dist/ore/dist/testing/render-hook.cjs +1 -1
  467. package/dist/ore/dist/testing/render-hook.js +0 -1
  468. package/dist/ore/dist/utils/dom.cjs +1 -1
  469. package/dist/ore/dist/utils/dom.cjs.map +1 -1
  470. package/dist/ore/dist/utils/dom.js +2 -6
  471. package/dist/ore/dist/utils/dom.js.map +1 -1
  472. package/dist/otp-input.cjs +9 -9
  473. package/dist/otp-input.cjs.map +1 -1
  474. package/dist/otp-input.js +70 -68
  475. package/dist/otp-input.js.map +1 -1
  476. package/dist/overlay/command-palette/command-palette-items.cjs +2 -0
  477. package/dist/overlay/command-palette/command-palette-items.cjs.map +1 -0
  478. package/dist/overlay/command-palette/command-palette-items.d.ts +22 -0
  479. package/dist/overlay/command-palette/command-palette-items.d.ts.map +1 -0
  480. package/dist/overlay/command-palette/command-palette-items.js +55 -0
  481. package/dist/overlay/command-palette/command-palette-items.js.map +1 -0
  482. package/dist/overlay/command-palette/command-palette.css.cjs +2 -0
  483. package/dist/overlay/command-palette/command-palette.css.cjs.map +1 -0
  484. package/dist/overlay/command-palette/command-palette.css.js +6 -0
  485. package/dist/overlay/command-palette/command-palette.css.js.map +1 -0
  486. package/dist/overlay/command-palette/command-palette.d.ts +72 -0
  487. package/dist/overlay/command-palette/command-palette.d.ts.map +1 -0
  488. package/dist/overlay/command-palette/command-palette.types.d.ts +76 -0
  489. package/dist/overlay/command-palette/command-palette.types.d.ts.map +1 -0
  490. package/dist/overlay/dialog/{dialog.css?inline.cjs → dialog.css.cjs} +1 -1
  491. package/dist/overlay/dialog/dialog.css.cjs.map +1 -0
  492. package/dist/overlay/dialog/{dialog.css?inline.js → dialog.css.js} +1 -1
  493. package/dist/overlay/dialog/dialog.css.js.map +1 -0
  494. package/dist/overlay/drawer/{drawer.css?inline.cjs → drawer.css.cjs} +1 -1
  495. package/dist/overlay/drawer/drawer.css.cjs.map +1 -0
  496. package/dist/overlay/drawer/{drawer.css?inline.js → drawer.css.js} +1 -1
  497. package/dist/overlay/drawer/drawer.css.js.map +1 -0
  498. package/dist/overlay/drawer/drawer.d.ts.map +1 -1
  499. package/dist/overlay/index.d.ts +2 -0
  500. package/dist/overlay/index.d.ts.map +1 -1
  501. package/dist/overlay/menu/{menu-item.css?inline.cjs → menu-item.css.cjs} +1 -1
  502. package/dist/overlay/menu/menu-item.css.cjs.map +1 -0
  503. package/dist/overlay/menu/{menu-item.css?inline.js → menu-item.css.js} +1 -1
  504. package/dist/overlay/menu/menu-item.css.js.map +1 -0
  505. package/dist/overlay/menu/{menu-separator.css?inline.cjs → menu-separator.css.cjs} +1 -1
  506. package/dist/overlay/menu/menu-separator.css.cjs.map +1 -0
  507. package/dist/overlay/menu/{menu-separator.css?inline.js → menu-separator.css.js} +1 -1
  508. package/dist/overlay/menu/menu-separator.css.js.map +1 -0
  509. package/dist/overlay/menu/menu.css.cjs +2 -0
  510. package/dist/overlay/menu/menu.css.cjs.map +1 -0
  511. package/dist/overlay/menu/menu.css.js +6 -0
  512. package/dist/overlay/menu/menu.css.js.map +1 -0
  513. package/dist/overlay/menu/menu.d.ts.map +1 -1
  514. package/dist/overlay/popover/{popover.css?inline.cjs → popover.css.cjs} +1 -1
  515. package/dist/overlay/popover/popover.css.cjs.map +1 -0
  516. package/dist/overlay/popover/{popover.css?inline.js → popover.css.js} +1 -1
  517. package/dist/overlay/popover/popover.css.js.map +1 -0
  518. package/dist/overlay/popover/popover.d.ts.map +1 -1
  519. package/dist/overlay/tooltip/{tooltip.css?inline.cjs → tooltip.css.cjs} +1 -1
  520. package/dist/overlay/tooltip/tooltip.css.cjs.map +1 -0
  521. package/dist/overlay/tooltip/{tooltip.css?inline.js → tooltip.css.js} +1 -1
  522. package/dist/overlay/tooltip/tooltip.css.js.map +1 -0
  523. package/dist/pagination.cjs +12 -12
  524. package/dist/pagination.cjs.map +1 -1
  525. package/dist/pagination.js +39 -38
  526. package/dist/pagination.js.map +1 -1
  527. package/dist/password-strength.cjs +8 -8
  528. package/dist/password-strength.cjs.map +1 -1
  529. package/dist/password-strength.js +34 -34
  530. package/dist/password-strength.js.map +1 -1
  531. package/dist/popover.cjs +4 -4
  532. package/dist/popover.cjs.map +1 -1
  533. package/dist/popover.js +30 -30
  534. package/dist/popover.js.map +1 -1
  535. package/dist/progress.cjs +1 -1
  536. package/dist/progress.cjs.map +1 -1
  537. package/dist/progress.js +30 -30
  538. package/dist/progress.js.map +1 -1
  539. package/dist/radio-group.cjs +11 -11
  540. package/dist/radio-group.cjs.map +1 -1
  541. package/dist/radio-group.js +67 -63
  542. package/dist/radio-group.js.map +1 -1
  543. package/dist/radio.cjs +4 -4
  544. package/dist/radio.cjs.map +1 -1
  545. package/dist/radio.js +69 -67
  546. package/dist/radio.js.map +1 -1
  547. package/dist/rating.cjs +4 -4
  548. package/dist/rating.cjs.map +1 -1
  549. package/dist/rating.js +57 -55
  550. package/dist/rating.js.map +1 -1
  551. package/dist/refine.cjs +753 -623
  552. package/dist/refine.cjs.map +1 -1
  553. package/dist/refine.iife.js +742 -612
  554. package/dist/refine.iife.js.map +1 -1
  555. package/dist/refine.js +777 -647
  556. package/dist/refine.js.map +1 -1
  557. package/dist/select.cjs +37 -37
  558. package/dist/select.cjs.map +1 -1
  559. package/dist/select.js +130 -128
  560. package/dist/select.js.map +1 -1
  561. package/dist/separator.cjs +1 -1
  562. package/dist/separator.cjs.map +1 -1
  563. package/dist/separator.js +1 -1
  564. package/dist/sidebar.cjs +22 -22
  565. package/dist/sidebar.cjs.map +1 -1
  566. package/dist/sidebar.js +135 -135
  567. package/dist/sidebar.js.map +1 -1
  568. package/dist/skeleton.cjs +2 -2
  569. package/dist/skeleton.cjs.map +1 -1
  570. package/dist/skeleton.js +28 -28
  571. package/dist/skeleton.js.map +1 -1
  572. package/dist/slider.cjs +13 -13
  573. package/dist/slider.cjs.map +1 -1
  574. package/dist/slider.js +142 -140
  575. package/dist/slider.js.map +1 -1
  576. package/dist/styles/mixins/animation.css.cjs +0 -3
  577. package/dist/styles/mixins/animation.css.cjs.map +1 -1
  578. package/dist/styles/mixins/animation.css.d.ts +12 -4
  579. package/dist/styles/mixins/animation.css.d.ts.map +1 -1
  580. package/dist/styles/mixins/animation.css.js +0 -3
  581. package/dist/styles/mixins/animation.css.js.map +1 -1
  582. package/dist/styles/mixins/variants.css.cjs.map +1 -1
  583. package/dist/styles/mixins/variants.css.d.ts +7 -2
  584. package/dist/styles/mixins/variants.css.d.ts.map +1 -1
  585. package/dist/styles/mixins/variants.css.js.map +1 -1
  586. package/dist/styles/theme.css +341 -132
  587. package/dist/switch.cjs +4 -4
  588. package/dist/switch.cjs.map +1 -1
  589. package/dist/switch.js +35 -33
  590. package/dist/switch.js.map +1 -1
  591. package/dist/tab-item.cjs +5 -5
  592. package/dist/tab-item.cjs.map +1 -1
  593. package/dist/tab-item.js +25 -25
  594. package/dist/tab-item.js.map +1 -1
  595. package/dist/tab-panel.cjs +6 -6
  596. package/dist/tab-panel.cjs.map +1 -1
  597. package/dist/tab-panel.js +24 -24
  598. package/dist/tab-panel.js.map +1 -1
  599. package/dist/table.cjs +1 -1
  600. package/dist/table.cjs.map +1 -1
  601. package/dist/table.js +36 -35
  602. package/dist/table.js.map +1 -1
  603. package/dist/tabs.cjs +3 -3
  604. package/dist/tabs.cjs.map +1 -1
  605. package/dist/tabs.js +61 -61
  606. package/dist/tabs.js.map +1 -1
  607. package/dist/text.cjs +1 -1
  608. package/dist/text.cjs.map +1 -1
  609. package/dist/text.js +16 -16
  610. package/dist/text.js.map +1 -1
  611. package/dist/textarea.cjs +15 -15
  612. package/dist/textarea.cjs.map +1 -1
  613. package/dist/textarea.js +67 -65
  614. package/dist/textarea.js.map +1 -1
  615. package/dist/time-picker.cjs +31 -31
  616. package/dist/time-picker.cjs.map +1 -1
  617. package/dist/time-picker.js +115 -113
  618. package/dist/time-picker.js.map +1 -1
  619. package/dist/toast.cjs +14 -14
  620. package/dist/toast.cjs.map +1 -1
  621. package/dist/toast.js +85 -85
  622. package/dist/toast.js.map +1 -1
  623. package/dist/tooltip.cjs +5 -5
  624. package/dist/tooltip.cjs.map +1 -1
  625. package/dist/tooltip.js +55 -55
  626. package/dist/tooltip.js.map +1 -1
  627. package/dist/typing-indicator.cjs +8 -0
  628. package/dist/typing-indicator.cjs.map +1 -0
  629. package/dist/typing-indicator.js +49 -0
  630. package/dist/typing-indicator.js.map +1 -0
  631. package/package.json +31 -8
  632. package/dist/content/avatar/avatar-group.css?inline.cjs.map +0 -1
  633. package/dist/content/avatar/avatar-group.css?inline.js.map +0 -1
  634. package/dist/content/avatar/avatar.css?inline.cjs.map +0 -1
  635. package/dist/content/avatar/avatar.css?inline.js.map +0 -1
  636. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +0 -1
  637. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +0 -1
  638. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +0 -1
  639. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +0 -1
  640. package/dist/content/card/card.css?inline.cjs +0 -2
  641. package/dist/content/card/card.css?inline.cjs.map +0 -1
  642. package/dist/content/card/card.css?inline.js +0 -6
  643. package/dist/content/card/card.css?inline.js.map +0 -1
  644. package/dist/content/carousel/carousel-slide.css?inline.cjs.map +0 -1
  645. package/dist/content/carousel/carousel-slide.css?inline.js.map +0 -1
  646. package/dist/content/carousel/carousel.css?inline.cjs.map +0 -1
  647. package/dist/content/carousel/carousel.css?inline.js.map +0 -1
  648. package/dist/content/code-window/code-window.css?inline.cjs.map +0 -1
  649. package/dist/content/code-window/code-window.css?inline.js.map +0 -1
  650. package/dist/content/copy-command/copy-command.css?inline.cjs.map +0 -1
  651. package/dist/content/copy-command/copy-command.css?inline.js.map +0 -1
  652. package/dist/content/icon/icon.css?inline.cjs +0 -2
  653. package/dist/content/icon/icon.css?inline.cjs.map +0 -1
  654. package/dist/content/icon/icon.css?inline.js +0 -6
  655. package/dist/content/icon/icon.css?inline.js.map +0 -1
  656. package/dist/content/pagination/pagination.css?inline.cjs.map +0 -1
  657. package/dist/content/pagination/pagination.css?inline.js.map +0 -1
  658. package/dist/content/separator/separator.css?inline.cjs.map +0 -1
  659. package/dist/content/separator/separator.css?inline.js.map +0 -1
  660. package/dist/content/table/table.css?inline.cjs.map +0 -1
  661. package/dist/content/table/table.css?inline.js.map +0 -1
  662. package/dist/content/text/text.css?inline.cjs.map +0 -1
  663. package/dist/content/text/text.css?inline.js.map +0 -1
  664. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +0 -1
  665. package/dist/disclosure/accordion/accordion.css?inline.js.map +0 -1
  666. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +0 -1
  667. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +0 -1
  668. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +0 -1
  669. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +0 -1
  670. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +0 -1
  671. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +0 -1
  672. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +0 -1
  673. package/dist/disclosure/tabs/tabs.css?inline.js.map +0 -1
  674. package/dist/feedback/alert/alert.css?inline.cjs.map +0 -1
  675. package/dist/feedback/alert/alert.css?inline.js.map +0 -1
  676. package/dist/feedback/async/async.css?inline.cjs.map +0 -1
  677. package/dist/feedback/async/async.css?inline.js.map +0 -1
  678. package/dist/feedback/badge/badge.css?inline.cjs.map +0 -1
  679. package/dist/feedback/badge/badge.css?inline.js.map +0 -1
  680. package/dist/feedback/chip/chip.css?inline.cjs.map +0 -1
  681. package/dist/feedback/chip/chip.css?inline.js.map +0 -1
  682. package/dist/feedback/password-strength/password-strength.css?inline.cjs.map +0 -1
  683. package/dist/feedback/password-strength/password-strength.css?inline.js.map +0 -1
  684. package/dist/feedback/progress/progress.css?inline.cjs.map +0 -1
  685. package/dist/feedback/progress/progress.css?inline.js.map +0 -1
  686. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +0 -1
  687. package/dist/feedback/skeleton/skeleton.css?inline.js.map +0 -1
  688. package/dist/feedback/toast/toast.css?inline.cjs +0 -2
  689. package/dist/feedback/toast/toast.css?inline.cjs.map +0 -1
  690. package/dist/feedback/toast/toast.css?inline.js +0 -6
  691. package/dist/feedback/toast/toast.css?inline.js.map +0 -1
  692. package/dist/inputs/button/button.css?inline.cjs +0 -2
  693. package/dist/inputs/button/button.css?inline.cjs.map +0 -1
  694. package/dist/inputs/button/button.css?inline.js +0 -6
  695. package/dist/inputs/button/button.css?inline.js.map +0 -1
  696. package/dist/inputs/button-group/button-group.css?inline.cjs.map +0 -1
  697. package/dist/inputs/button-group/button-group.css?inline.js.map +0 -1
  698. package/dist/inputs/calendar/calendar.css?inline.cjs.map +0 -1
  699. package/dist/inputs/calendar/calendar.css?inline.js.map +0 -1
  700. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +0 -1
  701. package/dist/inputs/checkbox/checkbox.css?inline.js.map +0 -1
  702. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +0 -1
  703. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +0 -1
  704. package/dist/inputs/combobox/combobox.css?inline.cjs.map +0 -1
  705. package/dist/inputs/combobox/combobox.css?inline.js.map +0 -1
  706. package/dist/inputs/datagrid/datagrid.css?inline.cjs.map +0 -1
  707. package/dist/inputs/datagrid/datagrid.css?inline.js.map +0 -1
  708. package/dist/inputs/date-picker/date-picker.css?inline.cjs.map +0 -1
  709. package/dist/inputs/date-picker/date-picker.css?inline.js.map +0 -1
  710. package/dist/inputs/file-input/file-input.css?inline.cjs +0 -2
  711. package/dist/inputs/file-input/file-input.css?inline.cjs.map +0 -1
  712. package/dist/inputs/file-input/file-input.css?inline.js +0 -6
  713. package/dist/inputs/file-input/file-input.css?inline.js.map +0 -1
  714. package/dist/inputs/form/form.css?inline.cjs.map +0 -1
  715. package/dist/inputs/form/form.css?inline.js.map +0 -1
  716. package/dist/inputs/input/input.css?inline.cjs +0 -2
  717. package/dist/inputs/input/input.css?inline.cjs.map +0 -1
  718. package/dist/inputs/input/input.css?inline.js +0 -6
  719. package/dist/inputs/input/input.css?inline.js.map +0 -1
  720. package/dist/inputs/number-input/number-input.css?inline.cjs.map +0 -1
  721. package/dist/inputs/number-input/number-input.css?inline.js.map +0 -1
  722. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +0 -1
  723. package/dist/inputs/otp-input/otp-input.css?inline.js.map +0 -1
  724. package/dist/inputs/radio/radio.css?inline.cjs.map +0 -1
  725. package/dist/inputs/radio/radio.css?inline.js.map +0 -1
  726. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +0 -1
  727. package/dist/inputs/radio-group/radio-group.css?inline.js.map +0 -1
  728. package/dist/inputs/rating/rating.css?inline.cjs.map +0 -1
  729. package/dist/inputs/rating/rating.css?inline.js.map +0 -1
  730. package/dist/inputs/select/select.css?inline.cjs.map +0 -1
  731. package/dist/inputs/select/select.css?inline.js.map +0 -1
  732. package/dist/inputs/slider/slider.css?inline.cjs.map +0 -1
  733. package/dist/inputs/slider/slider.css?inline.js.map +0 -1
  734. package/dist/inputs/switch/switch.css?inline.cjs.map +0 -1
  735. package/dist/inputs/switch/switch.css?inline.js.map +0 -1
  736. package/dist/inputs/textarea/textarea.css?inline.cjs +0 -2
  737. package/dist/inputs/textarea/textarea.css?inline.cjs.map +0 -1
  738. package/dist/inputs/textarea/textarea.css?inline.js +0 -6
  739. package/dist/inputs/textarea/textarea.css?inline.js.map +0 -1
  740. package/dist/inputs/time-picker/time-picker.css?inline.cjs.map +0 -1
  741. package/dist/inputs/time-picker/time-picker.css?inline.js.map +0 -1
  742. package/dist/layout/box/box.css?inline.cjs.map +0 -1
  743. package/dist/layout/box/box.css?inline.js.map +0 -1
  744. package/dist/layout/grid/grid.css?inline.cjs.map +0 -1
  745. package/dist/layout/grid/grid.css?inline.js.map +0 -1
  746. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +0 -1
  747. package/dist/layout/grid-item/grid-item.css?inline.js.map +0 -1
  748. package/dist/layout/navbar/navbar.css?inline.cjs +0 -2
  749. package/dist/layout/navbar/navbar.css?inline.cjs.map +0 -1
  750. package/dist/layout/navbar/navbar.css?inline.js +0 -6
  751. package/dist/layout/navbar/navbar.css?inline.js.map +0 -1
  752. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +0 -1
  753. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +0 -1
  754. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +0 -1
  755. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +0 -1
  756. package/dist/layout/sidebar/sidebar.css?inline.cjs +0 -2
  757. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +0 -1
  758. package/dist/layout/sidebar/sidebar.css?inline.js +0 -6
  759. package/dist/layout/sidebar/sidebar.css?inline.js.map +0 -1
  760. package/dist/ore/dist/aria.cjs +0 -2
  761. package/dist/ore/dist/aria.cjs.map +0 -1
  762. package/dist/ore/dist/aria.js +0 -37
  763. package/dist/ore/dist/aria.js.map +0 -1
  764. package/dist/ore/dist/context-bag.cjs +0 -2
  765. package/dist/ore/dist/context-bag.cjs.map +0 -1
  766. package/dist/ore/dist/context-bag.js +0 -28
  767. package/dist/ore/dist/context-bag.js.map +0 -1
  768. package/dist/ore/dist/host-bind.cjs +0 -2
  769. package/dist/ore/dist/host-bind.cjs.map +0 -1
  770. package/dist/ore/dist/host-bind.js +0 -60
  771. package/dist/ore/dist/host-bind.js.map +0 -1
  772. package/dist/ore/dist/slots.cjs +0 -2
  773. package/dist/ore/dist/slots.cjs.map +0 -1
  774. package/dist/ore/dist/slots.js +0 -61
  775. package/dist/ore/dist/slots.js.map +0 -1
  776. package/dist/ore/dist/utils/aria.cjs +0 -2
  777. package/dist/ore/dist/utils/aria.cjs.map +0 -1
  778. package/dist/ore/dist/utils/aria.js +0 -6
  779. package/dist/ore/dist/utils/aria.js.map +0 -1
  780. package/dist/ore/dist/utils/emit.cjs +0 -2
  781. package/dist/ore/dist/utils/emit.cjs.map +0 -1
  782. package/dist/ore/dist/utils/emit.js +0 -16
  783. package/dist/ore/dist/utils/emit.js.map +0 -1
  784. package/dist/overlay/dialog/dialog.css?inline.cjs.map +0 -1
  785. package/dist/overlay/dialog/dialog.css?inline.js.map +0 -1
  786. package/dist/overlay/drawer/drawer.css?inline.cjs.map +0 -1
  787. package/dist/overlay/drawer/drawer.css?inline.js.map +0 -1
  788. package/dist/overlay/menu/menu-item.css?inline.cjs.map +0 -1
  789. package/dist/overlay/menu/menu-item.css?inline.js.map +0 -1
  790. package/dist/overlay/menu/menu-separator.css?inline.cjs.map +0 -1
  791. package/dist/overlay/menu/menu-separator.css?inline.js.map +0 -1
  792. package/dist/overlay/menu/menu.css?inline.cjs +0 -2
  793. package/dist/overlay/menu/menu.css?inline.cjs.map +0 -1
  794. package/dist/overlay/menu/menu.css?inline.js +0 -6
  795. package/dist/overlay/menu/menu.css?inline.js.map +0 -1
  796. package/dist/overlay/popover/popover.css?inline.cjs.map +0 -1
  797. package/dist/overlay/popover/popover.css?inline.js.map +0 -1
  798. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +0 -1
  799. package/dist/overlay/tooltip/tooltip.css?inline.js.map +0 -1
package/dist/otp-input.js CHANGED
@@ -2,119 +2,121 @@ import { sizeVariantMixin as e } from "./styles/mixins/shape.css.js";
2
2
  import { colorThemeMixin as t, forcedColorsFocusMixin as n } from "./styles/mixins/theme.css.js";
3
3
  import { disablableBundle as r, sizableBundle as i, themableBundle as a } from "./shared/prop-bundles.js";
4
4
  import { createListControl as o } from "./headless/nav.js";
5
- import { FORM_CTX as s, useFormContext as c } from "./inputs/shared/form-context.js";
6
- import l from "./inputs/otp-input/otp-input.css?inline.js";
7
- import { define as u, html as d, inject as f, prop as p, useField as m } from "@vielzeug/ore";
8
- import { computed as h, signal as g, watch as _ } from "@vielzeug/ripple";
5
+ import { useField as s } from "./ore/dist/forms/field.js";
6
+ import "./ore/dist/forms.js";
7
+ import { FORM_CTX as c, useFormContext as l } from "./inputs/shared/form-context.js";
8
+ import u from "./inputs/otp-input/otp-input.css.js";
9
+ import { bind as d, define as f, getHost as p, html as m, inject as h, onMounted as g, prop as _, useEmit as v } from "@vielzeug/ore";
10
+ import { computed as y, signal as b, watch as x } from "@vielzeug/ripple";
9
11
  //#region src/inputs/otp-input/otp-input.ts
10
- var v = "ore-otp-input";
11
- u(v, {
12
+ var S = "ore-otp-input";
13
+ f(S, {
12
14
  formAssociated: !0,
13
15
  props: {
14
16
  ...a,
15
17
  ...i,
16
18
  ...r,
17
- label: p.string("One-time password"),
18
- length: p.number(6),
19
- masked: p.bool(!1),
20
- name: p.string(),
21
- separator: p.string(),
22
- type: p.oneOf(["numeric", "alphanumeric"], "numeric"),
23
- value: p.string(),
24
- variant: p.string()
19
+ label: _.string("One-time password"),
20
+ length: _.number(6),
21
+ masked: _.bool(!1),
22
+ name: _.string(),
23
+ separator: _.string(),
24
+ type: _.oneOf(["numeric", "alphanumeric"], "numeric"),
25
+ value: _.string(),
26
+ variant: _.string()
25
27
  },
26
- setup(e, { bind: t, el: n, emit: r, onMounted: i }) {
27
- let a = c(t, e, f(s)), l = h(() => Number(e.length.value) || 6), u = a.disabled, p = h(() => Array.from({ length: l.value }, (e, t) => t)), v = g(String(e.value.value || "")), y = () => String(e.value.value || "");
28
- m({
29
- disabled: u,
28
+ setup(e) {
29
+ let t = p(), n = v(), r = l(e, h(c)), i = y(() => Number(e.length.value) || 6), a = r.disabled, u = y(() => Array.from({ length: i.value }, (e, t) => t)), f = b(String(e.value.value || "")), _ = () => String(e.value.value || "");
30
+ s({
31
+ disabled: a,
30
32
  toFormValue: (e) => e,
31
- value: v
32
- }), t({ attr: {
33
- size: a.size,
34
- value: () => v.value || null,
35
- variant: a.variant
33
+ value: f
34
+ }), d({ attr: {
35
+ size: r.size,
36
+ value: () => f.value || null,
37
+ variant: r.variant
36
38
  } });
37
- function b() {
38
- return [...n.shadowRoot?.querySelectorAll("input.cell") ?? []];
39
+ function S() {
40
+ return [...t.shadowRoot?.querySelectorAll("input.cell") ?? []];
39
41
  }
40
- let x = o({
41
- getItems: () => b(),
42
+ let C = o({
43
+ getItems: () => S(),
42
44
  keys: {
43
45
  next: ["ArrowRight"],
44
46
  prev: ["ArrowLeft"]
45
47
  },
46
48
  loop: !1,
47
49
  onNavigate: (e, t) => {
48
- b()[t]?.focus();
50
+ S()[t]?.focus();
49
51
  }
50
52
  });
51
- function S() {
52
- return b().map((e) => e.value).join("");
53
+ function w() {
54
+ return S().map((e) => e.value).join("");
53
55
  }
54
- function C(e) {
55
- let t = b(), n = String(e || "").slice(0, t.length);
56
+ function T(e) {
57
+ let t = S(), n = String(e || "").slice(0, t.length);
56
58
  for (let e of t) e.value = "";
57
59
  n.split("").forEach((e, n) => {
58
60
  t[n] && (t[n].value = e);
59
- }), v.value = S();
61
+ }), f.value = w();
60
62
  }
61
- function w(e, t) {
62
- let n = b(), i = S(), a = t ?? (i.length === n.length && i.split("").every(Boolean));
63
- v.value = i, r("change", {
63
+ function E(e, t) {
64
+ let r = S(), i = w(), a = t ?? (i.length === r.length && i.split("").every(Boolean));
65
+ f.value = i, n("change", {
64
66
  complete: a,
65
67
  originalEvent: e,
66
68
  value: i
67
- }), a && r("complete", {
69
+ }), a && n("complete", {
68
70
  originalEvent: e,
69
71
  value: i
70
72
  });
71
73
  }
72
- function T(t) {
74
+ function D(t) {
73
75
  return e.type.value === "numeric" ? /^\d$/.test(t) : /^[a-z\d]$/i.test(t);
74
76
  }
75
- function E(e, t) {
77
+ function O(e, t) {
76
78
  let n = e.target, r = n.value;
77
- if (r.length > 1 && (r = r.slice(-1)), r && !T(r)) {
79
+ if (r.length > 1 && (r = r.slice(-1)), r && !D(r)) {
78
80
  n.value = "";
79
81
  return;
80
82
  }
81
83
  n.value = r;
82
- let i = b();
83
- w(e), r && t < i.length - 1 && (i[t + 1].focus(), i[t + 1].select());
84
+ let i = S();
85
+ E(e), r && t < i.length - 1 && (i[t + 1].focus(), i[t + 1].select());
84
86
  }
85
- function D(e, t) {
86
- let n = e.target, r = b();
87
- if (x.set(t), e.key === "Backspace") {
87
+ function k(e, t) {
88
+ let n = e.target, r = S();
89
+ if (C.set(t), e.key === "Backspace") {
88
90
  if (n.value) n.value = "";
89
91
  else if (t > 0) {
90
- let e = r[x.navigate("prev")];
92
+ let e = r[C.navigate("prev")];
91
93
  e && (e.select(), e.value = "");
92
94
  }
93
- w(e, !1), e.preventDefault();
94
- } else x.handleKeydown(e);
95
+ E(e, !1), e.preventDefault();
96
+ } else C.handleKeydown(e);
95
97
  }
96
- function O(e) {
98
+ function A(e) {
97
99
  e.preventDefault();
98
- let t = (e.clipboardData?.getData("text") ?? "").split("").filter((e) => T(e)).slice(0, l.value), n = b();
100
+ let t = (e.clipboardData?.getData("text") ?? "").split("").filter((e) => D(e)).slice(0, i.value), n = S();
99
101
  t.forEach((e, t) => {
100
102
  n[t] && (n[t].value = e);
101
- }), w(e), n[Math.min(t.length, n.length - 1)]?.focus();
103
+ }), E(e), n[Math.min(t.length, n.length - 1)]?.focus();
102
104
  }
103
- _(e.value, (e) => {
104
- C(String(e || ""));
105
- }), _(e.length, () => {
106
- requestAnimationFrame(() => C(y()));
105
+ x(e.value, (e) => {
106
+ T(String(e || ""));
107
+ }), x(e.length, () => {
108
+ requestAnimationFrame(() => T(_()));
107
109
  });
108
- let k = h(() => {
110
+ let j = y(() => {
109
111
  let t = Number(e.length.value) || 6;
110
112
  return e.separator.value == null ? -1 : Math.floor(t / 2);
111
113
  });
112
- return i(() => {
113
- C(y());
114
- }), d`
114
+ return g(() => {
115
+ T(_());
116
+ }), m`
115
117
  <div class="otp-group" part="group" role="group" :aria-label="${e.label}">
116
- ${() => p.value.map((t) => d`
117
- ${() => k.value > 0 && t === k.value ? d`<span class="separator" aria-hidden="true">${() => e.separator.value || "-"}</span>` : ""}
118
+ ${() => u.value.map((t) => m`
119
+ ${() => j.value > 0 && t === j.value ? m`<span class="separator" aria-hidden="true">${() => e.separator.value || "-"}</span>` : ""}
118
120
  <input
119
121
  class="cell"
120
122
  part="cell"
@@ -122,11 +124,11 @@ u(v, {
122
124
  :inputmode="${() => e.type.value === "numeric" ? "numeric" : "text"}"
123
125
  maxlength="1"
124
126
  :autocomplete="${() => t === 0 ? "one-time-code" : "off"}"
125
- :aria-label="${() => `Digit ${t + 1} of ${l.value}`}"
126
- :disabled="${() => u.value ? !0 : null}"
127
- @input="${(e) => E(e, t)}"
128
- @keydown="${(e) => D(e, t)}"
129
- @paste="${(e) => t === 0 ? O(e) : e.preventDefault()}"
127
+ :aria-label="${() => `Digit ${t + 1} of ${i.value}`}"
128
+ :disabled="${() => a.value ? !0 : null}"
129
+ @input="${(e) => O(e, t)}"
130
+ @keydown="${(e) => k(e, t)}"
131
+ @paste="${(e) => t === 0 ? A(e) : e.preventDefault()}"
130
132
  @focus="${(e) => e.target.select()}" />
131
133
  `)}
132
134
  </div>
@@ -136,10 +138,10 @@ u(v, {
136
138
  t,
137
139
  e({}),
138
140
  n(".cell"),
139
- l
141
+ u
140
142
  ]
141
143
  });
142
144
  //#endregion
143
- export { v as OTP_INPUT_TAG };
145
+ export { S as OTP_INPUT_TAG };
144
146
 
145
147
  //# sourceMappingURL=otp-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"otp-input.js","names":[],"sources":["../src/inputs/otp-input/otp-input.ts"],"sourcesContent":["import { define, useField, html, inject, prop } from '@vielzeug/ore';\nimport { computed, signal, watch } from '@vielzeug/ripple';\n\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\nimport { createListControl } from '../../headless';\nimport { disablableBundle, sizableBundle, themableBundle } from '../../shared';\nimport { colorThemeMixin, forcedColorsFocusMixin, sizeVariantMixin } from '../../styles';\nimport { FORM_CTX, useFormContext } from '../shared/form-context';\nimport styles from './otp-input.css?inline';\n\nexport type OreOtpInputEvents = {\n change: { complete: boolean; originalEvent?: Event; value: string };\n complete: { originalEvent?: Event; value: string };\n};\n\n/** OTP Input props */\nexport type OreOtpInputProps = {\n /** Theme color */\n color?: ThemeColor;\n /** Make inputs disabled */\n disabled?: boolean;\n /** Accessible label */\n label?: string;\n /** Number of input cells */\n length?: number;\n /** Mask input (show dots instead of characters) */\n masked?: boolean;\n /** Form field name */\n name?: string;\n /** Show a separator in the middle (e.g. \"–\") */\n separator?: string;\n /** Component size */\n size?: ComponentSize;\n /** Input type: 'numeric' (digits only) or 'alphanumeric' */\n type?: 'numeric' | 'alphanumeric';\n /** Current value */\n value?: string;\n /** Visual variant */\n variant?: Exclude<VisualVariant, 'text' | 'frost'>;\n};\n\n/**\n * A segmented OTP (One-Time Password) input with N individual cells.\n * Auto-advances focus on input, auto-backs on Backspace, handles paste.\n *\n * @element ore-otp-input\n *\n * @attr {number} length - Number of cells (default: 6)\n * @attr {string} type - 'numeric' (default) | 'alphanumeric'\n * @attr {string} value - Current code value\n * @attr {boolean} disabled - Disable all cells\n * @attr {boolean} masked - Show as password\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} name - Form field name\n * @attr {string} label - Group aria-label\n * @attr {string} separator - Optional separator character shown in the middle\n *\n * @fires change - Emitted whenever a cell changes. detail: { value: string, complete: boolean, originalEvent?: Event }\n * @fires complete - Emitted when all cells are filled. detail: { value: string, originalEvent?: Event }\n *\n * @slot label - Custom label above the OTP input\n * @slot helper - Custom helper text below the OTP input\n * @slot error - Custom error content below the OTP input\n *\n * @cssprop --otp-cell-size - Width and height of each cell\n * @cssprop --otp-cell-gap - Gap between cells\n * @cssprop --otp-cell-font-size - Font size inside cells\n * @cssprop --otp-cell-radius - Border radius of cells\n * @cssprop --otp-cell-bg - Cell background color\n * @cssprop --otp-cell-border-color - Default border color\n * @cssprop --otp-cell-focus-border - Focused border/caret color\n * @cssprop --otp-cell-hover-bg - Cell background on hover (flat/ghost variants)\n * @cssprop --otp-cell-hover-border-color - Cell border on hover (flat/bordered variants)\n * @cssprop --otp-cell-focus-bg - Cell background when focused (flat variant)\n * @cssprop --otp-cell-focus-border-color - Cell border when focused (flat variant)\n *\n * @part group - Group container.\n * @part cell - Shadow part for the `cell` element.\n * @example\n * ```html\n * <ore-otp-input length=\"6\" color=\"primary\"></ore-otp-input>\n * ```\n */\nexport const OTP_INPUT_TAG = 'ore-otp-input' as const;\ndefine<OreOtpInputProps, OreOtpInputEvents>(OTP_INPUT_TAG, {\n formAssociated: true,\n props: {\n ...themableBundle,\n ...sizableBundle,\n ...disablableBundle,\n label: prop.string('One-time password'),\n length: prop.number(6),\n masked: prop.bool(false),\n name: prop.string(),\n separator: prop.string(),\n type: prop.oneOf(['numeric', 'alphanumeric'] as const, 'numeric'),\n value: prop.string(),\n variant: prop.string<Exclude<VisualVariant, 'text' | 'frost'>>(),\n },\n setup(props, { bind, el, emit, onMounted }) {\n const formCtx = inject(FORM_CTX);\n const fCtxProps = useFormContext(bind, props, formCtx);\n const lengthValue = computed(() => Number(props.length.value) || 6);\n const isDisabled = fCtxProps.disabled;\n const cells = computed(() => Array.from({ length: lengthValue.value }, (_, i) => i));\n const otpValue = signal(String(props.value.value || ''));\n const normalizedPropValue = () => String(props.value.value || '');\n\n // Form association: the joined cell value is the single form value for `name`,\n // since individual per-cell <input> elements inside the shadow root cannot\n // participate in an ancestor <form>'s submission on their own.\n useField<string>({ disabled: isDisabled, toFormValue: (v) => v, value: otpValue });\n\n bind({\n attr: {\n size: fCtxProps.size,\n value: () => otpValue.value || null,\n variant: fCtxProps.variant,\n },\n });\n\n function getInputs(): HTMLInputElement[] {\n return [...(el.shadowRoot?.querySelectorAll<HTMLInputElement>('input.cell') ?? [])];\n }\n\n const listControl = createListControl({\n getItems: () => getInputs(),\n keys: { next: ['ArrowRight'], prev: ['ArrowLeft'] },\n loop: false,\n onNavigate: (_action, index) => {\n const inputs = getInputs();\n\n inputs[index]?.focus();\n },\n });\n\n function getValue(): string {\n return getInputs()\n .map((i) => i.value)\n .join('');\n }\n function syncInputsFromValue(raw: string) {\n const allInputs = getInputs();\n const normalized = String(raw || '').slice(0, allInputs.length);\n\n for (const input of allInputs) input.value = '';\n\n normalized.split('').forEach((c, i) => {\n if (allInputs[i]) allInputs[i].value = c;\n });\n\n otpValue.value = getValue();\n }\n function emitOtpState(originalEvent?: Event, forceComplete?: boolean): void {\n const allInputs = getInputs();\n const full = getValue();\n const complete = forceComplete ?? (full.length === allInputs.length && full.split('').every(Boolean));\n\n otpValue.value = full;\n emit('change', { complete, originalEvent, value: full });\n\n if (complete) emit('complete', { originalEvent, value: full });\n }\n function isAllowed(char: string): boolean {\n if (props.type.value === 'numeric') return /^\\d$/.test(char);\n\n return /^[a-z\\d]$/i.test(char);\n }\n function handleInput(e: Event, index: number) {\n const input = e.target as HTMLInputElement;\n let val = input.value;\n\n // Keep only last character if multiple were typed somehow\n if (val.length > 1) val = val.slice(-1);\n\n // Validate character\n if (val && !isAllowed(val)) {\n input.value = '';\n\n return;\n }\n\n input.value = val;\n\n const allInputs = getInputs();\n\n emitOtpState(e);\n\n // Auto-advance\n if (val && index < allInputs.length - 1) {\n allInputs[index + 1].focus();\n allInputs[index + 1].select();\n }\n }\n function handleKeydown(e: KeyboardEvent, index: number) {\n const input = e.target as HTMLInputElement;\n const allInputs = getInputs();\n\n listControl.set(index);\n\n if (e.key === 'Backspace') {\n if (input.value) {\n input.value = '';\n } else if (index > 0) {\n const prevIndex = listControl.navigate('prev');\n const prevInput = allInputs[prevIndex];\n\n if (prevInput) {\n prevInput.select();\n prevInput.value = '';\n }\n }\n\n emitOtpState(e, false);\n e.preventDefault();\n } else {\n listControl.handleKeydown(e);\n }\n }\n function handlePaste(e: ClipboardEvent) {\n e.preventDefault();\n\n const pasted = e.clipboardData?.getData('text') ?? '';\n const chars = pasted\n .split('')\n .filter((c) => isAllowed(c))\n .slice(0, lengthValue.value);\n const allInputs = getInputs();\n\n chars.forEach((char, i) => {\n if (allInputs[i]) allInputs[i].value = char;\n });\n\n emitOtpState(e);\n\n // Focus the cell after last pasted char\n const focusIdx = Math.min(chars.length, allInputs.length - 1);\n\n allInputs[focusIdx]?.focus();\n }\n\n watch(props.value, (value) => {\n syncInputsFromValue(String(value || ''));\n });\n\n watch(props.length, () => {\n // Cells re-render when length changes; sync after DOM updates.\n requestAnimationFrame(() => syncInputsFromValue(normalizedPropValue()));\n });\n\n const separatorIdx = computed(() => {\n const len = Number(props.length.value) || 6;\n\n return props.separator.value != null ? Math.floor(len / 2) : -1;\n });\n\n onMounted(() => {\n // Populate cells from value prop on mount\n syncInputsFromValue(normalizedPropValue());\n });\n\n return html`\n <div class=\"otp-group\" part=\"group\" role=\"group\" :aria-label=\"${props.label}\">\n ${() =>\n cells.value.map(\n (i) => html`\n ${() =>\n separatorIdx.value > 0 && i === separatorIdx.value\n ? html`<span class=\"separator\" aria-hidden=\"true\">${() => props.separator.value || '-'}</span>`\n : ''}\n <input\n class=\"cell\"\n part=\"cell\"\n :type=\"${() => (props.masked.value ? 'password' : 'text')}\"\n :inputmode=\"${() => (props.type.value === 'numeric' ? 'numeric' : 'text')}\"\n maxlength=\"1\"\n :autocomplete=\"${() => (i === 0 ? 'one-time-code' : 'off')}\"\n :aria-label=\"${() => `Digit ${i + 1} of ${lengthValue.value}`}\"\n :disabled=\"${() => (isDisabled.value ? true : null)}\"\n @input=\"${(e: Event) => handleInput(e, i)}\"\n @keydown=\"${(e: KeyboardEvent) => handleKeydown(e, i)}\"\n @paste=\"${(e: ClipboardEvent) => (i === 0 ? handlePaste(e) : e.preventDefault())}\"\n @focus=\"${(e: FocusEvent) => (e.target as HTMLInputElement).select()}\" />\n `,\n )}\n </div>\n `;\n },\n styles: [colorThemeMixin, sizeVariantMixin({}), forcedColorsFocusMixin('.cell'), styles],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"otp-input.js","names":[],"sources":["../src/inputs/otp-input/otp-input.ts"],"sourcesContent":["import { define, html, inject, prop, bind, getHost, onMounted, useEmit } from '@vielzeug/ore';\nimport { useField } from '@vielzeug/ore/forms';\nimport { computed, signal, watch } from '@vielzeug/ripple';\n\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\nimport { createListControl } from '../../headless';\nimport { disablableBundle, sizableBundle, themableBundle } from '../../shared';\nimport { colorThemeMixin, forcedColorsFocusMixin, sizeVariantMixin } from '../../styles';\nimport { FORM_CTX, useFormContext } from '../shared/form-context';\nimport styles from './otp-input.css?inline';\n\nexport type OreOtpInputEvents = {\n change: { complete: boolean; originalEvent?: Event; value: string };\n complete: { originalEvent?: Event; value: string };\n};\n\n/** OTP Input props */\nexport type OreOtpInputProps = {\n /** Theme color */\n color?: ThemeColor;\n /** Make inputs disabled */\n disabled?: boolean;\n /** Accessible label */\n label?: string;\n /** Number of input cells */\n length?: number;\n /** Mask input (show dots instead of characters) */\n masked?: boolean;\n /** Form field name */\n name?: string;\n /** Show a separator in the middle (e.g. \"–\") */\n separator?: string;\n /** Component size */\n size?: ComponentSize;\n /** Input type: 'numeric' (digits only) or 'alphanumeric' */\n type?: 'numeric' | 'alphanumeric';\n /** Current value */\n value?: string;\n /** Visual variant */\n variant?: Exclude<VisualVariant, 'text' | 'frost'>;\n};\n\n/**\n * A segmented OTP (One-Time Password) input with N individual cells.\n * Auto-advances focus on input, auto-backs on Backspace, handles paste.\n *\n * @element ore-otp-input\n *\n * @attr {number} length - Number of cells (default: 6)\n * @attr {string} type - 'numeric' (default) | 'alphanumeric'\n * @attr {string} value - Current code value\n * @attr {boolean} disabled - Disable all cells\n * @attr {boolean} masked - Show as password\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} name - Form field name\n * @attr {string} label - Group aria-label\n * @attr {string} separator - Optional separator character shown in the middle\n *\n * @fires change - Emitted whenever a cell changes. detail: { value: string, complete: boolean, originalEvent?: Event }\n * @fires complete - Emitted when all cells are filled. detail: { value: string, originalEvent?: Event }\n *\n * @slot label - Custom label above the OTP input\n * @slot helper - Custom helper text below the OTP input\n * @slot error - Custom error content below the OTP input\n *\n * @cssprop --otp-cell-size - Width and height of each cell\n * @cssprop --otp-cell-gap - Gap between cells\n * @cssprop --otp-cell-font-size - Font size inside cells\n * @cssprop --otp-cell-radius - Border radius of cells\n * @cssprop --otp-cell-bg - Cell background color\n * @cssprop --otp-cell-border-color - Default border color\n * @cssprop --otp-cell-focus-border - Focused border/caret color\n * @cssprop --otp-cell-hover-bg - Cell background on hover (flat/ghost variants)\n * @cssprop --otp-cell-hover-border-color - Cell border on hover (flat/bordered variants)\n * @cssprop --otp-cell-focus-bg - Cell background when focused (flat variant)\n * @cssprop --otp-cell-focus-border-color - Cell border when focused (flat variant)\n *\n * @part group - Group container.\n * @part cell - Shadow part for the `cell` element.\n * @example\n * ```html\n * <ore-otp-input length=\"6\" color=\"primary\"></ore-otp-input>\n * ```\n */\nexport const OTP_INPUT_TAG = 'ore-otp-input' as const;\ndefine<OreOtpInputProps>(OTP_INPUT_TAG, {\n formAssociated: true,\n props: {\n ...themableBundle,\n ...sizableBundle,\n ...disablableBundle,\n label: prop.string('One-time password'),\n length: prop.number(6),\n masked: prop.bool(false),\n name: prop.string(),\n separator: prop.string(),\n type: prop.oneOf(['numeric', 'alphanumeric'] as const, 'numeric'),\n value: prop.string(),\n variant: prop.string<Exclude<VisualVariant, 'text' | 'frost'>>(),\n },\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreOtpInputEvents>();\n\n const formCtx = inject(FORM_CTX);\n const fCtxProps = useFormContext(props, formCtx);\n const lengthValue = computed(() => Number(props.length.value) || 6);\n const isDisabled = fCtxProps.disabled;\n const cells = computed(() => Array.from({ length: lengthValue.value }, (_, i) => i));\n const otpValue = signal(String(props.value.value || ''));\n const normalizedPropValue = () => String(props.value.value || '');\n\n // Form association: the joined cell value is the single form value for `name`,\n // since individual per-cell <input> elements inside the shadow root cannot\n // participate in an ancestor <form>'s submission on their own.\n useField<string>({ disabled: isDisabled, toFormValue: (v) => v, value: otpValue });\n\n bind({\n attr: {\n size: fCtxProps.size,\n value: () => otpValue.value || null,\n variant: fCtxProps.variant,\n },\n });\n\n function getInputs(): HTMLInputElement[] {\n return [...(el.shadowRoot?.querySelectorAll<HTMLInputElement>('input.cell') ?? [])];\n }\n\n const listControl = createListControl({\n getItems: () => getInputs(),\n keys: { next: ['ArrowRight'], prev: ['ArrowLeft'] },\n loop: false,\n onNavigate: (_action, index) => {\n const inputs = getInputs();\n\n inputs[index]?.focus();\n },\n });\n\n function getValue(): string {\n return getInputs()\n .map((i) => i.value)\n .join('');\n }\n function syncInputsFromValue(raw: string) {\n const allInputs = getInputs();\n const normalized = String(raw || '').slice(0, allInputs.length);\n\n for (const input of allInputs) input.value = '';\n\n normalized.split('').forEach((c, i) => {\n if (allInputs[i]) allInputs[i].value = c;\n });\n\n otpValue.value = getValue();\n }\n function emitOtpState(originalEvent?: Event, forceComplete?: boolean): void {\n const allInputs = getInputs();\n const full = getValue();\n const complete = forceComplete ?? (full.length === allInputs.length && full.split('').every(Boolean));\n\n otpValue.value = full;\n emit('change', { complete, originalEvent, value: full });\n\n if (complete) emit('complete', { originalEvent, value: full });\n }\n function isAllowed(char: string): boolean {\n if (props.type.value === 'numeric') return /^\\d$/.test(char);\n\n return /^[a-z\\d]$/i.test(char);\n }\n function handleInput(e: Event, index: number) {\n const input = e.target as HTMLInputElement;\n let val = input.value;\n\n // Keep only last character if multiple were typed somehow\n if (val.length > 1) val = val.slice(-1);\n\n // Validate character\n if (val && !isAllowed(val)) {\n input.value = '';\n\n return;\n }\n\n input.value = val;\n\n const allInputs = getInputs();\n\n emitOtpState(e);\n\n // Auto-advance\n if (val && index < allInputs.length - 1) {\n allInputs[index + 1].focus();\n allInputs[index + 1].select();\n }\n }\n function handleKeydown(e: KeyboardEvent, index: number) {\n const input = e.target as HTMLInputElement;\n const allInputs = getInputs();\n\n listControl.set(index);\n\n if (e.key === 'Backspace') {\n if (input.value) {\n input.value = '';\n } else if (index > 0) {\n const prevIndex = listControl.navigate('prev');\n const prevInput = allInputs[prevIndex];\n\n if (prevInput) {\n prevInput.select();\n prevInput.value = '';\n }\n }\n\n emitOtpState(e, false);\n e.preventDefault();\n } else {\n listControl.handleKeydown(e);\n }\n }\n function handlePaste(e: ClipboardEvent) {\n e.preventDefault();\n\n const pasted = e.clipboardData?.getData('text') ?? '';\n const chars = pasted\n .split('')\n .filter((c) => isAllowed(c))\n .slice(0, lengthValue.value);\n const allInputs = getInputs();\n\n chars.forEach((char, i) => {\n if (allInputs[i]) allInputs[i].value = char;\n });\n\n emitOtpState(e);\n\n // Focus the cell after last pasted char\n const focusIdx = Math.min(chars.length, allInputs.length - 1);\n\n allInputs[focusIdx]?.focus();\n }\n\n watch(props.value, (value) => {\n syncInputsFromValue(String(value || ''));\n });\n\n watch(props.length, () => {\n // Cells re-render when length changes; sync after DOM updates.\n requestAnimationFrame(() => syncInputsFromValue(normalizedPropValue()));\n });\n\n const separatorIdx = computed(() => {\n const len = Number(props.length.value) || 6;\n\n return props.separator.value != null ? Math.floor(len / 2) : -1;\n });\n\n onMounted(() => {\n // Populate cells from value prop on mount\n syncInputsFromValue(normalizedPropValue());\n });\n\n return html`\n <div class=\"otp-group\" part=\"group\" role=\"group\" :aria-label=\"${props.label}\">\n ${() =>\n cells.value.map(\n (i) => html`\n ${() =>\n separatorIdx.value > 0 && i === separatorIdx.value\n ? html`<span class=\"separator\" aria-hidden=\"true\">${() => props.separator.value || '-'}</span>`\n : ''}\n <input\n class=\"cell\"\n part=\"cell\"\n :type=\"${() => (props.masked.value ? 'password' : 'text')}\"\n :inputmode=\"${() => (props.type.value === 'numeric' ? 'numeric' : 'text')}\"\n maxlength=\"1\"\n :autocomplete=\"${() => (i === 0 ? 'one-time-code' : 'off')}\"\n :aria-label=\"${() => `Digit ${i + 1} of ${lengthValue.value}`}\"\n :disabled=\"${() => (isDisabled.value ? true : null)}\"\n @input=\"${(e: Event) => handleInput(e, i)}\"\n @keydown=\"${(e: KeyboardEvent) => handleKeydown(e, i)}\"\n @paste=\"${(e: ClipboardEvent) => (i === 0 ? handlePaste(e) : e.preventDefault())}\"\n @focus=\"${(e: FocusEvent) => (e.target as HTMLInputElement).select()}\" />\n `,\n )}\n </div>\n `;\n },\n styles: [colorThemeMixin, sizeVariantMixin({}), forcedColorsFocusMixin('.cell'), styles],\n});\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ function e(e){return e.filter(e=>e.localName===`ore-command-palette-item`).map(e=>({disabled:e.hasAttribute(`disabled`),group:e.getAttribute(`group`)??void 0,icon:e.getAttribute(`icon`)??void 0,keywords:(e.getAttribute(`keywords`)??``).split(`,`).map(e=>e.trim()).filter(Boolean),label:e.getAttribute(`label`)||[...e.childNodes].filter(e=>e.nodeType===Node.TEXT_NODE).map(e=>e.textContent?.trim()).filter(Boolean).join(` `)||``,shortcut:e.getAttribute(`shortcut`)??void 0,value:e.getAttribute(`value`)??``}))}function t(e){return e.split(`+`).map(e=>e.trim()).filter(Boolean)}function n(e){return{disabled:!!e.disabled,group:e.group,icon:e.icon,keywords:e.keywords??[],label:e.label??e.value,shortcut:e.shortcut,value:e.value}}function r(e,t,n){if(n)return e;let r=t.toLowerCase().trim();return r?e.filter(e=>e.label.toLowerCase().includes(r)||e.value.toLowerCase().includes(r)||e.keywords.some(e=>e.toLowerCase().includes(r))):e}function i(e){let t=new Map;for(let n of e){let e=n.group,r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)}let n=[],r=0;for(let[e,i]of t){e!==void 0&&n.push({group:e,type:`group`});for(let e of i)n.push({idx:r++,item:e,type:`item`})}return n}exports.buildRows=i,exports.filterItems=r,exports.normalizeItem=n,exports.parseSlottedItems=e,exports.splitShortcutKeys=t;
2
+ //# sourceMappingURL=command-palette-items.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette-items.cjs","names":[],"sources":["../../../src/overlay/command-palette/command-palette-items.ts"],"sourcesContent":["import type { CommandPaletteItem, CommandPaletteItemInput } from './command-palette.types';\n\n// ── Flat row model ────────────────────────────────────────────────────────────\n// Items are grouped by `group` (preserving first-seen order) and flattened into a\n// single list of rows so the listbox can render group headings inline while\n// keyboard navigation still walks a single, index-addressable sequence.\n\nexport type CommandPaletteRow =\n { group: string; type: 'group' } | { idx: number; item: CommandPaletteItem; type: 'item' };\n\nexport function parseSlottedItems(elements: Element[]): CommandPaletteItem[] {\n return elements\n .filter((el) => el.localName === 'ore-command-palette-item')\n .map((el) => ({\n disabled: el.hasAttribute('disabled'),\n group: el.getAttribute('group') ?? undefined,\n icon: el.getAttribute('icon') ?? undefined,\n keywords: (el.getAttribute('keywords') ?? '')\n .split(',')\n .map((term) => term.trim())\n .filter(Boolean),\n label:\n el.getAttribute('label') ||\n [...el.childNodes]\n .filter((node) => node.nodeType === Node.TEXT_NODE)\n .map((node) => node.textContent?.trim())\n .filter(Boolean)\n .join(' ') ||\n '',\n shortcut: el.getAttribute('shortcut') ?? undefined,\n value: el.getAttribute('value') ?? '',\n }));\n}\n\n/**\n * Splits a display-only shortcut hint into individual keys so each can be rendered in its\n * own `<kbd>`. Keys are separated with `+` (e.g. `\"⌘+N\"` → `[\"⌘\", \"N\"]`); a shortcut with no\n * `+` renders as a single key, unchanged. A literal `+` key can't be represented this way —\n * spell it out instead (e.g. `\"Ctrl+Plus\"`).\n */\nexport function splitShortcutKeys(shortcut: string): string[] {\n return shortcut\n .split('+')\n .map((key) => key.trim())\n .filter(Boolean);\n}\n\nexport function normalizeItem(input: CommandPaletteItemInput): CommandPaletteItem {\n return {\n disabled: Boolean(input.disabled),\n group: input.group,\n icon: input.icon,\n keywords: input.keywords ?? [],\n label: input.label ?? input.value,\n shortcut: input.shortcut,\n value: input.value,\n };\n}\n\nexport function filterItems(items: CommandPaletteItem[], query: string, noFilter: boolean): CommandPaletteItem[] {\n if (noFilter) return items;\n\n const normalizedQuery = query.toLowerCase().trim();\n\n if (!normalizedQuery) return items;\n\n return items.filter(\n (item) =>\n item.label.toLowerCase().includes(normalizedQuery) ||\n item.value.toLowerCase().includes(normalizedQuery) ||\n item.keywords.some((keyword) => keyword.toLowerCase().includes(normalizedQuery)),\n );\n}\n\n/** Groups items by `group` (first-seen order) and flattens into index-addressable rows. */\nexport function buildRows(items: CommandPaletteItem[]): CommandPaletteRow[] {\n const groups = new Map<string | undefined, CommandPaletteItem[]>();\n\n for (const item of items) {\n const key = item.group;\n let bucket = groups.get(key);\n\n if (!bucket) {\n bucket = [];\n groups.set(key, bucket);\n }\n\n bucket.push(item);\n }\n\n const rows: CommandPaletteRow[] = [];\n let idx = 0;\n\n for (const [group, groupItems] of groups) {\n if (group !== undefined) rows.push({ group, type: 'group' });\n\n for (const item of groupItems) rows.push({ idx: idx++, item, type: 'item' });\n }\n\n return rows;\n}\n"],"mappings":"AAUA,SAAgB,EAAkB,EAA2C,CAC3E,OAAO,EACJ,OAAQ,GAAO,EAAG,YAAc,0BAA0B,CAAC,CAC3D,IAAK,IAAQ,CACZ,SAAU,EAAG,aAAa,UAAU,EACpC,MAAO,EAAG,aAAa,OAAO,GAAK,IAAA,GACnC,KAAM,EAAG,aAAa,MAAM,GAAK,IAAA,GACjC,UAAW,EAAG,aAAa,UAAU,GAAK,GAAA,CACvC,MAAM,GAAG,CAAC,CACV,IAAK,GAAS,EAAK,KAAK,CAAC,CAAC,CAC1B,OAAO,OAAO,EACjB,MACE,EAAG,aAAa,OAAO,GACvB,CAAC,GAAG,EAAG,UAAU,CAAC,CACf,OAAQ,GAAS,EAAK,WAAa,KAAK,SAAS,CAAC,CAClD,IAAK,GAAS,EAAK,aAAa,KAAK,CAAC,CAAC,CACvC,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,GACX,GACF,SAAU,EAAG,aAAa,UAAU,GAAK,IAAA,GACzC,MAAO,EAAG,aAAa,OAAO,GAAK,EACrC,EAAE,CACN,CAQA,SAAgB,EAAkB,EAA4B,CAC5D,OAAO,EACJ,MAAM,GAAG,CAAC,CACV,IAAK,GAAQ,EAAI,KAAK,CAAC,CAAC,CACxB,OAAO,OAAO,CACnB,CAEA,SAAgB,EAAc,EAAoD,CAChF,MAAO,CACL,SAAU,EAAQ,EAAM,SACxB,MAAO,EAAM,MACb,KAAM,EAAM,KACZ,SAAU,EAAM,UAAY,CAAC,EAC7B,MAAO,EAAM,OAAS,EAAM,MAC5B,SAAU,EAAM,SAChB,MAAO,EAAM,KACf,CACF,CAEA,SAAgB,EAAY,EAA6B,EAAe,EAAyC,CAC/G,GAAI,EAAU,OAAO,EAErB,IAAM,EAAkB,EAAM,YAAY,CAAC,CAAC,KAAK,EAIjD,OAFK,EAEE,EAAM,OACV,GACC,EAAK,MAAM,YAAY,CAAC,CAAC,SAAS,CAAe,GACjD,EAAK,MAAM,YAAY,CAAC,CAAC,SAAS,CAAe,GACjD,EAAK,SAAS,KAAM,GAAY,EAAQ,YAAY,CAAC,CAAC,SAAS,CAAe,CAAC,CACnF,EAP6B,CAQ/B,CAGA,SAAgB,EAAU,EAAkD,CAC1E,IAAM,EAAS,IAAI,IAEnB,IAAK,IAAM,KAAQ,EAAO,CACxB,IAAM,EAAM,EAAK,MACb,EAAS,EAAO,IAAI,CAAG,EAEtB,IACH,EAAS,CAAC,EACV,EAAO,IAAI,EAAK,CAAM,GAGxB,EAAO,KAAK,CAAI,CAClB,CAEA,IAAM,EAA4B,CAAC,EAC/B,EAAM,EAEV,IAAK,GAAM,CAAC,EAAO,KAAe,EAAQ,CACpC,IAAU,IAAA,IAAW,EAAK,KAAK,CAAE,QAAO,KAAM,OAAQ,CAAC,EAE3D,IAAK,IAAM,KAAQ,EAAY,EAAK,KAAK,CAAE,IAAK,IAAO,OAAM,KAAM,MAAO,CAAC,CAC7E,CAEA,OAAO,CACT"}
@@ -0,0 +1,22 @@
1
+ import type { CommandPaletteItem, CommandPaletteItemInput } from './command-palette.types';
2
+ export type CommandPaletteRow = {
3
+ group: string;
4
+ type: 'group';
5
+ } | {
6
+ idx: number;
7
+ item: CommandPaletteItem;
8
+ type: 'item';
9
+ };
10
+ export declare function parseSlottedItems(elements: Element[]): CommandPaletteItem[];
11
+ /**
12
+ * Splits a display-only shortcut hint into individual keys so each can be rendered in its
13
+ * own `<kbd>`. Keys are separated with `+` (e.g. `"⌘+N"` → `["⌘", "N"]`); a shortcut with no
14
+ * `+` renders as a single key, unchanged. A literal `+` key can't be represented this way —
15
+ * spell it out instead (e.g. `"Ctrl+Plus"`).
16
+ */
17
+ export declare function splitShortcutKeys(shortcut: string): string[];
18
+ export declare function normalizeItem(input: CommandPaletteItemInput): CommandPaletteItem;
19
+ export declare function filterItems(items: CommandPaletteItem[], query: string, noFilter: boolean): CommandPaletteItem[];
20
+ /** Groups items by `group` (first-seen order) and flattens into index-addressable rows. */
21
+ export declare function buildRows(items: CommandPaletteItem[]): CommandPaletteRow[];
22
+ //# sourceMappingURL=command-palette-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette-items.d.ts","sourceRoot":"","sources":["../../../src/overlay/command-palette/command-palette-items.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAO3F,MAAM,MAAM,iBAAiB,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7F,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAsB3E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAK5D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAUhF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAa/G;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,EAAE,CAyB1E"}
@@ -0,0 +1,55 @@
1
+ //#region src/overlay/command-palette/command-palette-items.ts
2
+ function e(e) {
3
+ return e.filter((e) => e.localName === "ore-command-palette-item").map((e) => ({
4
+ disabled: e.hasAttribute("disabled"),
5
+ group: e.getAttribute("group") ?? void 0,
6
+ icon: e.getAttribute("icon") ?? void 0,
7
+ keywords: (e.getAttribute("keywords") ?? "").split(",").map((e) => e.trim()).filter(Boolean),
8
+ label: e.getAttribute("label") || [...e.childNodes].filter((e) => e.nodeType === Node.TEXT_NODE).map((e) => e.textContent?.trim()).filter(Boolean).join(" ") || "",
9
+ shortcut: e.getAttribute("shortcut") ?? void 0,
10
+ value: e.getAttribute("value") ?? ""
11
+ }));
12
+ }
13
+ function t(e) {
14
+ return e.split("+").map((e) => e.trim()).filter(Boolean);
15
+ }
16
+ function n(e) {
17
+ return {
18
+ disabled: !!e.disabled,
19
+ group: e.group,
20
+ icon: e.icon,
21
+ keywords: e.keywords ?? [],
22
+ label: e.label ?? e.value,
23
+ shortcut: e.shortcut,
24
+ value: e.value
25
+ };
26
+ }
27
+ function r(e, t, n) {
28
+ if (n) return e;
29
+ let r = t.toLowerCase().trim();
30
+ return r ? e.filter((e) => e.label.toLowerCase().includes(r) || e.value.toLowerCase().includes(r) || e.keywords.some((e) => e.toLowerCase().includes(r))) : e;
31
+ }
32
+ function i(e) {
33
+ let t = /* @__PURE__ */ new Map();
34
+ for (let n of e) {
35
+ let e = n.group, r = t.get(e);
36
+ r || (r = [], t.set(e, r)), r.push(n);
37
+ }
38
+ let n = [], r = 0;
39
+ for (let [e, i] of t) {
40
+ e !== void 0 && n.push({
41
+ group: e,
42
+ type: "group"
43
+ });
44
+ for (let e of i) n.push({
45
+ idx: r++,
46
+ item: e,
47
+ type: "item"
48
+ });
49
+ }
50
+ return n;
51
+ }
52
+ //#endregion
53
+ export { i as buildRows, r as filterItems, n as normalizeItem, e as parseSlottedItems, t as splitShortcutKeys };
54
+
55
+ //# sourceMappingURL=command-palette-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette-items.js","names":[],"sources":["../../../src/overlay/command-palette/command-palette-items.ts"],"sourcesContent":["import type { CommandPaletteItem, CommandPaletteItemInput } from './command-palette.types';\n\n// ── Flat row model ────────────────────────────────────────────────────────────\n// Items are grouped by `group` (preserving first-seen order) and flattened into a\n// single list of rows so the listbox can render group headings inline while\n// keyboard navigation still walks a single, index-addressable sequence.\n\nexport type CommandPaletteRow =\n { group: string; type: 'group' } | { idx: number; item: CommandPaletteItem; type: 'item' };\n\nexport function parseSlottedItems(elements: Element[]): CommandPaletteItem[] {\n return elements\n .filter((el) => el.localName === 'ore-command-palette-item')\n .map((el) => ({\n disabled: el.hasAttribute('disabled'),\n group: el.getAttribute('group') ?? undefined,\n icon: el.getAttribute('icon') ?? undefined,\n keywords: (el.getAttribute('keywords') ?? '')\n .split(',')\n .map((term) => term.trim())\n .filter(Boolean),\n label:\n el.getAttribute('label') ||\n [...el.childNodes]\n .filter((node) => node.nodeType === Node.TEXT_NODE)\n .map((node) => node.textContent?.trim())\n .filter(Boolean)\n .join(' ') ||\n '',\n shortcut: el.getAttribute('shortcut') ?? undefined,\n value: el.getAttribute('value') ?? '',\n }));\n}\n\n/**\n * Splits a display-only shortcut hint into individual keys so each can be rendered in its\n * own `<kbd>`. Keys are separated with `+` (e.g. `\"⌘+N\"` → `[\"⌘\", \"N\"]`); a shortcut with no\n * `+` renders as a single key, unchanged. A literal `+` key can't be represented this way —\n * spell it out instead (e.g. `\"Ctrl+Plus\"`).\n */\nexport function splitShortcutKeys(shortcut: string): string[] {\n return shortcut\n .split('+')\n .map((key) => key.trim())\n .filter(Boolean);\n}\n\nexport function normalizeItem(input: CommandPaletteItemInput): CommandPaletteItem {\n return {\n disabled: Boolean(input.disabled),\n group: input.group,\n icon: input.icon,\n keywords: input.keywords ?? [],\n label: input.label ?? input.value,\n shortcut: input.shortcut,\n value: input.value,\n };\n}\n\nexport function filterItems(items: CommandPaletteItem[], query: string, noFilter: boolean): CommandPaletteItem[] {\n if (noFilter) return items;\n\n const normalizedQuery = query.toLowerCase().trim();\n\n if (!normalizedQuery) return items;\n\n return items.filter(\n (item) =>\n item.label.toLowerCase().includes(normalizedQuery) ||\n item.value.toLowerCase().includes(normalizedQuery) ||\n item.keywords.some((keyword) => keyword.toLowerCase().includes(normalizedQuery)),\n );\n}\n\n/** Groups items by `group` (first-seen order) and flattens into index-addressable rows. */\nexport function buildRows(items: CommandPaletteItem[]): CommandPaletteRow[] {\n const groups = new Map<string | undefined, CommandPaletteItem[]>();\n\n for (const item of items) {\n const key = item.group;\n let bucket = groups.get(key);\n\n if (!bucket) {\n bucket = [];\n groups.set(key, bucket);\n }\n\n bucket.push(item);\n }\n\n const rows: CommandPaletteRow[] = [];\n let idx = 0;\n\n for (const [group, groupItems] of groups) {\n if (group !== undefined) rows.push({ group, type: 'group' });\n\n for (const item of groupItems) rows.push({ idx: idx++, item, type: 'item' });\n }\n\n return rows;\n}\n"],"mappings":";AAUA,SAAgB,EAAkB,GAA2C;CAC3E,OAAO,EACJ,QAAQ,MAAO,EAAG,cAAc,0BAA0B,CAAC,CAC3D,KAAK,OAAQ;EACZ,UAAU,EAAG,aAAa,UAAU;EACpC,OAAO,EAAG,aAAa,OAAO,KAAK,KAAA;EACnC,MAAM,EAAG,aAAa,MAAM,KAAK,KAAA;EACjC,WAAW,EAAG,aAAa,UAAU,KAAK,GAAA,CACvC,MAAM,GAAG,CAAC,CACV,KAAK,MAAS,EAAK,KAAK,CAAC,CAAC,CAC1B,OAAO,OAAO;EACjB,OACE,EAAG,aAAa,OAAO,KACvB,CAAC,GAAG,EAAG,UAAU,CAAC,CACf,QAAQ,MAAS,EAAK,aAAa,KAAK,SAAS,CAAC,CAClD,KAAK,MAAS,EAAK,aAAa,KAAK,CAAC,CAAC,CACvC,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,KACX;EACF,UAAU,EAAG,aAAa,UAAU,KAAK,KAAA;EACzC,OAAO,EAAG,aAAa,OAAO,KAAK;CACrC,EAAE;AACN;AAQA,SAAgB,EAAkB,GAA4B;CAC5D,OAAO,EACJ,MAAM,GAAG,CAAC,CACV,KAAK,MAAQ,EAAI,KAAK,CAAC,CAAC,CACxB,OAAO,OAAO;AACnB;AAEA,SAAgB,EAAc,GAAoD;CAChF,OAAO;EACL,UAAU,EAAQ,EAAM;EACxB,OAAO,EAAM;EACb,MAAM,EAAM;EACZ,UAAU,EAAM,YAAY,CAAC;EAC7B,OAAO,EAAM,SAAS,EAAM;EAC5B,UAAU,EAAM;EAChB,OAAO,EAAM;CACf;AACF;AAEA,SAAgB,EAAY,GAA6B,GAAe,GAAyC;CAC/G,IAAI,GAAU,OAAO;CAErB,IAAM,IAAkB,EAAM,YAAY,CAAC,CAAC,KAAK;CAIjD,OAFK,IAEE,EAAM,QACV,MACC,EAAK,MAAM,YAAY,CAAC,CAAC,SAAS,CAAe,KACjD,EAAK,MAAM,YAAY,CAAC,CAAC,SAAS,CAAe,KACjD,EAAK,SAAS,MAAM,MAAY,EAAQ,YAAY,CAAC,CAAC,SAAS,CAAe,CAAC,CACnF,IAP6B;AAQ/B;AAGA,SAAgB,EAAU,GAAkD;CAC1E,IAAM,oBAAS,IAAI,IAA8C;CAEjE,KAAK,IAAM,KAAQ,GAAO;EACxB,IAAM,IAAM,EAAK,OACb,IAAS,EAAO,IAAI,CAAG;EAO3B,AALK,MACH,IAAS,CAAC,GACV,EAAO,IAAI,GAAK,CAAM,IAGxB,EAAO,KAAK,CAAI;CAClB;CAEA,IAAM,IAA4B,CAAC,GAC/B,IAAM;CAEV,KAAK,IAAM,CAAC,GAAO,MAAe,GAAQ;EACxC,AAAI,MAAU,KAAA,KAAW,EAAK,KAAK;GAAE;GAAO,MAAM;EAAQ,CAAC;EAE3D,KAAK,IAAM,KAAQ,GAAY,EAAK,KAAK;GAAE,KAAK;GAAO;GAAM,MAAM;EAAO,CAAC;CAC7E;CAEA,OAAO;AACT"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer refine.base{:host{--_radius:var(--command-palette-radius,var(--rounded-lg));--_max-width:var(--command-palette-max-width,40rem);--_backdrop-bg:var(--command-palette-backdrop,color-mix(in oklch, var(--color-canvas) 40%, transparent));--_panel-bg:var(--command-palette-bg,var(--color-canvas));--_panel-border-color:var(--command-palette-border-color,var(--color-divider));--_option-hover-bg:var(--command-palette-option-hover-bg,var(--color-contrast-100));--_option-focus-bg:var(--command-palette-option-focus-bg,color-mix(in oklch, var(--color-primary) 12%, var(--color-contrast-100)));display:contents}dialog{all:unset;box-sizing:border-box;pointer-events:none;width:100%;max-width:100%;height:100%;max-height:100%;transition:display .2s allow-discrete, overlay .2s allow-discrete;padding-top:min(14vh, var(--size-24));background:0 0;border:none;justify-content:center;align-items:flex-start;margin:0;display:flex;position:fixed;inset:0;overflow:hidden}dialog:not([open]),dialog:not([open]) .panel{display:none}dialog[open]{pointer-events:auto}dialog::backdrop{background:var(--_backdrop-bg);opacity:1;-webkit-backdrop-filter:blur(var(--blur-xs));backdrop-filter:blur(var(--blur-xs));transition:opacity var(--transition-normal), overlay var(--transition-normal) allow-discrete, display var(--transition-normal) allow-discrete}@starting-style{dialog::backdrop{opacity:0}}dialog.closing::backdrop{opacity:0}.panel{box-sizing:border-box;width:var(--_max-width);max-width:calc(100vw - var(--size-8));max-height:min(28rem, calc(100dvh - var(--size-16)));background:var(--_panel-bg);border:var(--border) solid var(--_panel-border-color);border-radius:var(--_radius);box-shadow:var(--command-palette-shadow,var(--shadow-2xl));opacity:1;-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));transition:opacity .2s var(--ease-spring), transform .2s var(--ease-spring);flex-direction:column;display:flex;position:relative;overflow:hidden;transform:scale(1)translateY(0)}@starting-style{.panel{opacity:0;transform:scale(var(--overlay-enter-scale-dialog)) translateY(-4px)}}dialog.closing .panel{opacity:0;transform:scale(var(--overlay-enter-scale-dialog)) translateY(-4px);transition:opacity .15s var(--ease-spring), transform .15s var(--ease-spring)}@media (width<=640px){.panel{width:calc(100vw - var(--size-4));max-width:calc(100vw - var(--size-4))}dialog{padding-top:var(--size-4)}}.search{gap:var(--size-2);padding:var(--size-3) var(--size-4);border-bottom:var(--border) solid var(--color-contrast-100);flex-shrink:0;align-items:center;display:flex}.search-icon{color:var(--color-contrast-400);flex-shrink:0;display:inline-flex}.search-input{min-width:0;font:inherit;font-size:var(--text-md);color:var(--color-contrast-900);background:0 0;border:none;outline:none;flex:1;padding:0}.search-input::placeholder{color:var(--color-contrast-400)}.search-loader{border:2px solid var(--color-contrast-300);width:1em;height:1em;animation:command-palette-spin var(--transition-loader) infinite;border-radius:50%;flex-shrink:0;display:inline-flex}.search-loader:not(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-right-color:#0000}.search-loader:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-left-color:#0000}.search-loader[hidden]{display:none}@keyframes command-palette-spin{to{transform:rotate(360deg)}}.listbox{padding:var(--size-1);overscroll-behavior:contain;scrollbar-width:thin;flex:1;overflow-y:auto}.empty{padding:var(--size-6) var(--size-3);font-size:var(--text-sm);color:var(--color-contrast-400);text-align:center}.group-heading{padding:var(--size-2) var(--size-2-5) var(--size-1);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:var(--tracking-wide,.05em)}.item{gap:var(--size-2-5);padding:var(--size-2) var(--size-2-5);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-contrast-800);cursor:pointer;border-radius:var(--rounded-md);transition:background var(--transition-fast);align-items:center;display:flex}.item:hover:not([data-disabled]){background:var(--_option-hover-bg)}.item[data-focused]:not([data-disabled]){background:var(--_option-focus-bg)}.item[data-disabled]{color:var(--color-contrast-400);cursor:not-allowed;opacity:.6}.item-icon{color:var(--color-contrast-500);flex-shrink:0;align-items:center;display:inline-flex}.item-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.item-shortcut{gap:var(--size-1);flex-shrink:0;display:inline-flex}.item-shortcut kbd{padding:var(--size-0-5) var(--size-1-5);font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--color-contrast-500);background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);border-bottom-width:calc(var(--border) + 1px);border-radius:var(--rounded-sm)}.footer{gap:var(--size-4);padding:var(--size-2) var(--size-4);font-size:var(--text-xs);color:var(--color-contrast-500);border-top:var(--border) solid var(--color-contrast-100);flex-shrink:0;align-items:center;display:flex}.footer-hint{gap:var(--size-1);align-items:center;display:inline-flex}.footer kbd{padding:var(--size-0-5) var(--size-1);font-family:inherit;font-size:var(--text-xs);background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);border-bottom-width:calc(var(--border) + 1px);border-radius:var(--rounded-sm)}::slotted(ore-command-palette-item){display:none!important}}`;exports.default=e;
2
+ //# sourceMappingURL=command-palette.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette.css.cjs","names":[],"sources":["../../../src/overlay/command-palette/command-palette.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_radius: var(--command-palette-radius, var(--rounded-lg));\n --_max-width: var(--command-palette-max-width, 40rem);\n --_backdrop-bg: var(--command-palette-backdrop, color-mix(in oklch, var(--color-canvas) 40%, transparent));\n --_panel-bg: var(--command-palette-bg, var(--color-canvas));\n --_panel-border-color: var(--command-palette-border-color, var(--color-divider));\n --_option-hover-bg: var(--command-palette-option-hover-bg, var(--color-contrast-100));\n --_option-focus-bg: var(\n --command-palette-option-focus-bg,\n color-mix(in oklch, var(--color-primary) 12%, var(--color-contrast-100))\n );\n\n display: contents;\n }\n\n /* =====================\n Native <dialog> resets — see ore-dialog for the full rationale.\n ===================== */\n\n dialog {\n all: unset;\n position: fixed;\n inset: 0;\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n padding-block-start: min(14vh, var(--size-24));\n margin: 0;\n overflow: hidden;\n pointer-events: none;\n background: transparent;\n border: none;\n transition:\n display 200ms allow-discrete,\n overlay 200ms allow-discrete;\n }\n\n dialog:not([open]) {\n display: none;\n }\n\n dialog:not([open]) .panel {\n display: none;\n }\n\n dialog[open] {\n pointer-events: auto;\n }\n\n dialog::backdrop {\n background: var(--_backdrop-bg);\n opacity: 1;\n backdrop-filter: blur(var(--blur-xs));\n transition:\n opacity var(--transition-normal),\n overlay var(--transition-normal) allow-discrete,\n display var(--transition-normal) allow-discrete;\n\n @starting-style {\n opacity: 0;\n }\n }\n\n dialog.closing::backdrop {\n opacity: 0;\n }\n\n /* =====================\n Panel\n ===================== */\n\n .panel {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: var(--_max-width);\n max-width: calc(100vw - var(--size-8));\n max-height: min(28rem, calc(100dvh - var(--size-16)));\n overflow: hidden;\n background: var(--_panel-bg);\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_radius);\n box-shadow: var(--command-palette-shadow, var(--shadow-2xl));\n opacity: 1;\n backdrop-filter: blur(var(--blur-md));\n transform: scale(1) translateY(0);\n transition:\n opacity 200ms var(--ease-spring),\n transform 200ms var(--ease-spring);\n\n @starting-style {\n opacity: 0;\n transform: scale(var(--overlay-enter-scale-dialog)) translateY(-4px);\n }\n }\n\n dialog.closing .panel {\n opacity: 0;\n transform: scale(var(--overlay-enter-scale-dialog)) translateY(-4px);\n transition:\n opacity 150ms var(--ease-spring),\n transform 150ms var(--ease-spring);\n }\n\n @media (width <= 640px) {\n .panel {\n width: calc(100vw - var(--size-4));\n max-width: calc(100vw - var(--size-4));\n }\n\n dialog {\n padding-block-start: var(--size-4);\n }\n }\n\n /* =====================\n Search field\n ===================== */\n\n .search {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-2);\n align-items: center;\n padding: var(--size-3) var(--size-4);\n border-block-end: var(--border) solid var(--color-contrast-100);\n }\n\n .search-icon {\n display: inline-flex;\n flex-shrink: 0;\n color: var(--color-contrast-400);\n }\n\n .search-input {\n flex: 1;\n min-width: 0;\n padding: 0;\n font: inherit;\n font-size: var(--text-md);\n color: var(--color-contrast-900);\n outline: none;\n background: transparent;\n border: none;\n }\n\n .search-input::placeholder {\n color: var(--color-contrast-400);\n }\n\n .search-loader {\n display: inline-flex;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n border: 2px solid var(--color-contrast-300);\n border-inline-end-color: transparent;\n border-radius: 50%;\n animation: command-palette-spin var(--transition-loader) infinite;\n }\n\n .search-loader[hidden] {\n display: none;\n }\n\n @keyframes command-palette-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n /* =====================\n Listbox\n ===================== */\n\n .listbox {\n flex: 1;\n padding: var(--size-1);\n overflow-y: auto;\n overscroll-behavior: contain;\n scrollbar-width: thin;\n }\n\n .empty {\n padding: var(--size-6) var(--size-3);\n font-size: var(--text-sm);\n color: var(--color-contrast-400);\n text-align: center;\n }\n\n .group-heading {\n padding: var(--size-2) var(--size-2-5) var(--size-1);\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n text-transform: uppercase;\n letter-spacing: var(--tracking-wide, 0.05em);\n }\n\n .item {\n display: flex;\n gap: var(--size-2-5);\n align-items: center;\n padding: var(--size-2) var(--size-2-5);\n font-size: var(--text-sm);\n line-height: var(--leading-normal);\n color: var(--color-contrast-800);\n cursor: pointer;\n border-radius: var(--rounded-md);\n transition: background var(--transition-fast);\n }\n\n .item:hover:not([data-disabled]) {\n background: var(--_option-hover-bg);\n }\n\n .item[data-focused]:not([data-disabled]) {\n background: var(--_option-focus-bg);\n }\n\n .item[data-disabled] {\n color: var(--color-contrast-400);\n cursor: not-allowed;\n opacity: 0.6;\n }\n\n .item-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n color: var(--color-contrast-500);\n }\n\n .item-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .item-shortcut {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-1);\n }\n\n .item-shortcut kbd {\n padding: var(--size-0-5) var(--size-1-5);\n font-family: var(--font-mono, monospace);\n font-size: var(--text-xs);\n color: var(--color-contrast-500);\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n border-bottom-width: calc(var(--border) + 1px);\n border-radius: var(--rounded-sm);\n }\n\n /* =====================\n Footer hints\n ===================== */\n\n .footer {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-4);\n align-items: center;\n padding: var(--size-2) var(--size-4);\n font-size: var(--text-xs);\n color: var(--color-contrast-500);\n border-block-start: var(--border) solid var(--color-contrast-100);\n }\n\n .footer-hint {\n display: inline-flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .footer kbd {\n padding: var(--size-0-5) var(--size-1);\n font-family: inherit;\n font-size: var(--text-xs);\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n border-bottom-width: calc(var(--border) + 1px);\n border-radius: var(--rounded-sm);\n }\n\n /* Slotted item elements are pure data nodes — never rendered directly. */\n ::slotted(ore-command-palette-item) {\n display: none !important;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/overlay/command-palette/command-palette.css?inline
2
+ var e = "@layer refine.base{:host{--_radius:var(--command-palette-radius,var(--rounded-lg));--_max-width:var(--command-palette-max-width,40rem);--_backdrop-bg:var(--command-palette-backdrop,color-mix(in oklch, var(--color-canvas) 40%, transparent));--_panel-bg:var(--command-palette-bg,var(--color-canvas));--_panel-border-color:var(--command-palette-border-color,var(--color-divider));--_option-hover-bg:var(--command-palette-option-hover-bg,var(--color-contrast-100));--_option-focus-bg:var(--command-palette-option-focus-bg,color-mix(in oklch, var(--color-primary) 12%, var(--color-contrast-100)));display:contents}dialog{all:unset;box-sizing:border-box;pointer-events:none;width:100%;max-width:100%;height:100%;max-height:100%;transition:display .2s allow-discrete, overlay .2s allow-discrete;padding-top:min(14vh, var(--size-24));background:0 0;border:none;justify-content:center;align-items:flex-start;margin:0;display:flex;position:fixed;inset:0;overflow:hidden}dialog:not([open]),dialog:not([open]) .panel{display:none}dialog[open]{pointer-events:auto}dialog::backdrop{background:var(--_backdrop-bg);opacity:1;-webkit-backdrop-filter:blur(var(--blur-xs));backdrop-filter:blur(var(--blur-xs));transition:opacity var(--transition-normal), overlay var(--transition-normal) allow-discrete, display var(--transition-normal) allow-discrete}@starting-style{dialog::backdrop{opacity:0}}dialog.closing::backdrop{opacity:0}.panel{box-sizing:border-box;width:var(--_max-width);max-width:calc(100vw - var(--size-8));max-height:min(28rem, calc(100dvh - var(--size-16)));background:var(--_panel-bg);border:var(--border) solid var(--_panel-border-color);border-radius:var(--_radius);box-shadow:var(--command-palette-shadow,var(--shadow-2xl));opacity:1;-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));transition:opacity .2s var(--ease-spring), transform .2s var(--ease-spring);flex-direction:column;display:flex;position:relative;overflow:hidden;transform:scale(1)translateY(0)}@starting-style{.panel{opacity:0;transform:scale(var(--overlay-enter-scale-dialog)) translateY(-4px)}}dialog.closing .panel{opacity:0;transform:scale(var(--overlay-enter-scale-dialog)) translateY(-4px);transition:opacity .15s var(--ease-spring), transform .15s var(--ease-spring)}@media (width<=640px){.panel{width:calc(100vw - var(--size-4));max-width:calc(100vw - var(--size-4))}dialog{padding-top:var(--size-4)}}.search{gap:var(--size-2);padding:var(--size-3) var(--size-4);border-bottom:var(--border) solid var(--color-contrast-100);flex-shrink:0;align-items:center;display:flex}.search-icon{color:var(--color-contrast-400);flex-shrink:0;display:inline-flex}.search-input{min-width:0;font:inherit;font-size:var(--text-md);color:var(--color-contrast-900);background:0 0;border:none;outline:none;flex:1;padding:0}.search-input::placeholder{color:var(--color-contrast-400)}.search-loader{border:2px solid var(--color-contrast-300);width:1em;height:1em;animation:command-palette-spin var(--transition-loader) infinite;border-radius:50%;flex-shrink:0;display:inline-flex}.search-loader:not(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-right-color:#0000}.search-loader:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-left-color:#0000}.search-loader[hidden]{display:none}@keyframes command-palette-spin{to{transform:rotate(360deg)}}.listbox{padding:var(--size-1);overscroll-behavior:contain;scrollbar-width:thin;flex:1;overflow-y:auto}.empty{padding:var(--size-6) var(--size-3);font-size:var(--text-sm);color:var(--color-contrast-400);text-align:center}.group-heading{padding:var(--size-2) var(--size-2-5) var(--size-1);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-500);text-transform:uppercase;letter-spacing:var(--tracking-wide,.05em)}.item{gap:var(--size-2-5);padding:var(--size-2) var(--size-2-5);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-contrast-800);cursor:pointer;border-radius:var(--rounded-md);transition:background var(--transition-fast);align-items:center;display:flex}.item:hover:not([data-disabled]){background:var(--_option-hover-bg)}.item[data-focused]:not([data-disabled]){background:var(--_option-focus-bg)}.item[data-disabled]{color:var(--color-contrast-400);cursor:not-allowed;opacity:.6}.item-icon{color:var(--color-contrast-500);flex-shrink:0;align-items:center;display:inline-flex}.item-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.item-shortcut{gap:var(--size-1);flex-shrink:0;display:inline-flex}.item-shortcut kbd{padding:var(--size-0-5) var(--size-1-5);font-family:var(--font-mono,monospace);font-size:var(--text-xs);color:var(--color-contrast-500);background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);border-bottom-width:calc(var(--border) + 1px);border-radius:var(--rounded-sm)}.footer{gap:var(--size-4);padding:var(--size-2) var(--size-4);font-size:var(--text-xs);color:var(--color-contrast-500);border-top:var(--border) solid var(--color-contrast-100);flex-shrink:0;align-items:center;display:flex}.footer-hint{gap:var(--size-1);align-items:center;display:inline-flex}.footer kbd{padding:var(--size-0-5) var(--size-1);font-family:inherit;font-size:var(--text-xs);background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);border-bottom-width:calc(var(--border) + 1px);border-radius:var(--rounded-sm)}::slotted(ore-command-palette-item){display:none!important}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=command-palette.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette.css.js","names":[],"sources":["../../../src/overlay/command-palette/command-palette.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_radius: var(--command-palette-radius, var(--rounded-lg));\n --_max-width: var(--command-palette-max-width, 40rem);\n --_backdrop-bg: var(--command-palette-backdrop, color-mix(in oklch, var(--color-canvas) 40%, transparent));\n --_panel-bg: var(--command-palette-bg, var(--color-canvas));\n --_panel-border-color: var(--command-palette-border-color, var(--color-divider));\n --_option-hover-bg: var(--command-palette-option-hover-bg, var(--color-contrast-100));\n --_option-focus-bg: var(\n --command-palette-option-focus-bg,\n color-mix(in oklch, var(--color-primary) 12%, var(--color-contrast-100))\n );\n\n display: contents;\n }\n\n /* =====================\n Native <dialog> resets — see ore-dialog for the full rationale.\n ===================== */\n\n dialog {\n all: unset;\n position: fixed;\n inset: 0;\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n padding-block-start: min(14vh, var(--size-24));\n margin: 0;\n overflow: hidden;\n pointer-events: none;\n background: transparent;\n border: none;\n transition:\n display 200ms allow-discrete,\n overlay 200ms allow-discrete;\n }\n\n dialog:not([open]) {\n display: none;\n }\n\n dialog:not([open]) .panel {\n display: none;\n }\n\n dialog[open] {\n pointer-events: auto;\n }\n\n dialog::backdrop {\n background: var(--_backdrop-bg);\n opacity: 1;\n backdrop-filter: blur(var(--blur-xs));\n transition:\n opacity var(--transition-normal),\n overlay var(--transition-normal) allow-discrete,\n display var(--transition-normal) allow-discrete;\n\n @starting-style {\n opacity: 0;\n }\n }\n\n dialog.closing::backdrop {\n opacity: 0;\n }\n\n /* =====================\n Panel\n ===================== */\n\n .panel {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: var(--_max-width);\n max-width: calc(100vw - var(--size-8));\n max-height: min(28rem, calc(100dvh - var(--size-16)));\n overflow: hidden;\n background: var(--_panel-bg);\n border: var(--border) solid var(--_panel-border-color);\n border-radius: var(--_radius);\n box-shadow: var(--command-palette-shadow, var(--shadow-2xl));\n opacity: 1;\n backdrop-filter: blur(var(--blur-md));\n transform: scale(1) translateY(0);\n transition:\n opacity 200ms var(--ease-spring),\n transform 200ms var(--ease-spring);\n\n @starting-style {\n opacity: 0;\n transform: scale(var(--overlay-enter-scale-dialog)) translateY(-4px);\n }\n }\n\n dialog.closing .panel {\n opacity: 0;\n transform: scale(var(--overlay-enter-scale-dialog)) translateY(-4px);\n transition:\n opacity 150ms var(--ease-spring),\n transform 150ms var(--ease-spring);\n }\n\n @media (width <= 640px) {\n .panel {\n width: calc(100vw - var(--size-4));\n max-width: calc(100vw - var(--size-4));\n }\n\n dialog {\n padding-block-start: var(--size-4);\n }\n }\n\n /* =====================\n Search field\n ===================== */\n\n .search {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-2);\n align-items: center;\n padding: var(--size-3) var(--size-4);\n border-block-end: var(--border) solid var(--color-contrast-100);\n }\n\n .search-icon {\n display: inline-flex;\n flex-shrink: 0;\n color: var(--color-contrast-400);\n }\n\n .search-input {\n flex: 1;\n min-width: 0;\n padding: 0;\n font: inherit;\n font-size: var(--text-md);\n color: var(--color-contrast-900);\n outline: none;\n background: transparent;\n border: none;\n }\n\n .search-input::placeholder {\n color: var(--color-contrast-400);\n }\n\n .search-loader {\n display: inline-flex;\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n border: 2px solid var(--color-contrast-300);\n border-inline-end-color: transparent;\n border-radius: 50%;\n animation: command-palette-spin var(--transition-loader) infinite;\n }\n\n .search-loader[hidden] {\n display: none;\n }\n\n @keyframes command-palette-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n /* =====================\n Listbox\n ===================== */\n\n .listbox {\n flex: 1;\n padding: var(--size-1);\n overflow-y: auto;\n overscroll-behavior: contain;\n scrollbar-width: thin;\n }\n\n .empty {\n padding: var(--size-6) var(--size-3);\n font-size: var(--text-sm);\n color: var(--color-contrast-400);\n text-align: center;\n }\n\n .group-heading {\n padding: var(--size-2) var(--size-2-5) var(--size-1);\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n text-transform: uppercase;\n letter-spacing: var(--tracking-wide, 0.05em);\n }\n\n .item {\n display: flex;\n gap: var(--size-2-5);\n align-items: center;\n padding: var(--size-2) var(--size-2-5);\n font-size: var(--text-sm);\n line-height: var(--leading-normal);\n color: var(--color-contrast-800);\n cursor: pointer;\n border-radius: var(--rounded-md);\n transition: background var(--transition-fast);\n }\n\n .item:hover:not([data-disabled]) {\n background: var(--_option-hover-bg);\n }\n\n .item[data-focused]:not([data-disabled]) {\n background: var(--_option-focus-bg);\n }\n\n .item[data-disabled] {\n color: var(--color-contrast-400);\n cursor: not-allowed;\n opacity: 0.6;\n }\n\n .item-icon {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n color: var(--color-contrast-500);\n }\n\n .item-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .item-shortcut {\n display: inline-flex;\n flex-shrink: 0;\n gap: var(--size-1);\n }\n\n .item-shortcut kbd {\n padding: var(--size-0-5) var(--size-1-5);\n font-family: var(--font-mono, monospace);\n font-size: var(--text-xs);\n color: var(--color-contrast-500);\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n border-bottom-width: calc(var(--border) + 1px);\n border-radius: var(--rounded-sm);\n }\n\n /* =====================\n Footer hints\n ===================== */\n\n .footer {\n display: flex;\n flex-shrink: 0;\n gap: var(--size-4);\n align-items: center;\n padding: var(--size-2) var(--size-4);\n font-size: var(--text-xs);\n color: var(--color-contrast-500);\n border-block-start: var(--border) solid var(--color-contrast-100);\n }\n\n .footer-hint {\n display: inline-flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .footer kbd {\n padding: var(--size-0-5) var(--size-1);\n font-family: inherit;\n font-size: var(--text-xs);\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n border-bottom-width: calc(var(--border) + 1px);\n border-radius: var(--rounded-sm);\n }\n\n /* Slotted item elements are pure data nodes — never rendered directly. */\n ::slotted(ore-command-palette-item) {\n display: none !important;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import '../../content/icon/icon';
2
+ export type { OreCommandPaletteEvents, OreCommandPaletteProps } from './command-palette.types';
3
+ /**
4
+ * A pure data node describing one command. Never rendered directly — `ore-command-palette`
5
+ * reads its attributes/text content and renders the visible row itself.
6
+ *
7
+ * @element ore-command-palette-item
8
+ *
9
+ * @attr {string} value - Value emitted by the `select` event and matched against the search query
10
+ * @attr {string} label - Explicit label text; falls back to the element's text content
11
+ * @attr {string} group - Group heading the item is clustered under
12
+ * @attr {string} shortcut - Display-only keyboard hint rendered at the end of the row, one `<kbd>` per `+`-separated key (e.g. `"⌘+S"` renders two keycaps; a literal `+` key isn't representable — spell it out, e.g. `"Ctrl+Plus"`)
13
+ * @attr {boolean} disabled - Excludes the item from keyboard navigation and selection
14
+ *
15
+ * @slot icon - Optional leading icon content
16
+ *
17
+ * @example
18
+ * ```html
19
+ * <ore-command-palette-item value="new-file" group="File" shortcut="⌘+N">New File</ore-command-palette-item>
20
+ * ```
21
+ */
22
+ export declare const COMMAND_PALETTE_ITEM_TAG: "ore-command-palette-item";
23
+ /**
24
+ * A searchable, keyboard-driven list of commands presented in a centered modal —
25
+ * the "⌘K" pattern popularized by editors and productivity apps. Built on the
26
+ * native `<dialog>` element (focus trap, top-layer stacking, `Escape`-to-close)
27
+ * and `@vielzeug/keymap` for the global shortcut that opens it.
28
+ *
29
+ * @element ore-command-palette
30
+ * @element ore-command-palette-item - Slotted command definition (place in default slot)
31
+ *
32
+ * @attr {boolean} open - Controls the open state of the palette
33
+ * @attr {string} label - Accessible label for the dialog (screen-reader-only heading)
34
+ * @attr {string} placeholder - Placeholder text for the search input
35
+ * @attr {string} shortcut - Global keyboard shortcut (keymap syntax) that toggles the palette. Default `"mod+k"`; set to `""` to disable
36
+ * @attr {boolean} no-filter - Disable built-in client-side filtering (for server-driven search)
37
+ * @attr {boolean} loading - Shows a loading row below the search input
38
+ * @attr {string} empty-text - Message shown when no item matches the query
39
+ * @attr {boolean} keep-open-on-select - Keep the palette open after an item is selected
40
+ *
41
+ * @fires open - Fired when the palette opens. detail: `{ reason }`
42
+ * @fires close - Fired when the palette closes. detail: `{ reason }`
43
+ * @fires search - Fired on every keystroke in the search input. detail: `{ query }`
44
+ * @fires select - Fired when a command is chosen (click or `Enter`). detail: `{ value, label, item }`
45
+ *
46
+ * @slot - `<ore-command-palette-item>` elements (alternative/supplement to the `items` prop)
47
+ *
48
+ * @cssprop --command-palette-bg - Panel background color
49
+ * @cssprop --command-palette-border-color - Panel border color
50
+ * @cssprop --command-palette-radius - Panel border radius
51
+ * @cssprop --command-palette-shadow - Panel drop shadow
52
+ * @cssprop --command-palette-max-width - Maximum panel width
53
+ * @cssprop --command-palette-backdrop - Backdrop overlay color
54
+ * @cssprop --command-palette-option-hover-bg - Item background on hover
55
+ * @cssprop --command-palette-option-focus-bg - Item background when keyboard-focused
56
+ *
57
+ * @part dialog - Dialog root container
58
+ * @part panel - Panel container
59
+ * @part input - Search input
60
+ * @part listbox - Listbox of matching commands
61
+ *
62
+ * @example
63
+ * ```html
64
+ * <ore-command-palette label="Command palette" placeholder="Type a command…">
65
+ * <ore-command-palette-item value="new-file" group="File" shortcut="⌘+N">New File</ore-command-palette-item>
66
+ * <ore-command-palette-item value="open-file" group="File" shortcut="⌘+O">Open File…</ore-command-palette-item>
67
+ * <ore-command-palette-item value="toggle-theme" group="View">Toggle Theme</ore-command-palette-item>
68
+ * </ore-command-palette>
69
+ * ```
70
+ */
71
+ export declare const COMMAND_PALETTE_TAG: "ore-command-palette";
72
+ //# sourceMappingURL=command-palette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/overlay/command-palette/command-palette.ts"],"names":[],"mappings":"AAWA,OAAO,yBAAyB,CAAC;AAGjC,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAE/F;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,wBAAwB,EAAG,0BAAmC,CAAC;AAO5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,mBAAmB,EAAG,qBAA8B,CAAC"}