@mcp-b/web-components 0.2.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 (366) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/dist/accordion-B1Q3kuP_.d.ts +373 -0
  4. package/dist/accordion-item-DvPfhpm8.js +307 -0
  5. package/dist/accordion-item-bPRIahNn.d.ts +63 -0
  6. package/dist/accordion-zDr-Br4V.js +483 -0
  7. package/dist/action-bar-CYsjmhwP.d.ts +29 -0
  8. package/dist/action-bar-CjN_UcnP.js +56 -0
  9. package/dist/alert-dialog-4CnO3Nb5.d.ts +60 -0
  10. package/dist/alert-dialog-D25Oi_TS.js +126 -0
  11. package/dist/avatar-Bje_KpZo.d.ts +141 -0
  12. package/dist/avatar-CRP0kW3x.js +224 -0
  13. package/dist/badge-Ct95U4UO.js +301 -0
  14. package/dist/badge-D1DNQrWn.d.ts +106 -0
  15. package/dist/breadcrumb-BxZ-nQE5.d.ts +365 -0
  16. package/dist/breadcrumb-item-BC454oQe.d.ts +59 -0
  17. package/dist/breadcrumb-item-P5pdq_gE.js +151 -0
  18. package/dist/breadcrumb-uURhiqWJ.js +384 -0
  19. package/dist/button-5k_aL_gD.js +802 -0
  20. package/dist/button-BQofnUt4.d.ts +354 -0
  21. package/dist/button-group-BydvJTQy.js +197 -0
  22. package/dist/button-group-COodHeuB.d.ts +155 -0
  23. package/dist/callout-B8zTf8Go.js +188 -0
  24. package/dist/callout-DFwPao36.d.ts +103 -0
  25. package/dist/card-BYDzdMAU.d.ts +177 -0
  26. package/dist/card-DIg1-X2G.js +332 -0
  27. package/dist/carousel-Bktu7wrD.js +843 -0
  28. package/dist/carousel-DQITCtEY.d.ts +423 -0
  29. package/dist/carousel-item-B5-X31Ha.js +79 -0
  30. package/dist/carousel-item-BB3jL2tk.d.ts +34 -0
  31. package/dist/cdn/loader.js +530 -0
  32. package/dist/checkbox-D6r7PVPj.js +641 -0
  33. package/dist/checkbox-DoFcDEKB.d.ts +354 -0
  34. package/dist/checkbox-group-CLvNAO_F.js +201 -0
  35. package/dist/checkbox-group-Cnh8rAn4.d.ts +152 -0
  36. package/dist/color-input-Bky89xg_.d.ts +470 -0
  37. package/dist/color-input-DPIxi9wR.js +894 -0
  38. package/dist/color-picker-adwOmtRl.js +1240 -0
  39. package/dist/color-picker-wQw8bPsq.d.ts +360 -0
  40. package/dist/combobox-B6al50UG.js +1693 -0
  41. package/dist/combobox-item-D2H1CMxC.d.ts +714 -0
  42. package/dist/combobox-item-yM6tDrGG.js +225 -0
  43. package/dist/comparison-B1-nMwmp.d.ts +134 -0
  44. package/dist/comparison-CyqKrCN-.js +435 -0
  45. package/dist/components/accordion/accordion.d.ts +2 -0
  46. package/dist/components/accordion/accordion.js +2 -0
  47. package/dist/components/accordion-item/accordion-item.d.ts +2 -0
  48. package/dist/components/accordion-item/accordion-item.js +2 -0
  49. package/dist/components/action-bar/action-bar.d.ts +2 -0
  50. package/dist/components/action-bar/action-bar.js +2 -0
  51. package/dist/components/alert-dialog/alert-dialog.d.ts +2 -0
  52. package/dist/components/alert-dialog/alert-dialog.js +2 -0
  53. package/dist/components/avatar/avatar.d.ts +2 -0
  54. package/dist/components/avatar/avatar.js +2 -0
  55. package/dist/components/badge/badge.d.ts +2 -0
  56. package/dist/components/badge/badge.js +2 -0
  57. package/dist/components/breadcrumb/breadcrumb.d.ts +2 -0
  58. package/dist/components/breadcrumb/breadcrumb.js +2 -0
  59. package/dist/components/breadcrumb-item/breadcrumb-item.d.ts +2 -0
  60. package/dist/components/breadcrumb-item/breadcrumb-item.js +2 -0
  61. package/dist/components/button/button.d.ts +2 -0
  62. package/dist/components/button/button.js +2 -0
  63. package/dist/components/button-group/button-group.d.ts +2 -0
  64. package/dist/components/button-group/button-group.js +2 -0
  65. package/dist/components/callout/callout.d.ts +2 -0
  66. package/dist/components/callout/callout.js +2 -0
  67. package/dist/components/card/card.d.ts +2 -0
  68. package/dist/components/card/card.js +2 -0
  69. package/dist/components/carousel/carousel.d.ts +2 -0
  70. package/dist/components/carousel/carousel.js +2 -0
  71. package/dist/components/carousel-item/carousel-item.d.ts +2 -0
  72. package/dist/components/carousel-item/carousel-item.js +2 -0
  73. package/dist/components/checkbox/checkbox.d.ts +2 -0
  74. package/dist/components/checkbox/checkbox.js +2 -0
  75. package/dist/components/checkbox-group/checkbox-group.d.ts +2 -0
  76. package/dist/components/checkbox-group/checkbox-group.js +2 -0
  77. package/dist/components/color-input/color-input.d.ts +2 -0
  78. package/dist/components/color-input/color-input.js +2 -0
  79. package/dist/components/color-picker/color-picker.d.ts +2 -0
  80. package/dist/components/color-picker/color-picker.js +2 -0
  81. package/dist/components/combobox/combobox.d.ts +2 -0
  82. package/dist/components/combobox/combobox.js +2 -0
  83. package/dist/components/combobox-item/combobox-item.d.ts +2 -0
  84. package/dist/components/combobox-item/combobox-item.js +2 -0
  85. package/dist/components/comparison/comparison.d.ts +2 -0
  86. package/dist/components/comparison/comparison.js +2 -0
  87. package/dist/components/copy/copy.d.ts +2 -0
  88. package/dist/components/copy/copy.js +291 -0
  89. package/dist/components/data-table/data-table.d.ts +2 -0
  90. package/dist/components/data-table/data-table.js +2 -0
  91. package/dist/components/date/date.d.ts +2 -0
  92. package/dist/components/date/date.js +2 -0
  93. package/dist/components/dialog/dialog.d.ts +2 -0
  94. package/dist/components/dialog/dialog.js +2 -0
  95. package/dist/components/divider/divider.d.ts +2 -0
  96. package/dist/components/divider/divider.js +2 -0
  97. package/dist/components/dropdown/dropdown.d.ts +2 -0
  98. package/dist/components/dropdown/dropdown.js +2 -0
  99. package/dist/components/dropdown-item/dropdown-item.d.ts +2 -0
  100. package/dist/components/dropdown-item/dropdown-item.js +2 -0
  101. package/dist/components/empty-result/empty-result.d.ts +2 -0
  102. package/dist/components/empty-result/empty-result.js +2 -0
  103. package/dist/components/empty-state/empty-state.d.ts +2 -0
  104. package/dist/components/empty-state/empty-state.js +2 -0
  105. package/dist/components/expander/expander.d.ts +2 -0
  106. package/dist/components/expander/expander.js +2 -0
  107. package/dist/components/field/field.d.ts +2 -0
  108. package/dist/components/field/field.js +2 -0
  109. package/dist/components/file-input/file-input.d.ts +2 -0
  110. package/dist/components/file-input/file-input.js +2 -0
  111. package/dist/components/filter-bar/filter-bar.d.ts +2 -0
  112. package/dist/components/filter-bar/filter-bar.js +2 -0
  113. package/dist/components/form-section/form-section.d.ts +2 -0
  114. package/dist/components/form-section/form-section.js +2 -0
  115. package/dist/components/icon/icon.d.ts +2 -0
  116. package/dist/components/icon/icon.js +2 -0
  117. package/dist/components/include/include.d.ts +2 -0
  118. package/dist/components/include/include.js +2 -0
  119. package/dist/components/index.d.ts +85 -0
  120. package/dist/components/index.js +86 -0
  121. package/dist/components/infinite-scroller/infinite-scroller.d.ts +2 -0
  122. package/dist/components/infinite-scroller/infinite-scroller.js +2 -0
  123. package/dist/components/intersection-observer/intersection-observer.d.ts +2 -0
  124. package/dist/components/intersection-observer/intersection-observer.js +2 -0
  125. package/dist/components/listbox/listbox.d.ts +2 -0
  126. package/dist/components/listbox/listbox.js +2 -0
  127. package/dist/components/listbox-item/listbox-item.d.ts +2 -0
  128. package/dist/components/listbox-item/listbox-item.js +2 -0
  129. package/dist/components/lorem-ipsum/lorem-ipsum.d.ts +2 -0
  130. package/dist/components/lorem-ipsum/lorem-ipsum.js +2 -0
  131. package/dist/components/meter/meter.d.ts +2 -0
  132. package/dist/components/meter/meter.js +2 -0
  133. package/dist/components/metric/metric.d.ts +2 -0
  134. package/dist/components/metric/metric.js +2 -0
  135. package/dist/components/metric-grid/metric-grid.d.ts +2 -0
  136. package/dist/components/metric-grid/metric-grid.js +2 -0
  137. package/dist/components/mutation-observer/mutation-observer.d.ts +2 -0
  138. package/dist/components/mutation-observer/mutation-observer.js +2 -0
  139. package/dist/components/navicon/navicon.d.ts +2 -0
  140. package/dist/components/navicon/navicon.js +2 -0
  141. package/dist/components/number/number.d.ts +2 -0
  142. package/dist/components/number/number.js +2 -0
  143. package/dist/components/number-field/number-field.d.ts +2 -0
  144. package/dist/components/number-field/number-field.js +2 -0
  145. package/dist/components/pagination/pagination.d.ts +2 -0
  146. package/dist/components/pagination/pagination.js +2 -0
  147. package/dist/components/popover/popover.d.ts +2 -0
  148. package/dist/components/popover/popover.js +2 -0
  149. package/dist/components/preview-card/preview-card.d.ts +2 -0
  150. package/dist/components/preview-card/preview-card.js +2 -0
  151. package/dist/components/progress/progress.d.ts +2 -0
  152. package/dist/components/progress/progress.js +2 -0
  153. package/dist/components/radio/radio.d.ts +2 -0
  154. package/dist/components/radio/radio.js +2 -0
  155. package/dist/components/radio-item/radio-item.d.ts +2 -0
  156. package/dist/components/radio-item/radio-item.js +2 -0
  157. package/dist/components/random-content/random-content.d.ts +2 -0
  158. package/dist/components/random-content/random-content.js +2 -0
  159. package/dist/components/rating/rating.d.ts +2 -0
  160. package/dist/components/rating/rating.js +2 -0
  161. package/dist/components/resize-observer/resize-observer.d.ts +2 -0
  162. package/dist/components/resize-observer/resize-observer.js +2 -0
  163. package/dist/components/scroll-area/scroll-area.d.ts +2 -0
  164. package/dist/components/scroll-area/scroll-area.js +2 -0
  165. package/dist/components/scroller/scroller.d.ts +2 -0
  166. package/dist/components/scroller/scroller.js +2 -0
  167. package/dist/components/search-list/search-list.d.ts +2 -0
  168. package/dist/components/search-list/search-list.js +2 -0
  169. package/dist/components/select/select.d.ts +2 -0
  170. package/dist/components/select/select.js +2 -0
  171. package/dist/components/selection-summary/selection-summary.d.ts +2 -0
  172. package/dist/components/selection-summary/selection-summary.js +2 -0
  173. package/dist/components/share/share.d.ts +2 -0
  174. package/dist/components/share/share.js +2 -0
  175. package/dist/components/slide-activator/slide-activator.d.ts +2 -0
  176. package/dist/components/slide-activator/slide-activator.js +2 -0
  177. package/dist/components/slider/slider.d.ts +2 -0
  178. package/dist/components/slider/slider.js +2 -0
  179. package/dist/components/sparkline/sparkline.d.ts +2 -0
  180. package/dist/components/sparkline/sparkline.js +2 -0
  181. package/dist/components/spinner/spinner.d.ts +2 -0
  182. package/dist/components/spinner/spinner.js +2 -0
  183. package/dist/components/splitter/splitter.d.ts +2 -0
  184. package/dist/components/splitter/splitter.js +2 -0
  185. package/dist/components/switch/switch.d.ts +2 -0
  186. package/dist/components/switch/switch.js +2 -0
  187. package/dist/components/tab/tab.d.ts +2 -0
  188. package/dist/components/tab/tab.js +2 -0
  189. package/dist/components/tab-list/tab-list.d.ts +2 -0
  190. package/dist/components/tab-list/tab-list.js +2 -0
  191. package/dist/components/tab-panel/tab-panel.d.ts +2 -0
  192. package/dist/components/tab-panel/tab-panel.js +2 -0
  193. package/dist/components/text-area/text-area.d.ts +2 -0
  194. package/dist/components/text-area/text-area.js +2 -0
  195. package/dist/components/text-field/text-field.d.ts +2 -0
  196. package/dist/components/text-field/text-field.js +2 -0
  197. package/dist/components/text-mask/text-mask.d.ts +2 -0
  198. package/dist/components/text-mask/text-mask.js +2 -0
  199. package/dist/components/timed-content/timed-content.d.ts +2 -0
  200. package/dist/components/timed-content/timed-content.js +2 -0
  201. package/dist/components/toast/toast.d.ts +2 -0
  202. package/dist/components/toast/toast.js +2 -0
  203. package/dist/components/toast-item/toast-item.d.ts +2 -0
  204. package/dist/components/toast-item/toast-item.js +2 -0
  205. package/dist/components/toggle-icon/toggle-icon.d.ts +2 -0
  206. package/dist/components/toggle-icon/toggle-icon.js +2 -0
  207. package/dist/components/toggle-tag/toggle-tag.d.ts +2 -0
  208. package/dist/components/toggle-tag/toggle-tag.js +2 -0
  209. package/dist/components/toolbar/toolbar.d.ts +2 -0
  210. package/dist/components/toolbar/toolbar.js +2 -0
  211. package/dist/components/tooltip/tooltip.d.ts +2 -0
  212. package/dist/components/tooltip/tooltip.js +2 -0
  213. package/dist/components/transition-group/transition-group.d.ts +2 -0
  214. package/dist/components/transition-group/transition-group.js +2 -0
  215. package/dist/components/zoomable-frame/zoomable-frame.d.ts +2 -0
  216. package/dist/components/zoomable-frame/zoomable-frame.js +2 -0
  217. package/dist/copy-CvC9vaGw.d.ts +206 -0
  218. package/dist/copy.styles-DWGvGNTP.js +100 -0
  219. package/dist/data-table-CITa8DSn.js +247 -0
  220. package/dist/data-table-DL5RhE0d.d.ts +89 -0
  221. package/dist/date-CJPmOdi9.js +146 -0
  222. package/dist/date-DtaTBM71.d.ts +142 -0
  223. package/dist/decorate-DcF3lt7P.js +9 -0
  224. package/dist/dialog-Cx46HMaZ.js +983 -0
  225. package/dist/dialog-N-v0woIy.d.ts +414 -0
  226. package/dist/divider-9vNsfHW8.js +169 -0
  227. package/dist/divider-DWuAxcXv.d.ts +79 -0
  228. package/dist/docs/custom-elements.json +29301 -0
  229. package/dist/dropdown-BXSKpVX9.js +1123 -0
  230. package/dist/dropdown-Bo00Vlr5.d.ts +537 -0
  231. package/dist/dropdown-item-_lIs-Tfd.d.ts +111 -0
  232. package/dist/dropdown-item-i77cRuN6.js +504 -0
  233. package/dist/empty-result-B2ln1yFL.js +65 -0
  234. package/dist/empty-result-B54x_Ab2.d.ts +31 -0
  235. package/dist/empty-state-BLWjtKUo.js +186 -0
  236. package/dist/empty-state-SGKjpwp3.d.ts +117 -0
  237. package/dist/expander-BUev0BmM.d.ts +174 -0
  238. package/dist/expander-Bwvxj6Oa.js +342 -0
  239. package/dist/field-BEyS909F.js +163 -0
  240. package/dist/field-ITx0jVw-.d.ts +69 -0
  241. package/dist/file-input-BEumLJjg.js +841 -0
  242. package/dist/file-input-D2D6YC0B.d.ts +378 -0
  243. package/dist/filter-bar-Bj2QzEn9.d.ts +35 -0
  244. package/dist/filter-bar-Dcs67aXo.js +66 -0
  245. package/dist/form-section-BchPetkj.js +83 -0
  246. package/dist/form-section-xFBTBULQ.d.ts +34 -0
  247. package/dist/icon-BPVkNsY4.js +165 -0
  248. package/dist/icon-Ci9CPZJV.d.ts +72 -0
  249. package/dist/icon-library-D_if7p2h.d.ts +2 -0
  250. package/dist/include-CQHVVtNs.d.ts +103 -0
  251. package/dist/include-qNUh_6kT.js +155 -0
  252. package/dist/index.d.ts +89 -0
  253. package/dist/index.js +92 -0
  254. package/dist/infinite-scroller-BmmtnWNt.js +285 -0
  255. package/dist/infinite-scroller-CuUEAlB9.d.ts +174 -0
  256. package/dist/intersection-observer-B6TciOAQ.js +503 -0
  257. package/dist/intersection-observer-B7nmP7Zz.d.ts +418 -0
  258. package/dist/listbox-C3XXRWGX.js +1257 -0
  259. package/dist/listbox-DD4ujIJe.d.ts +682 -0
  260. package/dist/listbox-item-CwD9s3VY.js +135 -0
  261. package/dist/listbox-item-DQEJWp4Z.d.ts +53 -0
  262. package/dist/localize-322EtXNX.d.ts +66 -0
  263. package/dist/lorem-ipsum-B2x3V-v8.js +198 -0
  264. package/dist/lorem-ipsum-CR82CSuJ.d.ts +130 -0
  265. package/dist/meter-BC7uaJWf.d.ts +73 -0
  266. package/dist/meter-BIDyjwFp.js +155 -0
  267. package/dist/metric-CjlLq_VA.d.ts +36 -0
  268. package/dist/metric-DbuOcDp_.js +86 -0
  269. package/dist/metric-grid-C2Pb0Zl3.js +37 -0
  270. package/dist/metric-grid-C5Xbb1_0.d.ts +27 -0
  271. package/dist/mutation-observer-BmrZ-GER.d.ts +326 -0
  272. package/dist/mutation-observer-DS8EBuOp.js +388 -0
  273. package/dist/navicon-Dic5Qjzb.d.ts +159 -0
  274. package/dist/navicon-_yMHY27-.js +486 -0
  275. package/dist/number-BNtNXNF3.js +162 -0
  276. package/dist/number-BwbnErlB.d.ts +143 -0
  277. package/dist/number-field-BQHB7UYo.js +726 -0
  278. package/dist/number-field-odk4lKXM.d.ts +422 -0
  279. package/dist/pagination-6z2qcf3U.d.ts +322 -0
  280. package/dist/pagination-DuKPuzdb.js +679 -0
  281. package/dist/popover-D0sxTU6o.d.ts +259 -0
  282. package/dist/popover-DJBrJ0za.js +556 -0
  283. package/dist/preview-card-C7H1FPfd.js +287 -0
  284. package/dist/preview-card-DitOCZTD.d.ts +86 -0
  285. package/dist/progress-Db0_axHQ.d.ts +181 -0
  286. package/dist/progress-DzVk260j.js +494 -0
  287. package/dist/radio-BtDG9xJM.js +658 -0
  288. package/dist/radio-CieMa4zU.d.ts +460 -0
  289. package/dist/radio-item-DIrUStAX.js +264 -0
  290. package/dist/radio-item-Xq2U3cMu.d.ts +69 -0
  291. package/dist/random-content-BhSeJFKz.d.ts +380 -0
  292. package/dist/random-content-BwiirXdG.js +450 -0
  293. package/dist/rating-4xNsWumY.d.ts +369 -0
  294. package/dist/rating-C1BcJDIO.js +722 -0
  295. package/dist/resize-observer-BseSbVWP.d.ts +187 -0
  296. package/dist/resize-observer-DcrLhddo.js +236 -0
  297. package/dist/scroll-area-COc1857S.js +127 -0
  298. package/dist/scroll-area-CVYDf5qY.d.ts +61 -0
  299. package/dist/scroller-LYgBVyfY.js +590 -0
  300. package/dist/scroller-bB2rGs7b.d.ts +374 -0
  301. package/dist/search-list-Clmrg8EV.js +884 -0
  302. package/dist/search-list-n0GYO7rh.d.ts +777 -0
  303. package/dist/select-CkZK2jJn.d.ts +506 -0
  304. package/dist/select-DLIaRnA4.js +690 -0
  305. package/dist/selection-summary-BVnNJ8Lw.js +48 -0
  306. package/dist/selection-summary-DmFkGyZI.d.ts +34 -0
  307. package/dist/share-DPlqP2dc.d.ts +162 -0
  308. package/dist/share-bsgXZCl7.js +250 -0
  309. package/dist/sigvelo.d.ts +5 -0
  310. package/dist/sigvelo.js +5 -0
  311. package/dist/sigvelo.loader.d.ts +3 -0
  312. package/dist/sigvelo.loader.js +102 -0
  313. package/dist/slide-activator-D7bBz69E.d.ts +429 -0
  314. package/dist/slide-activator-DlxQt9R9.js +798 -0
  315. package/dist/slider-B0FVsV1o.d.ts +921 -0
  316. package/dist/slider-B90Il7x3.js +1744 -0
  317. package/dist/sparkline-CcpTaJ_Z.js +358 -0
  318. package/dist/sparkline-DlCIt81-.d.ts +235 -0
  319. package/dist/spinner-C04Dmc0H.js +188 -0
  320. package/dist/spinner-CZ19x_dC.d.ts +99 -0
  321. package/dist/splitter-DBDJAzsp.d.ts +325 -0
  322. package/dist/splitter-MnD4In9H.js +638 -0
  323. package/dist/switch-CPaEKbog.js +581 -0
  324. package/dist/switch-Cief9M59.d.ts +248 -0
  325. package/dist/tab-BcqYGsuW.d.ts +44 -0
  326. package/dist/tab-C-FtuNmh.js +102 -0
  327. package/dist/tab-list-B_Ye_Oj9.js +691 -0
  328. package/dist/tab-list-DDvS8qHr.d.ts +450 -0
  329. package/dist/tab-panel-BaBl6eep.js +60 -0
  330. package/dist/tab-panel-BzSJlSfd.d.ts +38 -0
  331. package/dist/text-area-B_mjCE9W.d.ts +327 -0
  332. package/dist/text-area-Czixaz-_.js +556 -0
  333. package/dist/text-field-BClWMp6q.d.ts +424 -0
  334. package/dist/text-field-inpJfp0A.js +687 -0
  335. package/dist/text-mask-CNKVKSFp.d.ts +336 -0
  336. package/dist/text-mask-DDEurj90.js +370 -0
  337. package/dist/themes/sigvelo.css +10 -0
  338. package/dist/themes/utilities.css +9 -0
  339. package/dist/timed-content-D2mGFamc.d.ts +181 -0
  340. package/dist/timed-content-pvEP4l5V.js +226 -0
  341. package/dist/toast-BnZaIg6Z.js +636 -0
  342. package/dist/toast-cEBVK9NQ.d.ts +487 -0
  343. package/dist/toast-item-BPpJT6vD.d.ts +159 -0
  344. package/dist/toast-item-IS8IFUEg.js +372 -0
  345. package/dist/toggle-icon-4oLDeEt4.js +752 -0
  346. package/dist/toggle-icon-DlwMMWZL.d.ts +359 -0
  347. package/dist/toggle-tag-1sfTFJtg.js +434 -0
  348. package/dist/toggle-tag-IVvMGT4R.d.ts +245 -0
  349. package/dist/toolbar-CABq0ZL1.d.ts +122 -0
  350. package/dist/toolbar-CEZ0-F-X.js +196 -0
  351. package/dist/tooltip-DbyoPFNe.js +521 -0
  352. package/dist/tooltip-ahFthek8.d.ts +192 -0
  353. package/dist/transition-group-3hnAnwSd.js +801 -0
  354. package/dist/transition-group-DD_CjSNC.d.ts +608 -0
  355. package/dist/translations/en.d.ts +6 -0
  356. package/dist/translations/en.js +75 -0
  357. package/dist/translations/es.d.ts +6 -0
  358. package/dist/translations/es.js +75 -0
  359. package/dist/types/custom-element-jsx.d.ts +13723 -0
  360. package/dist/utilities/icon-library.d.ts +3 -0
  361. package/dist/utilities/icon-library.js +93 -0
  362. package/dist/utilities/localize.d.ts +2 -0
  363. package/dist/utilities/localize.js +6 -0
  364. package/dist/zoomable-frame-Cldvj5sE.js +398 -0
  365. package/dist/zoomable-frame-r6S6587z.d.ts +162 -0
  366. package/package.json +83 -0
