@vielzeug/refine 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (829) hide show
  1. package/README.md +5 -12
  2. package/dist/_dev.cjs +1 -1
  3. package/dist/_dev.cjs.map +1 -1
  4. package/dist/_dev.js +2 -5
  5. package/dist/_dev.js.map +1 -1
  6. package/dist/_virtual/_rolldown/runtime.cjs +1 -1
  7. package/dist/accordion-item.cjs +26 -24
  8. package/dist/accordion-item.cjs.map +1 -1
  9. package/dist/accordion-item.js +53 -51
  10. package/dist/accordion-item.js.map +1 -1
  11. package/dist/accordion.cjs +3 -1
  12. package/dist/accordion.cjs.map +1 -1
  13. package/dist/accordion.js +5 -3
  14. package/dist/accordion.js.map +1 -1
  15. package/dist/alert.cjs +1 -1
  16. package/dist/alert.cjs.map +1 -1
  17. package/dist/alert.js +1 -1
  18. package/dist/alert.js.map +1 -1
  19. package/dist/async.cjs +14 -12
  20. package/dist/async.cjs.map +1 -1
  21. package/dist/async.js +5 -4
  22. package/dist/async.js.map +1 -1
  23. package/dist/avatar-group.cjs +7 -0
  24. package/dist/avatar-group.cjs.map +1 -0
  25. package/dist/avatar-group.js +34 -0
  26. package/dist/avatar-group.js.map +1 -0
  27. package/dist/avatar.cjs +21 -16
  28. package/dist/avatar.cjs.map +1 -1
  29. package/dist/avatar.js +38 -54
  30. package/dist/avatar.js.map +1 -1
  31. package/dist/badge.cjs +4 -2
  32. package/dist/badge.cjs.map +1 -1
  33. package/dist/badge.js +6 -4
  34. package/dist/badge.js.map +1 -1
  35. package/dist/box.cjs +3 -1
  36. package/dist/box.cjs.map +1 -1
  37. package/dist/box.js +24 -18
  38. package/dist/box.js.map +1 -1
  39. package/dist/breadcrumb.cjs +4 -4
  40. package/dist/breadcrumb.cjs.map +1 -1
  41. package/dist/breadcrumb.js +4 -4
  42. package/dist/breadcrumb.js.map +1 -1
  43. package/dist/button-group.cjs +3 -3
  44. package/dist/button-group.cjs.map +1 -1
  45. package/dist/button-group.js +18 -16
  46. package/dist/button-group.js.map +1 -1
  47. package/dist/button.cjs +16 -12
  48. package/dist/button.cjs.map +1 -1
  49. package/dist/button.js +31 -28
  50. package/dist/button.js.map +1 -1
  51. package/dist/calendar.cjs +94 -69
  52. package/dist/calendar.cjs.map +1 -1
  53. package/dist/calendar.js +131 -99
  54. package/dist/calendar.js.map +1 -1
  55. package/dist/card.cjs +7 -7
  56. package/dist/card.cjs.map +1 -1
  57. package/dist/card.js +53 -49
  58. package/dist/card.js.map +1 -1
  59. package/dist/carousel.cjs +65 -57
  60. package/dist/carousel.cjs.map +1 -1
  61. package/dist/carousel.js +157 -201
  62. package/dist/carousel.js.map +1 -1
  63. package/dist/chat-message.cjs +21 -19
  64. package/dist/chat-message.cjs.map +1 -1
  65. package/dist/chat-message.js +18 -15
  66. package/dist/chat-message.js.map +1 -1
  67. package/dist/checkbox-group.cjs +12 -10
  68. package/dist/checkbox-group.cjs.map +1 -1
  69. package/dist/checkbox-group.js +75 -77
  70. package/dist/checkbox-group.js.map +1 -1
  71. package/dist/checkbox.cjs +4 -4
  72. package/dist/checkbox.cjs.map +1 -1
  73. package/dist/checkbox.js +55 -55
  74. package/dist/checkbox.js.map +1 -1
  75. package/dist/chip.cjs +22 -20
  76. package/dist/chip.cjs.map +1 -1
  77. package/dist/chip.js +15 -12
  78. package/dist/chip.js.map +1 -1
  79. package/dist/code-window.cjs +11 -5
  80. package/dist/code-window.cjs.map +1 -1
  81. package/dist/code-window.js +9 -4
  82. package/dist/code-window.js.map +1 -1
  83. package/dist/combobox.cjs +63 -58
  84. package/dist/combobox.cjs.map +1 -1
  85. package/dist/combobox.js +199 -197
  86. package/dist/combobox.js.map +1 -1
  87. package/dist/command-palette.cjs +49 -29
  88. package/dist/command-palette.cjs.map +1 -1
  89. package/dist/command-palette.js +150 -119
  90. package/dist/command-palette.js.map +1 -1
  91. package/dist/content/avatar/avatar-group.d.ts +33 -0
  92. package/dist/content/avatar/avatar-group.d.ts.map +1 -0
  93. package/dist/content/avatar/avatar.d.ts +0 -32
  94. package/dist/content/avatar/avatar.d.ts.map +1 -1
  95. package/dist/content/card/card.css.cjs +1 -1
  96. package/dist/content/card/card.css.cjs.map +1 -1
  97. package/dist/content/card/card.css.js +1 -1
  98. package/dist/content/card/card.css.js.map +1 -1
  99. package/dist/content/card/card.d.ts.map +1 -1
  100. package/dist/content/carousel/carousel-slide.cjs +3 -1
  101. package/dist/content/carousel/carousel-slide.cjs.map +1 -1
  102. package/dist/content/carousel/carousel-slide.css.cjs +1 -1
  103. package/dist/content/carousel/carousel-slide.css.cjs.map +1 -1
  104. package/dist/content/carousel/carousel-slide.css.js +1 -1
  105. package/dist/content/carousel/carousel-slide.css.js.map +1 -1
  106. package/dist/content/carousel/carousel-slide.js +3 -1
  107. package/dist/content/carousel/carousel-slide.js.map +1 -1
  108. package/dist/content/carousel/carousel.css.cjs +1 -1
  109. package/dist/content/carousel/carousel.css.cjs.map +1 -1
  110. package/dist/content/carousel/carousel.css.js +1 -1
  111. package/dist/content/carousel/carousel.css.js.map +1 -1
  112. package/dist/content/carousel/carousel.d.ts +5 -19
  113. package/dist/content/carousel/carousel.d.ts.map +1 -1
  114. package/dist/content/chat-message/chat-message.d.ts.map +1 -1
  115. package/dist/content/code-window/code-window.d.ts.map +1 -1
  116. package/dist/content/icon/icon.d.ts.map +1 -1
  117. package/dist/content/index.d.ts +10 -2
  118. package/dist/content/index.d.ts.map +1 -1
  119. package/dist/content/list/_list-item-reveal.cjs +1 -1
  120. package/dist/content/list/_list-item-reveal.cjs.map +1 -1
  121. package/dist/content/list/_list-item-reveal.d.ts +2 -2
  122. package/dist/content/list/_list-item-reveal.d.ts.map +1 -1
  123. package/dist/content/list/_list-item-reveal.js +2 -2
  124. package/dist/content/list/_list-item-reveal.js.map +1 -1
  125. package/dist/content/list/list.d.ts.map +1 -1
  126. package/dist/content/marquee/index.d.ts +2 -0
  127. package/dist/content/marquee/index.d.ts.map +1 -0
  128. package/dist/content/marquee/marquee.css.cjs +2 -0
  129. package/dist/content/marquee/marquee.css.cjs.map +1 -0
  130. package/dist/content/marquee/marquee.css.js +6 -0
  131. package/dist/content/marquee/marquee.css.js.map +1 -0
  132. package/dist/content/marquee/marquee.d.ts +44 -0
  133. package/dist/content/marquee/marquee.d.ts.map +1 -0
  134. package/dist/content/stepper/_is-step-navigable.cjs +2 -0
  135. package/dist/content/stepper/_is-step-navigable.cjs.map +1 -0
  136. package/dist/content/stepper/_is-step-navigable.d.ts +14 -0
  137. package/dist/content/stepper/_is-step-navigable.d.ts.map +1 -0
  138. package/dist/content/stepper/_is-step-navigable.js +8 -0
  139. package/dist/content/stepper/_is-step-navigable.js.map +1 -0
  140. package/dist/content/stepper/step.css.cjs +2 -0
  141. package/dist/content/stepper/step.css.cjs.map +1 -0
  142. package/dist/content/stepper/step.css.js +6 -0
  143. package/dist/content/stepper/step.css.js.map +1 -0
  144. package/dist/content/stepper/step.d.ts +63 -0
  145. package/dist/content/stepper/step.d.ts.map +1 -0
  146. package/dist/content/stepper/stepper.css.cjs +2 -0
  147. package/dist/content/stepper/stepper.css.cjs.map +1 -0
  148. package/dist/content/stepper/stepper.css.js +6 -0
  149. package/dist/content/stepper/stepper.css.js.map +1 -0
  150. package/dist/content/stepper/stepper.d.ts +88 -0
  151. package/dist/content/stepper/stepper.d.ts.map +1 -0
  152. package/dist/copy-command.cjs +9 -3
  153. package/dist/copy-command.cjs.map +1 -1
  154. package/dist/copy-command.js +9 -3
  155. package/dist/copy-command.js.map +1 -1
  156. package/dist/{headless → core}/_internal.d.ts +3 -5
  157. package/dist/core/_internal.d.ts.map +1 -0
  158. package/dist/core/announcer.cjs.map +1 -0
  159. package/dist/core/announcer.d.ts.map +1 -0
  160. package/dist/{headless → core}/announcer.js +1 -1
  161. package/dist/core/announcer.js.map +1 -0
  162. package/dist/core/aria-reflection.cjs.map +1 -0
  163. package/dist/core/aria-reflection.d.ts.map +1 -0
  164. package/dist/{headless → core}/aria-reflection.js +1 -1
  165. package/dist/core/aria-reflection.js.map +1 -0
  166. package/dist/core/auto-resize.cjs.map +1 -0
  167. package/dist/core/auto-resize.d.ts.map +1 -0
  168. package/dist/{headless → core}/auto-resize.js +1 -1
  169. package/dist/core/auto-resize.js.map +1 -0
  170. package/dist/core/checkable.cjs.map +1 -0
  171. package/dist/core/checkable.d.ts.map +1 -0
  172. package/dist/{headless → core}/checkable.js +1 -1
  173. package/dist/core/checkable.js.map +1 -0
  174. package/dist/core/choice-field.cjs +2 -0
  175. package/dist/core/choice-field.cjs.map +1 -0
  176. package/dist/core/choice-field.d.ts.map +1 -0
  177. package/dist/{headless → core}/choice-field.js +3 -2
  178. package/dist/core/choice-field.js.map +1 -0
  179. package/dist/core/composer.cjs.map +1 -0
  180. package/dist/core/composer.d.ts.map +1 -0
  181. package/dist/{headless → core}/composer.js +1 -1
  182. package/dist/core/composer.js.map +1 -0
  183. package/dist/{headless → core}/date-picker.cjs +1 -1
  184. package/dist/core/date-picker.cjs.map +1 -0
  185. package/dist/core/date-picker.d.ts.map +1 -0
  186. package/dist/{headless → core}/date-picker.js +3 -3
  187. package/dist/core/date-picker.js.map +1 -0
  188. package/dist/core/direction.cjs.map +1 -0
  189. package/dist/core/direction.d.ts.map +1 -0
  190. package/dist/{headless → core}/direction.js +1 -1
  191. package/dist/core/direction.js.map +1 -0
  192. package/dist/core/field-base.cjs +2 -0
  193. package/dist/core/field-base.cjs.map +1 -0
  194. package/dist/{headless → core}/field-base.d.ts +3 -3
  195. package/dist/core/field-base.d.ts.map +1 -0
  196. package/dist/core/field-base.js +66 -0
  197. package/dist/core/field-base.js.map +1 -0
  198. package/dist/core/focus.cjs.map +1 -0
  199. package/dist/core/focus.d.ts.map +1 -0
  200. package/dist/{headless → core}/focus.js +1 -1
  201. package/dist/core/focus.js.map +1 -0
  202. package/dist/{headless → core}/index.d.ts +7 -6
  203. package/dist/core/index.d.ts.map +1 -0
  204. package/dist/{headless → core}/keyboard.cjs +1 -1
  205. package/dist/core/keyboard.cjs.map +1 -0
  206. package/dist/core/keyboard.d.ts.map +1 -0
  207. package/dist/{headless → core}/keyboard.js +2 -2
  208. package/dist/core/keyboard.js.map +1 -0
  209. package/dist/core/light-dom.cjs.map +1 -0
  210. package/dist/core/light-dom.d.ts.map +1 -0
  211. package/dist/{headless → core}/light-dom.js +1 -1
  212. package/dist/core/light-dom.js.map +1 -0
  213. package/dist/core/nav.cjs.map +1 -0
  214. package/dist/core/nav.d.ts.map +1 -0
  215. package/dist/{headless → core}/nav.js +1 -1
  216. package/dist/core/nav.js.map +1 -0
  217. package/dist/core/numbers.cjs.map +1 -0
  218. package/dist/core/numbers.d.ts.map +1 -0
  219. package/dist/{headless → core}/numbers.js +1 -1
  220. package/dist/core/numbers.js.map +1 -0
  221. package/dist/core/option-list.cjs +2 -0
  222. package/dist/core/option-list.cjs.map +1 -0
  223. package/dist/core/option-list.d.ts +49 -0
  224. package/dist/core/option-list.d.ts.map +1 -0
  225. package/dist/core/option-list.js +65 -0
  226. package/dist/core/option-list.js.map +1 -0
  227. package/dist/core/ore.cjs.map +1 -0
  228. package/dist/{headless → core}/ore.d.ts +2 -2
  229. package/dist/core/ore.d.ts.map +1 -0
  230. package/dist/{headless → core}/ore.js +1 -1
  231. package/dist/core/ore.js.map +1 -0
  232. package/dist/core/overlay.cjs +2 -0
  233. package/dist/core/overlay.cjs.map +1 -0
  234. package/dist/core/overlay.d.ts +41 -0
  235. package/dist/core/overlay.d.ts.map +1 -0
  236. package/dist/core/overlay.js +17 -0
  237. package/dist/core/overlay.js.map +1 -0
  238. package/dist/core/paginated-list.d.ts.map +1 -0
  239. package/dist/core/parse.cjs.map +1 -0
  240. package/dist/core/parse.d.ts.map +1 -0
  241. package/dist/{headless → core}/parse.js +1 -1
  242. package/dist/core/parse.js.map +1 -0
  243. package/dist/core/positioner.cjs +2 -0
  244. package/dist/core/positioner.cjs.map +1 -0
  245. package/dist/core/positioner.d.ts.map +1 -0
  246. package/dist/{headless → core}/positioner.js +7 -7
  247. package/dist/core/positioner.js.map +1 -0
  248. package/dist/core/ref-callback.cjs +2 -0
  249. package/dist/core/ref-callback.cjs.map +1 -0
  250. package/dist/core/ref-callback.d.ts.map +1 -0
  251. package/dist/{headless → core}/ref-callback.js +2 -2
  252. package/dist/core/ref-callback.js.map +1 -0
  253. package/dist/core/signals.cjs +2 -0
  254. package/dist/core/signals.cjs.map +1 -0
  255. package/dist/core/signals.d.ts.map +1 -0
  256. package/dist/{headless → core}/signals.js +3 -2
  257. package/dist/core/signals.js.map +1 -0
  258. package/dist/core/slider.cjs +2 -0
  259. package/dist/core/slider.cjs.map +1 -0
  260. package/dist/core/slider.d.ts.map +1 -0
  261. package/dist/{headless → core}/slider.js +3 -3
  262. package/dist/{headless/slider.cjs.map → core/slider.js.map} +1 -1
  263. package/dist/core/spinner.cjs +2 -0
  264. package/dist/core/spinner.cjs.map +1 -0
  265. package/dist/core/spinner.d.ts.map +1 -0
  266. package/dist/{headless → core}/spinner.js +3 -3
  267. package/dist/{headless/spinner.cjs.map → core/spinner.js.map} +1 -1
  268. package/dist/core/swipe.cjs.map +1 -0
  269. package/dist/core/swipe.d.ts.map +1 -0
  270. package/dist/{headless → core}/swipe.js +1 -1
  271. package/dist/core/swipe.js.map +1 -0
  272. package/dist/core/text-field.cjs.map +1 -0
  273. package/dist/core/text-field.d.ts.map +1 -0
  274. package/dist/{headless → core}/text-field.js +1 -1
  275. package/dist/core/text-field.js.map +1 -0
  276. package/dist/core/typeahead.cjs.map +1 -0
  277. package/dist/core/typeahead.d.ts.map +1 -0
  278. package/dist/{headless → core}/typeahead.js +1 -1
  279. package/dist/core/typeahead.js.map +1 -0
  280. package/dist/custom-elements.json +4433 -3949
  281. package/dist/datagrid.cjs +320 -271
  282. package/dist/datagrid.cjs.map +1 -1
  283. package/dist/datagrid.js +489 -435
  284. package/dist/datagrid.js.map +1 -1
  285. package/dist/date-picker.cjs +77 -62
  286. package/dist/date-picker.cjs.map +1 -1
  287. package/dist/date-picker.js +169 -146
  288. package/dist/date-picker.js.map +1 -1
  289. package/dist/dialog.cjs +3 -3
  290. package/dist/dialog.cjs.map +1 -1
  291. package/dist/dialog.js +18 -7
  292. package/dist/dialog.js.map +1 -1
  293. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -1
  294. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  295. package/dist/drawer.cjs +5 -5
  296. package/dist/drawer.cjs.map +1 -1
  297. package/dist/drawer.js +52 -47
  298. package/dist/drawer.js.map +1 -1
  299. package/dist/errors.cjs.map +1 -1
  300. package/dist/errors.js.map +1 -1
  301. package/dist/feedback/async/async.d.ts.map +1 -1
  302. package/dist/feedback/chip/chip.d.ts.map +1 -1
  303. package/dist/feedback/progress/progress.d.ts.map +1 -1
  304. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -1
  305. package/dist/feedback/toast/index.d.ts +1 -1
  306. package/dist/feedback/toast/index.d.ts.map +1 -1
  307. package/dist/feedback/toast/toast.d.ts +16 -68
  308. package/dist/feedback/toast/toast.d.ts.map +1 -1
  309. package/dist/feedback/typing-indicator/typing-indicator.d.ts +1 -1
  310. package/dist/file-input.cjs +111 -78
  311. package/dist/file-input.cjs.map +1 -1
  312. package/dist/file-input.js +220 -184
  313. package/dist/file-input.js.map +1 -1
  314. package/dist/grid-item.cjs +3 -1
  315. package/dist/grid-item.cjs.map +1 -1
  316. package/dist/grid-item.js +3 -1
  317. package/dist/grid-item.js.map +1 -1
  318. package/dist/grid.cjs +3 -1
  319. package/dist/grid.cjs.map +1 -1
  320. package/dist/grid.js +6 -5
  321. package/dist/grid.js.map +1 -1
  322. package/dist/icon.cjs +5 -1
  323. package/dist/icon.cjs.map +1 -1
  324. package/dist/icon.js +50 -47
  325. package/dist/icon.js.map +1 -1
  326. package/dist/index.cjs +1 -1
  327. package/dist/index.d.ts +7 -8
  328. package/dist/index.d.ts.map +1 -1
  329. package/dist/index.js +2 -67
  330. package/dist/input.cjs +44 -40
  331. package/dist/input.cjs.map +1 -1
  332. package/dist/input.js +132 -130
  333. package/dist/input.js.map +1 -1
  334. package/dist/inputs/button-group/button-group.css.cjs +1 -1
  335. package/dist/inputs/button-group/button-group.css.cjs.map +1 -1
  336. package/dist/inputs/button-group/button-group.css.js +1 -1
  337. package/dist/inputs/button-group/button-group.css.js.map +1 -1
  338. package/dist/inputs/button-group/button-group.d.ts +6 -3
  339. package/dist/inputs/button-group/button-group.d.ts.map +1 -1
  340. package/dist/inputs/calendar/calendar.d.ts.map +1 -1
  341. package/dist/inputs/checkbox/checkbox.d.ts +6 -5
  342. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -1
  343. package/dist/inputs/checkbox-group/checkbox-group.d.ts +1 -1
  344. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -1
  345. package/dist/inputs/combobox/combobox.d.ts +4 -2
  346. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  347. package/dist/inputs/combobox/combobox.types.d.ts +5 -7
  348. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
  349. package/dist/inputs/datagrid/datagrid-column.cjs +1 -1
  350. package/dist/inputs/datagrid/datagrid-column.cjs.map +1 -1
  351. package/dist/inputs/datagrid/datagrid-column.d.ts +1 -1
  352. package/dist/inputs/datagrid/datagrid-column.d.ts.map +1 -1
  353. package/dist/inputs/datagrid/datagrid-column.js +5 -5
  354. package/dist/inputs/datagrid/datagrid-column.js.map +1 -1
  355. package/dist/inputs/datagrid/datagrid-model.cjs +2 -0
  356. package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -0
  357. package/dist/inputs/datagrid/datagrid-model.d.ts +101 -0
  358. package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -0
  359. package/dist/inputs/datagrid/datagrid-model.js +202 -0
  360. package/dist/inputs/datagrid/datagrid-model.js.map +1 -0
  361. package/dist/inputs/datagrid/datagrid-nav.cjs.map +1 -1
  362. package/dist/inputs/datagrid/datagrid.d.ts +44 -45
  363. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  364. package/dist/inputs/date-picker/date-picker.d.ts +4 -4
  365. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -1
  366. package/dist/inputs/file-input/file-input-upload.cjs +1 -1
  367. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  368. package/dist/inputs/file-input/file-input-upload.d.ts.map +1 -1
  369. package/dist/inputs/file-input/file-input-upload.js +6 -3
  370. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  371. package/dist/inputs/file-input/file-input.d.ts.map +1 -1
  372. package/dist/inputs/index.d.ts +0 -4
  373. package/dist/inputs/index.d.ts.map +1 -1
  374. package/dist/inputs/input/input.d.ts +4 -10
  375. package/dist/inputs/input/input.d.ts.map +1 -1
  376. package/dist/inputs/message-composer/message-composer.d.ts +6 -10
  377. package/dist/inputs/message-composer/message-composer.d.ts.map +1 -1
  378. package/dist/inputs/number-input/number-input.d.ts +4 -10
  379. package/dist/inputs/number-input/number-input.d.ts.map +1 -1
  380. package/dist/inputs/otp-input/otp-input.d.ts +4 -6
  381. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -1
  382. package/dist/inputs/radio/radio.d.ts +4 -3
  383. package/dist/inputs/radio/radio.d.ts.map +1 -1
  384. package/dist/inputs/radio-group/radio-group.d.ts +1 -1
  385. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -1
  386. package/dist/inputs/rating/rating.d.ts +4 -5
  387. package/dist/inputs/rating/rating.d.ts.map +1 -1
  388. package/dist/inputs/select/select.d.ts +7 -9
  389. package/dist/inputs/select/select.d.ts.map +1 -1
  390. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  391. package/dist/inputs/shared/field-binding.d.ts +1 -1
  392. package/dist/inputs/shared/field-binding.js.map +1 -1
  393. package/dist/inputs/shared/index.d.ts +0 -1
  394. package/dist/inputs/shared/index.d.ts.map +1 -1
  395. package/dist/inputs/shared/native-field-event.cjs +2 -0
  396. package/dist/inputs/shared/native-field-event.cjs.map +1 -0
  397. package/dist/inputs/shared/native-field-event.d.ts +6 -0
  398. package/dist/inputs/shared/native-field-event.d.ts.map +1 -0
  399. package/dist/inputs/shared/native-field-event.js +29 -0
  400. package/dist/inputs/shared/native-field-event.js.map +1 -0
  401. package/dist/inputs/shared/templates.cjs +18 -12
  402. package/dist/inputs/shared/templates.cjs.map +1 -1
  403. package/dist/inputs/shared/templates.d.ts +1 -1
  404. package/dist/inputs/shared/templates.d.ts.map +1 -1
  405. package/dist/inputs/shared/templates.js +19 -13
  406. package/dist/inputs/shared/templates.js.map +1 -1
  407. package/dist/inputs/slider/slider.css.cjs +1 -1
  408. package/dist/inputs/slider/slider.css.cjs.map +1 -1
  409. package/dist/inputs/slider/slider.css.js +1 -1
  410. package/dist/inputs/slider/slider.css.js.map +1 -1
  411. package/dist/inputs/slider/slider.d.ts +7 -10
  412. package/dist/inputs/slider/slider.d.ts.map +1 -1
  413. package/dist/inputs/switch/switch.d.ts +4 -3
  414. package/dist/inputs/switch/switch.d.ts.map +1 -1
  415. package/dist/inputs/textarea/textarea.d.ts +4 -10
  416. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  417. package/dist/inputs/time-picker/time-picker.d.ts +4 -4
  418. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -1
  419. package/dist/layout/box/box.d.ts.map +1 -1
  420. package/dist/layout/navbar/navbar.css.cjs +1 -1
  421. package/dist/layout/navbar/navbar.css.cjs.map +1 -1
  422. package/dist/layout/navbar/navbar.css.js +1 -1
  423. package/dist/layout/navbar/navbar.css.js.map +1 -1
  424. package/dist/layout/navbar/navbar.d.ts +10 -0
  425. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  426. package/dist/layout/sidebar/sidebar-item.css.cjs +1 -1
  427. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -1
  428. package/dist/layout/sidebar/sidebar-item.css.js +1 -1
  429. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -1
  430. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  431. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  432. package/dist/layout/sidebar/sidebar.css.js +1 -1
  433. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  434. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  435. package/dist/list-item.cjs +2 -2
  436. package/dist/list-item.cjs.map +1 -1
  437. package/dist/list-item.js +4 -4
  438. package/dist/list-item.js.map +1 -1
  439. package/dist/list.cjs +3 -1
  440. package/dist/list.cjs.map +1 -1
  441. package/dist/list.js +28 -25
  442. package/dist/list.js.map +1 -1
  443. package/dist/marquee.cjs +32 -0
  444. package/dist/marquee.cjs.map +1 -0
  445. package/dist/marquee.js +93 -0
  446. package/dist/marquee.js.map +1 -0
  447. package/dist/menu.cjs +7 -7
  448. package/dist/menu.cjs.map +1 -1
  449. package/dist/menu.js +135 -103
  450. package/dist/menu.js.map +1 -1
  451. package/dist/message-composer.cjs +33 -31
  452. package/dist/message-composer.cjs.map +1 -1
  453. package/dist/message-composer.js +123 -123
  454. package/dist/message-composer.js.map +1 -1
  455. package/dist/navbar.cjs +17 -15
  456. package/dist/navbar.cjs.map +1 -1
  457. package/dist/navbar.js +108 -89
  458. package/dist/navbar.js.map +1 -1
  459. package/dist/number-input.cjs +19 -19
  460. package/dist/number-input.cjs.map +1 -1
  461. package/dist/number-input.js +94 -97
  462. package/dist/number-input.js.map +1 -1
  463. package/dist/otp-input.cjs +15 -13
  464. package/dist/otp-input.cjs.map +1 -1
  465. package/dist/otp-input.js +83 -82
  466. package/dist/otp-input.js.map +1 -1
  467. package/dist/overlay/command-palette/command-palette.d.ts +2 -2
  468. package/dist/overlay/command-palette/command-palette.d.ts.map +1 -1
  469. package/dist/overlay/command-palette/command-palette.types.d.ts +4 -5
  470. package/dist/overlay/command-palette/command-palette.types.d.ts.map +1 -1
  471. package/dist/overlay/dialog/dialog.d.ts +7 -6
  472. package/dist/overlay/dialog/dialog.d.ts.map +1 -1
  473. package/dist/overlay/drawer/drawer.d.ts +7 -10
  474. package/dist/overlay/drawer/drawer.d.ts.map +1 -1
  475. package/dist/overlay/index.d.ts +1 -1
  476. package/dist/overlay/index.d.ts.map +1 -1
  477. package/dist/overlay/menu/menu.d.ts +9 -7
  478. package/dist/overlay/menu/menu.d.ts.map +1 -1
  479. package/dist/overlay/popover/popover.d.ts +6 -11
  480. package/dist/overlay/popover/popover.d.ts.map +1 -1
  481. package/dist/overlay/shared/await-exit.cjs +1 -1
  482. package/dist/overlay/shared/await-exit.cjs.map +1 -1
  483. package/dist/overlay/shared/await-exit.js +1 -1
  484. package/dist/overlay/shared/await-exit.js.map +1 -1
  485. package/dist/overlay/shared/use-dialog.cjs +1 -1
  486. package/dist/overlay/shared/use-dialog.cjs.map +1 -1
  487. package/dist/overlay/shared/use-dialog.d.ts +13 -3
  488. package/dist/overlay/shared/use-dialog.d.ts.map +1 -1
  489. package/dist/overlay/shared/use-dialog.js +80 -72
  490. package/dist/overlay/shared/use-dialog.js.map +1 -1
  491. package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
  492. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
  493. package/dist/overlay/shared/use-floating-trigger.d.ts +3 -1
  494. package/dist/overlay/shared/use-floating-trigger.d.ts.map +1 -1
  495. package/dist/overlay/shared/use-floating-trigger.js +64 -70
  496. package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
  497. package/dist/overlay/tooltip/tooltip.d.ts +9 -0
  498. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -1
  499. package/dist/pagination.cjs +69 -55
  500. package/dist/pagination.cjs.map +1 -1
  501. package/dist/pagination.js +70 -56
  502. package/dist/pagination.js.map +1 -1
  503. package/dist/password-strength.cjs +6 -4
  504. package/dist/password-strength.cjs.map +1 -1
  505. package/dist/password-strength.js +6 -4
  506. package/dist/password-strength.js.map +1 -1
  507. package/dist/popover.cjs +4 -4
  508. package/dist/popover.cjs.map +1 -1
  509. package/dist/popover.js +28 -17
  510. package/dist/popover.js.map +1 -1
  511. package/dist/progress.cjs +25 -17
  512. package/dist/progress.cjs.map +1 -1
  513. package/dist/progress.js +29 -22
  514. package/dist/progress.js.map +1 -1
  515. package/dist/radio-group.cjs +14 -12
  516. package/dist/radio-group.cjs.map +1 -1
  517. package/dist/radio-group.js +88 -90
  518. package/dist/radio-group.js.map +1 -1
  519. package/dist/radio.cjs +4 -4
  520. package/dist/radio.cjs.map +1 -1
  521. package/dist/radio.js +90 -90
  522. package/dist/radio.js.map +1 -1
  523. package/dist/rating.cjs +18 -16
  524. package/dist/rating.cjs.map +1 -1
  525. package/dist/rating.js +69 -69
  526. package/dist/rating.js.map +1 -1
  527. package/dist/refine.cjs +1670 -1325
  528. package/dist/refine.cjs.map +1 -1
  529. package/dist/refine.iife.js +1673 -1328
  530. package/dist/refine.iife.js.map +1 -1
  531. package/dist/refine.js +1758 -1413
  532. package/dist/refine.js.map +1 -1
  533. package/dist/register.d.ts +21 -0
  534. package/dist/register.d.ts.map +1 -0
  535. package/dist/select.cjs +59 -51
  536. package/dist/select.cjs.map +1 -1
  537. package/dist/select.js +189 -182
  538. package/dist/select.js.map +1 -1
  539. package/dist/separator.cjs +9 -9
  540. package/dist/separator.cjs.map +1 -1
  541. package/dist/separator.js +9 -9
  542. package/dist/separator.js.map +1 -1
  543. package/dist/shared/index.d.ts +1 -1
  544. package/dist/shared/prop-bundles.cjs +1 -1
  545. package/dist/shared/prop-bundles.cjs.map +1 -1
  546. package/dist/shared/prop-bundles.js +4 -2
  547. package/dist/shared/prop-bundles.js.map +1 -1
  548. package/dist/shared/size-presets.cjs +1 -1
  549. package/dist/shared/size-presets.cjs.map +1 -1
  550. package/dist/shared/size-presets.d.ts +3 -0
  551. package/dist/shared/size-presets.d.ts.map +1 -1
  552. package/dist/shared/size-presets.js +4 -1
  553. package/dist/shared/size-presets.js.map +1 -1
  554. package/dist/sidebar.cjs +8 -8
  555. package/dist/sidebar.cjs.map +1 -1
  556. package/dist/sidebar.js +25 -25
  557. package/dist/sidebar.js.map +1 -1
  558. package/dist/skeleton.cjs +4 -6
  559. package/dist/skeleton.cjs.map +1 -1
  560. package/dist/skeleton.js +21 -22
  561. package/dist/skeleton.js.map +1 -1
  562. package/dist/slider.cjs +14 -14
  563. package/dist/slider.cjs.map +1 -1
  564. package/dist/slider.js +160 -168
  565. package/dist/slider.js.map +1 -1
  566. package/dist/step.cjs +47 -0
  567. package/dist/step.cjs.map +1 -0
  568. package/dist/step.js +127 -0
  569. package/dist/step.js.map +1 -0
  570. package/dist/stepper.cjs +8 -0
  571. package/dist/stepper.cjs.map +1 -0
  572. package/dist/stepper.js +101 -0
  573. package/dist/stepper.js.map +1 -0
  574. package/dist/styles/index.d.ts +0 -28
  575. package/dist/styles/index.d.ts.map +1 -1
  576. package/dist/styles/mixins/shape.css.cjs +2 -2
  577. package/dist/styles/mixins/shape.css.cjs.map +1 -1
  578. package/dist/styles/mixins/shape.css.js +6 -6
  579. package/dist/styles/mixins/shape.css.js.map +1 -1
  580. package/dist/styles/tokens.css +4 -0
  581. package/dist/switch.cjs +4 -4
  582. package/dist/switch.cjs.map +1 -1
  583. package/dist/switch.js +44 -44
  584. package/dist/switch.js.map +1 -1
  585. package/dist/tab-item.cjs +3 -3
  586. package/dist/tab-item.cjs.map +1 -1
  587. package/dist/tab-item.js +24 -24
  588. package/dist/tab-item.js.map +1 -1
  589. package/dist/tab-panel.cjs +9 -7
  590. package/dist/tab-panel.cjs.map +1 -1
  591. package/dist/tab-panel.js +15 -14
  592. package/dist/tab-panel.js.map +1 -1
  593. package/dist/table.cjs +3 -1
  594. package/dist/table.cjs.map +1 -1
  595. package/dist/table.js +3 -1
  596. package/dist/table.js.map +1 -1
  597. package/dist/tabs.cjs +6 -6
  598. package/dist/tabs.cjs.map +1 -1
  599. package/dist/tabs.js +30 -29
  600. package/dist/tabs.js.map +1 -1
  601. package/dist/text.cjs +3 -1
  602. package/dist/text.cjs.map +1 -1
  603. package/dist/text.js +3 -1
  604. package/dist/text.js.map +1 -1
  605. package/dist/textarea.cjs +22 -22
  606. package/dist/textarea.cjs.map +1 -1
  607. package/dist/textarea.js +110 -112
  608. package/dist/textarea.js.map +1 -1
  609. package/dist/time-picker.cjs +69 -61
  610. package/dist/time-picker.cjs.map +1 -1
  611. package/dist/time-picker.js +146 -132
  612. package/dist/time-picker.js.map +1 -1
  613. package/dist/toast.cjs +22 -22
  614. package/dist/toast.cjs.map +1 -1
  615. package/dist/toast.js +280 -173
  616. package/dist/toast.js.map +1 -1
  617. package/dist/tooltip.cjs +5 -5
  618. package/dist/tooltip.cjs.map +1 -1
  619. package/dist/tooltip.js +61 -51
  620. package/dist/tooltip.js.map +1 -1
  621. package/dist/typing-indicator.cjs +1 -1
  622. package/dist/typing-indicator.cjs.map +1 -1
  623. package/dist/typing-indicator.js +5 -5
  624. package/dist/typing-indicator.js.map +1 -1
  625. package/dist/utils/link.cjs.map +1 -1
  626. package/dist/utils/link.d.ts +2 -2
  627. package/package.json +36 -117
  628. package/dist/form.cjs +0 -11
  629. package/dist/form.cjs.map +0 -1
  630. package/dist/form.js +0 -59
  631. package/dist/form.js.map +0 -1
  632. package/dist/headless/_internal.d.ts.map +0 -1
  633. package/dist/headless/announcer.cjs.map +0 -1
  634. package/dist/headless/announcer.d.ts.map +0 -1
  635. package/dist/headless/announcer.js.map +0 -1
  636. package/dist/headless/aria-reflection.cjs.map +0 -1
  637. package/dist/headless/aria-reflection.d.ts.map +0 -1
  638. package/dist/headless/aria-reflection.js.map +0 -1
  639. package/dist/headless/auto-resize.cjs.map +0 -1
  640. package/dist/headless/auto-resize.d.ts.map +0 -1
  641. package/dist/headless/auto-resize.js.map +0 -1
  642. package/dist/headless/checkable.cjs.map +0 -1
  643. package/dist/headless/checkable.d.ts.map +0 -1
  644. package/dist/headless/checkable.js.map +0 -1
  645. package/dist/headless/choice-field.cjs +0 -2
  646. package/dist/headless/choice-field.cjs.map +0 -1
  647. package/dist/headless/choice-field.d.ts.map +0 -1
  648. package/dist/headless/choice-field.js.map +0 -1
  649. package/dist/headless/composer.cjs.map +0 -1
  650. package/dist/headless/composer.d.ts.map +0 -1
  651. package/dist/headless/composer.js.map +0 -1
  652. package/dist/headless/datagrid.cjs +0 -2
  653. package/dist/headless/datagrid.cjs.map +0 -1
  654. package/dist/headless/datagrid.d.ts +0 -158
  655. package/dist/headless/datagrid.d.ts.map +0 -1
  656. package/dist/headless/datagrid.js +0 -55
  657. package/dist/headless/datagrid.js.map +0 -1
  658. package/dist/headless/date-picker.cjs.map +0 -1
  659. package/dist/headless/date-picker.d.ts.map +0 -1
  660. package/dist/headless/date-picker.js.map +0 -1
  661. package/dist/headless/direction.cjs.map +0 -1
  662. package/dist/headless/direction.d.ts.map +0 -1
  663. package/dist/headless/direction.js.map +0 -1
  664. package/dist/headless/field-base.cjs +0 -2
  665. package/dist/headless/field-base.cjs.map +0 -1
  666. package/dist/headless/field-base.d.ts.map +0 -1
  667. package/dist/headless/field-base.js +0 -72
  668. package/dist/headless/field-base.js.map +0 -1
  669. package/dist/headless/focus.cjs.map +0 -1
  670. package/dist/headless/focus.d.ts.map +0 -1
  671. package/dist/headless/focus.js.map +0 -1
  672. package/dist/headless/index.d.ts.map +0 -1
  673. package/dist/headless/keyboard.cjs.map +0 -1
  674. package/dist/headless/keyboard.d.ts.map +0 -1
  675. package/dist/headless/keyboard.js.map +0 -1
  676. package/dist/headless/light-dom.cjs.map +0 -1
  677. package/dist/headless/light-dom.d.ts.map +0 -1
  678. package/dist/headless/light-dom.js.map +0 -1
  679. package/dist/headless/nav.cjs.map +0 -1
  680. package/dist/headless/nav.d.ts.map +0 -1
  681. package/dist/headless/nav.js.map +0 -1
  682. package/dist/headless/numbers.cjs.map +0 -1
  683. package/dist/headless/numbers.d.ts.map +0 -1
  684. package/dist/headless/numbers.js.map +0 -1
  685. package/dist/headless/option-list.cjs +0 -2
  686. package/dist/headless/option-list.cjs.map +0 -1
  687. package/dist/headless/option-list.d.ts +0 -107
  688. package/dist/headless/option-list.d.ts.map +0 -1
  689. package/dist/headless/option-list.js +0 -66
  690. package/dist/headless/option-list.js.map +0 -1
  691. package/dist/headless/ore.cjs.map +0 -1
  692. package/dist/headless/ore.d.ts.map +0 -1
  693. package/dist/headless/ore.js.map +0 -1
  694. package/dist/headless/overlay.cjs +0 -2
  695. package/dist/headless/overlay.cjs.map +0 -1
  696. package/dist/headless/overlay.d.ts +0 -64
  697. package/dist/headless/overlay.d.ts.map +0 -1
  698. package/dist/headless/overlay.js +0 -32
  699. package/dist/headless/overlay.js.map +0 -1
  700. package/dist/headless/paginated-list.cjs +0 -2
  701. package/dist/headless/paginated-list.cjs.map +0 -1
  702. package/dist/headless/paginated-list.d.ts.map +0 -1
  703. package/dist/headless/paginated-list.js +0 -34
  704. package/dist/headless/paginated-list.js.map +0 -1
  705. package/dist/headless/parse.cjs.map +0 -1
  706. package/dist/headless/parse.d.ts.map +0 -1
  707. package/dist/headless/parse.js.map +0 -1
  708. package/dist/headless/positioner.cjs +0 -2
  709. package/dist/headless/positioner.cjs.map +0 -1
  710. package/dist/headless/positioner.d.ts.map +0 -1
  711. package/dist/headless/positioner.js.map +0 -1
  712. package/dist/headless/ref-callback.cjs +0 -2
  713. package/dist/headless/ref-callback.cjs.map +0 -1
  714. package/dist/headless/ref-callback.d.ts.map +0 -1
  715. package/dist/headless/ref-callback.js.map +0 -1
  716. package/dist/headless/selection-control.cjs +0 -2
  717. package/dist/headless/selection-control.cjs.map +0 -1
  718. package/dist/headless/selection-control.d.ts +0 -30
  719. package/dist/headless/selection-control.d.ts.map +0 -1
  720. package/dist/headless/selection-control.js +0 -44
  721. package/dist/headless/selection-control.js.map +0 -1
  722. package/dist/headless/signals.cjs +0 -2
  723. package/dist/headless/signals.cjs.map +0 -1
  724. package/dist/headless/signals.d.ts.map +0 -1
  725. package/dist/headless/signals.js.map +0 -1
  726. package/dist/headless/slider.cjs +0 -2
  727. package/dist/headless/slider.d.ts.map +0 -1
  728. package/dist/headless/slider.js.map +0 -1
  729. package/dist/headless/sort-control.cjs +0 -2
  730. package/dist/headless/sort-control.cjs.map +0 -1
  731. package/dist/headless/sort-control.d.ts +0 -22
  732. package/dist/headless/sort-control.d.ts.map +0 -1
  733. package/dist/headless/sort-control.js +0 -36
  734. package/dist/headless/sort-control.js.map +0 -1
  735. package/dist/headless/spinner.cjs +0 -2
  736. package/dist/headless/spinner.d.ts.map +0 -1
  737. package/dist/headless/spinner.js.map +0 -1
  738. package/dist/headless/swipe.cjs.map +0 -1
  739. package/dist/headless/swipe.d.ts.map +0 -1
  740. package/dist/headless/swipe.js.map +0 -1
  741. package/dist/headless/text-field.cjs.map +0 -1
  742. package/dist/headless/text-field.d.ts.map +0 -1
  743. package/dist/headless/text-field.js.map +0 -1
  744. package/dist/headless/typeahead.cjs.map +0 -1
  745. package/dist/headless/typeahead.d.ts.map +0 -1
  746. package/dist/headless/typeahead.js.map +0 -1
  747. package/dist/headless.cjs +0 -1
  748. package/dist/headless.js +0 -30
  749. package/dist/inputs/datagrid/datagrid-controls.cjs +0 -2
  750. package/dist/inputs/datagrid/datagrid-controls.cjs.map +0 -1
  751. package/dist/inputs/datagrid/datagrid-controls.d.ts +0 -98
  752. package/dist/inputs/datagrid/datagrid-controls.d.ts.map +0 -1
  753. package/dist/inputs/datagrid/datagrid-controls.js +0 -147
  754. package/dist/inputs/datagrid/datagrid-controls.js.map +0 -1
  755. package/dist/inputs/form/form.css.cjs +0 -2
  756. package/dist/inputs/form/form.css.cjs.map +0 -1
  757. package/dist/inputs/form/form.css.js +0 -6
  758. package/dist/inputs/form/form.css.js.map +0 -1
  759. package/dist/inputs/form/form.d.ts +0 -59
  760. package/dist/inputs/form/form.d.ts.map +0 -1
  761. package/dist/inputs/shared/form-context.cjs +0 -2
  762. package/dist/inputs/shared/form-context.cjs.map +0 -1
  763. package/dist/inputs/shared/form-context.d.ts +0 -55
  764. package/dist/inputs/shared/form-context.d.ts.map +0 -1
  765. package/dist/inputs/shared/form-context.js +0 -15
  766. package/dist/inputs/shared/form-context.js.map +0 -1
  767. package/dist/keymap/dist/_dev.cjs +0 -2
  768. package/dist/keymap/dist/_dev.cjs.map +0 -1
  769. package/dist/keymap/dist/_dev.js +0 -4
  770. package/dist/keymap/dist/_dev.js.map +0 -1
  771. package/dist/keymap/dist/format.cjs +0 -1
  772. package/dist/keymap/dist/format.js +0 -1
  773. package/dist/keymap/dist/index.cjs +0 -1
  774. package/dist/keymap/dist/index.js +0 -4
  775. package/dist/keymap/dist/keymap.cjs +0 -2
  776. package/dist/keymap/dist/keymap.cjs.map +0 -1
  777. package/dist/keymap/dist/keymap.js +0 -221
  778. package/dist/keymap/dist/keymap.js.map +0 -1
  779. package/dist/keymap/dist/layer.cjs +0 -1
  780. package/dist/keymap/dist/layer.js +0 -1
  781. package/dist/styles/index.cjs +0 -2
  782. package/dist/styles/index.cjs.map +0 -1
  783. package/dist/styles/index.js +0 -25
  784. package/dist/styles/index.js.map +0 -1
  785. package/dist/styles/styles.css +0 -5
  786. package/dist/testing/index.d.ts +0 -233
  787. package/dist/testing/index.d.ts.map +0 -1
  788. package/dist/testing.cjs +0 -2
  789. package/dist/testing.cjs.map +0 -1
  790. package/dist/testing.js +0 -43
  791. package/dist/testing.js.map +0 -1
  792. /package/dist/{headless → core}/announcer.cjs +0 -0
  793. /package/dist/{headless → core}/announcer.d.ts +0 -0
  794. /package/dist/{headless → core}/aria-reflection.cjs +0 -0
  795. /package/dist/{headless → core}/aria-reflection.d.ts +0 -0
  796. /package/dist/{headless → core}/auto-resize.cjs +0 -0
  797. /package/dist/{headless → core}/auto-resize.d.ts +0 -0
  798. /package/dist/{headless → core}/checkable.cjs +0 -0
  799. /package/dist/{headless → core}/checkable.d.ts +0 -0
  800. /package/dist/{headless → core}/choice-field.d.ts +0 -0
  801. /package/dist/{headless → core}/composer.cjs +0 -0
  802. /package/dist/{headless → core}/composer.d.ts +0 -0
  803. /package/dist/{headless → core}/date-picker.d.ts +0 -0
  804. /package/dist/{headless → core}/direction.cjs +0 -0
  805. /package/dist/{headless → core}/direction.d.ts +0 -0
  806. /package/dist/{headless → core}/focus.cjs +0 -0
  807. /package/dist/{headless → core}/focus.d.ts +0 -0
  808. /package/dist/{headless → core}/keyboard.d.ts +0 -0
  809. /package/dist/{headless → core}/light-dom.cjs +0 -0
  810. /package/dist/{headless → core}/light-dom.d.ts +0 -0
  811. /package/dist/{headless → core}/nav.cjs +0 -0
  812. /package/dist/{headless → core}/nav.d.ts +0 -0
  813. /package/dist/{headless → core}/numbers.cjs +0 -0
  814. /package/dist/{headless → core}/numbers.d.ts +0 -0
  815. /package/dist/{headless → core}/ore.cjs +0 -0
  816. /package/dist/{headless → core}/paginated-list.d.ts +0 -0
  817. /package/dist/{headless → core}/parse.cjs +0 -0
  818. /package/dist/{headless → core}/parse.d.ts +0 -0
  819. /package/dist/{headless → core}/positioner.d.ts +0 -0
  820. /package/dist/{headless → core}/ref-callback.d.ts +0 -0
  821. /package/dist/{headless → core}/signals.d.ts +0 -0
  822. /package/dist/{headless → core}/slider.d.ts +0 -0
  823. /package/dist/{headless → core}/spinner.d.ts +0 -0
  824. /package/dist/{headless → core}/swipe.cjs +0 -0
  825. /package/dist/{headless → core}/swipe.d.ts +0 -0
  826. /package/dist/{headless → core}/text-field.cjs +0 -0
  827. /package/dist/{headless → core}/text-field.d.ts +0 -0
  828. /package/dist/{headless → core}/typeahead.cjs +0 -0
  829. /package/dist/{headless → core}/typeahead.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content/marquee/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer refine.base{:host{--_bg:var(--color-canvas);--_radius:var(--rounded-xl);background:var(--_bg);border-radius:var(--_radius);width:100%;min-height:240px;display:block;position:relative;overflow:hidden}.track{gap:var(--marquee-gap,var(--size-4));width:max-content;animation:marquee-scroll var(--_marquee-duration,20s) linear infinite;will-change:transform;flex-direction:row;align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.track:not(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}.track:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}.controls{gap:var(--size-0-5);pointer-events:none;align-items:center;display:flex}:host>.controls{padding:var(--size-1-5) var(--size-2);background:color-mix(in oklch, var(--color-canvas) 55%, transparent);border-radius:var(--rounded-full);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);bottom:var(--size-3);position:absolute}:host>.controls: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)){right:var(--size-3)}:host>.controls: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)){left:var(--size-3)}.nav-btn{pointer-events:auto}:host([direction=right]) .track{animation-direction:reverse}:host([pause-on-hover]:hover) .track{animation-play-state:paused}::slotted(*){flex:none;height:100%;position:relative}::slotted([data-marquee-clone]){pointer-events:none;-webkit-user-select:none;user-select:none}@keyframes marquee-scroll{0%{transform:translate(0)}to{transform:translateX(var(--_marquee-translate,-50%))}}}@media (prefers-reduced-motion:reduce){.track{animation:none}}`;exports.default=e;
2
+ //# sourceMappingURL=marquee.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee.css.cjs","names":[],"sources":["../../../src/content/marquee/marquee.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--color-canvas);\n --_radius: var(--rounded-xl);\n\n position: relative;\n display: block;\n width: 100%;\n min-height: 240px;\n overflow: hidden;\n background: var(--_bg);\n border-radius: var(--_radius);\n }\n\n .track {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n display: flex;\n flex-direction: row;\n gap: var(--marquee-gap, var(--size-4));\n align-items: stretch;\n width: max-content;\n animation: marquee-scroll var(--_marquee-duration, 20s) linear infinite;\n will-change: transform;\n }\n\n .controls {\n display: flex;\n gap: var(--size-0-5);\n align-items: center;\n pointer-events: none;\n }\n\n :host > .controls {\n position: absolute;\n inset-block-end: var(--size-3);\n inset-inline-end: var(--size-3);\n padding: var(--size-1-5) var(--size-2);\n background: color-mix(in oklch, var(--color-canvas) 55%, transparent);\n border-radius: var(--rounded-full);\n backdrop-filter: blur(6px);\n }\n\n .nav-btn {\n pointer-events: auto;\n }\n\n :host([direction='right']) .track {\n animation-direction: reverse;\n }\n\n :host([pause-on-hover]:hover) .track {\n animation-play-state: paused;\n }\n\n ::slotted(*) {\n position: relative;\n flex: 0 0 auto;\n height: 100%;\n }\n\n ::slotted([data-marquee-clone]) {\n pointer-events: none;\n user-select: none;\n }\n\n @keyframes marquee-scroll {\n from {\n transform: translateX(0);\n }\n\n to {\n transform: translateX(var(--_marquee-translate, -50%));\n }\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .track {\n animation: none;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/content/marquee/marquee.css?inline
2
+ var e = "@layer refine.base{:host{--_bg:var(--color-canvas);--_radius:var(--rounded-xl);background:var(--_bg);border-radius:var(--_radius);width:100%;min-height:240px;display:block;position:relative;overflow:hidden}.track{gap:var(--marquee-gap,var(--size-4));width:max-content;animation:marquee-scroll var(--_marquee-duration,20s) linear infinite;will-change:transform;flex-direction:row;align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.track:not(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}.track:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:0}.controls{gap:var(--size-0-5);pointer-events:none;align-items:center;display:flex}:host>.controls{padding:var(--size-1-5) var(--size-2);background:color-mix(in oklch, var(--color-canvas) 55%, transparent);border-radius:var(--rounded-full);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);bottom:var(--size-3);position:absolute}:host>.controls: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)){right:var(--size-3)}:host>.controls: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)){left:var(--size-3)}.nav-btn{pointer-events:auto}:host([direction=right]) .track{animation-direction:reverse}:host([pause-on-hover]:hover) .track{animation-play-state:paused}::slotted(*){flex:none;height:100%;position:relative}::slotted([data-marquee-clone]){pointer-events:none;-webkit-user-select:none;user-select:none}@keyframes marquee-scroll{0%{transform:translate(0)}to{transform:translateX(var(--_marquee-translate,-50%))}}}@media (prefers-reduced-motion:reduce){.track{animation:none}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=marquee.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee.css.js","names":[],"sources":["../../../src/content/marquee/marquee.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--color-canvas);\n --_radius: var(--rounded-xl);\n\n position: relative;\n display: block;\n width: 100%;\n min-height: 240px;\n overflow: hidden;\n background: var(--_bg);\n border-radius: var(--_radius);\n }\n\n .track {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n display: flex;\n flex-direction: row;\n gap: var(--marquee-gap, var(--size-4));\n align-items: stretch;\n width: max-content;\n animation: marquee-scroll var(--_marquee-duration, 20s) linear infinite;\n will-change: transform;\n }\n\n .controls {\n display: flex;\n gap: var(--size-0-5);\n align-items: center;\n pointer-events: none;\n }\n\n :host > .controls {\n position: absolute;\n inset-block-end: var(--size-3);\n inset-inline-end: var(--size-3);\n padding: var(--size-1-5) var(--size-2);\n background: color-mix(in oklch, var(--color-canvas) 55%, transparent);\n border-radius: var(--rounded-full);\n backdrop-filter: blur(6px);\n }\n\n .nav-btn {\n pointer-events: auto;\n }\n\n :host([direction='right']) .track {\n animation-direction: reverse;\n }\n\n :host([pause-on-hover]:hover) .track {\n animation-play-state: paused;\n }\n\n ::slotted(*) {\n position: relative;\n flex: 0 0 auto;\n height: 100%;\n }\n\n ::slotted([data-marquee-clone]) {\n pointer-events: none;\n user-select: none;\n }\n\n @keyframes marquee-scroll {\n from {\n transform: translateX(0);\n }\n\n to {\n transform: translateX(var(--_marquee-translate, -50%));\n }\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .track {\n animation: none;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import type { ThemeColor } from '../../types';
2
+ import '../icon/icon';
3
+ import '../../inputs/button/button';
4
+ export type MarqueeDirection = 'left' | 'right';
5
+ export type OreMarqueeProps = {
6
+ /** Theme color for the navigation controls. */
7
+ color?: ThemeColor;
8
+ /** Scroll direction. Defaults to `'left'`. */
9
+ direction?: MarqueeDirection;
10
+ /** Duration in seconds for one complete ticker cycle. Defaults to `20`. */
11
+ duration?: number;
12
+ /** Pause the ticker while it is hovered. Defaults to `false`. */
13
+ 'pause-on-hover'?: boolean;
14
+ /** Show previous/next navigation controls. Defaults to `true`. */
15
+ 'show-controls'?: boolean;
16
+ };
17
+ /**
18
+ * A CSS-driven, continuously scrolling ticker.
19
+ *
20
+ * Direct child elements are duplicated internally for a seamless loop. Cloned
21
+ * content is inert and hidden from assistive technology, so author interactive
22
+ * content only in the original children.
23
+ *
24
+ * @element ore-marquee
25
+ *
26
+ * @attr {string} color - Theme color for the navigation controls.
27
+ * @attr {number} duration - Duration in seconds for one ticker cycle (default: 20)
28
+ * @attr {string} direction - 'left' (default) | 'right'
29
+ * @attr {boolean} pause-on-hover - Pause while hovered (default: false)
30
+ * @attr {boolean} show-controls - Show previous/next controls (default: true)
31
+ *
32
+ * @cssprop --marquee-gap - Gap between ticker items (default: var(--size-4))
33
+ *
34
+ * @part track - The animated ticker track.
35
+ * @example
36
+ * ```html
37
+ * <ore-marquee duration="24" pause-on-hover>
38
+ * <span>Free shipping</span>
39
+ * <span>New arrivals</span>
40
+ * </ore-marquee>
41
+ * ```
42
+ */
43
+ export declare const MARQUEE_TAG: "ore-marquee";
44
+ //# sourceMappingURL=marquee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee.d.ts","sourceRoot":"","sources":["../../../src/content/marquee/marquee.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,cAAc,CAAC;AACtB,OAAO,4BAA4B,CAAC;AAGpC,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kEAAkE;IAClE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW,EAAG,aAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ function e(e){return!(!e.stepperClickable||e.disabled||e.linear&&e.stepperCurrentIndex>=0&&e.index>e.stepperCurrentIndex)}exports.isStepNavigable=e;
2
+ //# sourceMappingURL=_is-step-navigable.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_is-step-navigable.cjs","names":[],"sources":["../../../src/content/stepper/_is-step-navigable.ts"],"sourcesContent":["/**\n * Pure navigability rule shared by `ore-stepper` (building its own roving-tabindex\n * candidate list) and `ore-step` (reflecting its own `navigable` attribute for CSS/\n * testing). Kept in one place instead of duplicated inline so the two derivations\n * can't drift out of sync.\n */\nexport function isStepNavigable(options: {\n disabled: boolean;\n index: number;\n linear: boolean;\n stepperClickable: boolean;\n stepperCurrentIndex: number;\n}): boolean {\n if (!options.stepperClickable || options.disabled) return false;\n\n if (options.linear && options.stepperCurrentIndex >= 0 && options.index > options.stepperCurrentIndex) return false;\n\n return true;\n}\n"],"mappings":"AAMA,SAAgB,EAAgB,EAMpB,CAKV,MAFA,EAFI,CAAC,EAAQ,kBAAoB,EAAQ,UAErC,EAAQ,QAAU,EAAQ,qBAAuB,GAAK,EAAQ,MAAQ,EAAQ,oBAGpF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Pure navigability rule shared by `ore-stepper` (building its own roving-tabindex
3
+ * candidate list) and `ore-step` (reflecting its own `navigable` attribute for CSS/
4
+ * testing). Kept in one place instead of duplicated inline so the two derivations
5
+ * can't drift out of sync.
6
+ */
7
+ export declare function isStepNavigable(options: {
8
+ disabled: boolean;
9
+ index: number;
10
+ linear: boolean;
11
+ stepperClickable: boolean;
12
+ stepperCurrentIndex: number;
13
+ }): boolean;
14
+ //# sourceMappingURL=_is-step-navigable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_is-step-navigable.d.ts","sourceRoot":"","sources":["../../../src/content/stepper/_is-step-navigable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAMV"}
@@ -0,0 +1,8 @@
1
+ //#region src/content/stepper/_is-step-navigable.ts
2
+ function e(e) {
3
+ return !(!e.stepperClickable || e.disabled || e.linear && e.stepperCurrentIndex >= 0 && e.index > e.stepperCurrentIndex);
4
+ }
5
+ //#endregion
6
+ export { e as isStepNavigable };
7
+
8
+ //# sourceMappingURL=_is-step-navigable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_is-step-navigable.js","names":[],"sources":["../../../src/content/stepper/_is-step-navigable.ts"],"sourcesContent":["/**\n * Pure navigability rule shared by `ore-stepper` (building its own roving-tabindex\n * candidate list) and `ore-step` (reflecting its own `navigable` attribute for CSS/\n * testing). Kept in one place instead of duplicated inline so the two derivations\n * can't drift out of sync.\n */\nexport function isStepNavigable(options: {\n disabled: boolean;\n index: number;\n linear: boolean;\n stepperClickable: boolean;\n stepperCurrentIndex: number;\n}): boolean {\n if (!options.stepperClickable || options.disabled) return false;\n\n if (options.linear && options.stepperCurrentIndex >= 0 && options.index > options.stepperCurrentIndex) return false;\n\n return true;\n}\n"],"mappings":";AAMA,SAAgB,EAAgB,GAMpB;CAKV,OAFA,EAFI,CAAC,EAAQ,oBAAoB,EAAQ,YAErC,EAAQ,UAAU,EAAQ,uBAAuB,KAAK,EAAQ,QAAQ,EAAQ;AAGpF"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer refine.base{:host{--step-indicator-size:var(--size-8);--step-font-size:var(--text-sm);--step-gap:var(--size-2);flex:1;min-width:0;display:flex}.step{box-sizing:border-box;align-items:center;width:100%;list-style:none;display:flex;position:relative}.connector{top:calc(var(--size-1) + var(--step-indicator-size) / 2);width:calc(50% - var(--step-indicator-size) / 2);height:var(--stepper-connector-size,2px);background:var(--stepper-connector-color,var(--color-contrast-200));border-radius:var(--rounded-full);transition:background var(--transition-fast);position:absolute;transform:translateY(-50%)}.connector-leading{left:0}.connector-trailing{right:0}:host(:first-of-type) .connector-leading,:host(:last-of-type) .connector-trailing{display:none}.control{all:unset;box-sizing:border-box;gap:var(--step-gap);width:100%;min-width:0;padding:var(--size-1);cursor:default;border-radius:var(--rounded-lg);flex-direction:column;flex:auto;align-items:center;font-family:inherit;display:flex;position:relative}button.control{min-height:var(--_touch-target,auto);cursor:pointer;transition:background var(--transition-fast)}button.control:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button.control[aria-disabled=true]{cursor:not-allowed;opacity:.5}.indicator{box-sizing:border-box;width:var(--step-indicator-size);height:var(--step-indicator-size);font-size:var(--step-font-size);font-weight:var(--font-semibold);color:var(--color-contrast-500);background:var(--color-contrast-100);border:var(--border-2) solid var(--color-contrast-200);border-radius:var(--rounded-full);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);flex:none;justify-content:center;align-items:center;display:flex}.icon-slot[hidden]{display:none}.number{line-height:1}.content{text-align:center;flex-direction:column;flex:auto;align-items:center;min-width:0;display:flex}.label{gap:var(--size-1);min-width:0;font-size:var(--step-font-size);font-weight:var(--font-medium);color:var(--color-contrast-700);justify-content:center;align-items:baseline;display:flex}.label-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.optional-hint{font-size:var(--text-xs);font-weight:var(--font-normal);color:var(--color-contrast-400);flex:none}.description{font-size:var(--text-xs);color:var(--color-contrast-500)}.description[hidden]{display:none}.sr-only{white-space:nowrap;clip-path:inset(50%);border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@layer refine.states{:host([current]) .indicator{color:var(--_theme-contrast,var(--color-canvas));background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([current]) .label{font-weight:var(--font-semibold);color:var(--color-contrast-900)}:host([completed]) .indicator{color:var(--_theme-contrast,var(--color-canvas));background:var(--_theme-focus,var(--color-contrast-600));border-color:var(--_theme-focus,var(--color-contrast-600))}:host([completed]) .connector,:host([current]) .connector-leading{background:var(--_theme-focus,var(--color-contrast-400))}:host([error]) .indicator{color:var(--color-canvas);background:var(--color-error);border-color:var(--color-error)}:host([error]) .label{color:var(--color-error)}:host([disabled]) .label,:host([disabled]) .description{color:var(--color-contrast-400)}:host([disabled]) .indicator{opacity:.6}}@layer refine.sizes{:host([size=sm]){--step-indicator-size:var(--size-6);--step-font-size:var(--text-xs);--step-gap:var(--size-1-5)}:host(:not([size])),:host([size=md]){--step-indicator-size:var(--size-8);--step-font-size:var(--text-sm);--step-gap:var(--size-2)}:host([size=lg]){--step-indicator-size:var(--size-10);--step-font-size:var(--text-base);--step-gap:var(--size-2-5)}@media (pointer:coarse){:host(:not([size])),:host([size=sm]),:host([size=md]){--step-indicator-size:var(--size-9);--step-font-size:var(--text-sm)}}}@layer refine.orientation{:host([orientation=vertical]){flex:none;width:100%}:host([orientation=vertical]) .step{padding-top:var(--stepper-gap,var(--size-4));align-items:flex-start}:host([orientation=vertical]:first-of-type) .step{padding-top:0}:host([orientation=vertical]) .control{flex-direction:row;align-items:flex-start}:host([orientation=vertical]) .content{text-align:left;align-items:flex-start}:host([orientation=vertical]) .label{justify-content:flex-start}:host([orientation=vertical]) .connector-leading{top:0;left:calc(var(--size-1) + var(--step-indicator-size) / 2);width:var(--stepper-connector-size,2px);height:calc(var(--stepper-gap,var(--size-4)) + var(--size-1));transform:translate(-50%)}:host([orientation=vertical]) .connector-trailing{inset:calc(var(--stepper-gap,var(--size-4)) + var(--size-1) + var(--step-indicator-size)) auto 0 calc(var(--size-1) + var(--step-indicator-size) / 2);width:var(--stepper-connector-size,2px);height:auto;transform:translate(-50%)}:host([orientation=vertical]:first-of-type) .connector-trailing{top:calc(var(--size-1) + var(--step-indicator-size))}}@media (forced-colors:active){.indicator{border:1px solid buttontext}:host([current]) .indicator,:host([completed]) .indicator{border:1px solid highlight}}`;exports.default=e;
2
+ //# sourceMappingURL=step.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.css.cjs","names":[],"sources":["../../../src/content/stepper/step.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n flex: 1 1 0%;\n min-width: 0;\n\n --step-indicator-size: var(--size-8);\n --step-font-size: var(--text-sm);\n --step-gap: var(--size-2);\n }\n\n .step {\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%;\n list-style: none;\n }\n\n /* Horizontal (default) layout centers the indicator above the label in each equal-width\n column (see `.control`/`.content` below) so the indicator sits at a predictable, constant\n horizontal position — the midpoint of its own step — regardless of label length. The full\n line between two indicators is drawn as *two* halves — this step's own `.connector-leading`\n (its own left edge to its own indicator) and `.connector-trailing` (its own indicator to its\n own right edge) — each confined entirely inside this step's own box. Reaching a single\n connector backward into the previous step's box (an earlier attempt) doesn't work: `ore-step`\n is its own custom element/shadow root, so a later sibling's positioned content always paints\n in front of an earlier sibling's regardless of internal stacking, and `.control`'s own hover\n background only covers its own box — so the part of the line sitting outside it looked like\n a stray line poking out next to the hover highlight instead of being part of it. */\n .connector {\n position: absolute;\n top: calc(var(--size-1) + var(--step-indicator-size) / 2);\n width: calc(50% - var(--step-indicator-size) / 2);\n height: var(--stepper-connector-size, 2px);\n background: var(--stepper-connector-color, var(--color-contrast-200));\n border-radius: var(--rounded-full);\n transform: translateY(-50%);\n transition: background var(--transition-fast);\n }\n\n .connector-leading {\n left: 0;\n }\n\n .connector-trailing {\n right: 0;\n }\n\n /* No preceding/following step to connect to. */\n :host(:first-of-type) .connector-leading {\n display: none;\n }\n\n :host(:last-of-type) .connector-trailing {\n display: none;\n }\n\n .control {\n all: unset;\n\n /* Declared after `all: unset` (which resets `position` back to `static`), not before it.\n Puts `.control` in the same paint order as `.connector` (also positioned) instead of\n `.connector` — being absolutely positioned — automatically painting above all of this\n *static*, normal-flow content regardless of DOM order. `.control` comes after\n `.connector` in the markup, so with both positioned it (and the opaque indicator inside\n it) now correctly paints over the connector line instead of the line cutting across\n every indicator. */\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--step-gap);\n align-items: center;\n width: 100%;\n min-width: 0;\n padding: var(--size-1);\n font-family: inherit;\n cursor: default;\n border-radius: var(--rounded-lg);\n }\n\n button.control {\n min-height: var(--_touch-target, auto);\n cursor: pointer;\n transition: background var(--transition-fast);\n }\n\n button.control:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n button.control[aria-disabled='true'] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .indicator {\n /* Without this, the `border` below adds on top of `width`/`height` instead of being\n included in them, rendering the indicator ~2 * border-width larger per axis than\n `--step-indicator-size` — every connector position calc using that variable to line up\n with the indicator's true center/edge (especially the vertical connector's horizontal\n `left`, which has no flexbox centering to fall back on) would then be off by that much. */\n box-sizing: border-box;\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: var(--step-indicator-size);\n height: var(--step-indicator-size);\n font-size: var(--step-font-size);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n background: var(--color-contrast-100);\n border: var(--border-2) solid var(--color-contrast-200);\n border-radius: var(--rounded-full);\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n .icon-slot[hidden] {\n display: none;\n }\n\n .number {\n line-height: 1;\n }\n\n .content {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-items: center;\n min-width: 0;\n text-align: center;\n }\n\n .label {\n display: flex;\n gap: var(--size-1);\n align-items: baseline;\n justify-content: center;\n min-width: 0;\n font-size: var(--step-font-size);\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n }\n\n .label-text {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .optional-hint {\n flex: 0 0 auto;\n font-size: var(--text-xs);\n font-weight: var(--font-normal);\n color: var(--color-contrast-400);\n }\n\n .description {\n font-size: var(--text-xs);\n color: var(--color-contrast-500);\n }\n\n .description[hidden] {\n display: none;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border-width: 0;\n clip-path: inset(50%);\n }\n}\n\n@layer refine.states {\n :host([current]) .indicator {\n color: var(--_theme-contrast, var(--color-canvas));\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([current]) .label {\n font-weight: var(--font-semibold);\n color: var(--color-contrast-900);\n }\n\n :host([completed]) .indicator {\n color: var(--_theme-contrast, var(--color-canvas));\n background: var(--_theme-focus, var(--color-contrast-600));\n border-color: var(--_theme-focus, var(--color-contrast-600));\n }\n\n /* A completed step colors both the segment leading into it and the one trailing out of it\n (progress has fully passed through); the current step only colors the leading segment\n (progress has arrived, but not yet moved past it into the next step). */\n :host([completed]) .connector,\n :host([current]) .connector-leading {\n background: var(--_theme-focus, var(--color-contrast-400));\n }\n\n :host([error]) .indicator {\n color: var(--color-canvas);\n background: var(--color-error);\n border-color: var(--color-error);\n }\n\n :host([error]) .label {\n color: var(--color-error);\n }\n\n :host([disabled]) .label,\n :host([disabled]) .description {\n color: var(--color-contrast-400);\n }\n\n :host([disabled]) .indicator {\n opacity: 0.6;\n }\n}\n\n@layer refine.sizes {\n :host([size='sm']) {\n --step-indicator-size: var(--size-6);\n --step-font-size: var(--text-xs);\n --step-gap: var(--size-1-5);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --step-indicator-size: var(--size-8);\n --step-font-size: var(--text-sm);\n --step-gap: var(--size-2);\n }\n\n :host([size='lg']) {\n --step-indicator-size: var(--size-10);\n --step-font-size: var(--text-base);\n --step-gap: var(--size-2-5);\n }\n\n @media (pointer: coarse) {\n :host(:not([size])),\n :host([size='sm']),\n :host([size='md']) {\n --step-indicator-size: var(--size-9);\n --step-font-size: var(--text-sm);\n }\n }\n}\n\n@layer refine.orientation {\n /* Vertical (mobile-friendly) layout: back to the inline icon-beside-label arrangement (more\n compact for narrow/mobile widths), with `padding-block-start` reserving room for a\n top-to-bottom connector into this step's own indicator instead of the horizontal\n center-to-center line above. */\n :host([orientation='vertical']) {\n flex: 0 0 auto;\n width: 100%;\n }\n\n :host([orientation='vertical']) .step {\n align-items: flex-start;\n padding-block-start: var(--stepper-gap, var(--size-4));\n }\n\n :host([orientation='vertical']:first-of-type) .step {\n padding-block-start: 0;\n }\n\n :host([orientation='vertical']) .control {\n flex-direction: row;\n align-items: flex-start;\n }\n\n :host([orientation='vertical']) .content {\n align-items: flex-start;\n text-align: left;\n }\n\n :host([orientation='vertical']) .label {\n justify-content: flex-start;\n }\n\n /* Same two-halves idea as horizontal, rotated: `.connector-leading` runs from this step's own\n top edge down into its indicator (through the `padding-block-start` gap reserved above).\n `.connector-trailing` runs from the *bottom* of this step's indicator down to this step's\n own bottom edge — using `top`+`bottom` (no fixed `height`) so it stretches to whatever this\n step's content actually needs, instead of a fixed length that only reached as far as the\n padding gap. A step with a longer description is taller, and its trailing segment grows\n with it — the next step's leading segment then only has to bridge the fixed padding gap,\n so the two halves always meet exactly at the boundary between the two steps regardless of\n how much content either one has. */\n :host([orientation='vertical']) .connector-leading {\n top: 0;\n left: calc(var(--size-1) + var(--step-indicator-size) / 2);\n width: var(--stepper-connector-size, 2px);\n height: calc(var(--stepper-gap, var(--size-4)) + var(--size-1));\n transform: translateX(-50%);\n }\n\n :host([orientation='vertical']) .connector-trailing {\n inset: calc(var(--stepper-gap, var(--size-4)) + var(--size-1) + var(--step-indicator-size)) auto 0\n calc(var(--size-1) + var(--step-indicator-size) / 2);\n width: var(--stepper-connector-size, 2px);\n height: auto;\n transform: translateX(-50%);\n }\n\n /* The first step's `padding-block-start` is reset to 0 above (no incoming line to make room\n for) — `.connector-trailing`'s `top` has to drop the same gap term here, or it starts\n lower than the indicator's true bottom edge and its `bottom: 0` counterpart can compute a\n negative (clamped to 0) height, hiding the segment entirely. */\n :host([orientation='vertical']:first-of-type) .connector-trailing {\n top: calc(var(--size-1) + var(--step-indicator-size));\n }\n}\n\n@media (forced-colors: active) {\n .indicator {\n border: 1px solid ButtonText;\n }\n\n :host([current]) .indicator,\n :host([completed]) .indicator {\n border: 1px solid Highlight;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/content/stepper/step.css?inline
2
+ var e = "@layer refine.base{:host{--step-indicator-size:var(--size-8);--step-font-size:var(--text-sm);--step-gap:var(--size-2);flex:1;min-width:0;display:flex}.step{box-sizing:border-box;align-items:center;width:100%;list-style:none;display:flex;position:relative}.connector{top:calc(var(--size-1) + var(--step-indicator-size) / 2);width:calc(50% - var(--step-indicator-size) / 2);height:var(--stepper-connector-size,2px);background:var(--stepper-connector-color,var(--color-contrast-200));border-radius:var(--rounded-full);transition:background var(--transition-fast);position:absolute;transform:translateY(-50%)}.connector-leading{left:0}.connector-trailing{right:0}:host(:first-of-type) .connector-leading,:host(:last-of-type) .connector-trailing{display:none}.control{all:unset;box-sizing:border-box;gap:var(--step-gap);width:100%;min-width:0;padding:var(--size-1);cursor:default;border-radius:var(--rounded-lg);flex-direction:column;flex:auto;align-items:center;font-family:inherit;display:flex;position:relative}button.control{min-height:var(--_touch-target,auto);cursor:pointer;transition:background var(--transition-fast)}button.control:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button.control[aria-disabled=true]{cursor:not-allowed;opacity:.5}.indicator{box-sizing:border-box;width:var(--step-indicator-size);height:var(--step-indicator-size);font-size:var(--step-font-size);font-weight:var(--font-semibold);color:var(--color-contrast-500);background:var(--color-contrast-100);border:var(--border-2) solid var(--color-contrast-200);border-radius:var(--rounded-full);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);flex:none;justify-content:center;align-items:center;display:flex}.icon-slot[hidden]{display:none}.number{line-height:1}.content{text-align:center;flex-direction:column;flex:auto;align-items:center;min-width:0;display:flex}.label{gap:var(--size-1);min-width:0;font-size:var(--step-font-size);font-weight:var(--font-medium);color:var(--color-contrast-700);justify-content:center;align-items:baseline;display:flex}.label-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.optional-hint{font-size:var(--text-xs);font-weight:var(--font-normal);color:var(--color-contrast-400);flex:none}.description{font-size:var(--text-xs);color:var(--color-contrast-500)}.description[hidden]{display:none}.sr-only{white-space:nowrap;clip-path:inset(50%);border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@layer refine.states{:host([current]) .indicator{color:var(--_theme-contrast,var(--color-canvas));background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([current]) .label{font-weight:var(--font-semibold);color:var(--color-contrast-900)}:host([completed]) .indicator{color:var(--_theme-contrast,var(--color-canvas));background:var(--_theme-focus,var(--color-contrast-600));border-color:var(--_theme-focus,var(--color-contrast-600))}:host([completed]) .connector,:host([current]) .connector-leading{background:var(--_theme-focus,var(--color-contrast-400))}:host([error]) .indicator{color:var(--color-canvas);background:var(--color-error);border-color:var(--color-error)}:host([error]) .label{color:var(--color-error)}:host([disabled]) .label,:host([disabled]) .description{color:var(--color-contrast-400)}:host([disabled]) .indicator{opacity:.6}}@layer refine.sizes{:host([size=sm]){--step-indicator-size:var(--size-6);--step-font-size:var(--text-xs);--step-gap:var(--size-1-5)}:host(:not([size])),:host([size=md]){--step-indicator-size:var(--size-8);--step-font-size:var(--text-sm);--step-gap:var(--size-2)}:host([size=lg]){--step-indicator-size:var(--size-10);--step-font-size:var(--text-base);--step-gap:var(--size-2-5)}@media (pointer:coarse){:host(:not([size])),:host([size=sm]),:host([size=md]){--step-indicator-size:var(--size-9);--step-font-size:var(--text-sm)}}}@layer refine.orientation{:host([orientation=vertical]){flex:none;width:100%}:host([orientation=vertical]) .step{padding-top:var(--stepper-gap,var(--size-4));align-items:flex-start}:host([orientation=vertical]:first-of-type) .step{padding-top:0}:host([orientation=vertical]) .control{flex-direction:row;align-items:flex-start}:host([orientation=vertical]) .content{text-align:left;align-items:flex-start}:host([orientation=vertical]) .label{justify-content:flex-start}:host([orientation=vertical]) .connector-leading{top:0;left:calc(var(--size-1) + var(--step-indicator-size) / 2);width:var(--stepper-connector-size,2px);height:calc(var(--stepper-gap,var(--size-4)) + var(--size-1));transform:translate(-50%)}:host([orientation=vertical]) .connector-trailing{inset:calc(var(--stepper-gap,var(--size-4)) + var(--size-1) + var(--step-indicator-size)) auto 0 calc(var(--size-1) + var(--step-indicator-size) / 2);width:var(--stepper-connector-size,2px);height:auto;transform:translate(-50%)}:host([orientation=vertical]:first-of-type) .connector-trailing{top:calc(var(--size-1) + var(--step-indicator-size))}}@media (forced-colors:active){.indicator{border:1px solid buttontext}:host([current]) .indicator,:host([completed]) .indicator{border:1px solid highlight}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=step.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.css.js","names":[],"sources":["../../../src/content/stepper/step.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n flex: 1 1 0%;\n min-width: 0;\n\n --step-indicator-size: var(--size-8);\n --step-font-size: var(--text-sm);\n --step-gap: var(--size-2);\n }\n\n .step {\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%;\n list-style: none;\n }\n\n /* Horizontal (default) layout centers the indicator above the label in each equal-width\n column (see `.control`/`.content` below) so the indicator sits at a predictable, constant\n horizontal position — the midpoint of its own step — regardless of label length. The full\n line between two indicators is drawn as *two* halves — this step's own `.connector-leading`\n (its own left edge to its own indicator) and `.connector-trailing` (its own indicator to its\n own right edge) — each confined entirely inside this step's own box. Reaching a single\n connector backward into the previous step's box (an earlier attempt) doesn't work: `ore-step`\n is its own custom element/shadow root, so a later sibling's positioned content always paints\n in front of an earlier sibling's regardless of internal stacking, and `.control`'s own hover\n background only covers its own box — so the part of the line sitting outside it looked like\n a stray line poking out next to the hover highlight instead of being part of it. */\n .connector {\n position: absolute;\n top: calc(var(--size-1) + var(--step-indicator-size) / 2);\n width: calc(50% - var(--step-indicator-size) / 2);\n height: var(--stepper-connector-size, 2px);\n background: var(--stepper-connector-color, var(--color-contrast-200));\n border-radius: var(--rounded-full);\n transform: translateY(-50%);\n transition: background var(--transition-fast);\n }\n\n .connector-leading {\n left: 0;\n }\n\n .connector-trailing {\n right: 0;\n }\n\n /* No preceding/following step to connect to. */\n :host(:first-of-type) .connector-leading {\n display: none;\n }\n\n :host(:last-of-type) .connector-trailing {\n display: none;\n }\n\n .control {\n all: unset;\n\n /* Declared after `all: unset` (which resets `position` back to `static`), not before it.\n Puts `.control` in the same paint order as `.connector` (also positioned) instead of\n `.connector` — being absolutely positioned — automatically painting above all of this\n *static*, normal-flow content regardless of DOM order. `.control` comes after\n `.connector` in the markup, so with both positioned it (and the opaque indicator inside\n it) now correctly paints over the connector line instead of the line cutting across\n every indicator. */\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--step-gap);\n align-items: center;\n width: 100%;\n min-width: 0;\n padding: var(--size-1);\n font-family: inherit;\n cursor: default;\n border-radius: var(--rounded-lg);\n }\n\n button.control {\n min-height: var(--_touch-target, auto);\n cursor: pointer;\n transition: background var(--transition-fast);\n }\n\n button.control:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n button.control[aria-disabled='true'] {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .indicator {\n /* Without this, the `border` below adds on top of `width`/`height` instead of being\n included in them, rendering the indicator ~2 * border-width larger per axis than\n `--step-indicator-size` — every connector position calc using that variable to line up\n with the indicator's true center/edge (especially the vertical connector's horizontal\n `left`, which has no flexbox centering to fall back on) would then be off by that much. */\n box-sizing: border-box;\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: var(--step-indicator-size);\n height: var(--step-indicator-size);\n font-size: var(--step-font-size);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-500);\n background: var(--color-contrast-100);\n border: var(--border-2) solid var(--color-contrast-200);\n border-radius: var(--rounded-full);\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n .icon-slot[hidden] {\n display: none;\n }\n\n .number {\n line-height: 1;\n }\n\n .content {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-items: center;\n min-width: 0;\n text-align: center;\n }\n\n .label {\n display: flex;\n gap: var(--size-1);\n align-items: baseline;\n justify-content: center;\n min-width: 0;\n font-size: var(--step-font-size);\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n }\n\n .label-text {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .optional-hint {\n flex: 0 0 auto;\n font-size: var(--text-xs);\n font-weight: var(--font-normal);\n color: var(--color-contrast-400);\n }\n\n .description {\n font-size: var(--text-xs);\n color: var(--color-contrast-500);\n }\n\n .description[hidden] {\n display: none;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border-width: 0;\n clip-path: inset(50%);\n }\n}\n\n@layer refine.states {\n :host([current]) .indicator {\n color: var(--_theme-contrast, var(--color-canvas));\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([current]) .label {\n font-weight: var(--font-semibold);\n color: var(--color-contrast-900);\n }\n\n :host([completed]) .indicator {\n color: var(--_theme-contrast, var(--color-canvas));\n background: var(--_theme-focus, var(--color-contrast-600));\n border-color: var(--_theme-focus, var(--color-contrast-600));\n }\n\n /* A completed step colors both the segment leading into it and the one trailing out of it\n (progress has fully passed through); the current step only colors the leading segment\n (progress has arrived, but not yet moved past it into the next step). */\n :host([completed]) .connector,\n :host([current]) .connector-leading {\n background: var(--_theme-focus, var(--color-contrast-400));\n }\n\n :host([error]) .indicator {\n color: var(--color-canvas);\n background: var(--color-error);\n border-color: var(--color-error);\n }\n\n :host([error]) .label {\n color: var(--color-error);\n }\n\n :host([disabled]) .label,\n :host([disabled]) .description {\n color: var(--color-contrast-400);\n }\n\n :host([disabled]) .indicator {\n opacity: 0.6;\n }\n}\n\n@layer refine.sizes {\n :host([size='sm']) {\n --step-indicator-size: var(--size-6);\n --step-font-size: var(--text-xs);\n --step-gap: var(--size-1-5);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --step-indicator-size: var(--size-8);\n --step-font-size: var(--text-sm);\n --step-gap: var(--size-2);\n }\n\n :host([size='lg']) {\n --step-indicator-size: var(--size-10);\n --step-font-size: var(--text-base);\n --step-gap: var(--size-2-5);\n }\n\n @media (pointer: coarse) {\n :host(:not([size])),\n :host([size='sm']),\n :host([size='md']) {\n --step-indicator-size: var(--size-9);\n --step-font-size: var(--text-sm);\n }\n }\n}\n\n@layer refine.orientation {\n /* Vertical (mobile-friendly) layout: back to the inline icon-beside-label arrangement (more\n compact for narrow/mobile widths), with `padding-block-start` reserving room for a\n top-to-bottom connector into this step's own indicator instead of the horizontal\n center-to-center line above. */\n :host([orientation='vertical']) {\n flex: 0 0 auto;\n width: 100%;\n }\n\n :host([orientation='vertical']) .step {\n align-items: flex-start;\n padding-block-start: var(--stepper-gap, var(--size-4));\n }\n\n :host([orientation='vertical']:first-of-type) .step {\n padding-block-start: 0;\n }\n\n :host([orientation='vertical']) .control {\n flex-direction: row;\n align-items: flex-start;\n }\n\n :host([orientation='vertical']) .content {\n align-items: flex-start;\n text-align: left;\n }\n\n :host([orientation='vertical']) .label {\n justify-content: flex-start;\n }\n\n /* Same two-halves idea as horizontal, rotated: `.connector-leading` runs from this step's own\n top edge down into its indicator (through the `padding-block-start` gap reserved above).\n `.connector-trailing` runs from the *bottom* of this step's indicator down to this step's\n own bottom edge — using `top`+`bottom` (no fixed `height`) so it stretches to whatever this\n step's content actually needs, instead of a fixed length that only reached as far as the\n padding gap. A step with a longer description is taller, and its trailing segment grows\n with it — the next step's leading segment then only has to bridge the fixed padding gap,\n so the two halves always meet exactly at the boundary between the two steps regardless of\n how much content either one has. */\n :host([orientation='vertical']) .connector-leading {\n top: 0;\n left: calc(var(--size-1) + var(--step-indicator-size) / 2);\n width: var(--stepper-connector-size, 2px);\n height: calc(var(--stepper-gap, var(--size-4)) + var(--size-1));\n transform: translateX(-50%);\n }\n\n :host([orientation='vertical']) .connector-trailing {\n inset: calc(var(--stepper-gap, var(--size-4)) + var(--size-1) + var(--step-indicator-size)) auto 0\n calc(var(--size-1) + var(--step-indicator-size) / 2);\n width: var(--stepper-connector-size, 2px);\n height: auto;\n transform: translateX(-50%);\n }\n\n /* The first step's `padding-block-start` is reset to 0 above (no incoming line to make room\n for) — `.connector-trailing`'s `top` has to drop the same gap term here, or it starts\n lower than the indicator's true bottom edge and its `bottom: 0` counterpart can compute a\n negative (clamped to 0) height, hiding the segment entirely. */\n :host([orientation='vertical']:first-of-type) .connector-trailing {\n top: calc(var(--size-1) + var(--step-indicator-size));\n }\n}\n\n@media (forced-colors: active) {\n .indicator {\n border: 1px solid ButtonText;\n }\n\n :host([current]) .indicator,\n :host([completed]) .indicator {\n border: 1px solid Highlight;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import type { ComponentSize, ThemeColor } from '../../types';
2
+ import '../icon/icon';
3
+ export type OreStepProps = {
4
+ /**
5
+ * Theme color. Inherited from the parent `ore-stepper` when nested inside one (overrides
6
+ * this value); only takes effect on its own when `ore-step` is rendered standalone.
7
+ */
8
+ color?: ThemeColor;
9
+ /** Disables this step — it cannot be navigated to and is skipped by keyboard navigation. */
10
+ disabled?: boolean;
11
+ /** Marks this step as failed/invalid. Overrides the completed/current indicator visuals. */
12
+ error?: boolean;
13
+ /**
14
+ * Marks this step as optional. Renders a small "(optional)" hint next to the label.
15
+ * Purely presentational — has no effect on navigation.
16
+ */
17
+ optional?: boolean;
18
+ /** Orientation. Inherited from the parent `ore-stepper` when nested inside one. */
19
+ orientation?: 'horizontal' | 'vertical';
20
+ /** Component size. Inherited from the parent `ore-stepper` when nested inside one. */
21
+ size?: ComponentSize;
22
+ /** Unique identifier, matches `ore-stepper`'s `value` attribute. */
23
+ value: string;
24
+ };
25
+ /**
26
+ * A single step trigger. Must be placed as a direct child of `ore-stepper`, which provides
27
+ * this step's current/completed/navigable/index/total state via context — those are derived,
28
+ * read-only attributes on this element, not settable props.
29
+ *
30
+ * @element ore-step
31
+ *
32
+ * @attr {string} value - Unique identifier, matches the parent ore-stepper's `value` attribute
33
+ * @attr {boolean} disabled - Prevents navigation to this step
34
+ * @attr {boolean} error - Marks the step as failed/invalid
35
+ * @attr {boolean} optional - Renders an "(optional)" hint next to the label
36
+ * @attr {boolean} current - Read-only. Derived from position relative to the parent ore-stepper's `value`.
37
+ * @attr {boolean} completed - Read-only. Derived from position relative to the parent ore-stepper's `value`.
38
+ * @attr {boolean} navigable - Read-only. Derived from the parent ore-stepper's `clickable`/`linear`/`disabled`.
39
+ * @attr {number} index - Read-only. This step's 1-based position among its siblings.
40
+ * @attr {number} total - Read-only. Total sibling step count.
41
+ * @attr {string} color - Inherited from ore-stepper: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
42
+ * @attr {string} size - Inherited from ore-stepper: 'sm' | 'md' | 'lg'
43
+ * @attr {string} orientation - Inherited from ore-stepper: 'horizontal' | 'vertical'
44
+ *
45
+ * @slot - Step label
46
+ * @slot description - Optional supporting text shown below the label
47
+ * @slot icon - Custom icon replacing the step number/check/error indicator
48
+ *
49
+ * @part control - Clickable (or static) root element for the step
50
+ * @part indicator - Circular indicator holding the number/icon
51
+ * @part content - Wrapper around the label and description
52
+ * @part label - Step label element
53
+ * @part description - Step description element
54
+ * @part connector - Connector line segments (leading and trailing halves) either side of this step's indicator
55
+ *
56
+ * @example
57
+ * ```html
58
+ * <ore-step value="details">Account details</ore-step>
59
+ * <ore-step value="review" disabled>Review</ore-step>
60
+ * ```
61
+ */
62
+ export declare const STEP_TAG: "ore-step";
63
+ //# sourceMappingURL=step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../../src/content/stepper/step.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,cAAc,CAAC;AAOtB,MAAM,MAAM,YAAY,GAAG;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,sFAAsF;IACtF,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,QAAQ,EAAG,UAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer refine.base{:host,nav{width:100%;display:block}.steps{align-items:flex-start;gap:0;width:100%;margin:0;padding:0;list-style:none;display:flex}.stepper-message{margin-top:var(--size-3);display:block}}@layer refine.orientation{:host([orientation=vertical]) .steps{flex-direction:column;align-items:stretch}}`;exports.default=e;
2
+ //# sourceMappingURL=stepper.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepper.css.cjs","names":[],"sources":["../../../src/content/stepper/stepper.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: block;\n width: 100%;\n }\n\n nav {\n display: block;\n width: 100%;\n }\n\n .steps {\n /* Spacing between steps comes from each ore-step's own `padding-inline-start` /\n `padding-block-start` (see step.css), not a flex `gap` here — that lets each step's\n connector line be drawn from its own edge to its own indicator using the exact same\n length it was given room for, with no separate gap value to keep in sync by hand. */\n display: flex;\n gap: 0;\n align-items: flex-start;\n width: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .stepper-message {\n display: block;\n margin-top: var(--size-3);\n }\n}\n\n@layer refine.orientation {\n :host([orientation='vertical']) .steps {\n flex-direction: column;\n align-items: stretch;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/content/stepper/stepper.css?inline
2
+ var e = "@layer refine.base{:host,nav{width:100%;display:block}.steps{align-items:flex-start;gap:0;width:100%;margin:0;padding:0;list-style:none;display:flex}.stepper-message{margin-top:var(--size-3);display:block}}@layer refine.orientation{:host([orientation=vertical]) .steps{flex-direction:column;align-items:stretch}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=stepper.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepper.css.js","names":[],"sources":["../../../src/content/stepper/stepper.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: block;\n width: 100%;\n }\n\n nav {\n display: block;\n width: 100%;\n }\n\n .steps {\n /* Spacing between steps comes from each ore-step's own `padding-inline-start` /\n `padding-block-start` (see step.css), not a flex `gap` here — that lets each step's\n connector line be drawn from its own edge to its own indicator using the exact same\n length it was given room for, with no separate gap value to keep in sync by hand. */\n display: flex;\n gap: 0;\n align-items: flex-start;\n width: 100%;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n .stepper-message {\n display: block;\n margin-top: var(--size-3);\n }\n}\n\n@layer refine.orientation {\n :host([orientation='vertical']) .steps {\n flex-direction: column;\n align-items: stretch;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,88 @@
1
+ import { type Readable } from '@vielzeug/ripple';
2
+ import type { ComponentSize, ThemeColor } from '../../types';
3
+ /** Context provided by ore-stepper to its ore-step children. */
4
+ export type StepperContext = {
5
+ clickable: Readable<boolean>;
6
+ color: Readable<ThemeColor | undefined>;
7
+ currentValue: Readable<string | undefined>;
8
+ linear: Readable<boolean>;
9
+ orientation: Readable<'horizontal' | 'vertical'>;
10
+ size: Readable<ComponentSize | undefined>;
11
+ /** Ordered `value`s of every sibling `ore-step`, used to derive index/total/completed. */
12
+ stepValues: Readable<string[]>;
13
+ };
14
+ /** Injection key for the stepper context. */
15
+ export declare const STEPPER_CTX: import("@vielzeug/ore").InjectionKey<StepperContext>;
16
+ export type OreStepperEvents = {
17
+ change: {
18
+ value: string;
19
+ };
20
+ };
21
+ export type OreStepperProps = {
22
+ /** When true, steps are clickable/keyboard-focusable for navigation. Default: display-only progress. */
23
+ clickable?: boolean;
24
+ /** Theme color for the current/completed step indicators */
25
+ color?: ThemeColor;
26
+ /** Disables the whole stepper — no step is navigable regardless of `clickable` */
27
+ disabled?: boolean;
28
+ /** Accessible label for the nav landmark */
29
+ label?: string;
30
+ /**
31
+ * Restricts navigation to completed steps and the current step — steps ahead of the
32
+ * current one cannot be clicked or focused, even when `clickable` is set.
33
+ */
34
+ linear?: boolean;
35
+ /** Layout orientation — 'horizontal' (default, desktop) or 'vertical' (compact/mobile-friendly) */
36
+ orientation?: 'horizontal' | 'vertical';
37
+ /** Component size */
38
+ size?: ComponentSize;
39
+ /** The `value` of the currently active `ore-step` */
40
+ value?: string;
41
+ };
42
+ /**
43
+ * Displays progress through a sequence of numbered steps. Manages step selection and provides
44
+ * shared state (current value, clickability, theming) to its `ore-step` children via context.
45
+ * Can be purely informational (progress display) or interactive navigation.
46
+ *
47
+ * @element ore-stepper
48
+ * @element ore-step - Child element for each step (auto-discovered)
49
+ *
50
+ * @attr {string} value - The value of the currently active step
51
+ * @attr {boolean} clickable - Allow clicking/focusing steps to navigate
52
+ * @attr {boolean} linear - Restrict navigation to completed + current steps only
53
+ * @attr {boolean} disabled - Disables the whole stepper
54
+ * @attr {string} orientation - 'horizontal' (default) | 'vertical'
55
+ * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
56
+ * @attr {string} size - Size: 'sm' | 'md' | 'lg'
57
+ * @attr {string} label - Accessible nav landmark label (default: 'Progress')
58
+ *
59
+ * @fires change - Emitted when the active step changes via click/keyboard. detail: { value: string }
60
+ *
61
+ * @slot - `ore-step` elements
62
+ *
63
+ * @cssprop --stepper-connector-color - Color of the connector line between steps
64
+ * @cssprop --stepper-connector-size - Thickness of the connector line
65
+ * @cssprop --stepper-gap - Gap between steps
66
+ *
67
+ * @part nav - Navigation landmark element
68
+ * @part list - Ordered list container holding the slotted steps
69
+ *
70
+ * @example
71
+ * ```html
72
+ * <!-- Display-only progress -->
73
+ * <ore-stepper value="shipping" color="primary">
74
+ * <ore-step value="cart">Cart</ore-step>
75
+ * <ore-step value="shipping">Shipping</ore-step>
76
+ * <ore-step value="payment">Payment</ore-step>
77
+ * </ore-stepper>
78
+ *
79
+ * <!-- Clickable navigation, mobile-friendly vertical layout -->
80
+ * <ore-stepper value="shipping" clickable linear orientation="vertical">
81
+ * <ore-step value="cart">Cart</ore-step>
82
+ * <ore-step value="shipping">Shipping</ore-step>
83
+ * <ore-step value="payment" disabled>Payment</ore-step>
84
+ * </ore-stepper>
85
+ * ```
86
+ */
87
+ export declare const STEPPER_TAG: "ore-stepper";
88
+ //# sourceMappingURL=stepper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../src/content/stepper/stepper.ts"],"names":[],"mappings":"AAaA,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkB7D,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,EAAE,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IACxC,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,WAAW,EAAE,QAAQ,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;IACjD,IAAI,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAC1C,0FAA0F;IAC1F,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CAChC,CAAC;AACF,6CAA6C;AAC7C,eAAO,MAAM,WAAW,sDAAkD,CAAC;AAE3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,wGAAwG;IACxG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mGAAmG;IACnG,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,qBAAqB;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,WAAW,EAAG,aAAsB,CAAC"}
@@ -1,9 +1,15 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./content/copy-command/copy-command.css.cjs");let n=require("@vielzeug/ore"),r=require("@vielzeug/ripple");var i=`ore-copy-command`;(0,n.define)(i,{props:{rounded:n.prop.string(`md`),size:n.prop.string(`md`),value:n.prop.string(``),variant:n.prop.string(`flat`)},setup(e){let t=(0,n.useEmit)(),i=(0,n.useSlots)(),a=(0,r.signal)(!1),o=(0,r.signal)(!1),s=null;(0,n.onCleanup)(()=>{s!==null&&clearTimeout(s)});let c=async()=>{let n=e.value.value??``;if(n){s!==null&&clearTimeout(s);try{await navigator.clipboard.writeText(n),a.value=!0,o.value=!1,t(`copy`,{value:n})}catch{a.value=!1,o.value=!0}s=setTimeout(()=>{a.value=!1,o.value=!1,s=null},2e3)}},l=(0,r.computed)(()=>i.has(`suffix`).value);return n.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./styles/mixins/accessibility.css.cjs"),t=require("./content/copy-command/copy-command.css.cjs");let n=require("@vielzeug/ore"),r=require("@vielzeug/ripple");var i=`ore-copy-command`;(0,n.define)(i,{props:{rounded:n.prop.string(`md`),size:n.prop.string(`md`),value:n.prop.string(``),variant:n.prop.string(`flat`)},setup(e){let t=(0,n.useEmit)(),i=(0,n.useSlots)(),a=(0,r.signal)(!1),o=(0,r.signal)(!1),s=null;(0,n.onCleanup)(()=>{s!==null&&clearTimeout(s)});let c=async()=>{let n=e.value.value??``;if(n){s!==null&&clearTimeout(s);try{await navigator.clipboard.writeText(n),a.value=!0,o.value=!1,t(`copy`,{value:n})}catch{a.value=!1,o.value=!0}s=setTimeout(()=>{a.value=!1,o.value=!1,s=null},2e3)}},l=(0,r.computed)(()=>i.has(`suffix`).value),u=(0,r.computed)(()=>a.value?`Copied!`:o.value?`Copy failed — press to try again`:`Copy: ${e.value.value??``}`);return n.html`
2
2
  <div class="wrapper" part="wrapper">
3
- <button class="command" part="command" type="button" :aria-label="${(0,r.computed)(()=>a.value?`Copied!`:o.value?`Copy failed — press to try again`:`Copy: ${e.value.value??``}`)}" @click=${c}>
3
+ <button class="command" part="command" type="button" aria-label="${u}" @click=${c}>
4
4
  <code class="command-text" part="command-text">${e.value}</code>
5
5
  <span class="copy-icon" part="copy-icon" aria-hidden="true">
6
- ${()=>a.value?n.html`<ore-icon name="check" size="14" class="icon-copied" aria-hidden="true"></ore-icon>`:o.value?n.html`<ore-icon name="circle-alert" size="14" class="icon-failed" aria-hidden="true"></ore-icon>`:n.html`<ore-icon name="copy" size="14" aria-hidden="true"></ore-icon>`}
6
+ ${()=>a.value?n.html`
7
+ <ore-icon name="check" size="14" class="icon-copied" aria-hidden="true"></ore-icon>
8
+ `:o.value?n.html`
9
+ <ore-icon name="circle-alert" size="14" class="icon-failed" aria-hidden="true"></ore-icon>
10
+ `:n.html`
11
+ <ore-icon name="copy" size="14" aria-hidden="true"></ore-icon>
12
+ `}
7
13
  </span>
8
14
  </button>
9
15
  <div class="suffix" part="suffix" ?hidden="${()=>!l.value}">
@@ -1 +1 @@
1
- {"version":3,"file":"copy-command.cjs","names":[],"sources":["../src/content/copy-command/copy-command.ts"],"sourcesContent":["import { define, html, prop, onCleanup, useEmit, useSlots } from '@vielzeug/ore';\nimport { computed, signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize, RoundedSize } from '../../types';\n\nimport { srOnlyMixin } from '../../styles';\nimport '../icon/icon';\nimport componentStyles from './copy-command.css?inline';\n\n/** Copy command component properties */\nexport type OreCopyCommandProps = {\n /** Border radius size */\n rounded?: RoundedSize;\n /** Component size */\n size?: ComponentSize;\n /** The command string to display and copy to clipboard */\n value?: string;\n /** Visual style variant */\n variant?: 'flat' | 'bordered' | 'ghost';\n};\n\n/** Copy command component events */\nexport type OreCopyCommandEvents = {\n /** Emitted when the command is successfully copied to the clipboard */\n copy: { value: string };\n};\n\n/**\n * A styled, copy-to-clipboard command display component.\n * Shows a command string in a monospace code block with a copy button.\n * Clicking the component copies the value to the clipboard, shows a transient\n * check-mark confirmation, and emits a `copy` event.\n *\n * @element ore-copy-command\n *\n * @attr {string} value - The command string to display and copy\n * @attr {string} size - Component size: 'sm' | 'md' | 'lg'\n * @attr {string} variant - Visual style: 'flat' | 'bordered' | 'ghost'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n *\n * @fires copy - Emitted on successful clipboard write. detail: { value: string }\n *\n * @slot suffix - Optional controls appended after the copy button (e.g. a cycle button)\n *\n * @cssprop --copy-command-bg - Background color of the command block\n * @cssprop --copy-command-color - Text color of the command string\n * @cssprop --copy-command-border-color - Border color\n * @cssprop --copy-command-radius - Border radius (overrides the `rounded` attribute)\n * @cssprop --copy-command-padding - Inner padding of the command button\n * @cssprop --copy-command-font-size - Font size of the command string\n * @cssprop --copy-command-icon-color - Color of the copy/check icon\n * @cssprop --copy-command-hover-bg - Background on hover\n *\n * @part wrapper - Outer flex container\n * @part command - The copy button element\n * @part command-text - The `<code>` element displaying the command string\n * @part copy-icon - The icon wrapper span\n * @part suffix - Suffix slot container\n *\n * @example\n * ```html\n * <ore-copy-command value=\"npm install @vielzeug/ripple\"></ore-copy-command>\n *\n * <ore-copy-command value=\"npx -y @vielzeug/codex\" size=\"sm\" variant=\"bordered\"></ore-copy-command>\n *\n * <!-- With a suffix slot (e.g. a cycle button) -->\n * <ore-copy-command value=\"npm install @vielzeug/ripple\">\n * <button slot=\"suffix\" type=\"button\" aria-label=\"Next package\">›</button>\n * </ore-copy-command>\n * ```\n */\nexport const COPY_COMMAND_TAG = 'ore-copy-command' as const;\n\ndefine<OreCopyCommandProps>(COPY_COMMAND_TAG, {\n props: {\n rounded: prop.string<RoundedSize>('md'),\n size: prop.string<ComponentSize>('md'),\n value: prop.string(''),\n variant: prop.string<'flat' | 'bordered' | 'ghost'>('flat'),\n },\n\n setup(props) {\n const emit = useEmit<OreCopyCommandEvents>();\n const slots = useSlots();\n\n const copied = signal(false);\n const copyFailed = signal(false);\n let resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n onCleanup(() => {\n if (resetTimer !== null) clearTimeout(resetTimer);\n });\n\n const handleCopy = async () => {\n const text = props.value.value ?? '';\n\n if (!text) return;\n\n if (resetTimer !== null) clearTimeout(resetTimer);\n\n try {\n await navigator.clipboard.writeText(text);\n copied.value = true;\n copyFailed.value = false;\n emit('copy', { value: text });\n } catch {\n // Clipboard access denied or unavailable (e.g. insecure context) — surface it instead of failing silently\n copied.value = false;\n copyFailed.value = true;\n }\n\n resetTimer = setTimeout(() => {\n copied.value = false;\n copyFailed.value = false;\n resetTimer = null;\n }, 2000);\n };\n\n const hasSuffix = computed(() => slots.has('suffix').value);\n const btnLabel = computed(() => {\n if (copied.value) return 'Copied!';\n\n if (copyFailed.value) return 'Copy failed — press to try again';\n\n return `Copy: ${props.value.value ?? ''}`;\n });\n\n return html`\n <div class=\"wrapper\" part=\"wrapper\">\n <button class=\"command\" part=\"command\" type=\"button\" :aria-label=\"${btnLabel}\" @click=${handleCopy}>\n <code class=\"command-text\" part=\"command-text\">${props.value}</code>\n <span class=\"copy-icon\" part=\"copy-icon\" aria-hidden=\"true\">\n ${() => {\n if (copied.value)\n return html`<ore-icon name=\"check\" size=\"14\" class=\"icon-copied\" aria-hidden=\"true\"></ore-icon>`;\n\n if (copyFailed.value)\n return html`<ore-icon name=\"circle-alert\" size=\"14\" class=\"icon-failed\" aria-hidden=\"true\"></ore-icon>`;\n\n return html`<ore-icon name=\"copy\" size=\"14\" aria-hidden=\"true\"></ore-icon>`;\n }}\n </span>\n </button>\n <div class=\"suffix\" part=\"suffix\" ?hidden=\"${() => !hasSuffix.value}\">\n <slot name=\"suffix\"></slot>\n </div>\n </div>\n <div role=\"status\" class=\"sr-only\">\n ${() => {\n if (copied.value) return 'Copied to clipboard.';\n\n if (copyFailed.value) return 'Copy failed. Select the command text and copy it manually.';\n\n return '';\n }}\n </div>\n `;\n },\n\n styles: [srOnlyMixin, componentStyles],\n});\n"],"mappings":"kPAuEA,IAAa,EAAmB,gCAEJ,EAAkB,CAC5C,MAAO,CACL,QAAS,EAAA,KAAK,OAAoB,IAAI,EACtC,KAAM,EAAA,KAAK,OAAsB,IAAI,EACrC,MAAO,EAAA,KAAK,OAAO,EAAE,EACrB,QAAS,EAAA,KAAK,OAAsC,MAAM,CAC5D,EAEA,MAAM,EAAO,CACX,IAAM,GAAA,EAAA,EAAA,QAAA,CAAqC,EACrC,GAAA,EAAA,EAAA,SAAA,CAAiB,EAEjB,GAAA,EAAA,EAAA,OAAA,CAAgB,EAAK,EACrB,GAAA,EAAA,EAAA,OAAA,CAAoB,EAAK,EAC3B,EAAmD,MAEvD,EAAA,EAAA,UAAA,KAAgB,CACV,IAAe,MAAM,aAAa,CAAU,CAClD,CAAC,EAED,IAAM,EAAa,SAAY,CAC7B,IAAM,EAAO,EAAM,MAAM,OAAS,GAE7B,KAEL,CAAI,IAAe,MAAM,aAAa,CAAU,EAEhD,GAAI,CACF,MAAM,UAAU,UAAU,UAAU,CAAI,EACxC,EAAO,MAAQ,GACf,EAAW,MAAQ,GACnB,EAAK,OAAQ,CAAE,MAAO,CAAK,CAAC,CAC9B,MAAQ,CAEN,EAAO,MAAQ,GACf,EAAW,MAAQ,EACrB,CAEA,EAAa,eAAiB,CAC5B,EAAO,MAAQ,GACf,EAAW,MAAQ,GACnB,EAAa,IACf,EAAG,GAAI,CAjByC,CAkBlD,EAEM,GAAA,EAAA,EAAA,SAAA,KAA2B,EAAM,IAAI,QAAQ,CAAC,CAAC,KAAK,EAS1D,MAAO,GAAA,IAAI;;+FAPL,EAAO,MAAc,UAErB,EAAW,MAAc,mCAEtB,SAAS,EAAM,MAAM,OAAS,IAKiC,EAAS,WAAW,EAAW;2DAChD,EAAM,MAAM;;kBAGrD,EAAO,MACF,EAAA,IAAI,sFAET,EAAW,MACN,EAAA,IAAI,6FAEN,EAAA,IAAI,iEACX;;;yDAG6C,CAAC,EAAU,MAAM;;;;;cAM9D,EAAO,MAAc,uBAErB,EAAW,MAAc,6DAEtB,GACP;;KAGR,EAEA,OAAQ,CAAC,EAAA,YAAa,EAAA,OAAe,CACvC,CAAC"}
1
+ {"version":3,"file":"copy-command.cjs","names":[],"sources":["../src/content/copy-command/copy-command.ts"],"sourcesContent":["import { define, html, prop, onCleanup, useEmit, useSlots } from '@vielzeug/ore';\nimport { computed, signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize, RoundedSize } from '../../types';\n\nimport { srOnlyMixin } from '../../styles';\nimport '../icon/icon';\nimport componentStyles from './copy-command.css?inline';\n\n/** Copy command component properties */\nexport type OreCopyCommandProps = {\n /** Border radius size */\n rounded?: RoundedSize;\n /** Component size */\n size?: ComponentSize;\n /** The command string to display and copy to clipboard */\n value?: string;\n /** Visual style variant */\n variant?: 'flat' | 'bordered' | 'ghost';\n};\n\n/** Copy command component events */\nexport type OreCopyCommandEvents = {\n /** Emitted when the command is successfully copied to the clipboard */\n copy: { value: string };\n};\n\n/**\n * A styled, copy-to-clipboard command display component.\n * Shows a command string in a monospace code block with a copy button.\n * Clicking the component copies the value to the clipboard, shows a transient\n * check-mark confirmation, and emits a `copy` event.\n *\n * @element ore-copy-command\n *\n * @attr {string} value - The command string to display and copy\n * @attr {string} size - Component size: 'sm' | 'md' | 'lg'\n * @attr {string} variant - Visual style: 'flat' | 'bordered' | 'ghost'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n *\n * @fires copy - Emitted on successful clipboard write. detail: { value: string }\n *\n * @slot suffix - Optional controls appended after the copy button (e.g. a cycle button)\n *\n * @cssprop --copy-command-bg - Background color of the command block\n * @cssprop --copy-command-color - Text color of the command string\n * @cssprop --copy-command-border-color - Border color\n * @cssprop --copy-command-radius - Border radius (overrides the `rounded` attribute)\n * @cssprop --copy-command-padding - Inner padding of the command button\n * @cssprop --copy-command-font-size - Font size of the command string\n * @cssprop --copy-command-icon-color - Color of the copy/check icon\n * @cssprop --copy-command-hover-bg - Background on hover\n *\n * @part wrapper - Outer flex container\n * @part command - The copy button element\n * @part command-text - The `<code>` element displaying the command string\n * @part copy-icon - The icon wrapper span\n * @part suffix - Suffix slot container\n *\n * @example\n * ```html\n * <ore-copy-command value=\"npm install @vielzeug/ripple\"></ore-copy-command>\n *\n * <ore-copy-command value=\"npx -y @vielzeug/codex\" size=\"sm\" variant=\"bordered\"></ore-copy-command>\n *\n * <!-- With a suffix slot (e.g. a cycle button) -->\n * <ore-copy-command value=\"npm install @vielzeug/ripple\">\n * <button slot=\"suffix\" type=\"button\" aria-label=\"Next package\">›</button>\n * </ore-copy-command>\n * ```\n */\nexport const COPY_COMMAND_TAG = 'ore-copy-command' as const;\n\ndefine<OreCopyCommandProps>(COPY_COMMAND_TAG, {\n props: {\n rounded: prop.string<RoundedSize>('md'),\n size: prop.string<ComponentSize>('md'),\n value: prop.string(''),\n variant: prop.string<'flat' | 'bordered' | 'ghost'>('flat'),\n },\n\n setup(props) {\n const emit = useEmit<OreCopyCommandEvents>();\n const slots = useSlots();\n\n const copied = signal(false);\n const copyFailed = signal(false);\n let resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n onCleanup(() => {\n if (resetTimer !== null) clearTimeout(resetTimer);\n });\n\n const handleCopy = async () => {\n const text = props.value.value ?? '';\n\n if (!text) return;\n\n if (resetTimer !== null) clearTimeout(resetTimer);\n\n try {\n await navigator.clipboard.writeText(text);\n copied.value = true;\n copyFailed.value = false;\n emit('copy', { value: text });\n } catch {\n // Clipboard access denied or unavailable (e.g. insecure context) — surface it instead of failing silently\n copied.value = false;\n copyFailed.value = true;\n }\n\n resetTimer = setTimeout(() => {\n copied.value = false;\n copyFailed.value = false;\n resetTimer = null;\n }, 2000);\n };\n\n const hasSuffix = computed(() => slots.has('suffix').value);\n const btnLabel = computed(() => {\n if (copied.value) return 'Copied!';\n\n if (copyFailed.value) return 'Copy failed — press to try again';\n\n return `Copy: ${props.value.value ?? ''}`;\n });\n\n return html`\n <div class=\"wrapper\" part=\"wrapper\">\n <button class=\"command\" part=\"command\" type=\"button\" aria-label=\"${btnLabel}\" @click=${handleCopy}>\n <code class=\"command-text\" part=\"command-text\">${props.value}</code>\n <span class=\"copy-icon\" part=\"copy-icon\" aria-hidden=\"true\">\n ${() => {\n if (copied.value)\n return html`\n <ore-icon name=\"check\" size=\"14\" class=\"icon-copied\" aria-hidden=\"true\"></ore-icon>\n `;\n\n if (copyFailed.value)\n return html`\n <ore-icon name=\"circle-alert\" size=\"14\" class=\"icon-failed\" aria-hidden=\"true\"></ore-icon>\n `;\n\n return html`\n <ore-icon name=\"copy\" size=\"14\" aria-hidden=\"true\"></ore-icon>\n `;\n }}\n </span>\n </button>\n <div class=\"suffix\" part=\"suffix\" ?hidden=\"${() => !hasSuffix.value}\">\n <slot name=\"suffix\"></slot>\n </div>\n </div>\n <div role=\"status\" class=\"sr-only\">\n ${() => {\n if (copied.value) return 'Copied to clipboard.';\n\n if (copyFailed.value) return 'Copy failed. Select the command text and copy it manually.';\n\n return '';\n }}\n </div>\n `;\n },\n\n styles: [srOnlyMixin, componentStyles],\n});\n"],"mappings":"kPAuEA,IAAa,EAAmB,oBAEhC,EAAA,EAAA,OAAA,CAA4B,EAAkB,CAC5C,MAAO,CACL,QAAS,EAAA,KAAK,OAAoB,IAAI,EACtC,KAAM,EAAA,KAAK,OAAsB,IAAI,EACrC,MAAO,EAAA,KAAK,OAAO,EAAE,EACrB,QAAS,EAAA,KAAK,OAAsC,MAAM,CAC5D,EAEA,MAAM,EAAO,CACX,IAAM,GAAA,EAAO,EAAA,QAAA,CAA8B,EACrC,GAAA,EAAQ,EAAA,SAAA,CAAS,EAEjB,GAAA,EAAS,EAAA,OAAA,CAAO,EAAK,EACrB,GAAA,EAAa,EAAA,OAAA,CAAO,EAAK,EAC3B,EAAmD,MAEvD,EAAA,EAAA,UAAA,KAAgB,CACV,IAAe,MAAM,aAAa,CAAU,CAClD,CAAC,EAED,IAAM,EAAa,SAAY,CAC7B,IAAM,EAAO,EAAM,MAAM,OAAS,GAE7B,KAEL,CAAI,IAAe,MAAM,aAAa,CAAU,EAEhD,GAAI,CACF,MAAM,UAAU,UAAU,UAAU,CAAI,EACxC,EAAO,MAAQ,GACf,EAAW,MAAQ,GACnB,EAAK,OAAQ,CAAE,MAAO,CAAK,CAAC,CAC9B,MAAQ,CAEN,EAAO,MAAQ,GACf,EAAW,MAAQ,EACrB,CAEA,EAAa,eAAiB,CAC5B,EAAO,MAAQ,GACf,EAAW,MAAQ,GACnB,EAAa,IACf,EAAG,GAAI,CAjByC,CAkBlD,EAEM,GAAA,EAAY,EAAA,SAAA,KAAe,EAAM,IAAI,QAAQ,CAAC,CAAC,KAAK,EACpD,GAAA,EAAW,EAAA,SAAA,KACX,EAAO,MAAc,UAErB,EAAW,MAAc,mCAEtB,SAAS,EAAM,MAAM,OAAS,IACtC,EAED,MAAO,GAAA,IAAI;;2EAE4D,EAAS,WAAW,EAAW;2DAC/C,EAAM,MAAM;;kBAGrD,EAAO,MACF,EAAA,IAAI;;kBAIT,EAAW,MACN,EAAA,IAAI;;kBAIN,EAAA,IAAI;;gBAGX;;;yDAG6C,CAAC,EAAU,MAAM;;;;;cAM9D,EAAO,MAAc,uBAErB,EAAW,MAAc,6DAEtB,GACP;;KAGR,EAEA,OAAQ,CAAC,EAAA,YAAa,EAAA,OAAe,CACvC,CAAC"}
@@ -29,13 +29,19 @@ n(u, {
29
29
  a.value = !1, u.value = !1, d = null;
30
30
  }, 2e3);
31
31
  }
32
- }, p = c(() => n.has("suffix").value);
32
+ }, p = c(() => n.has("suffix").value), m = c(() => a.value ? "Copied!" : u.value ? "Copy failed — press to try again" : `Copy: ${e.value.value ?? ""}`);
33
33
  return r`
34
34
  <div class="wrapper" part="wrapper">
35
- <button class="command" part="command" type="button" :aria-label="${c(() => a.value ? "Copied!" : u.value ? "Copy failed — press to try again" : `Copy: ${e.value.value ?? ""}`)}" @click=${f}>
35
+ <button class="command" part="command" type="button" aria-label="${m}" @click=${f}>
36
36
  <code class="command-text" part="command-text">${e.value}</code>
37
37
  <span class="copy-icon" part="copy-icon" aria-hidden="true">
38
- ${() => a.value ? r`<ore-icon name="check" size="14" class="icon-copied" aria-hidden="true"></ore-icon>` : u.value ? r`<ore-icon name="circle-alert" size="14" class="icon-failed" aria-hidden="true"></ore-icon>` : r`<ore-icon name="copy" size="14" aria-hidden="true"></ore-icon>`}
38
+ ${() => a.value ? r`
39
+ <ore-icon name="check" size="14" class="icon-copied" aria-hidden="true"></ore-icon>
40
+ ` : u.value ? r`
41
+ <ore-icon name="circle-alert" size="14" class="icon-failed" aria-hidden="true"></ore-icon>
42
+ ` : r`
43
+ <ore-icon name="copy" size="14" aria-hidden="true"></ore-icon>
44
+ `}
39
45
  </span>
40
46
  </button>
41
47
  <div class="suffix" part="suffix" ?hidden="${() => !p.value}">
@@ -1 +1 @@
1
- {"version":3,"file":"copy-command.js","names":[],"sources":["../src/content/copy-command/copy-command.ts"],"sourcesContent":["import { define, html, prop, onCleanup, useEmit, useSlots } from '@vielzeug/ore';\nimport { computed, signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize, RoundedSize } from '../../types';\n\nimport { srOnlyMixin } from '../../styles';\nimport '../icon/icon';\nimport componentStyles from './copy-command.css?inline';\n\n/** Copy command component properties */\nexport type OreCopyCommandProps = {\n /** Border radius size */\n rounded?: RoundedSize;\n /** Component size */\n size?: ComponentSize;\n /** The command string to display and copy to clipboard */\n value?: string;\n /** Visual style variant */\n variant?: 'flat' | 'bordered' | 'ghost';\n};\n\n/** Copy command component events */\nexport type OreCopyCommandEvents = {\n /** Emitted when the command is successfully copied to the clipboard */\n copy: { value: string };\n};\n\n/**\n * A styled, copy-to-clipboard command display component.\n * Shows a command string in a monospace code block with a copy button.\n * Clicking the component copies the value to the clipboard, shows a transient\n * check-mark confirmation, and emits a `copy` event.\n *\n * @element ore-copy-command\n *\n * @attr {string} value - The command string to display and copy\n * @attr {string} size - Component size: 'sm' | 'md' | 'lg'\n * @attr {string} variant - Visual style: 'flat' | 'bordered' | 'ghost'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n *\n * @fires copy - Emitted on successful clipboard write. detail: { value: string }\n *\n * @slot suffix - Optional controls appended after the copy button (e.g. a cycle button)\n *\n * @cssprop --copy-command-bg - Background color of the command block\n * @cssprop --copy-command-color - Text color of the command string\n * @cssprop --copy-command-border-color - Border color\n * @cssprop --copy-command-radius - Border radius (overrides the `rounded` attribute)\n * @cssprop --copy-command-padding - Inner padding of the command button\n * @cssprop --copy-command-font-size - Font size of the command string\n * @cssprop --copy-command-icon-color - Color of the copy/check icon\n * @cssprop --copy-command-hover-bg - Background on hover\n *\n * @part wrapper - Outer flex container\n * @part command - The copy button element\n * @part command-text - The `<code>` element displaying the command string\n * @part copy-icon - The icon wrapper span\n * @part suffix - Suffix slot container\n *\n * @example\n * ```html\n * <ore-copy-command value=\"npm install @vielzeug/ripple\"></ore-copy-command>\n *\n * <ore-copy-command value=\"npx -y @vielzeug/codex\" size=\"sm\" variant=\"bordered\"></ore-copy-command>\n *\n * <!-- With a suffix slot (e.g. a cycle button) -->\n * <ore-copy-command value=\"npm install @vielzeug/ripple\">\n * <button slot=\"suffix\" type=\"button\" aria-label=\"Next package\">›</button>\n * </ore-copy-command>\n * ```\n */\nexport const COPY_COMMAND_TAG = 'ore-copy-command' as const;\n\ndefine<OreCopyCommandProps>(COPY_COMMAND_TAG, {\n props: {\n rounded: prop.string<RoundedSize>('md'),\n size: prop.string<ComponentSize>('md'),\n value: prop.string(''),\n variant: prop.string<'flat' | 'bordered' | 'ghost'>('flat'),\n },\n\n setup(props) {\n const emit = useEmit<OreCopyCommandEvents>();\n const slots = useSlots();\n\n const copied = signal(false);\n const copyFailed = signal(false);\n let resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n onCleanup(() => {\n if (resetTimer !== null) clearTimeout(resetTimer);\n });\n\n const handleCopy = async () => {\n const text = props.value.value ?? '';\n\n if (!text) return;\n\n if (resetTimer !== null) clearTimeout(resetTimer);\n\n try {\n await navigator.clipboard.writeText(text);\n copied.value = true;\n copyFailed.value = false;\n emit('copy', { value: text });\n } catch {\n // Clipboard access denied or unavailable (e.g. insecure context) — surface it instead of failing silently\n copied.value = false;\n copyFailed.value = true;\n }\n\n resetTimer = setTimeout(() => {\n copied.value = false;\n copyFailed.value = false;\n resetTimer = null;\n }, 2000);\n };\n\n const hasSuffix = computed(() => slots.has('suffix').value);\n const btnLabel = computed(() => {\n if (copied.value) return 'Copied!';\n\n if (copyFailed.value) return 'Copy failed — press to try again';\n\n return `Copy: ${props.value.value ?? ''}`;\n });\n\n return html`\n <div class=\"wrapper\" part=\"wrapper\">\n <button class=\"command\" part=\"command\" type=\"button\" :aria-label=\"${btnLabel}\" @click=${handleCopy}>\n <code class=\"command-text\" part=\"command-text\">${props.value}</code>\n <span class=\"copy-icon\" part=\"copy-icon\" aria-hidden=\"true\">\n ${() => {\n if (copied.value)\n return html`<ore-icon name=\"check\" size=\"14\" class=\"icon-copied\" aria-hidden=\"true\"></ore-icon>`;\n\n if (copyFailed.value)\n return html`<ore-icon name=\"circle-alert\" size=\"14\" class=\"icon-failed\" aria-hidden=\"true\"></ore-icon>`;\n\n return html`<ore-icon name=\"copy\" size=\"14\" aria-hidden=\"true\"></ore-icon>`;\n }}\n </span>\n </button>\n <div class=\"suffix\" part=\"suffix\" ?hidden=\"${() => !hasSuffix.value}\">\n <slot name=\"suffix\"></slot>\n </div>\n </div>\n <div role=\"status\" class=\"sr-only\">\n ${() => {\n if (copied.value) return 'Copied to clipboard.';\n\n if (copyFailed.value) return 'Copy failed. Select the command text and copy it manually.';\n\n return '';\n }}\n </div>\n `;\n },\n\n styles: [srOnlyMixin, componentStyles],\n});\n"],"mappings":";;;;;AAuEA,IAAa,IAAmB;AAEhC,EAA4B,GAAkB;CAC5C,OAAO;EACL,SAAS,EAAK,OAAoB,IAAI;EACtC,MAAM,EAAK,OAAsB,IAAI;EACrC,OAAO,EAAK,OAAO,EAAE;EACrB,SAAS,EAAK,OAAsC,MAAM;CAC5D;CAEA,MAAM,GAAO;EACX,IAAM,IAAO,EAA8B,GACrC,IAAQ,EAAS,GAEjB,IAAS,EAAO,EAAK,GACrB,IAAa,EAAO,EAAK,GAC3B,IAAmD;EAEvD,QAAgB;GACd,AAAI,MAAe,QAAM,aAAa,CAAU;EAClD,CAAC;EAED,IAAM,IAAa,YAAY;GAC7B,IAAM,IAAO,EAAM,MAAM,SAAS;GAE7B,OAEL;IAAI,MAAe,QAAM,aAAa,CAAU;IAEhD,IAAI;KAIF,AAHA,MAAM,UAAU,UAAU,UAAU,CAAI,GACxC,EAAO,QAAQ,IACf,EAAW,QAAQ,IACnB,EAAK,QAAQ,EAAE,OAAO,EAAK,CAAC;IAC9B,QAAQ;KAGN,AADA,EAAO,QAAQ,IACf,EAAW,QAAQ;IACrB;IAEA,IAAa,iBAAiB;KAG5B,AAFA,EAAO,QAAQ,IACf,EAAW,QAAQ,IACnB,IAAa;IACf,GAAG,GAAI;GAjByC;EAkBlD,GAEM,IAAY,QAAe,EAAM,IAAI,QAAQ,CAAC,CAAC,KAAK;EAS1D,OAAO,CAAI;;4EARM,QACX,EAAO,QAAc,YAErB,EAAW,QAAc,qCAEtB,SAAS,EAAM,MAAM,SAAS,IAKiC,EAAS,WAAW,EAAW;2DAChD,EAAM,MAAM;;oBAGrD,EAAO,QACF,CAAI,wFAET,EAAW,QACN,CAAI,+FAEN,CAAI,iEACX;;;2DAG6C,CAAC,EAAU,MAAM;;;;;gBAM9D,EAAO,QAAc,yBAErB,EAAW,QAAc,+DAEtB,GACP;;;CAGR;CAEA,QAAQ,CAAC,GAAa,CAAe;AACvC,CAAC"}
1
+ {"version":3,"file":"copy-command.js","names":[],"sources":["../src/content/copy-command/copy-command.ts"],"sourcesContent":["import { define, html, prop, onCleanup, useEmit, useSlots } from '@vielzeug/ore';\nimport { computed, signal } from '@vielzeug/ripple';\n\nimport type { ComponentSize, RoundedSize } from '../../types';\n\nimport { srOnlyMixin } from '../../styles';\nimport '../icon/icon';\nimport componentStyles from './copy-command.css?inline';\n\n/** Copy command component properties */\nexport type OreCopyCommandProps = {\n /** Border radius size */\n rounded?: RoundedSize;\n /** Component size */\n size?: ComponentSize;\n /** The command string to display and copy to clipboard */\n value?: string;\n /** Visual style variant */\n variant?: 'flat' | 'bordered' | 'ghost';\n};\n\n/** Copy command component events */\nexport type OreCopyCommandEvents = {\n /** Emitted when the command is successfully copied to the clipboard */\n copy: { value: string };\n};\n\n/**\n * A styled, copy-to-clipboard command display component.\n * Shows a command string in a monospace code block with a copy button.\n * Clicking the component copies the value to the clipboard, shows a transient\n * check-mark confirmation, and emits a `copy` event.\n *\n * @element ore-copy-command\n *\n * @attr {string} value - The command string to display and copy\n * @attr {string} size - Component size: 'sm' | 'md' | 'lg'\n * @attr {string} variant - Visual style: 'flat' | 'bordered' | 'ghost'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n *\n * @fires copy - Emitted on successful clipboard write. detail: { value: string }\n *\n * @slot suffix - Optional controls appended after the copy button (e.g. a cycle button)\n *\n * @cssprop --copy-command-bg - Background color of the command block\n * @cssprop --copy-command-color - Text color of the command string\n * @cssprop --copy-command-border-color - Border color\n * @cssprop --copy-command-radius - Border radius (overrides the `rounded` attribute)\n * @cssprop --copy-command-padding - Inner padding of the command button\n * @cssprop --copy-command-font-size - Font size of the command string\n * @cssprop --copy-command-icon-color - Color of the copy/check icon\n * @cssprop --copy-command-hover-bg - Background on hover\n *\n * @part wrapper - Outer flex container\n * @part command - The copy button element\n * @part command-text - The `<code>` element displaying the command string\n * @part copy-icon - The icon wrapper span\n * @part suffix - Suffix slot container\n *\n * @example\n * ```html\n * <ore-copy-command value=\"npm install @vielzeug/ripple\"></ore-copy-command>\n *\n * <ore-copy-command value=\"npx -y @vielzeug/codex\" size=\"sm\" variant=\"bordered\"></ore-copy-command>\n *\n * <!-- With a suffix slot (e.g. a cycle button) -->\n * <ore-copy-command value=\"npm install @vielzeug/ripple\">\n * <button slot=\"suffix\" type=\"button\" aria-label=\"Next package\">›</button>\n * </ore-copy-command>\n * ```\n */\nexport const COPY_COMMAND_TAG = 'ore-copy-command' as const;\n\ndefine<OreCopyCommandProps>(COPY_COMMAND_TAG, {\n props: {\n rounded: prop.string<RoundedSize>('md'),\n size: prop.string<ComponentSize>('md'),\n value: prop.string(''),\n variant: prop.string<'flat' | 'bordered' | 'ghost'>('flat'),\n },\n\n setup(props) {\n const emit = useEmit<OreCopyCommandEvents>();\n const slots = useSlots();\n\n const copied = signal(false);\n const copyFailed = signal(false);\n let resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n onCleanup(() => {\n if (resetTimer !== null) clearTimeout(resetTimer);\n });\n\n const handleCopy = async () => {\n const text = props.value.value ?? '';\n\n if (!text) return;\n\n if (resetTimer !== null) clearTimeout(resetTimer);\n\n try {\n await navigator.clipboard.writeText(text);\n copied.value = true;\n copyFailed.value = false;\n emit('copy', { value: text });\n } catch {\n // Clipboard access denied or unavailable (e.g. insecure context) — surface it instead of failing silently\n copied.value = false;\n copyFailed.value = true;\n }\n\n resetTimer = setTimeout(() => {\n copied.value = false;\n copyFailed.value = false;\n resetTimer = null;\n }, 2000);\n };\n\n const hasSuffix = computed(() => slots.has('suffix').value);\n const btnLabel = computed(() => {\n if (copied.value) return 'Copied!';\n\n if (copyFailed.value) return 'Copy failed — press to try again';\n\n return `Copy: ${props.value.value ?? ''}`;\n });\n\n return html`\n <div class=\"wrapper\" part=\"wrapper\">\n <button class=\"command\" part=\"command\" type=\"button\" aria-label=\"${btnLabel}\" @click=${handleCopy}>\n <code class=\"command-text\" part=\"command-text\">${props.value}</code>\n <span class=\"copy-icon\" part=\"copy-icon\" aria-hidden=\"true\">\n ${() => {\n if (copied.value)\n return html`\n <ore-icon name=\"check\" size=\"14\" class=\"icon-copied\" aria-hidden=\"true\"></ore-icon>\n `;\n\n if (copyFailed.value)\n return html`\n <ore-icon name=\"circle-alert\" size=\"14\" class=\"icon-failed\" aria-hidden=\"true\"></ore-icon>\n `;\n\n return html`\n <ore-icon name=\"copy\" size=\"14\" aria-hidden=\"true\"></ore-icon>\n `;\n }}\n </span>\n </button>\n <div class=\"suffix\" part=\"suffix\" ?hidden=\"${() => !hasSuffix.value}\">\n <slot name=\"suffix\"></slot>\n </div>\n </div>\n <div role=\"status\" class=\"sr-only\">\n ${() => {\n if (copied.value) return 'Copied to clipboard.';\n\n if (copyFailed.value) return 'Copy failed. Select the command text and copy it manually.';\n\n return '';\n }}\n </div>\n `;\n },\n\n styles: [srOnlyMixin, componentStyles],\n});\n"],"mappings":";;;;;AAuEA,IAAa,IAAmB;AAEhC,EAA4B,GAAkB;CAC5C,OAAO;EACL,SAAS,EAAK,OAAoB,IAAI;EACtC,MAAM,EAAK,OAAsB,IAAI;EACrC,OAAO,EAAK,OAAO,EAAE;EACrB,SAAS,EAAK,OAAsC,MAAM;CAC5D;CAEA,MAAM,GAAO;EACX,IAAM,IAAO,EAA8B,GACrC,IAAQ,EAAS,GAEjB,IAAS,EAAO,EAAK,GACrB,IAAa,EAAO,EAAK,GAC3B,IAAmD;EAEvD,QAAgB;GACd,AAAI,MAAe,QAAM,aAAa,CAAU;EAClD,CAAC;EAED,IAAM,IAAa,YAAY;GAC7B,IAAM,IAAO,EAAM,MAAM,SAAS;GAE7B,OAEL;IAAI,MAAe,QAAM,aAAa,CAAU;IAEhD,IAAI;KAIF,AAHA,MAAM,UAAU,UAAU,UAAU,CAAI,GACxC,EAAO,QAAQ,IACf,EAAW,QAAQ,IACnB,EAAK,QAAQ,EAAE,OAAO,EAAK,CAAC;IAC9B,QAAQ;KAGN,AADA,EAAO,QAAQ,IACf,EAAW,QAAQ;IACrB;IAEA,IAAa,iBAAiB;KAG5B,AAFA,EAAO,QAAQ,IACf,EAAW,QAAQ,IACnB,IAAa;IACf,GAAG,GAAI;GAjByC;EAkBlD,GAEM,IAAY,QAAe,EAAM,IAAI,QAAQ,CAAC,CAAC,KAAK,GACpD,IAAW,QACX,EAAO,QAAc,YAErB,EAAW,QAAc,qCAEtB,SAAS,EAAM,MAAM,SAAS,IACtC;EAED,OAAO,CAAI;;2EAE4D,EAAS,WAAW,EAAW;2DAC/C,EAAM,MAAM;;oBAGrD,EAAO,QACF,CAAI;;oBAIT,EAAW,QACN,CAAI;;oBAIN,CAAI;;gBAGX;;;2DAG6C,CAAC,EAAU,MAAM;;;;;gBAM9D,EAAO,QAAc,yBAErB,EAAW,QAAc,+DAEtB,GACP;;;CAGR;CAEA,QAAQ,CAAC,GAAa,CAAe;AACvC,CAAC"}
@@ -1,17 +1,15 @@
1
1
  /**
2
2
  * Internal barrel — primitives used by refine components but not intended as
3
- * public API. Not exported from `headless/index.ts`.
3
+ * public API. Not exported from `core/index.ts`.
4
4
  *
5
5
  * Import via the full path, e.g.:
6
- * import { createInteraction } from '../../headless/_internal';
6
+ * import { createInteraction } from '../../core/_internal';
7
7
  */
