@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,843 @@
1
+ import { Localize } from "./utilities/localize.js";
2
+ import "./icon-BPVkNsY4.js";
3
+ import { t as __decorate } from "./decorate-DcF3lt7P.js";
4
+ import "./carousel-item-B5-X31Ha.js";
5
+ import { css, html } from "lit";
6
+ import { eventOptions, property, query, state } from "lit/decorators.js";
7
+ import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
8
+ import { classMap } from "lit/directives/class-map.js";
9
+ import { SigveloItemChangeEvent } from "@mcp-b/wc-support/events/item";
10
+ //#region src/components/carousel/carousel.styles.ts
11
+ var carousel_styles_default = css`
12
+ :host {
13
+ --aspect-ratio: 16 / 9;
14
+ --item-gap: 2em;
15
+ --dot-size: 0.875em;
16
+ --dot-gap: 0.5em;
17
+ --dot-color: var(--sigvelo-color-neutral-bg-muted);
18
+ --dot-active-color: var(--sigvelo-color-neutral-bg-strong);
19
+
20
+ display: flex;
21
+ position: relative;
22
+ flex-direction: column;
23
+ width: 100%;
24
+ max-width: 100%;
25
+ margin: 0 auto;
26
+ gap: 1em;
27
+ }
28
+
29
+ #items {
30
+ display: flex;
31
+ aspect-ratio: var(--aspect-ratio);
32
+ width: 100%;
33
+ overflow-x: scroll;
34
+ gap: var(--item-gap);
35
+ scroll-behavior: smooth;
36
+ scroll-snap-type: x mandatory;
37
+ -webkit-overflow-scrolling: touch;
38
+ overflow-y: hidden;
39
+ transform: translateZ(0);
40
+ border-radius: var(--sigvelo-radius-md);
41
+ background-color: transparent;
42
+ scrollbar-width: none;
43
+ will-change: scroll-position;
44
+
45
+ &:focus-visible {
46
+ outline: var(--sigvelo-focus-ring);
47
+ outline-offset: var(--sigvelo-focus-offset);
48
+ }
49
+ }
50
+
51
+ #items::-webkit-scrollbar {
52
+ display: none;
53
+ }
54
+
55
+ /* Controls */
56
+ #controls {
57
+ display: flex;
58
+ flex-wrap: nowrap;
59
+ align-items: center;
60
+ justify-content: space-between;
61
+ gap: 1em;
62
+ }
63
+
64
+ /* When navigation buttons AND pagination are present */
65
+ :host([without-nav]) #controls {
66
+ justify-content: center;
67
+ }
68
+
69
+ /* Previous + next */
70
+ #previous-button,
71
+ #next-button {
72
+ display: flex;
73
+ flex: 0 0 auto;
74
+ align-items: center;
75
+ justify-content: center;
76
+ width: 2.5em;
77
+ height: 2.5em;
78
+ margin: 0;
79
+ padding: 0;
80
+ border: none;
81
+ border-radius: var(--sigvelo-radius-circle);
82
+ background: var(--sigvelo-color-neutral-bg-subtle);
83
+ color: var(--sigvelo-color-neutral-text-on-subtle);
84
+ font: inherit;
85
+ cursor: pointer;
86
+ transition: var(--sigvelo-motion-duration-interaction) translate ease;
87
+
88
+ &:active:not(:disabled) {
89
+ translate: 0 var(--sigvelo-motion-distance-xs);
90
+ }
91
+
92
+ &:disabled {
93
+ cursor: not-allowed;
94
+ opacity: 0.5;
95
+ }
96
+
97
+ sigvelo-icon {
98
+ font-size: 1.25em;
99
+ }
100
+ }
101
+
102
+ #previous-button {
103
+ order: 1;
104
+ }
105
+
106
+ #next-button {
107
+ order: 3;
108
+ }
109
+
110
+ /* Pagination */
111
+ #pagination {
112
+ display: flex;
113
+ flex-wrap: wrap;
114
+ align-items: center;
115
+ justify-content: center;
116
+ order: 2;
117
+ gap: var(--dot-gap);
118
+ }
119
+
120
+ .pagination-dot {
121
+ position: relative;
122
+ width: var(--dot-size);
123
+ height: var(--dot-size);
124
+ margin: 0;
125
+ padding: 0;
126
+ border: none;
127
+ border-radius: var(--sigvelo-radius-circle);
128
+ background-color: var(--dot-color);
129
+ font: inherit;
130
+ cursor: pointer;
131
+ transition: all var(--carousel-transition-duration) ease;
132
+
133
+ &.active {
134
+ background-color: var(--dot-active-color);
135
+ }
136
+
137
+ /* Cover the gap to increase the hit area of each dot */
138
+ &::after {
139
+ position: absolute;
140
+ inset: calc(var(--dot-gap) / -2);
141
+ content: "";
142
+ }
143
+ }
144
+
145
+ /* Focus states for dots */
146
+ .pagination-dot:focus-visible {
147
+ outline: var(--sigvelo-focus-ring);
148
+ outline-offset: var(--sigvelo-focus-offset);
149
+ background-color: var(--dot-active-color);
150
+ }
151
+
152
+ /* When any dot has focus, active dots look inactive */
153
+ #pagination:has(.pagination-dot:focus) .pagination-dot.active:not(:focus) {
154
+ background-color: var(--dot-color);
155
+ }
156
+
157
+ /* The specific dot that has focus gets the active color */
158
+ #pagination:has(.pagination-dot:focus) .pagination-dot:focus {
159
+ background-color: var(--dot-active-color);
160
+ }
161
+
162
+ /* Reduced motion preference */
163
+ @media (prefers-reduced-motion: reduce) {
164
+ #items {
165
+ scroll-behavior: auto;
166
+ }
167
+
168
+ .pagination-dot.active {
169
+ transform: none;
170
+ }
171
+ }
172
+ `;
173
+ //#endregion
174
+ //#region src/components/carousel/carousel.ts
175
+ /**
176
+ * <sigvelo-carousel>
177
+ *
178
+ * @summary Displays content in a scrollable horizontal slider with navigation controls.
179
+ * @tag sigvelo-carousel
180
+ * @documentation https://design-system.sigvelo.com/docs/components/carousel
181
+ * @status stable
182
+ * @since 1.0
183
+ *
184
+ * @dependency sigvelo-carousel-item
185
+ * @dependency sigvelo-sigvelo-icon
186
+ *
187
+ * @slot - The default slot for carousel items.
188
+ *
189
+ * @csspart items - The scrollable container that holds the carousel items.
190
+ * @csspart controls - The container that surrounds nav buttons and pagination.
191
+ * @csspart previous-button - The previous button.
192
+ * @csspart next-button - The next button.
193
+ * @csspart pagination - The container for the pagination dots.
194
+ * @csspart pagination-dot - Each individual pagination dot.
195
+ * @csspart pagination-dot-active - The active pagination dot.
196
+ *
197
+ * @event sigvelo-item-change - Emitted when the active item changes and the slide has been fully scrolled into view.
198
+ *
199
+ * @cssproperty [--aspect-ratio=16/9] - The aspect ratio of the carousel. By default, carousels render 100% wide, so
200
+ * this helps retain proportions across various devices. Gets applied to the `items` part.
201
+ * @cssproperty [--item-gap=2rem] - The gap between items in the carousel.
202
+ * @cssproperty [--dot-size=0.875em] - The size of each pagination dot.
203
+ * @cssproperty [--dot-gap=0.5em] - The size of the gap between pagination dots.
204
+ * @cssproperty [--dot-color=var(--sigvelo-color-neutral-bg-muted)] - The color of inactive pagination dots.
205
+ * @cssproperty [--dot-active-color=var(--sigvelo-color-neutral-bg-strong)] - The color of active pagination dots.
206
+ *
207
+ * @cssstate scrolling - Applied when the carousel is scrolling.
208
+ *
209
+ * @example Default
210
+ * ```html
211
+ * <sigvelo-carousel label="Example slides" id="carousel__overview" loop>
212
+ * <sigvelo-carousel-item>Slide 1</sigvelo-carousel-item>
213
+ * <sigvelo-carousel-item>Slide 2</sigvelo-carousel-item>
214
+ * <sigvelo-carousel-item>Slide 3</sigvelo-carousel-item>
215
+ * <sigvelo-carousel-item>Slide 4</sigvelo-carousel-item>
216
+ * <sigvelo-carousel-item>Slide 5</sigvelo-carousel-item>
217
+ * </sigvelo-carousel>
218
+ *
219
+ * <style>
220
+ * #carousel__overview {
221
+ * sigvelo-carousel-item {
222
+ * background: var(--sigvelo-color-neutral-bg-subtle);
223
+ * color: var(--sigvelo-color-text-muted);
224
+ * font-size: 2rem;
225
+ * font-weight: 500;
226
+ * }
227
+ * }
228
+ * </style>
229
+ *
230
+ * <script>
231
+ * const carousel = document.getElementById('carousel__overview');
232
+ *
233
+ * carousel.addEventListener('sigvelo-item-change', event => console.log(event.detail.index));
234
+ * <\/script>
235
+ * ```
236
+ *
237
+ * @example Providing content
238
+ * Slot in `<sigvelo-carousel>` items with the content you'd like to show in each slide. Images work well, but you can add just about any content, including interactive elements such as links and buttons.
239
+ *
240
+ * By default, the carousel spans 100% of the width and uses a 16/9 aspect ratio. You can adjust this using the `--aspect-ratio` custom property as shown below. For full control over the width and height, you can target the `items` part using CSS.
241
+ *
242
+ * ```html
243
+ * <sigvelo-carousel label="Example slides" id="carousel__providing">
244
+ * <sigvelo-carousel-item>
245
+ * <sigvelo-card>
246
+ * <img slot="media" src="https://images.unsplash.com/photo-1737912031624-e17ba0d7f673?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A gray and white cat sleeps on a blanket with evening lights in the background">
247
+ * <p>Kittens dream of chasing moonbeams across the sky.</p>
248
+ * <sigvelo-button slot="footer">Learn more</sigvelo-button>
249
+ * </sigvelo-card>
250
+ * </sigvelo-carousel-item>
251
+ *
252
+ * <sigvelo-carousel-item>
253
+ * <sigvelo-card>
254
+ * <img slot="media" src="https://images.unsplash.com/photo-1707520595303-d6b499aa84af?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A kitten sleeps peacefully on the floor">
255
+ * <p>Kittens nap to plot their next playful adventure.</p>
256
+ * <sigvelo-button slot="footer">Learn more</sigvelo-button>
257
+ * </sigvelo-card>
258
+ * </sigvelo-carousel-item>
259
+ *
260
+ * <sigvelo-carousel-item>
261
+ * <sigvelo-card>
262
+ * <img slot="media" src="https://images.unsplash.com/photo-1626603084013-1bf8c6627707?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="An orange cat sleeps peacefully at the edge of a bed">
263
+ * <p>Kittens snooze, dreaming of fluffy clouds to leap.</p>
264
+ * <sigvelo-button slot="footer">Learn more</sigvelo-button>
265
+ * </sigvelo-card>
266
+ * </sigvelo-carousel-item>
267
+ *
268
+ * <sigvelo-carousel-item>
269
+ * <sigvelo-card>
270
+ * <img slot="media" src="https://images.unsplash.com/photo-1664037170371-045dee5604a3?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A sleepy cat looks up in dim, hazy purple lighting">
271
+ * <p>Kittens yawn, scheming to pounce on twilight stars.</p>
272
+ * <sigvelo-button slot="footer">Learn more</sigvelo-button>
273
+ * </sigvelo-card>
274
+ * </sigvelo-carousel-item>
275
+ *
276
+ * <sigvelo-carousel-item>
277
+ * <sigvelo-card>
278
+ * <img slot="media" src="https://images.unsplash.com/photo-1518143099890-1e8a03745563?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A gray cat curled up but keeping an eye out">
279
+ * <p>Kittens curl up, plotting to unravel yarn mysteries.</p>
280
+ * <sigvelo-button slot="footer">Learn more</sigvelo-button>
281
+ * </sigvelo-card>
282
+ * </sigvelo-carousel-item>
283
+ * </sigvelo-carousel>
284
+ *
285
+ * <style>
286
+ * #carousel__providing {
287
+ * --aspect-ratio: 3 / 4;
288
+ * --item-height: fit-content;
289
+ * max-width: 360px;
290
+ * }
291
+ * </style>
292
+ * ```
293
+ *
294
+ * @example Setting items by index
295
+ * Use the `active-index` attribute to set the item that should show initially. The index is zero-based, so the first slide has an index of 0, the second slide has an index of 1, etc.
296
+ *
297
+ * ```html
298
+ * <sigvelo-carousel active-index="2" id="carousel__index">
299
+ * <sigvelo-carousel-item>Slide 1</sigvelo-carousel-item>
300
+ * <sigvelo-carousel-item>Slide 2</sigvelo-carousel-item>
301
+ * <sigvelo-carousel-item>Slide 3</sigvelo-carousel-item>
302
+ * <sigvelo-carousel-item>Slide 4</sigvelo-carousel-item>
303
+ * <sigvelo-carousel-item>Slide 5</sigvelo-carousel-item>
304
+ * </sigvelo-carousel>
305
+ *
306
+ * <style>
307
+ * #carousel__index {
308
+ * sigvelo-carousel-item {
309
+ * background: var(--sigvelo-color-neutral-bg-subtle);
310
+ * color: var(--sigvelo-color-text-muted);
311
+ * font-size: 2rem;
312
+ * font-weight: 500;
313
+ * }
314
+ * }
315
+ * </style>
316
+ * ```
317
+ *
318
+ * @example Setting items by name
319
+ * You can assign names to carousel items using the `name` attribute. When a carousel item is named, you can use the `active-name` attribute on the carousel to point to the respective item. This is a convenient way to reference specific slides without having to track index numbers.
320
+ *
321
+ * ```html
322
+ * <sigvelo-carousel active-name="fourth" label="Named slides" id="carousel__named">
323
+ * <sigvelo-carousel-item name="first">Slide 1</sigvelo-carousel-item>
324
+ * <sigvelo-carousel-item name="second">Slide 2</sigvelo-carousel-item>
325
+ * <sigvelo-carousel-item name="third">Slide 3</sigvelo-carousel-item>
326
+ * <sigvelo-carousel-item name="fourth">Slide 4</sigvelo-carousel-item>
327
+ * <sigvelo-carousel-item name="fifth">Slide 5</sigvelo-carousel-item>
328
+ * </sigvelo-carousel>
329
+ *
330
+ * <style>
331
+ * #carousel__named {
332
+ * sigvelo-carousel-item {
333
+ * background: var(--sigvelo-color-neutral-bg-subtle);
334
+ * color: var(--sigvelo-color-text-muted);
335
+ * font-size: 2rem;
336
+ * font-weight: 500;
337
+ * }
338
+ * }
339
+ *
340
+ * .controls {
341
+ * display: flex;
342
+ * gap: 1rem;
343
+ * justify-content: center;
344
+ * margin-top: 1rem;
345
+ * }
346
+ * </style>
347
+ *
348
+ * <script>
349
+ * const namedCarousel = document.getElementById('carousel__named');
350
+ *
351
+ * namedCarousel.addEventListener('sigvelo-item-change', event => {
352
+ * console.log(`Active slide: ${namedCarousel.activeName || 'unnamed'} (index ${event.detail.index})`);
353
+ * });
354
+ * <\/script>
355
+ * ```
356
+ *
357
+ * @example Looping navigation
358
+ * Add the `loop` attribute to enable looping when using navigation buttons and arrow keys. This will not cause slides to loop when scrolling.
359
+ *
360
+ * ```html
361
+ * <sigvelo-carousel label="Looping slides" id="carousel__loop" loop>
362
+ * <sigvelo-carousel-item>Slide 1</sigvelo-carousel-item>
363
+ * <sigvelo-carousel-item>Slide 2</sigvelo-carousel-item>
364
+ * <sigvelo-carousel-item>Slide 3</sigvelo-carousel-item>
365
+ * <sigvelo-carousel-item>Slide 4</sigvelo-carousel-item>
366
+ * <sigvelo-carousel-item>Slide 5</sigvelo-carousel-item>
367
+ * </sigvelo-carousel>
368
+ *
369
+ * <style>
370
+ * #carousel__loop sigvelo-carousel-item {
371
+ * background: var(--sigvelo-color-neutral-bg-subtle);
372
+ * color: var(--sigvelo-color-text-muted);
373
+ * font-size: 2rem;
374
+ * font-weight: 500;
375
+ * }
376
+ * </style>
377
+ * ```
378
+ *
379
+ * @example Hiding navigation
380
+ * You can hide the previous/next buttons by adding the `without-nav` attribute. To hide the pagination dots, use the `without-pagination` attribute.
381
+ *
382
+ * ```html
383
+ * <div id="carousel__without">
384
+ * <div class="controls">
385
+ * <sigvelo-switch checked label="With nav"></sigvelo-switch><br>
386
+ * <sigvelo-switch checked label="With pagination"></sigvelo-switch>
387
+ * </div>
388
+ *
389
+ * <sigvelo-carousel>
390
+ * <sigvelo-carousel-item>Slide 1</sigvelo-carousel-item>
391
+ * <sigvelo-carousel-item>Slide 2</sigvelo-carousel-item>
392
+ * <sigvelo-carousel-item>Slide 3</sigvelo-carousel-item>
393
+ * <sigvelo-carousel-item>Slide 4</sigvelo-carousel-item>
394
+ * <sigvelo-carousel-item>Slide 5</sigvelo-carousel-item>
395
+ * </sigvelo-carousel>
396
+ * </div>
397
+ *
398
+ * <script>
399
+ * const container = document.getElementById('carousel__without');
400
+ * const carousel = container.querySelector('sigvelo-carousel');
401
+ * const navSwitch = container.querySelectorAll('sigvelo-switch')[0];
402
+ * const paginationSwitch = container.querySelectorAll('sigvelo-switch')[1];
403
+ *
404
+ * navSwitch.addEventListener('input', () => {
405
+ * carousel.toggleAttribute('without-nav', !navSwitch.checked);
406
+ * });
407
+ *
408
+ * paginationSwitch.addEventListener('input', () => {
409
+ * carousel.toggleAttribute('without-pagination', !paginationSwitch.checked);
410
+ * });
411
+ * <\/script>
412
+ *
413
+ * <style>
414
+ * #carousel__without {
415
+ * display: flex;
416
+ * flex-direction: column;
417
+ * gap: 1rem;
418
+ *
419
+ * .controls {
420
+ * display: flex;
421
+ * gap: 1rem;
422
+ * justify-content: center;
423
+ * }
424
+ *
425
+ * sigvelo-carousel-item {
426
+ * background: var(--sigvelo-color-neutral-bg-subtle);
427
+ * color: var(--sigvelo-color-text-muted);
428
+ * font-size: 2rem;
429
+ * font-weight: 500;
430
+ * }
431
+ * }
432
+ * </style>
433
+ * ```
434
+ *
435
+ * @example Varying widths
436
+ * You can create carousel items with various widths and max widths by applying the appropriate styles to each item.
437
+ *
438
+ * ```html
439
+ * <sigvelo-carousel label="Cat nap slideshow" id="carousel__varying">
440
+ * <sigvelo-carousel-item>Slide 1</sigvelo-carousel-item>
441
+ * <sigvelo-carousel-item style="max-width: 350px;">Slide 2</sigvelo-carousel-item>
442
+ * <sigvelo-carousel-item style="max-width: 200px;">Slide 3</sigvelo-carousel-item>
443
+ * <sigvelo-carousel-item>Slide 4</sigvelo-carousel-item>
444
+ * <sigvelo-carousel-item style="max-width: 450px;">Slide 5</sigvelo-carousel-item>
445
+ * </sigvelo-carousel>
446
+ *
447
+ * <style>
448
+ * #carousel__varying {
449
+ * sigvelo-carousel-item {
450
+ * background: var(--sigvelo-color-neutral-bg-subtle);
451
+ * color: var(--sigvelo-color-text-muted);
452
+ * font-size: 2rem;
453
+ * font-weight: 500;
454
+ * }
455
+ * }
456
+ * </style>
457
+ * ```
458
+ *
459
+ * @example Styling carousels
460
+ * Carousels come with a simple, minimal appearance. Feel free to customize them with your own styles.
461
+ *
462
+ * ```html
463
+ * <sigvelo-carousel id="carousel__styling">
464
+ * <sigvelo-carousel-item>
465
+ * <img src="https://images.unsplash.com/photo-1737912031624-e17ba0d7f673?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A gray and white cat sleeps on a blanket with evening lights in the background">
466
+ * </sigvelo-carousel-item>
467
+ * <sigvelo-carousel-item>
468
+ * <img src="https://images.unsplash.com/photo-1707520595303-d6b499aa84af?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A kitten sleeps peacefully on the floor">
469
+ * </sigvelo-carousel-item>
470
+ * <sigvelo-carousel-item>
471
+ * <img src="https://images.unsplash.com/photo-1626603084013-1bf8c6627707?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="An orange cat sleeps peacefully at the edge of a bed">
472
+ * </sigvelo-carousel-item>
473
+ * <sigvelo-carousel-item>
474
+ * <img src="https://images.unsplash.com/photo-1664037170371-045dee5604a3?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A sleepy cat looks up in dim, hazy purple lighting">
475
+ * </sigvelo-carousel-item>
476
+ * <sigvelo-carousel-item>
477
+ * <img src="https://images.unsplash.com/photo-1518143099890-1e8a03745563?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A gray cat curled up but keeping an eye out">
478
+ * </sigvelo-carousel-item>
479
+ * </sigvelo-carousel>
480
+ *
481
+ * <style>
482
+ * #carousel__styling {
483
+ * --dot-size: .75rem;
484
+ * --dot-color: #fff4;
485
+ * --dot-active-color: white;
486
+ *
487
+ * &::part(items) {
488
+ * gap: .5rem;
489
+ * }
490
+ *
491
+ * <!-- Previous & next buttons -->
492
+ * &::part(previous-button),
493
+ * &::part(next-button) {
494
+ * position: absolute;
495
+ * top: calc(50% - 2.5rem);
496
+ * width: 5rem;
497
+ * height: 5rem;
498
+ * border-radius: var(--sigvelo-radius-md);
499
+ * font-size: 1.5rem;
500
+ * background: none;
501
+ * color: white;
502
+ * }
503
+ *
504
+ * &::part(previous-button) {
505
+ * left: 0;
506
+ * }
507
+ *
508
+ * &::part(next-button) {
509
+ * right: 0;
510
+ * }
511
+ *
512
+ * &::part(previous-button):disabled,
513
+ * &::part(next-button):disabled {
514
+ * display: none;
515
+ * }
516
+ *
517
+ * <!-- Pagination container -->
518
+ * &::part(pagination) {
519
+ * position: absolute;
520
+ * bottom: 3rem;
521
+ * width: 100%;
522
+ * justify-content: center;
523
+ * }
524
+ *
525
+ * &::part(pagination-dot):focus-visible {
526
+ * outline-width: 1.5px;
527
+ * outline-offset: 2px;
528
+ * outline-color: var(--sigvelo-color-text-muted);
529
+ * }
530
+ * }
531
+ * </style>
532
+ * ```
533
+ */
534
+ var SigveloCarousel = class extends SigveloElement {
535
+ constructor(..._args) {
536
+ super(..._args);
537
+ this.hasInitialized = false;
538
+ this.isUserInitiated = false;
539
+ this.localize = new Localize(this);
540
+ this.pendingEventDispatch = false;
541
+ this.resizeObserver = null;
542
+ this.isScrolling = false;
543
+ this.itemCount = 0;
544
+ this.label = "";
545
+ this.activeIndex = 0;
546
+ this.activeName = "";
547
+ this.loop = false;
548
+ this.withoutNav = false;
549
+ this.withoutPagination = false;
550
+ }
551
+ static {
552
+ this.styles = carousel_styles_default;
553
+ }
554
+ connectedCallback() {
555
+ super.connectedCallback();
556
+ this.setupResizeObserver();
557
+ }
558
+ disconnectedCallback() {
559
+ super.disconnectedCallback();
560
+ if (this.resizeObserver) {
561
+ this.resizeObserver.disconnect();
562
+ this.resizeObserver = null;
563
+ }
564
+ }
565
+ firstUpdated() {
566
+ this.setAttribute("role", "region");
567
+ this.setAttribute("aria-roledescription", "carousel");
568
+ }
569
+ updated(changedProperties) {
570
+ if (changedProperties.has("activeIndex") && !this.isUserInitiated) this.setActiveItem(this.activeIndex, "instant");
571
+ if (changedProperties.has("activeName") && this.activeName) {
572
+ const foundIndex = this.getItems().findIndex((item) => item.getAttribute("name") === this.activeName);
573
+ if (foundIndex !== -1 && foundIndex !== this.activeIndex) {
574
+ this.activeIndex = foundIndex;
575
+ this.setActiveItem(foundIndex, "smooth");
576
+ }
577
+ }
578
+ if (changedProperties.has("label")) this.setAttribute("aria-label", this.label || this.localize.term("carousel"));
579
+ if (changedProperties.has("isScrolling")) this.customStates.set("scrolling", this.isScrolling);
580
+ }
581
+ /** Get the items from the default slot */
582
+ getItems() {
583
+ const slot = this.shadowRoot.querySelector("slot");
584
+ return slot ? slot.assignedElements().filter((el) => el.tagName.toLowerCase() === "sigvelo-carousel-item") : [];
585
+ }
586
+ handleSlotChange() {
587
+ this.itemCount = this.getItems().length;
588
+ const items = this.getItems();
589
+ items.forEach((item, i) => {
590
+ if (!item.hasAttribute("aria-label") && !item.hasAttribute("aria-labelledby")) item.setAttribute("aria-label", this.localize.term("numberOfTotal", i + 1, items.length));
591
+ });
592
+ this.setActiveItem(this.activeIndex, "instant");
593
+ this.setupResizeObserver();
594
+ requestAnimationFrame(() => {
595
+ if (!this.hasInitialized) this.hasInitialized = true;
596
+ });
597
+ }
598
+ /**
599
+ * Navigate to the selected dot's index
600
+ */
601
+ handleDotClick(dot, index) {
602
+ this.isUserInitiated = true;
603
+ this.setActiveItem(index);
604
+ dot.focus();
605
+ }
606
+ /**
607
+ * Handle keyboard navigation for the pagination dots
608
+ */
609
+ handleDotKeyDown(event, index) {
610
+ const isRtl = this.localize.dir() === "rtl";
611
+ const prevKey = isRtl ? "ArrowRight" : "ArrowLeft";
612
+ const nextKey = isRtl ? "ArrowLeft" : "ArrowRight";
613
+ const dots = this.shadowRoot.querySelectorAll(".pagination-dot");
614
+ if (!dots.length) return;
615
+ let nextIndex = index;
616
+ switch (event.key) {
617
+ case prevKey:
618
+ nextIndex = index - 1;
619
+ if (nextIndex < 0) nextIndex = this.loop ? this.itemCount - 1 : 0;
620
+ event.preventDefault();
621
+ break;
622
+ case nextKey:
623
+ nextIndex = index + 1;
624
+ if (nextIndex >= this.itemCount) nextIndex = this.loop ? 0 : this.itemCount - 1;
625
+ event.preventDefault();
626
+ break;
627
+ case "Home":
628
+ nextIndex = 0;
629
+ event.preventDefault();
630
+ break;
631
+ case "End":
632
+ nextIndex = this.itemCount - 1;
633
+ event.preventDefault();
634
+ break;
635
+ default: return;
636
+ }
637
+ if (nextIndex !== index) {
638
+ this.isUserInitiated = true;
639
+ this.setActiveItem(nextIndex);
640
+ dots[nextIndex].focus();
641
+ }
642
+ }
643
+ handleScrollSnapChanging(event) {
644
+ if (!this.items || !this.hasInitialized) return;
645
+ const snappingElement = event.snapTargetInline;
646
+ if (snappingElement) {
647
+ const items = this.getItems();
648
+ const newIndex = items.indexOf(snappingElement);
649
+ if (newIndex !== -1 && newIndex !== this.activeIndex) {
650
+ this.activeIndex = newIndex;
651
+ this.activeName = items[newIndex]?.getAttribute("name") || "";
652
+ }
653
+ }
654
+ }
655
+ handleScrollSnapChange(event) {
656
+ if (!this.items || !this.hasInitialized) return;
657
+ const snappedElement = event.snapTargetInline;
658
+ if (snappedElement) {
659
+ const items = this.getItems();
660
+ const newIndex = items.indexOf(snappedElement);
661
+ if (newIndex !== -1 && newIndex !== this.activeIndex) {
662
+ this.activeIndex = newIndex;
663
+ this.activeName = items[newIndex]?.getAttribute("name") || "";
664
+ }
665
+ if (this.isUserInitiated) this.pendingEventDispatch = true;
666
+ }
667
+ }
668
+ handleScroll() {
669
+ this.isScrolling = true;
670
+ }
671
+ handleScrollEnd() {
672
+ this.isScrolling = false;
673
+ if (this.pendingEventDispatch && this.isUserInitiated) {
674
+ this.dispatchEvent(new SigveloItemChangeEvent({ index: this.activeIndex }));
675
+ this.pendingEventDispatch = false;
676
+ }
677
+ this.isUserInitiated = false;
678
+ }
679
+ handleWheel() {
680
+ this.isUserInitiated = true;
681
+ (this.shadowRoot?.querySelector(".pagination-dot:focus"))?.blur();
682
+ }
683
+ /** Sets the active item and scrolls to it */
684
+ setActiveItem(index, behavior = "smooth") {
685
+ if (!this.items) return;
686
+ const boundedIndex = Math.max(0, Math.min(index, this.itemCount - 1));
687
+ const items = this.getItems();
688
+ if (items.length <= boundedIndex) return;
689
+ const targetItem = items[boundedIndex];
690
+ const containerWidth = this.items.clientWidth;
691
+ const itemWidth = targetItem.offsetWidth;
692
+ const scrollPosition = targetItem.offsetLeft - this.items.offsetLeft - (containerWidth - itemWidth) / 2;
693
+ this.items.scrollTo({
694
+ left: scrollPosition,
695
+ behavior
696
+ });
697
+ }
698
+ setupResizeObserver() {
699
+ const items = this.getItems();
700
+ this.resizeObserver?.disconnect();
701
+ this.resizeObserver = new ResizeObserver(() => {
702
+ this.setActiveItem(this.activeIndex, "instant");
703
+ });
704
+ items.forEach((item) => {
705
+ this.resizeObserver.observe(item);
706
+ });
707
+ }
708
+ /** Navigate to the specified item. */
709
+ scrollToIndex(index, scrollBehavior = "smooth") {
710
+ this.isUserInitiated = true;
711
+ this.setActiveItem(index, scrollBehavior);
712
+ }
713
+ /** Navigate to the next item */
714
+ scrollToNext(scrollBehavior = "smooth") {
715
+ this.isUserInitiated = true;
716
+ let newIndex = this.activeIndex + 1;
717
+ if (this.loop && newIndex >= this.itemCount) newIndex = 0;
718
+ this.setActiveItem(newIndex, scrollBehavior);
719
+ }
720
+ /** Navigate to the previous item */
721
+ scrollToPrevious(scrollBehavior = "smooth") {
722
+ this.isUserInitiated = true;
723
+ let newIndex = this.activeIndex - 1;
724
+ if (this.loop && newIndex < 0) newIndex = this.itemCount - 1;
725
+ this.setActiveItem(newIndex, scrollBehavior);
726
+ }
727
+ render() {
728
+ const hasControls = !this.withoutNav || !this.withoutPagination;
729
+ const isRtl = this.localize.dir() === "rtl";
730
+ return html`
731
+ <div
732
+ id="items"
733
+ part="items"
734
+ aria-live="polite"
735
+ aria-label=${this.localize.term("carousel") ?? "Carousel"}
736
+ tabindex="0"
737
+ @scroll=${this.handleScroll}
738
+ @scrollend=${this.handleScrollEnd}
739
+ @scrollsnapchanging=${this.handleScrollSnapChanging}
740
+ @scrollsnapchange=${this.handleScrollSnapChange}
741
+ @wheel=${this.handleWheel}
742
+ >
743
+ <slot @slotchange=${this.handleSlotChange}></slot>
744
+ </div>
745
+
746
+ ${hasControls ? html`
747
+ <div id="controls" part="controls">
748
+ ${!this.withoutNav ? html`
749
+ <button
750
+ id="previous-button"
751
+ part="previous-button"
752
+ aria-label=${this.localize.term("previous")}
753
+ ?disabled=${!this.loop && this.activeIndex === 0}
754
+ tabindex=${this.withoutPagination ? 0 : -1}
755
+ @click=${() => this.scrollToPrevious()}
756
+ >
757
+ <sigvelo-icon
758
+ library="system"
759
+ name=${isRtl ? "chevron-right" : "chevron-left"}
760
+ ></sigvelo-icon>
761
+ </button>
762
+
763
+ <button
764
+ id="next-button"
765
+ part="next-button"
766
+ aria-label=${this.localize.term("next")}
767
+ ?disabled=${!this.loop && this.activeIndex === this.itemCount - 1}
768
+ tabindex=${this.withoutPagination ? 0 : -1}
769
+ @click=${() => this.scrollToNext()}
770
+ >
771
+ <sigvelo-icon
772
+ library="system"
773
+ name=${isRtl ? "chevron-left" : "chevron-right"}
774
+ ></sigvelo-icon>
775
+ </button>
776
+ ` : ""}
777
+ ${!this.withoutPagination ? html`
778
+ <div
779
+ id="pagination"
780
+ part="pagination"
781
+ role="tablist"
782
+ aria-label="Choose slide to display"
783
+ >
784
+ ${Array.from({ length: this.itemCount }, (_, i) => {
785
+ const isActive = i === this.activeIndex;
786
+ return html`
787
+ <button
788
+ part="pagination-dot ${isActive ? "pagination-dot-active" : ""}"
789
+ class=${classMap({
790
+ "pagination-dot": true,
791
+ active: isActive
792
+ })}
793
+ role="tab"
794
+ aria-label="Go to slide ${i + 1}"
795
+ aria-selected=${isActive ? "true" : "false"}
796
+ tabindex=${isActive ? 0 : -1}
797
+ @click=${(event) => this.handleDotClick(event.target, i)}
798
+ @keydown=${(event) => this.handleDotKeyDown(event, i)}
799
+ ></button>
800
+ `;
801
+ })}
802
+ </div>
803
+ ` : ""}
804
+ </div>
805
+ ` : ""}
806
+ `;
807
+ }
808
+ };
809
+ __decorate([query("#items")], SigveloCarousel.prototype, "items", void 0);
810
+ __decorate([state()], SigveloCarousel.prototype, "isScrolling", void 0);
811
+ __decorate([state()], SigveloCarousel.prototype, "itemCount", void 0);
812
+ __decorate([property({ type: String })], SigveloCarousel.prototype, "label", void 0);
813
+ __decorate([property({
814
+ attribute: "active-index",
815
+ type: Number,
816
+ reflect: true
817
+ })], SigveloCarousel.prototype, "activeIndex", void 0);
818
+ __decorate([property({
819
+ attribute: "active-name",
820
+ reflect: true
821
+ })], SigveloCarousel.prototype, "activeName", void 0);
822
+ __decorate([property({
823
+ type: Boolean,
824
+ reflect: true
825
+ })], SigveloCarousel.prototype, "loop", void 0);
826
+ __decorate([property({
827
+ type: Boolean,
828
+ attribute: "without-nav",
829
+ reflect: true
830
+ })], SigveloCarousel.prototype, "withoutNav", void 0);
831
+ __decorate([property({
832
+ type: Boolean,
833
+ attribute: "without-pagination",
834
+ reflect: true
835
+ })], SigveloCarousel.prototype, "withoutPagination", void 0);
836
+ __decorate([eventOptions({ passive: true })], SigveloCarousel.prototype, "handleScrollSnapChanging", null);
837
+ __decorate([eventOptions({ passive: true })], SigveloCarousel.prototype, "handleScrollSnapChange", null);
838
+ __decorate([eventOptions({ passive: true })], SigveloCarousel.prototype, "handleScroll", null);
839
+ __decorate([eventOptions({ passive: true })], SigveloCarousel.prototype, "handleWheel", null);
840
+ SigveloCarousel.disableWarning?.("change-in-update");
841
+ customElements.define("sigvelo-carousel", SigveloCarousel);
842
+ //#endregion
843
+ export { SigveloCarousel as t };