@@ -0,0 +1,658 @@
1
+ import { t as __decorate } from "./decorate-DcF3lt7P.js";
2
+ import "./radio-item-DIrUStAX.js";
3
+ import { css, html } from "lit";
4
+ import { property, query, state } from "lit/decorators.js";
5
+ import hostStyles from "@mcp-b/wc-support/styles/host.styles";
6
+ import { SigveloFormControlElement } from "@mcp-b/wc-support/base/sigvelo-element";
7
+ import { classMap } from "lit/directives/class-map.js";
8
+ import { SigveloChangeEvent, SigveloInputEvent } from "@mcp-b/wc-support/events/form";
9
+ import formControlStyles from "@mcp-b/wc-support/styles/form-control.styles";
10
+ //#region src/components/radio/radio.styles.ts
11
+ var radio_styles_default = css`
12
+ #group {
13
+ display: flex;
14
+ margin-block: 0.5rem;
15
+ }
16
+
17
+ :host([orientation="horizontal"]) #group {
18
+ flex-wrap: wrap;
19
+ gap: 1.25rem;
20
+ }
21
+
22
+ :host([orientation="vertical"]) #group {
23
+ flex-direction: column;
24
+ gap: 0.5rem;
25
+ }
26
+
27
+ :host(:state(disabled)) #label,
28
+ :host(:state(disabled)) #description {
29
+ cursor: not-allowed;
30
+ opacity: 0.5;
31
+ }
32
+ `;
33
+ //#endregion
34
+ //#region src/components/radio/radio.ts
35
+ const nativeRadio = document.createElement("input");
36
+ nativeRadio.name = "sigvelo-faux-radio";
37
+ nativeRadio.type = "radio";
38
+ nativeRadio.required = true;
39
+ const VALIDATION_MESSAGE = nativeRadio.validationMessage;
40
+ /**
41
+ * <sigvelo-radio>
42
+ *
43
+ * @summary Allows the user to select one option from a group of choices.
44
+ * @tag sigvelo-radio
45
+ * @documentation https://design-system.sigvelo.com/docs/components/radio
46
+ * @status stable
47
+ * @since 1.0
48
+ *
49
+ * @dependency sigvelo-radio-item
50
+ *
51
+ * @slot - The radio items to place in the group.
52
+ * @slot label - The radio's label. For plain-text labels, you can use the `label` attribute instead.
53
+ * @slot description - The radios's description. For plain-text descriptions, you can use the `description`
54
+ * attribute instead.
55
+ *
56
+ * @event sigvelo-change - Emitted when the user commits changes to the radio's value.
57
+ * @event sigvelo-input - Emitted when the radio receives input.
58
+ *
59
+ * @csspart label - The element that contains the radio's label.
60
+ * @csspart description - The element that contains the radio's description.
61
+ * @csspart group - The element that wraps the grouped radios.
62
+ *
63
+ * @cssstate user-valid - Applied when the radio is valid and the user has sufficiently interacted with it.
64
+ * @cssstate user-invalid - Applied when the radio is invalid and the user has sufficiently interacted with it.
65
+ *
66
+ * @example Default
67
+ * Radios follow the ARIA APG radio group pattern for accessibility. Unlike native radio buttons, Sigvelo radio items must be placed inside a radio controller as shown below.
68
+ *
69
+ * ```html
70
+ * <sigvelo-radio
71
+ * label="Color"
72
+ * description="Select a color for your new cat"
73
+ * name="color"
74
+ * value="black"
75
+ * >
76
+ * <sigvelo-radio-item value="black">Black</sigvelo-radio-item>
77
+ * <sigvelo-radio-item value="white">White</sigvelo-radio-item>
78
+ * <sigvelo-radio-item value="orange">Orange</sigvelo-radio-item>
79
+ * <sigvelo-radio-item value="gray">Gray</sigvelo-radio-item>
80
+ * </sigvelo-radio>
81
+ * ```
82
+ *
83
+ * @example Labels and descriptions
84
+ * You can use the `label` and `description` attributes to provide plain text labels and descriptions for the radio. If you want to provide HTML, use the `label` and `description` slots instead.
85
+ *
86
+ * ```html
87
+ * <sigvelo-radio label="Favorite pet" name="animal">
88
+ * <span slot="description">
89
+ * For more information, <a href="https://example.com/" target="_blank">visit our website</a>.
90
+ * </span>
91
+ * <sigvelo-radio-item value="cat">Cat</sigvelo-radio-item>
92
+ * <sigvelo-radio-item value="dog">Dog</sigvelo-radio-item>
93
+ * <sigvelo-radio-item value="bird">Bird</sigvelo-radio-item>
94
+ * <sigvelo-radio-item value="lizard">Lizard</sigvelo-radio-item>
95
+ * </sigvelo-radio>
96
+ * ```
97
+ *
98
+ * @example Providing an initial value
99
+ * Use the `value` attribute to provide an initial value for the radio. The value should match an existing radio item's value.
100
+ *
101
+ * ```html
102
+ * <sigvelo-radio label="Fur type" name="fur" value="short">
103
+ * <sigvelo-radio-item value="short">Short</sigvelo-radio-item>
104
+ * <sigvelo-radio-item value="medium">Medium</sigvelo-radio-item>
105
+ * <sigvelo-radio-item value="long">Long</sigvelo-radio-item>
106
+ * <sigvelo-radio-item value="hairless">Hairless</sigvelo-radio-item>
107
+ * </sigvelo-radio>
108
+ * ```
109
+ *
110
+ * **Warning:** This behavior is different from native radios that use the `checked` attribute to set the value. With `<sigvelo-radio>`, always use the `value` attribute to set the value.
111
+ *
112
+ * @example Changing the orientation
113
+ * To stack radio items on top of each other instead of side by side, set the `orientation` attribute to `vertical`.
114
+ *
115
+ * ```html
116
+ * <sigvelo-radio orientation="vertical" label="Fur type" name="fur">
117
+ * <sigvelo-radio-item value="short">Short</sigvelo-radio-item>
118
+ * <sigvelo-radio-item value="medium">Medium</sigvelo-radio-item>
119
+ * <sigvelo-radio-item value="long">Long</sigvelo-radio-item>
120
+ * <sigvelo-radio-item value="hairless">Hairless</sigvelo-radio-item>
121
+ * </sigvelo-radio>
122
+ * ```
123
+ *
124
+ * @example Filled radios
125
+ * Set the `variant` attribute to `filled` to change a radio item's variant.
126
+ *
127
+ * ```html
128
+ * <sigvelo-radio label="Favorite pet" name="animal">
129
+ * <sigvelo-radio-item variant="filled" value="cat">Cat</sigvelo-radio-item>
130
+ * <sigvelo-radio-item variant="filled" value="dog">Dog</sigvelo-radio-item>
131
+ * <sigvelo-radio-item variant="filled" value="bird">Bird</sigvelo-radio-item>
132
+ * <sigvelo-radio-item variant="filled" value="lizard">Lizard</sigvelo-radio-item>
133
+ * </sigvelo-radio>
134
+ * ```
135
+ *
136
+ * @example Changing the size
137
+ * Use the `size` attribute to change a radio item's size.
138
+ *
139
+ * ```html
140
+ * <sigvelo-radio label="Select a size" name="size" orientation="vertical">
141
+ * <sigvelo-radio-item size="xs" value="a">Extra small</sigvelo-radio-item>
142
+ * <sigvelo-radio-item size="sm" value="b">Small</sigvelo-radio-item>
143
+ * <sigvelo-radio-item size="md" value="c">Medium</sigvelo-radio-item>
144
+ * <sigvelo-radio-item size="lg" value="d">Large</sigvelo-radio-item>
145
+ * <sigvelo-radio-item size="xl" value="e">Extra large</sigvelo-radio-item>
146
+ * </sigvelo-radio>
147
+ * ```
148
+ *
149
+ * @example Disabling
150
+ * To disable the entire control, add the `disabled` attribute to the radio element.
151
+ *
152
+ * ```html
153
+ * <sigvelo-radio label="Favorite pet" name="animal" disabled value="cat">
154
+ * <sigvelo-radio-item value="cat">Cat</sigvelo-radio-item>
155
+ * <sigvelo-radio-item value="dog">Dog</sigvelo-radio-item>
156
+ * <sigvelo-radio-item value="bird">Bird</sigvelo-radio-item>
157
+ * <sigvelo-radio-item value="lizard">Lizard</sigvelo-radio-item>
158
+ * </sigvelo-radio>
159
+ * ```
160
+ *
161
+ * To disable individual options, add the `disabled` attribute to one or more radio items.
162
+ *
163
+ * ```html
164
+ * <sigvelo-radio label="Favorite pet" name="animal" value="cat">
165
+ * <sigvelo-radio-item value="cat">Cat</sigvelo-radio-item>
166
+ * <sigvelo-radio-item value="dog" disabled>Dog</sigvelo-radio-item>
167
+ * <sigvelo-radio-item value="bird" disabled>Bird</sigvelo-radio-item>
168
+ * <sigvelo-radio-item value="lizard">Lizard</sigvelo-radio-item>
169
+ * </sigvelo-radio>
170
+ * ```
171
+ *
172
+ * @example Validation
173
+ * The `required` attribute can be applied to enable validation using the Constraint Validation API. This will prevent form submission until a radio item is checked.
174
+ *
175
+ * ```html
176
+ * <form action="about:blank" method="get" target="_blank">
177
+ * <sigvelo-radio label="Select one" name="animal" required>
178
+ * <sigvelo-radio-item value="cats">Cats</sigvelo-radio-item>
179
+ * <sigvelo-radio-item value="dogs">Dogs</sigvelo-radio-item>
180
+ * </sigvelo-radio>
181
+ * <br>
182
+ * <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
183
+ * <sigvelo-button type="reset">Reset</sigvelo-button>
184
+ * </form>
185
+ * ```
186
+ *
187
+ * @example Using custom validation
188
+ * Use the `setCustomValidity()` method to make the radio invalid and show a custom error message on submit. This will override all other validation parameters. To clear the error, remove the attribute or set it to an empty string.
189
+ *
190
+ * ```html
191
+ * <form action="about:blank" method="get" target="_blank" id="radio__custom-validation">
192
+ * <sigvelo-radio label="Select one" name="animal">
193
+ * <sigvelo-radio-item value="cats">Cats</sigvelo-radio-item>
194
+ * <sigvelo-radio-item value="dogs">Dogs</sigvelo-radio-item>
195
+ * </sigvelo-radio>
196
+ * <br>
197
+ * <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
198
+ * <sigvelo-button type="reset">Reset</sigvelo-button>
199
+ * </form>
200
+ *
201
+ * <script type="module">
202
+ * import { allDefined } from '/dist/sigvelo.js';
203
+ *
204
+ * await allDefined();
205
+ *
206
+ * const form = document.getElementById('radio__custom-validation');
207
+ * const radio = form.querySelector('sigvelo-radio');
208
+ *
209
+ * radio.setCustomValidity('Not so fast, bubba!');
210
+ * <\/script>
211
+ * ```
212
+ *
213
+ * @example Styling validation
214
+ * You can style valid and invalid radios using the `:valid` and `:invalid` pseudo classes.
215
+ *
216
+ * ```html
217
+ * <form action="about:blank" method="get" target="_blank" class="radio__validation-pseudo">
218
+ * <sigvelo-radio label="Select one" name="animal" required>
219
+ * <sigvelo-radio-item value="cats">Cats</sigvelo-radio-item>
220
+ * <sigvelo-radio-item value="dogs">Dogs</sigvelo-radio-item>
221
+ * </sigvelo-radio>
222
+ * <br>
223
+ * <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
224
+ * <sigvelo-button type="reset">Reset</sigvelo-button>
225
+ * </form>
226
+ *
227
+ * <style>
228
+ * .radio__validation-pseudo {
229
+ * sigvelo-radio:valid {
230
+ * outline: solid 2px var(--sigvelo-color-success-border);
231
+ * outline-offset: .5rem;
232
+ * }
233
+ *
234
+ * sigvelo-radio:invalid {
235
+ * outline: solid 2px var(--sigvelo-color-danger-border);
236
+ * outline-offset: .5rem;
237
+ * }
238
+ * }
239
+ * </style>
240
+ * ```
241
+ *
242
+ * However, these selectors will match even before the user has had a chance to fill out the form. More often than not, you'll want to use the `user-valid` and `user-invalid` custom states instead. This way, validation styles are only shown _after_ the user interacts with the form control or when the form is submitted.
243
+ *
244
+ * ```html
245
+ * <form action="about:blank" method="get" target="_blank" class="radio__validation-custom">
246
+ * <sigvelo-radio label="Select one" name="animal" required>
247
+ * <sigvelo-radio-item value="cats">Cats</sigvelo-radio-item>
248
+ * <sigvelo-radio-item value="dogs">Dogs</sigvelo-radio-item>
249
+ * </sigvelo-radio>
250
+ * <br>
251
+ * <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
252
+ * <sigvelo-button type="reset">Reset</sigvelo-button>
253
+ * </form>
254
+ *
255
+ * <style>
256
+ * .radio__validation-custom {
257
+ * sigvelo-radio:state(user-valid) {
258
+ * outline: solid 2px var(--sigvelo-color-success-border);
259
+ * outline-offset: .5rem;
260
+ * }
261
+ *
262
+ * sigvelo-radio:state(user-invalid) {
263
+ * outline: solid 2px var(--sigvelo-color-danger-border);
264
+ * outline-offset: .5rem;
265
+ * }
266
+ * }
267
+ * </style>
268
+ * ```
269
+ *
270
+ * @example Styling radios
271
+ * Radios come with a simple, minimal appearance. Feel free to customize them with your own styles. Here are some examples, for inspiration.
272
+ *
273
+ * ```html
274
+ * <sigvelo-radio label="How would you like to login?" name="auth" class="radio__auth">
275
+ * <sigvelo-radio-item value="magic">
276
+ * <sigvelo-icon name="wand"></sigvelo-icon> Magic link
277
+ * </sigvelo-radio-item>
278
+ * <sigvelo-radio-item value="password">
279
+ * <sigvelo-icon name="password"></sigvelo-icon> Password
280
+ * </sigvelo-radio-item>
281
+ * </sigvelo-radio>
282
+ *
283
+ * <style>
284
+ * .radio__auth {
285
+ * sigvelo-radio-item {
286
+ * background: var(--sigvelo-color-surface);
287
+ * border: solid 1px var(--sigvelo-color-neutral-border-muted);
288
+ * border-radius: .5rem;
289
+ * box-shadow: var(--sigvelo-elevation-hairline);
290
+ * padding: 1rem;
291
+ * cursor: pointer;
292
+ * }
293
+ *
294
+ * sigvelo-radio-item:state(checked) {
295
+ * background-color: var(--sigvelo-color-primary-bg-subtle);
296
+ * border-color: var(--sigvelo-color-primary-border-muted);
297
+ * }
298
+ *
299
+ * sigvelo-radio-item:focus-visible {
300
+ * outline: var(--sigvelo-focus-ring);
301
+ * outline-offset: var(--sigvelo-focus-offset);
302
+ * }
303
+ * }
304
+ * </style>
305
+ * ```
306
+ *
307
+ * ```html
308
+ * <sigvelo-radio
309
+ * label="Select a plan"
310
+ * description="All plans come with a free cat"
311
+ * name="plan"
312
+ * class="radio__hosting"
313
+ * >
314
+ * <sigvelo-radio-item value="startup">
315
+ * Startup<br>
316
+ * <small>12GB &middot; 6 CPUs &middot; 256GB SSD</small>
317
+ * </sigvelo-radio-item>
318
+ *
319
+ * <sigvelo-radio-item value="business">
320
+ * Business<br>
321
+ * <small>16GB &middot; 8 CPUs &middot; 512GB SSD</small>
322
+ * </sigvelo-radio-item>
323
+ *
324
+ * <sigvelo-radio-item value="enterprise">
325
+ * Enterprise<br>
326
+ * <small>32GB &middot; 12 CPUs &middot; 1TB SSD</small>
327
+ * </sigvelo-radio-item>
328
+ * </sigvelo-radio>
329
+ *
330
+ * <style>
331
+ * .radio__hosting {
332
+ * sigvelo-radio-item {
333
+ * position: relative;
334
+ * width: 100%;
335
+ * background: var(--sigvelo-color-surface);
336
+ * border: solid 1px var(--sigvelo-color-neutral-border-muted);
337
+ * box-shadow: var(--sigvelo-elevation-hairline);
338
+ * border-radius: .5rem;
339
+ * padding: 1rem;
340
+ * }
341
+ *
342
+ * sigvelo-radio-item::part(label) {
343
+ * width: 100%;
344
+ * display: block;
345
+ * }
346
+ *
347
+ * sigvelo-radio-item::part(visual-box) {
348
+ * position: absolute;
349
+ * top: calc(50% - .625rem);
350
+ * right: 1rem;
351
+ * }
352
+ *
353
+ * sigvelo-radio-item:state(checked) {
354
+ * background-color: var(--sigvelo-color-primary-bg-subtle);
355
+ * border-color: var(--sigvelo-color-primary-border-muted);
356
+ * }
357
+ *
358
+ * sigvelo-radio-item:focus-visible {
359
+ * outline: var(--sigvelo-focus-ring);
360
+ * outline-offset: 2px;
361
+ * }
362
+ *
363
+ * small {
364
+ * color: var(--sigvelo-color-text-muted);
365
+ * }
366
+ * }
367
+ * </style>
368
+ * ```
369
+ *
370
+ * ```html
371
+ * <sigvelo-radio
372
+ * label="Color"
373
+ * description="Choose a color for your new device"
374
+ * name="color"
375
+ * class="radio__colors"
376
+ * >
377
+ * <sigvelo-radio-item value="silver" style="color: #b6b9c9;">Silver</sigvelo-radio-item>
378
+ * <sigvelo-radio-item value="blue" style="color: #83c0f5;">Blue</sigvelo-radio-item>
379
+ * <sigvelo-radio-item value="rose" style="color: #eea3bb;">Rose</sigvelo-radio-item>
380
+ * <sigvelo-radio-item value="gold" style="color: #d1b86c;">Gold</sigvelo-radio-item>
381
+ * </sigvelo-radio>
382
+ *
383
+ * <style>
384
+ * .radio__colors {
385
+ * &::part(group) {
386
+ * gap: .5rem;
387
+ * }
388
+ *
389
+ * sigvelo-radio-item {
390
+ * width: 3rem;
391
+ * height: 3rem;
392
+ * background-color: currentColor;
393
+ * background-image: linear-gradient(#fff8, transparent);
394
+ * box-shadow: inset 0 1px 2px color-mix(in oklab, currentColor, black 12.5%);
395
+ * border-radius: var(--sigvelo-radius-circle);
396
+ * cursor: pointer;
397
+ * }
398
+ *
399
+ * sigvelo-radio-item:state(checked) {
400
+ * outline: var(--sigvelo-border-style) var(--sigvelo-focus-width) currentColor;
401
+ * outline-offset: 2px;
402
+ * }
403
+ *
404
+ * sigvelo-radio-item:focus-visible {
405
+ * outline: var(--sigvelo-focus-ring);
406
+ * outline-offset: 2px;
407
+ * }
408
+ *
409
+ * sigvelo-radio-item::part(label) {
410
+ * position: absolute;
411
+ * width: 1px;
412
+ * height: 1px;
413
+ * overflow: hidden;
414
+ * white-space: nowrap;
415
+ * clip-path: inset(50%);
416
+ * }
417
+ * }
418
+ * </style>
419
+ * ```
420
+ *
421
+ * **Warning:** It's not recommended to hide the radio button unless your styles make it very clear to users that the control is selectable.
422
+ */
423
+ var SigveloRadio = class extends SigveloFormControlElement {
424
+ constructor(..._args) {
425
+ super(..._args);
426
+ this.isInvalid = false;
427
+ this.hadUserInteraction = false;
428
+ this.wasSubmitted = false;
429
+ this.value = "";
430
+ this.orientation = "horizontal";
431
+ this.required = false;
432
+ this.disabled = false;
433
+ }
434
+ static {
435
+ this.formAssociated = true;
436
+ }
437
+ static {
438
+ this.observeSlots = true;
439
+ }
440
+ static {
441
+ this.styles = [
442
+ hostStyles,
443
+ formControlStyles,
444
+ radio_styles_default
445
+ ];
446
+ }
447
+ get focusableAnchor() {
448
+ return this.getItems()[0];
449
+ }
450
+ connectedCallback() {
451
+ super.connectedCallback();
452
+ this.addEventListener("invalid", this.handleHostInvalid);
453
+ }
454
+ disconnectedCallback() {
455
+ super.disconnectedCallback();
456
+ this.removeEventListener("invalid", this.handleHostInvalid);
457
+ }
458
+ firstUpdated() {
459
+ if (this.value) {
460
+ const selectedItem = this.getSelectedItem({ includeDisabled: true });
461
+ if (selectedItem) this.setSelectedItem(selectedItem);
462
+ }
463
+ }
464
+ updated(changedProperties) {
465
+ this.updateValidity();
466
+ if (changedProperties.has("value")) this.internals.setFormValue(this.value);
467
+ if (changedProperties.has("disabled")) {
468
+ this.customStates.set("disabled", this.disabled);
469
+ this.updateControllerDisabledState();
470
+ }
471
+ if (this.hadUserInteraction || this.wasSubmitted) {
472
+ this.customStates.set("user-invalid", this.isInvalid);
473
+ this.customStates.set("user-valid", !this.isInvalid);
474
+ } else {
475
+ this.customStates.set("user-invalid", false);
476
+ this.customStates.set("user-valid", false);
477
+ }
478
+ }
479
+ /** @internal Called when a containing fieldset is disabled. */
480
+ formDisabledCallback(isDisabled) {
481
+ this.getItems({ includeDisabled: true }).forEach((item) => item.disabledByController = isDisabled);
482
+ }
483
+ /** @internal Called when the form is reset. */
484
+ formResetCallback() {
485
+ this.isInvalid = false;
486
+ this.hadUserInteraction = false;
487
+ this.wasSubmitted = false;
488
+ const itemToSelect = this.getItems().find((item) => item.getAttribute("value") === this.getAttribute("value"));
489
+ if (itemToSelect) this.setSelectedItem(itemToSelect);
490
+ else this.setSelectedItem(null);
491
+ }
492
+ /** Gets an array of radio items slotted into the radio. */
493
+ getItems(options) {
494
+ if (options?.includeDisabled) return [...this.querySelectorAll("sigvelo-radio-item")];
495
+ else return [...this.querySelectorAll("sigvelo-radio-item:not(:state(disabled))")];
496
+ }
497
+ handleHostInvalid() {
498
+ this.wasSubmitted = true;
499
+ }
500
+ async handleGroupClick(event) {
501
+ const selectedItem = this.getSelectedItem();
502
+ const radioItem = event.target.closest("sigvelo-radio-item");
503
+ if (radioItem && !radioItem.disabled && !radioItem.disabledByController) {
504
+ this.setSelectedItem(radioItem);
505
+ this.hadUserInteraction = true;
506
+ if (radioItem !== selectedItem) {
507
+ await this.updateComplete;
508
+ this.dispatchEvent(new SigveloInputEvent());
509
+ this.dispatchEvent(new InputEvent("input"));
510
+ this.dispatchEvent(new SigveloChangeEvent());
511
+ this.dispatchEvent(new Event("change", {
512
+ bubbles: true,
513
+ composed: true
514
+ }));
515
+ }
516
+ }
517
+ }
518
+ async handleGroupKeyDown(event) {
519
+ const target = event.target.closest("sigvelo-radio-item");
520
+ const radioItems = this.getItems();
521
+ const currentIndex = radioItems.findIndex((item) => item.tabIndex === 0) || 0;
522
+ let itemToSelect;
523
+ if (event.key === "ArrowLeft" || event.key === "ArrowUp") itemToSelect = radioItems[currentIndex <= 0 ? radioItems.length - 1 : currentIndex - 1];
524
+ if (event.key === "ArrowRight" || event.key === "ArrowDown") itemToSelect = radioItems[currentIndex >= radioItems.length - 1 ? 0 : currentIndex + 1];
525
+ if (event.key === "Home") itemToSelect = radioItems[0];
526
+ if (event.key === "End") itemToSelect = radioItems[radioItems.length - 1];
527
+ if (event.key === " " && target) itemToSelect = target;
528
+ if (itemToSelect) {
529
+ event.preventDefault();
530
+ this.setSelectedItem(itemToSelect);
531
+ itemToSelect.focus();
532
+ this.hadUserInteraction = true;
533
+ await this.updateComplete;
534
+ this.dispatchEvent(new SigveloInputEvent());
535
+ this.dispatchEvent(new InputEvent("input"));
536
+ this.dispatchEvent(new SigveloChangeEvent());
537
+ this.dispatchEvent(new Event("change", {
538
+ bubbles: true,
539
+ composed: true
540
+ }));
541
+ }
542
+ }
543
+ /**
544
+ * @internal Makes only the selected radio item tabbable. If no radio item is selected, the first non-disabled radio
545
+ * item will be tabbable.
546
+ */
547
+ resetRovingTabIndex() {
548
+ const radioItems = this.getItems({ includeDisabled: true });
549
+ const selectedItem = this.getSelectedItem({ includeDisabled: true });
550
+ const selectedItemIndex = radioItems.findIndex((item) => item === selectedItem);
551
+ const targetIndex = selectedItemIndex > -1 ? selectedItemIndex : 0;
552
+ radioItems.forEach((item, index) => {
553
+ if (this.disabled) item.tabIndex = -1;
554
+ else item.tabIndex = index === targetIndex ? 0 : -1;
555
+ });
556
+ }
557
+ /** Gets the selected item. */
558
+ getSelectedItem(options) {
559
+ return this.getItems(options).find((item) => item.value === this.value) || null;
560
+ }
561
+ /**
562
+ * Sets the selected item and updates the roving tab index. If `null` is provided, the selection will be cleared and
563
+ * the tab index will go to the first radio item.
564
+ */
565
+ setSelectedItem(selectedItem) {
566
+ const radioItems = this.getItems({ includeDisabled: true });
567
+ if (selectedItem) {
568
+ radioItems.forEach((item) => {
569
+ item.checked = item === selectedItem;
570
+ item.tabIndex = item === selectedItem ? 0 : -1;
571
+ });
572
+ this.value = selectedItem.value;
573
+ } else if (!selectedItem) {
574
+ radioItems.forEach((item) => {
575
+ item.checked = false;
576
+ item.tabIndex = -1;
577
+ });
578
+ radioItems[0].tabIndex = 0;
579
+ this.value = "";
580
+ }
581
+ }
582
+ /** Updates the controller disabled state for all radio items */
583
+ updateControllerDisabledState() {
584
+ this.getItems({ includeDisabled: true }).forEach((item) => item.disabledByController = this.disabled);
585
+ requestAnimationFrame(() => this.resetRovingTabIndex());
586
+ }
587
+ /** Sets the form control's validity */
588
+ async updateValidity() {
589
+ await this.updateComplete;
590
+ const hasCustomValidity = this.getCustomValidity().length > 0;
591
+ const hasMissingValue = this.required && !this.value;
592
+ const validationMessage = hasCustomValidity ? this.getCustomValidity() : VALIDATION_MESSAGE;
593
+ const flags = {
594
+ customError: hasCustomValidity,
595
+ valueMissing: hasMissingValue
596
+ };
597
+ this.isInvalid = hasCustomValidity ? true : hasMissingValue;
598
+ this.internals.setValidity(flags, validationMessage, this.focusableAnchor);
599
+ }
600
+ /** Sets focus to the selected item or the first item if none are selected. */
601
+ focus(options) {
602
+ const items = this.getItems();
603
+ const itemToFocus = items.find((item) => item.checked) || items[0];
604
+ if (itemToFocus) itemToFocus.focus(options);
605
+ }
606
+ render() {
607
+ const hasLabel = this.label || this.slotsWithContent.has("label");
608
+ const hasDescription = this.description || this.slotsWithContent.has("description");
609
+ return html`
610
+ <label
611
+ id="label"
612
+ part="label"
613
+ for="text-box"
614
+ class=${classMap({ vh: !hasLabel })}
615
+ @click=${this.focus}
616
+ >
617
+ <slot name="label">${this.label}</slot>
618
+ </label>
619
+
620
+ <div id="description" part="description" class=${classMap({ vh: !hasDescription })}>
621
+ <slot name="description">${this.description}</slot>
622
+ </div>
623
+
624
+ <div
625
+ id="group"
626
+ part="group"
627
+ role="radiogroup"
628
+ aria-labelledby="label"
629
+ aria-describedby="description"
630
+ @click=${this.handleGroupClick}
631
+ @keydown=${this.handleGroupKeyDown}
632
+ >
633
+ <slot @slotchange=${this.resetRovingTabIndex}></slot>
634
+ </div>
635
+ `;
636
+ }
637
+ };
638
+ __decorate([query("#group")], SigveloRadio.prototype, "group", void 0);
639
+ __decorate([state()], SigveloRadio.prototype, "isInvalid", void 0);
640
+ __decorate([state()], SigveloRadio.prototype, "hadUserInteraction", void 0);
641
+ __decorate([state()], SigveloRadio.prototype, "wasSubmitted", void 0);
642
+ __decorate([property()], SigveloRadio.prototype, "label", void 0);
643
+ __decorate([property()], SigveloRadio.prototype, "description", void 0);
644
+ __decorate([property({ reflect: true })], SigveloRadio.prototype, "name", void 0);
645
+ __decorate([property()], SigveloRadio.prototype, "value", void 0);
646
+ __decorate([property({ reflect: true })], SigveloRadio.prototype, "orientation", void 0);
647
+ __decorate([property()], SigveloRadio.prototype, "form", void 0);
648
+ __decorate([property({
649
+ type: Boolean,
650
+ reflect: true
651
+ })], SigveloRadio.prototype, "required", void 0);
652
+ __decorate([property({
653
+ type: Boolean,
654
+ reflect: true
655
+ })], SigveloRadio.prototype, "disabled", void 0);
656
+ customElements.define("sigvelo-radio", SigveloRadio);
657
+ //#endregion
658
+ export { SigveloRadio as t };