8
8
  export { createDropdownPositioner, type DropdownPositionerOptions } from './positioner';
9
9
  export { createInteraction, dispatchKeyboardAction, type Interaction, type InteractionOptions, type KeyboardDispatchOptions, type PressTrigger, } from './keyboard';
10
10
  export { createListControl, type ListControl, type ListKeyAction, type ListNavigationAction, type ListNavigationOptions, } from './nav';
11
- export { createOverlayControl, type OverlayControl, type OverlayControlOptions, type OverlayPositioner, } from './overlay';
11
+ export { createListboxDropdown, type ListboxDropdown, type ListboxDropdownOptions, type ListboxDropdownPlacementOptions, } from './option-list';
12
12
  export { createTypeahead, type Typeahead, type TypeaheadOptions } from './typeahead';
13
13
  export { parseStringTriggers } from './parse';
14
14
  export { syncedSignal } from './signals';
15
- export { createSelectionControl, type SelectionControl, type SelectionControlOptions } from './selection-control';
16
- export { createSortControl, type SortControl, type SortControlOptions } from './sort-control';
17
15
  //# sourceMappingURL=_internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_internal.d.ts","sourceRoot":"","sources":["../../src/core/_internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,OAAO,CAAC;AACf,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,+BAA+B,GACrC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcer.cjs","names":[],"sources":["../../src/core/announcer.ts"],"sourcesContent":["// ── Live-Region Announcer ─────────────────────────────────────────────────────\n// Programmatic announcements to screen readers without requiring a visible\n// DOM element. Used for status messages, selection feedback, and count updates\n// that live in components where the visible element is hidden or absent.\n//\n// Two visually-hidden live regions are lazily created in `<body>` — one polite,\n// one assertive. The clear-then-set pattern forces AT to re-read even identical\n// consecutive messages.\n//\n// Usage:\n// ```ts\n// import { announce } from './announcer';\n// announce(`${selectedCount} items selected`);\n// announce('Error: field is required', { politeness: 'assertive' });\n// ```\n\nimport { SR_ONLY_INLINE_STYLE } from '../styles';\n\n// ── Visually-hidden style ─────────────────────────────────────────────────────\n// Shared with the CSS-side `.sr-only` mixin — see `src/styles/mixins/accessibility.css.ts`.\n\n// ── Per-document live regions (WeakMap for automatic GC + test isolation) ────\n\ntype DocumentRegions = { assertive?: HTMLElement; polite?: HTMLElement };\n\nconst _regions = new WeakMap<Document, DocumentRegions>();\nconst _timers = new WeakMap<HTMLElement, ReturnType<typeof setTimeout>>();\n\n/** Creates and mounts a visually-hidden live region with the given politeness. */\nconst createRegion = (politeness: 'assertive' | 'polite', doc: Document): HTMLElement => {\n const el = doc.createElement('div');\n\n el.setAttribute('aria-live', politeness);\n el.setAttribute('aria-atomic', 'true');\n el.setAttribute('data-block-announcer', politeness);\n el.style.cssText = SR_ONLY_INLINE_STYLE;\n\n doc.body.appendChild(el);\n\n return el;\n};\n\n/**\n * Returns the live region for the requested politeness in the given document,\n * creating it on first access. Returns `null` outside a browser context.\n */\nconst getRegion = (politeness: 'assertive' | 'polite', doc: Document): HTMLElement | null => {\n let regions = _regions.get(doc);\n\n // Re-create if this specific region was removed from the DOM (e.g. by test teardown).\n if (regions?.[politeness] && !doc.body.contains(regions[politeness])) {\n regions[politeness] = undefined;\n }\n\n if (!regions?.[politeness]) {\n if (!regions) {\n regions = {};\n _regions.set(doc, regions);\n }\n\n regions[politeness] = createRegion(politeness, doc);\n }\n\n return regions[politeness] ?? null;\n};\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport type AnnouncePoliteness = 'assertive' | 'polite';\n\nexport type AnnounceOptions = {\n /**\n * `'polite'` — queues the announcement; does not interrupt ongoing speech.\n * `'assertive'` — interrupts immediately. Use sparingly; reserve for errors.\n *\n * Default: `'polite'`.\n */\n politeness?: AnnouncePoliteness;\n};\n\n/**\n * Announces a message to screen readers via a singleton visually-hidden\n * live region. Safe to call outside a component lifecycle (no cleanup needed).\n *\n * The clear-then-set pattern (50 ms delay) forces AT to re-read even when the\n * message text hasn't changed.\n *\n * @example\n * ```ts\n * announce('3 results found');\n * announce('Session expired', { politeness: 'assertive' });\n * ```\n */\nexport const announce = (message: string, options: AnnounceOptions = {}): void => {\n if (typeof document === 'undefined') return;\n\n const politeness = options.politeness ?? 'polite';\n const region = getRegion(politeness, document);\n\n if (!region) return;\n\n // Clear immediately so AT registers a content change, then set after a short\n // delay. The 50 ms window is the established minimum for most AT/browser combos.\n region.textContent = '';\n\n // Use a per-element timer so concurrent polite + assertive announcements don't\n // clobber each other's pending writes.\n const existing = _timers.get(region);\n\n if (existing !== undefined) clearTimeout(existing);\n\n const timer = setTimeout(() => {\n region.textContent = message;\n _timers.delete(region);\n }, 50);\n\n _timers.set(region, timer);\n};\n"],"mappings":"0DAyBA,IAAM,EAAW,IAAI,QACf,EAAU,IAAI,QAGd,GAAgB,EAAoC,IAA+B,CACvF,IAAM,EAAK,EAAI,cAAc,KAAK,EASlC,OAPA,EAAG,aAAa,YAAa,CAAU,EACvC,EAAG,aAAa,cAAe,MAAM,EACrC,EAAG,aAAa,uBAAwB,CAAU,EAClD,EAAG,MAAM,QAAU,EAAA,qBAEnB,EAAI,KAAK,YAAY,CAAE,EAEhB,CACT,EAMM,GAAa,EAAoC,IAAsC,CAC3F,IAAI,EAAU,EAAS,IAAI,CAAG,EAgB9B,OAbI,IAAU,IAAe,CAAC,EAAI,KAAK,SAAS,EAAQ,EAAW,IACjE,EAAQ,GAAc,IAAA,IAGnB,IAAU,KACR,IACH,EAAU,CAAC,EACX,EAAS,IAAI,EAAK,CAAO,GAG3B,EAAQ,GAAc,EAAa,EAAY,CAAG,GAG7C,EAAQ,IAAe,IAChC,EA6Ba,GAAY,EAAiB,EAA2B,CAAC,IAAY,CAChF,GAAI,OAAO,SAAa,IAAa,OAGrC,IAAM,EAAS,EADI,EAAQ,YAAc,SACJ,QAAQ,EAE7C,GAAI,CAAC,EAAQ,OAIb,EAAO,YAAc,GAIrB,IAAM,EAAW,EAAQ,IAAI,CAAM,EAE/B,IAAa,IAAA,IAAW,aAAa,CAAQ,EAEjD,IAAM,EAAQ,eAAiB,CAC7B,EAAO,YAAc,EACrB,EAAQ,OAAO,CAAM,CACvB,EAAG,EAAE,EAEL,EAAQ,IAAI,EAAQ,CAAK,CAC3B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcer.d.ts","sourceRoot":"","sources":["../../src/core/announcer.ts"],"names":[],"mappings":"AAoEA,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAS,MAAM,EAAE,UAAS,eAAoB,KAAG,IAwBzE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { SR_ONLY_INLINE_STYLE as e } from "../styles/mixins/accessibility.css.js";
2
- //#region src/headless/announcer.ts
2
+ //#region src/core/announcer.ts
3
3
  var t = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(), r = (t, n) => {
4
4
  let r = n.createElement("div");
5
5
  return r.setAttribute("aria-live", t), r.setAttribute("aria-atomic", "true"), r.setAttribute("data-block-announcer", t), r.style.cssText = e, n.body.appendChild(r), r;