@tet/tet-components 1.4.27-testing → 1.4.28-staging

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 (475) hide show
  1. package/dist/cjs/{address-656e77f6.js → address-f852270f.js} +1 -1
  2. package/dist/cjs/{assets-f64f0e16.js → assets-b9d36649.js} +1 -1
  3. package/dist/cjs/{async-request-fcf33aba.js → async-request-4517f566.js} +1 -1
  4. package/dist/cjs/{http-codes-40da1e61.js → http-codes-062f76cf.js} +1 -1
  5. package/dist/cjs/{index-4b423f33.js → index-19a7608f.js} +1 -1
  6. package/dist/cjs/{index-3242ff3f.js → index-faec4c52.js} +1 -1
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/{phone-055efd07.js → phone-d6be0dd2.js} +2 -2
  9. package/dist/cjs/{product-comparison-88a89820.js → product-comparison-aa80a77c.js} +1 -1
  10. package/dist/cjs/tet-accordion.cjs.entry.js +1 -1
  11. package/dist/cjs/tet-address-offers-filters-products_2.cjs.entry.js +3 -3
  12. package/dist/cjs/tet-address-offers-view.cjs.entry.js +3 -3
  13. package/dist/cjs/tet-address-offers_4.cjs.entry.js +7 -7
  14. package/dist/cjs/tet-address-search.cjs.entry.js +4 -4
  15. package/dist/cjs/tet-asset-addresses.cjs.entry.js +3 -3
  16. package/dist/cjs/tet-autocomplete-dropdown.cjs.entry.js +1 -1
  17. package/dist/cjs/tet-autocomplete.cjs.entry.js +1 -1
  18. package/dist/cjs/tet-b2b-check-out-form_5.cjs.entry.js +3 -3
  19. package/dist/cjs/tet-b2b-configurator.cjs.entry.js +4 -4
  20. package/dist/cjs/tet-b2b-service-calculator.cjs.entry.js +3 -3
  21. package/dist/cjs/tet-banner-nav.cjs.entry.js +3 -3
  22. package/dist/cjs/tet-bar-graph.cjs.entry.js +1 -1
  23. package/dist/cjs/tet-border-radius.cjs.entry.js +1 -1
  24. package/dist/cjs/tet-business-card.cjs.entry.js +1 -1
  25. package/dist/cjs/tet-business-compare-card.cjs.entry.js +1 -1
  26. package/dist/cjs/tet-business-lines.cjs.entry.js +4 -4
  27. package/dist/cjs/tet-business-round-stepper.cjs.entry.js +1 -1
  28. package/dist/cjs/tet-button.cjs.entry.js +1 -1
  29. package/dist/cjs/tet-card-list.cjs.entry.js +1 -1
  30. package/dist/cjs/tet-carousel.cjs.entry.js +492 -165
  31. package/dist/cjs/tet-checkbox.cjs.entry.js +1 -1
  32. package/dist/cjs/tet-cloud-application-form-dialog.cjs.entry.js +3 -3
  33. package/dist/cjs/tet-cloud-configurator.cjs.entry.js +3 -3
  34. package/dist/cjs/tet-colors.cjs.entry.js +1 -1
  35. package/dist/cjs/tet-compare-card-v2.cjs.entry.js +3 -3
  36. package/dist/cjs/tet-compare-cards-tab.cjs.entry.js +3 -3
  37. package/dist/cjs/tet-compare-cards_2.cjs.entry.js +3 -3
  38. package/dist/cjs/tet-components.cjs.js +2 -2
  39. package/dist/cjs/tet-contact-form.cjs.entry.js +5 -5
  40. package/dist/cjs/tet-contact-info.cjs.entry.js +1 -1
  41. package/dist/cjs/tet-container_2.cjs.entry.js +1 -1
  42. package/dist/cjs/tet-counter.cjs.entry.js +1 -1
  43. package/dist/cjs/tet-customer-assets.cjs.entry.js +3 -3
  44. package/dist/cjs/tet-datepicker-header_4.cjs.entry.js +1 -1
  45. package/dist/cjs/tet-datepicker.cjs.entry.js +1 -1
  46. package/dist/cjs/tet-dialog.cjs.entry.js +3 -3
  47. package/dist/cjs/tet-display.cjs.entry.js +1 -1
  48. package/dist/cjs/tet-divider.cjs.entry.js +1 -1
  49. package/dist/cjs/tet-dropdown_2.cjs.entry.js +1 -1
  50. package/dist/cjs/tet-dynamic-card.cjs.entry.js +1 -1
  51. package/dist/cjs/tet-expandable-input.cjs.entry.js +1 -1
  52. package/dist/cjs/tet-expansion-panel.cjs.entry.js +1 -1
  53. package/dist/cjs/tet-feedback-form.cjs.entry.js +3 -3
  54. package/dist/cjs/tet-filter.cjs.entry.js +1 -1
  55. package/dist/cjs/tet-floating-block.cjs.entry.js +1 -1
  56. package/dist/cjs/tet-font-weight.cjs.entry.js +1 -1
  57. package/dist/cjs/tet-fonts.cjs.entry.js +1 -1
  58. package/dist/cjs/tet-grid.cjs.entry.js +1 -1
  59. package/dist/cjs/tet-icon.cjs.entry.js +2 -2
  60. package/dist/cjs/tet-inline-message.cjs.entry.js +1 -1
  61. package/dist/cjs/tet-input.cjs.entry.js +3 -3
  62. package/dist/cjs/tet-label.cjs.entry.js +3 -3
  63. package/dist/cjs/tet-layout.cjs.entry.js +1 -1
  64. package/dist/cjs/tet-link-card-list.cjs.entry.js +1 -1
  65. package/dist/cjs/tet-link.cjs.entry.js +1 -1
  66. package/dist/cjs/tet-loader.cjs.entry.js +1 -1
  67. package/dist/cjs/tet-macd-view.cjs.entry.js +6 -6
  68. package/dist/cjs/tet-menu-mobile.cjs.entry.js +1 -1
  69. package/dist/cjs/tet-menu.cjs.entry.js +1 -1
  70. package/dist/cjs/tet-multi-step-dialog.cjs.entry.js +3 -3
  71. package/dist/cjs/tet-navigation-mobile.cjs.entry.js +1 -1
  72. package/dist/cjs/tet-news-card-list.cjs.entry.js +1 -1
  73. package/dist/cjs/tet-notification.cjs.entry.js +1 -1
  74. package/dist/cjs/tet-number-input.cjs.entry.js +1 -1
  75. package/dist/cjs/tet-placeholder.cjs.entry.js +1 -1
  76. package/dist/cjs/tet-position.cjs.entry.js +1 -1
  77. package/dist/cjs/tet-price-view.cjs.entry.js +1 -1
  78. package/dist/cjs/tet-radio.cjs.entry.js +1 -1
  79. package/dist/cjs/tet-range-slider.cjs.entry.js +1 -1
  80. package/dist/cjs/tet-referral.cjs.entry.js +5 -5
  81. package/dist/cjs/tet-round-stepper.cjs.entry.js +1 -1
  82. package/dist/cjs/tet-snicker-card-badge.cjs.entry.js +1 -1
  83. package/dist/cjs/tet-spacing.cjs.entry.js +1 -1
  84. package/dist/cjs/tet-spinner.cjs.entry.js +1 -1
  85. package/dist/cjs/tet-stepper-input.cjs.entry.js +3 -3
  86. package/dist/cjs/tet-stepper-v2.cjs.entry.js +1 -1
  87. package/dist/cjs/tet-stepper-v3.cjs.entry.js +1 -1
  88. package/dist/cjs/tet-stepper.cjs.entry.js +1 -1
  89. package/dist/cjs/tet-switch.cjs.entry.js +1 -1
  90. package/dist/cjs/tet-tab-header.cjs.entry.js +1 -1
  91. package/dist/cjs/tet-table.cjs.entry.js +1 -1
  92. package/dist/cjs/tet-tag_2.cjs.entry.js +3 -3
  93. package/dist/cjs/tet-text-list.cjs.entry.js +1 -1
  94. package/dist/cjs/tet-text.cjs.entry.js +1 -1
  95. package/dist/cjs/tet-textarea.cjs.entry.js +1 -1
  96. package/dist/cjs/tet-thank-you-view-v2.cjs.entry.js +3 -3
  97. package/dist/cjs/tet-thank-you-view-v3.cjs.entry.js +3 -3
  98. package/dist/cjs/tet-thank-you-view.cjs.entry.js +1 -1
  99. package/dist/cjs/tet-tv-gift-block.cjs.entry.js +1 -1
  100. package/dist/cjs/tet-tv-gift-list.cjs.entry.js +1 -1
  101. package/dist/cjs/{theme-wrapper-66880718.js → theme-wrapper-46514846.js} +2 -2
  102. package/dist/cjs/{translations-03c9de64.js → translations-89a0ec3d.js} +1 -1
  103. package/dist/collection/components/basic/carousel/tet-carousel/tet-carousel.css +0 -1
  104. package/dist/collection/components/basic/carousel/tet-carousel/tet-carousel.js +489 -160
  105. package/dist/components/index.js +1 -1
  106. package/dist/components/{p-67c5a58c.js → p-09e12e32.js} +1 -1
  107. package/dist/components/{p-bf18b5b7.js → p-0af4c96a.js} +2 -2
  108. package/dist/components/{p-68143dc1.js → p-0d4040e8.js} +5 -5
  109. package/dist/components/{p-a57bdbb3.js → p-11700d82.js} +4 -4
  110. package/dist/components/{p-8f56bf1c.js → p-13296f85.js} +2 -2
  111. package/dist/components/{p-df5d84f1.js → p-1469ed4f.js} +3 -3
  112. package/dist/components/{p-795a1c43.js → p-164c4f08.js} +4 -4
  113. package/dist/components/{p-aae07dc6.js → p-19f32f2a.js} +2 -2
  114. package/dist/components/{p-6fa17892.js → p-1fe9d8a5.js} +10 -10
  115. package/dist/components/{p-f76fad86.js → p-26ffcb52.js} +1 -1
  116. package/dist/components/{p-a6be19f9.js → p-29aa33c8.js} +1 -1
  117. package/dist/components/{p-af0662ff.js → p-2a189a6b.js} +1 -1
  118. package/dist/components/{p-ddcc69cd.js → p-308ed708.js} +2 -2
  119. package/dist/components/{p-193320bd.js → p-3447cfe2.js} +1 -1
  120. package/dist/components/{p-4468c9e9.js → p-3493f65f.js} +1 -1
  121. package/dist/components/{p-defc1e19.js → p-3cf8ea69.js} +14 -14
  122. package/dist/components/{p-4903892e.js → p-3d4fecca.js} +9 -9
  123. package/dist/components/{p-64690a6c.js → p-40893ddd.js} +3 -3
  124. package/dist/components/{p-74e1a749.js → p-41b79a2e.js} +6 -6
  125. package/dist/components/{p-50c4fd79.js → p-464c7198.js} +1 -1
  126. package/dist/components/{p-e4f06634.js → p-4db83698.js} +7 -7
  127. package/dist/components/{p-8a5c883e.js → p-5a3da1ac.js} +1 -1
  128. package/dist/components/{p-2c1233bc.js → p-5b460f62.js} +1 -1
  129. package/dist/components/{p-c1c77130.js → p-65a05865.js} +2 -2
  130. package/dist/components/{p-4b4a0334.js → p-6e9df8dd.js} +2 -2
  131. package/dist/components/{p-41260991.js → p-75612e20.js} +3 -3
  132. package/dist/components/{p-c964254d.js → p-8921cb9c.js} +1 -1
  133. package/dist/components/{p-49b5dcf4.js → p-8bbea05f.js} +2 -2
  134. package/dist/components/{p-5c6b063f.js → p-92423544.js} +2 -2
  135. package/dist/components/{p-48611429.js → p-95722fb3.js} +2 -2
  136. package/dist/components/{p-2b5669f6.js → p-99746f8e.js} +1 -1
  137. package/dist/components/{p-9783cca1.js → p-9b4b062e.js} +7 -7
  138. package/dist/components/{p-d57cec8c.js → p-a0f69423.js} +1 -1
  139. package/dist/components/{p-375a5cfa.js → p-a1135d10.js} +1 -1
  140. package/dist/components/{p-027f730e.js → p-a25b08b6.js} +7 -7
  141. package/dist/components/{p-461e1a38.js → p-a2c27d73.js} +1 -1
  142. package/dist/components/{p-e3cb1d2d.js → p-a31e7e42.js} +3 -3
  143. package/dist/components/{p-1b7b79a5.js → p-a3b7c408.js} +3 -3
  144. package/dist/components/{p-34265c9d.js → p-a830ca83.js} +2 -2
  145. package/dist/components/{p-25b93e8f.js → p-aa122c92.js} +1 -1
  146. package/dist/components/{p-59997b7c.js → p-aedb4093.js} +1 -1
  147. package/dist/components/{p-44201f97.js → p-b6841a9b.js} +1 -1
  148. package/dist/components/{p-7f859d29.js → p-bac1705f.js} +1 -1
  149. package/dist/components/{p-089612ee.js → p-c29a45f3.js} +10 -10
  150. package/dist/components/{p-def0e33f.js → p-c2ea4c67.js} +3 -3
  151. package/dist/components/{p-1035feaa.js → p-c4f77126.js} +3 -3
  152. package/dist/components/{p-af9beaa1.js → p-c6284dbe.js} +7 -7
  153. package/dist/components/{p-d22aed2d.js → p-c9cc0a5b.js} +6 -6
  154. package/dist/components/{p-04a2d6a8.js → p-d21c7be3.js} +1 -1
  155. package/dist/components/{p-be5d67d1.js → p-d298006c.js} +1 -1
  156. package/dist/components/{p-95cc2537.js → p-d2a4570d.js} +3 -3
  157. package/dist/components/{p-331ebe65.js → p-d2c3076d.js} +1 -1
  158. package/dist/components/{p-bef5a700.js → p-e9cec2be.js} +1 -1
  159. package/dist/components/{p-5472702d.js → p-ec4cea27.js} +5 -5
  160. package/dist/components/{p-1e624d81.js → p-f2402ed7.js} +2 -2
  161. package/dist/components/{p-0a575a94.js → p-f259ef5f.js} +6 -6
  162. package/dist/components/{p-e87a77a6.js → p-f4c5337a.js} +1 -1
  163. package/dist/components/{p-49251432.js → p-f5f56fe1.js} +2 -2
  164. package/dist/components/tet-accordion.js +1 -1
  165. package/dist/components/tet-address-offers-filters-products.js +1 -1
  166. package/dist/components/tet-address-offers-filters.js +1 -1
  167. package/dist/components/tet-address-offers-view.js +24 -24
  168. package/dist/components/tet-address-offers.js +1 -1
  169. package/dist/components/tet-address-search.js +1 -1
  170. package/dist/components/tet-asset-addresses.js +13 -13
  171. package/dist/components/tet-asset-availability-addresses.js +1 -1
  172. package/dist/components/tet-autocomplete-dropdown.js +5 -5
  173. package/dist/components/tet-autocomplete.js +1 -1
  174. package/dist/components/tet-availability-contact-form.js +1 -1
  175. package/dist/components/tet-b2b-check-out-form.js +1 -1
  176. package/dist/components/tet-b2b-compare-card.js +1 -1
  177. package/dist/components/tet-b2b-configurator-cart.js +1 -1
  178. package/dist/components/tet-b2b-configurator.js +20 -20
  179. package/dist/components/tet-b2b-service-calculator.js +8 -8
  180. package/dist/components/tet-banner-nav.js +3 -3
  181. package/dist/components/tet-bar-graph.js +1 -1
  182. package/dist/components/tet-border-radius.js +1 -1
  183. package/dist/components/tet-business-card.js +1 -1
  184. package/dist/components/tet-business-compare-card.js +3 -3
  185. package/dist/components/tet-business-lines.js +5 -5
  186. package/dist/components/tet-business-navigation.js +1 -1
  187. package/dist/components/tet-business-round-stepper.js +2 -2
  188. package/dist/components/tet-business-summary-card.js +1 -1
  189. package/dist/components/tet-button.js +1 -1
  190. package/dist/components/tet-card-list.js +1 -1
  191. package/dist/components/tet-carousel.js +494 -166
  192. package/dist/components/tet-checkbox.js +1 -1
  193. package/dist/components/tet-cloud-application-form-dialog.js +8 -8
  194. package/dist/components/tet-cloud-configurator.js +12 -12
  195. package/dist/components/tet-colors.js +1 -1
  196. package/dist/components/tet-compare-card-v2.js +9 -9
  197. package/dist/components/tet-compare-card.js +1 -1
  198. package/dist/components/tet-compare-cards-tab.js +16 -16
  199. package/dist/components/tet-compare-cards.js +1 -1
  200. package/dist/components/tet-contact-form.js +9 -9
  201. package/dist/components/tet-contact-info.js +1 -1
  202. package/dist/components/tet-container.js +1 -1
  203. package/dist/components/tet-counter.js +1 -1
  204. package/dist/components/tet-customer-assets.js +9 -9
  205. package/dist/components/tet-datepicker-header.js +1 -1
  206. package/dist/components/tet-datepicker-month-view.js +1 -1
  207. package/dist/components/tet-datepicker-multi-year-view.js +1 -1
  208. package/dist/components/tet-datepicker-year-view.js +1 -1
  209. package/dist/components/tet-datepicker.js +6 -6
  210. package/dist/components/tet-dialog.js +1 -1
  211. package/dist/components/tet-display.js +8 -8
  212. package/dist/components/tet-divider.js +7 -7
  213. package/dist/components/tet-dropdown.js +1 -1
  214. package/dist/components/tet-dynamic-card.js +4 -4
  215. package/dist/components/tet-expandable-input.js +3 -3
  216. package/dist/components/tet-expansion-panel.js +1 -1
  217. package/dist/components/tet-feedback-form.js +7 -7
  218. package/dist/components/tet-filter.js +4 -4
  219. package/dist/components/tet-floating-block.js +3 -3
  220. package/dist/components/tet-font-weight.js +1 -1
  221. package/dist/components/tet-fonts.js +1 -1
  222. package/dist/components/tet-grid.js +1 -1
  223. package/dist/components/tet-icon.js +1 -1
  224. package/dist/components/tet-inline-message.js +2 -2
  225. package/dist/components/tet-input.js +1 -1
  226. package/dist/components/tet-label.js +3 -3
  227. package/dist/components/tet-layout.js +1 -1
  228. package/dist/components/tet-link-card-list.js +3 -3
  229. package/dist/components/tet-link.js +1 -1
  230. package/dist/components/tet-loader.js +1 -1
  231. package/dist/components/tet-macd-view.js +10 -10
  232. package/dist/components/tet-menu-mobile.js +2 -2
  233. package/dist/components/tet-menu.js +2 -2
  234. package/dist/components/tet-multi-step-dialog.js +5 -5
  235. package/dist/components/tet-navigation-mobile.js +2 -2
  236. package/dist/components/tet-news-card-list.js +4 -4
  237. package/dist/components/tet-notification.js +1 -1
  238. package/dist/components/tet-number-input.js +1 -1
  239. package/dist/components/tet-placeholder.js +1 -1
  240. package/dist/components/tet-position.js +7 -7
  241. package/dist/components/tet-price-view.js +1 -1
  242. package/dist/components/tet-radio.js +1 -1
  243. package/dist/components/tet-range-slider.js +1 -1
  244. package/dist/components/tet-referral.js +6 -6
  245. package/dist/components/tet-round-stepper.js +2 -2
  246. package/dist/components/tet-selection-list.js +1 -1
  247. package/dist/components/tet-snicker-card-badge.js +1 -1
  248. package/dist/components/tet-spacing.js +1 -1
  249. package/dist/components/tet-spinner.js +1 -1
  250. package/dist/components/tet-stepper-input.js +1 -1
  251. package/dist/components/tet-stepper-v2.js +1 -1
  252. package/dist/components/tet-stepper-v3.js +1 -1
  253. package/dist/components/tet-stepper.js +1 -1
  254. package/dist/components/tet-switch.js +1 -1
  255. package/dist/components/tet-tab-content.js +1 -1
  256. package/dist/components/tet-tab-header.js +1 -1
  257. package/dist/components/tet-table.js +3 -3
  258. package/dist/components/tet-tag-group.js +1 -1
  259. package/dist/components/tet-tag.js +1 -1
  260. package/dist/components/tet-text-list.js +1 -1
  261. package/dist/components/tet-text.js +7 -7
  262. package/dist/components/tet-textarea.js +1 -1
  263. package/dist/components/tet-thank-you-view-v2.js +5 -5
  264. package/dist/components/tet-thank-you-view-v3.js +5 -5
  265. package/dist/components/tet-thank-you-view.js +4 -4
  266. package/dist/components/tet-tooltip.js +1 -1
  267. package/dist/components/tet-tv-gift-block.js +1 -1
  268. package/dist/components/tet-tv-gift-list.js +2 -2
  269. package/dist/esm/{address-1e0810e7.js → address-20e2d850.js} +1 -1
  270. package/dist/esm/{assets-e1349520.js → assets-894007df.js} +1 -1
  271. package/dist/esm/{async-request-4c945e13.js → async-request-ae1056de.js} +1 -1
  272. package/dist/esm/{http-codes-1927ea00.js → http-codes-cf0086d4.js} +1 -1
  273. package/dist/esm/{index-412df137.js → index-e3209c56.js} +1 -1
  274. package/dist/esm/{index-aac31bd2.js → index-e933a7d2.js} +1 -1
  275. package/dist/esm/loader.js +3 -3
  276. package/dist/esm/{phone-1a920c5c.js → phone-62660137.js} +2 -2
  277. package/dist/esm/{product-comparison-dd90c721.js → product-comparison-cb8955f6.js} +1 -1
  278. package/dist/esm/tet-accordion.entry.js +1 -1
  279. package/dist/esm/tet-address-offers-filters-products_2.entry.js +3 -3
  280. package/dist/esm/tet-address-offers-view.entry.js +3 -3
  281. package/dist/esm/tet-address-offers_4.entry.js +7 -7
  282. package/dist/esm/tet-address-search.entry.js +4 -4
  283. package/dist/esm/tet-asset-addresses.entry.js +3 -3
  284. package/dist/esm/tet-autocomplete-dropdown.entry.js +1 -1
  285. package/dist/esm/tet-autocomplete.entry.js +1 -1
  286. package/dist/esm/tet-b2b-check-out-form_5.entry.js +3 -3
  287. package/dist/esm/tet-b2b-configurator.entry.js +4 -4
  288. package/dist/esm/tet-b2b-service-calculator.entry.js +3 -3
  289. package/dist/esm/tet-banner-nav.entry.js +3 -3
  290. package/dist/esm/tet-bar-graph.entry.js +1 -1
  291. package/dist/esm/tet-border-radius.entry.js +1 -1
  292. package/dist/esm/tet-business-card.entry.js +1 -1
  293. package/dist/esm/tet-business-compare-card.entry.js +1 -1
  294. package/dist/esm/tet-business-lines.entry.js +4 -4
  295. package/dist/esm/tet-business-round-stepper.entry.js +1 -1
  296. package/dist/esm/tet-button.entry.js +1 -1
  297. package/dist/esm/tet-card-list.entry.js +1 -1
  298. package/dist/esm/tet-carousel.entry.js +492 -165
  299. package/dist/esm/tet-checkbox.entry.js +1 -1
  300. package/dist/esm/tet-cloud-application-form-dialog.entry.js +3 -3
  301. package/dist/esm/tet-cloud-configurator.entry.js +3 -3
  302. package/dist/esm/tet-colors.entry.js +1 -1
  303. package/dist/esm/tet-compare-card-v2.entry.js +3 -3
  304. package/dist/esm/tet-compare-cards-tab.entry.js +3 -3
  305. package/dist/esm/tet-compare-cards_2.entry.js +3 -3
  306. package/dist/esm/tet-components.js +3 -3
  307. package/dist/esm/tet-contact-form.entry.js +5 -5
  308. package/dist/esm/tet-contact-info.entry.js +1 -1
  309. package/dist/esm/tet-container_2.entry.js +1 -1
  310. package/dist/esm/tet-counter.entry.js +1 -1
  311. package/dist/esm/tet-customer-assets.entry.js +3 -3
  312. package/dist/esm/tet-datepicker-header_4.entry.js +1 -1
  313. package/dist/esm/tet-datepicker.entry.js +1 -1
  314. package/dist/esm/tet-dialog.entry.js +3 -3
  315. package/dist/esm/tet-display.entry.js +1 -1
  316. package/dist/esm/tet-divider.entry.js +1 -1
  317. package/dist/esm/tet-dropdown_2.entry.js +1 -1
  318. package/dist/esm/tet-dynamic-card.entry.js +1 -1
  319. package/dist/esm/tet-expandable-input.entry.js +1 -1
  320. package/dist/esm/tet-expansion-panel.entry.js +1 -1
  321. package/dist/esm/tet-feedback-form.entry.js +3 -3
  322. package/dist/esm/tet-filter.entry.js +1 -1
  323. package/dist/esm/tet-floating-block.entry.js +1 -1
  324. package/dist/esm/tet-font-weight.entry.js +1 -1
  325. package/dist/esm/tet-fonts.entry.js +1 -1
  326. package/dist/esm/tet-grid.entry.js +1 -1
  327. package/dist/esm/tet-icon.entry.js +2 -2
  328. package/dist/esm/tet-inline-message.entry.js +1 -1
  329. package/dist/esm/tet-input.entry.js +3 -3
  330. package/dist/esm/tet-label.entry.js +3 -3
  331. package/dist/esm/tet-layout.entry.js +1 -1
  332. package/dist/esm/tet-link-card-list.entry.js +1 -1
  333. package/dist/esm/tet-link.entry.js +1 -1
  334. package/dist/esm/tet-loader.entry.js +1 -1
  335. package/dist/esm/tet-macd-view.entry.js +6 -6
  336. package/dist/esm/tet-menu-mobile.entry.js +1 -1
  337. package/dist/esm/tet-menu.entry.js +1 -1
  338. package/dist/esm/tet-multi-step-dialog.entry.js +3 -3
  339. package/dist/esm/tet-navigation-mobile.entry.js +1 -1
  340. package/dist/esm/tet-news-card-list.entry.js +1 -1
  341. package/dist/esm/tet-notification.entry.js +1 -1
  342. package/dist/esm/tet-number-input.entry.js +1 -1
  343. package/dist/esm/tet-placeholder.entry.js +1 -1
  344. package/dist/esm/tet-position.entry.js +1 -1
  345. package/dist/esm/tet-price-view.entry.js +1 -1
  346. package/dist/esm/tet-radio.entry.js +1 -1
  347. package/dist/esm/tet-range-slider.entry.js +1 -1
  348. package/dist/esm/tet-referral.entry.js +5 -5
  349. package/dist/esm/tet-round-stepper.entry.js +1 -1
  350. package/dist/esm/tet-snicker-card-badge.entry.js +1 -1
  351. package/dist/esm/tet-spacing.entry.js +1 -1
  352. package/dist/esm/tet-spinner.entry.js +1 -1
  353. package/dist/esm/tet-stepper-input.entry.js +3 -3
  354. package/dist/esm/tet-stepper-v2.entry.js +1 -1
  355. package/dist/esm/tet-stepper-v3.entry.js +1 -1
  356. package/dist/esm/tet-stepper.entry.js +1 -1
  357. package/dist/esm/tet-switch.entry.js +1 -1
  358. package/dist/esm/tet-tab-header.entry.js +1 -1
  359. package/dist/esm/tet-table.entry.js +1 -1
  360. package/dist/esm/tet-tag_2.entry.js +3 -3
  361. package/dist/esm/tet-text-list.entry.js +1 -1
  362. package/dist/esm/tet-text.entry.js +1 -1
  363. package/dist/esm/tet-textarea.entry.js +1 -1
  364. package/dist/esm/tet-thank-you-view-v2.entry.js +3 -3
  365. package/dist/esm/tet-thank-you-view-v3.entry.js +3 -3
  366. package/dist/esm/tet-thank-you-view.entry.js +1 -1
  367. package/dist/esm/tet-tv-gift-block.entry.js +1 -1
  368. package/dist/esm/tet-tv-gift-list.entry.js +1 -1
  369. package/dist/esm/{theme-wrapper-72d0b9da.js → theme-wrapper-cf4d7d54.js} +2 -2
  370. package/dist/esm/{translations-4712c45f.js → translations-e60db8fd.js} +1 -1
  371. package/dist/tet-components/{p-55be4b32.entry.js → p-01cbb74c.entry.js} +1 -1
  372. package/dist/tet-components/{p-c31236d5.entry.js → p-0614c980.entry.js} +1 -1
  373. package/dist/tet-components/{p-4967b041.entry.js → p-08569f07.entry.js} +1 -1
  374. package/dist/tet-components/{p-79700f85.entry.js → p-0bda3eeb.entry.js} +1 -1
  375. package/dist/tet-components/{p-5391d594.entry.js → p-0bf60061.entry.js} +1 -1
  376. package/dist/tet-components/{p-028e8ace.entry.js → p-0d2c26f6.entry.js} +1 -1
  377. package/dist/tet-components/{p-7a3c1254.entry.js → p-127b2895.entry.js} +1 -1
  378. package/dist/tet-components/{p-26b112a2.entry.js → p-12f975ff.entry.js} +1 -1
  379. package/dist/tet-components/{p-2a43ccef.entry.js → p-14c15a69.entry.js} +1 -1
  380. package/dist/tet-components/{p-c13b2ba7.entry.js → p-1765c8c5.entry.js} +1 -1
  381. package/dist/tet-components/{p-040c0f07.entry.js → p-1a05c222.entry.js} +1 -1
  382. package/dist/tet-components/{p-4e58c5e2.entry.js → p-1b976fcb.entry.js} +1 -1
  383. package/dist/tet-components/{p-5533f71b.entry.js → p-1ea5d4bf.entry.js} +1 -1
  384. package/dist/tet-components/{p-bcca51cc.entry.js → p-1f5ed76c.entry.js} +1 -1
  385. package/dist/tet-components/{p-cf479331.entry.js → p-22c2b9f8.entry.js} +1 -1
  386. package/dist/tet-components/{p-6297692b.entry.js → p-239fa72a.entry.js} +1 -1
  387. package/dist/tet-components/{p-0690732e.entry.js → p-23f3b153.entry.js} +1 -1
  388. package/dist/tet-components/{p-be3a10d0.entry.js → p-24df18b9.entry.js} +1 -1
  389. package/dist/tet-components/{p-d9560c74.entry.js → p-24e724eb.entry.js} +1 -1
  390. package/dist/tet-components/{p-f6916bfc.entry.js → p-265701de.entry.js} +1 -1
  391. package/dist/tet-components/{p-00e4bbed.entry.js → p-27a27a6f.entry.js} +1 -1
  392. package/dist/tet-components/{p-b0fc3440.entry.js → p-2a558830.entry.js} +1 -1
  393. package/dist/tet-components/{p-33f2ed2e.entry.js → p-2a973b3c.entry.js} +1 -1
  394. package/dist/tet-components/{p-d8518d4b.js → p-2dbe670c.js} +1 -1
  395. package/dist/tet-components/{p-7056a120.entry.js → p-31d0b400.entry.js} +1 -1
  396. package/dist/tet-components/{p-629a9a5d.entry.js → p-32488c4e.entry.js} +1 -1
  397. package/dist/tet-components/{p-778c46a6.js → p-3ac57578.js} +1 -1
  398. package/dist/tet-components/{p-f06fb66c.entry.js → p-3b3fdcb0.entry.js} +1 -1
  399. package/dist/tet-components/{p-3fc6a020.entry.js → p-3b5e9fed.entry.js} +1 -1
  400. package/dist/tet-components/{p-f81b3bb0.js → p-4213c1d1.js} +1 -1
  401. package/dist/tet-components/{p-ee3604eb.entry.js → p-43eff59d.entry.js} +1 -1
  402. package/dist/tet-components/{p-d5b72171.entry.js → p-49779ee5.entry.js} +1 -1
  403. package/dist/tet-components/{p-e98108ba.entry.js → p-49da8f23.entry.js} +1 -1
  404. package/dist/tet-components/{p-81db4c30.entry.js → p-4d7f1c6e.entry.js} +1 -1
  405. package/dist/tet-components/{p-7c7fb42f.entry.js → p-4d935fc8.entry.js} +1 -1
  406. package/dist/tet-components/{p-73411459.entry.js → p-4fc641da.entry.js} +1 -1
  407. package/dist/tet-components/{p-122f3d3c.entry.js → p-548d7cc1.entry.js} +1 -1
  408. package/dist/tet-components/{p-f9a0b36a.entry.js → p-54cc6dd2.entry.js} +1 -1
  409. package/dist/tet-components/{p-6dde4d69.entry.js → p-55ded3a8.entry.js} +1 -1
  410. package/dist/tet-components/{p-71018cb8.entry.js → p-581b1f01.entry.js} +1 -1
  411. package/dist/tet-components/{p-ce850061.entry.js → p-589e8e4b.entry.js} +1 -1
  412. package/dist/tet-components/{p-5845a3dc.entry.js → p-59007fe7.entry.js} +1 -1
  413. package/dist/tet-components/{p-83f43fdd.js → p-5abb3bea.js} +1 -1
  414. package/dist/tet-components/{p-5a6fc34c.entry.js → p-5d56e074.entry.js} +1 -1
  415. package/dist/tet-components/{p-cde8057a.entry.js → p-60abca86.entry.js} +1 -1
  416. package/dist/tet-components/{p-8bfd498e.entry.js → p-63f6def9.entry.js} +1 -1
  417. package/dist/tet-components/p-660bdc27.js +1 -0
  418. package/dist/tet-components/{p-c10d5369.entry.js → p-6c6cd148.entry.js} +1 -1
  419. package/dist/tet-components/{p-cf11c4cd.entry.js → p-6c6fe82b.entry.js} +1 -1
  420. package/dist/tet-components/{p-ae8ff573.entry.js → p-6cf6894d.entry.js} +1 -1
  421. package/dist/tet-components/{p-a903f58f.entry.js → p-6e06eb15.entry.js} +1 -1
  422. package/dist/tet-components/{p-76526271.entry.js → p-6fb8c506.entry.js} +1 -1
  423. package/dist/tet-components/{p-32ece6e1.entry.js → p-6ffacde3.entry.js} +1 -1
  424. package/dist/tet-components/{p-d4dc17f5.entry.js → p-70bdb222.entry.js} +1 -1
  425. package/dist/tet-components/{p-fa446e53.entry.js → p-70cec2eb.entry.js} +1 -1
  426. package/dist/tet-components/{p-0ebbf5ef.js → p-726651bc.js} +1 -1
  427. package/dist/tet-components/{p-46975ec4.entry.js → p-73c190a2.entry.js} +1 -1
  428. package/dist/tet-components/{p-ed044f47.entry.js → p-79ee95e0.entry.js} +1 -1
  429. package/dist/tet-components/{p-09e92f79.entry.js → p-7a9db071.entry.js} +1 -1
  430. package/dist/tet-components/{p-b822a377.entry.js → p-7bd6f009.entry.js} +1 -1
  431. package/dist/tet-components/{p-5e8466e6.entry.js → p-835c7ee4.entry.js} +1 -1
  432. package/dist/tet-components/{p-3a3fd77f.entry.js → p-839ae15f.entry.js} +1 -1
  433. package/dist/tet-components/{p-bb7d4ae2.entry.js → p-8574b729.entry.js} +1 -1
  434. package/dist/tet-components/{p-5d70599c.entry.js → p-86b8ce79.entry.js} +1 -1
  435. package/dist/tet-components/{p-10e72480.entry.js → p-8b93b91f.entry.js} +1 -1
  436. package/dist/tet-components/{p-f5d4d8c8.entry.js → p-8fae4e03.entry.js} +1 -1
  437. package/dist/tet-components/{p-f16514db.entry.js → p-9bd457d2.entry.js} +1 -1
  438. package/dist/tet-components/{p-da0fc55d.entry.js → p-9c263933.entry.js} +1 -1
  439. package/dist/tet-components/{p-a8051a99.js → p-a476fd02.js} +1 -1
  440. package/dist/tet-components/{p-33768388.entry.js → p-a64706a6.entry.js} +1 -1
  441. package/dist/tet-components/{p-0d5562a1.entry.js → p-af86e2dc.entry.js} +1 -1
  442. package/dist/tet-components/{p-f68450a4.entry.js → p-b22de340.entry.js} +1 -1
  443. package/dist/tet-components/{p-0e2dbd84.entry.js → p-b29111f0.entry.js} +1 -1
  444. package/dist/tet-components/{p-ce4b6943.entry.js → p-b2c138f0.entry.js} +1 -1
  445. package/dist/tet-components/{p-7544dfd7.js → p-b39df477.js} +1 -1
  446. package/dist/tet-components/{p-872bbccf.entry.js → p-b468a922.entry.js} +1 -1
  447. package/dist/tet-components/{p-9c837569.entry.js → p-b4b90473.entry.js} +1 -1
  448. package/dist/tet-components/{p-7de684c1.entry.js → p-b61304cf.entry.js} +1 -1
  449. package/dist/tet-components/{p-1fd2adaf.js → p-b92dff8a.js} +1 -1
  450. package/dist/tet-components/{p-7a3e4581.entry.js → p-c094dfd6.entry.js} +1 -1
  451. package/dist/tet-components/{p-798aa31d.entry.js → p-c1b9f3f1.entry.js} +1 -1
  452. package/dist/tet-components/{p-9c36ecbd.entry.js → p-c76a4457.entry.js} +1 -1
  453. package/dist/tet-components/{p-43c3b078.entry.js → p-c87aa965.entry.js} +1 -1
  454. package/dist/tet-components/{p-b34e86ef.entry.js → p-c9583427.entry.js} +1 -1
  455. package/dist/tet-components/{p-0c6b6730.js → p-c9ddf890.js} +1 -1
  456. package/dist/tet-components/{p-75927057.entry.js → p-cc99e827.entry.js} +1 -1
  457. package/dist/tet-components/{p-b4ecbc40.entry.js → p-d028d7c4.entry.js} +1 -1
  458. package/dist/tet-components/{p-39796998.entry.js → p-d3db997e.entry.js} +1 -1
  459. package/dist/tet-components/{p-584f54a7.entry.js → p-d76479dc.entry.js} +1 -1
  460. package/dist/tet-components/p-d8542fed.entry.js +1 -0
  461. package/dist/tet-components/{p-62bcf382.entry.js → p-df99dc91.entry.js} +1 -1
  462. package/dist/tet-components/{p-a64e3e96.entry.js → p-e74416dc.entry.js} +1 -1
  463. package/dist/tet-components/{p-efdef0e5.entry.js → p-ec1e970f.entry.js} +1 -1
  464. package/dist/tet-components/{p-c9f21fde.entry.js → p-ec5b1040.entry.js} +1 -1
  465. package/dist/tet-components/{p-1d0c3563.entry.js → p-ef84df23.entry.js} +1 -1
  466. package/dist/tet-components/{p-2738fbb7.entry.js → p-efc8d952.entry.js} +1 -1
  467. package/dist/tet-components/{p-2328b1d4.entry.js → p-f9c98275.entry.js} +1 -1
  468. package/dist/tet-components/{p-43fd6ff8.entry.js → p-fa67ec09.entry.js} +1 -1
  469. package/dist/tet-components/{p-0f2d1a9c.entry.js → p-fdd44094.entry.js} +1 -1
  470. package/dist/tet-components/{p-4f5a19cb.entry.js → p-fe7dab47.entry.js} +1 -1
  471. package/dist/tet-components/tet-components.esm.js +1 -1
  472. package/dist/types/components/basic/carousel/tet-carousel/tet-carousel.d.ts +53 -11
  473. package/package.json +1 -1
  474. package/dist/tet-components/p-a0f6721c.entry.js +0 -1
  475. package/dist/tet-components/p-f81d95ae.js +0 -1
@@ -1,9 +1,9 @@
1
- import { r as registerInstance, f as forceUpdate, h, H as Host } from './index-aac31bd2.js';
2
- import { p as processTranslations, t as translate } from './translations-4712c45f.js';
1
+ import { r as registerInstance, f as forceUpdate, h, H as Host } from './index-e933a7d2.js';
2
+ import { p as processTranslations, t as translate } from './translations-e60db8fd.js';
3
3
  import './typecheck-4abf0258.js';
4
- import './http-codes-1927ea00.js';
4
+ import './http-codes-cf0086d4.js';
5
5
 
6
- const tetCarouselCss = ":host{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit;padding:0;margin:0}:host{--color-gray-light:#cdd2de;--color-ta070:#f5f6f8;--color-ta080:#e6e8ee;--color-ta100:#cdd2de;--color-ta200:#9ba5be;--color-ta300:#69789c;--color-ta500:#1e356a;--color-ta600:#051d59;--color-tc090:#d6e6fd;--color-tc100:#d1dffe;--color-tc300:#75a1fb;--color-tc500:#1a70f6;--color-tc600:#0060f5;--color-td500:#00F1F2;--color-td600:#01cbe0;--color-tf600:#f53b2a;--color-tg300:#2b3036;--color-tg400:#1d2128;--color-tg500:#12171e;--color-tg600:#01050c;--color-th500:#f5f5f5;--color-ti500:#869198;--color-ti600:#aeb7bc;--text-font:Gilroy, serif;--text-color-darker:var(--color-ta600);--text-color-dark:var(--color-ta500);--text-color-dark-theme:var(--color-th500);--icons-font:Tet Icons, serif}.icon.tet-search{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-search::before{content:\"\\e86e\"}.icon.tet-close-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close-circled::before{content:\"\\e85a\"}.icon.tet-close{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close::before{content:\"\\e85b\"}.icon.tet-check-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check-circled::before{content:\"\\e86c\"}.icon.tet-check{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check::before{content:\"\\e855\"}.icon.tet-chevron-up{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-up::before{content:\"\\e859\"}.icon.tet-chevron-down{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-down::before{content:\"\\e856\"}.icon.tet-clipboard{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-clipboard::before{content:\"\\e86a\"}.icon.tet-info{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-info::before{content:\"\\e81d\"}.icon.tet-done{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-done::before{content:\"\\e867\"}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}:host{--font-family-fallback:Gilroy, Arial, sans-serif;--font-family-headline:Gilroy;--font-family-content:Inter, var(--font-family-fallback);font-family:var(--font-family-content)}:host{--carousel-background:transparent;--carousel-dot-size:1rem;--carousel-buttons-bottom:-1rem;--carousel-dot-background:transparent;--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-margin:0;--carousel-dot-margin-mobile:1rem;--carousel-label-color:var(--tc-text-secondary);--carousel-dot-active-background:var(--tc-layer-inverse-primary);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover);--carousel-dot-active-hover-background:var(--tc-grey-80);--carousel-dots-gap:0.5rem;--carousel-buttons-gap:1rem;--carousel-track-gap:0;--carousel-track-height:100%;--carousel-item-width:100%;--carousel-item-height:100%;--carousel-buttons-right:2rem;--carousel-dots-bottom:-1rem;--carousel-nudge-animation-duration:1.5s;--carousel-gradient:var(--tc-background-primary);-webkit-tap-highlight-color:transparent;display:inline-block;cursor:pointer;width:100%}.tet-carousel{position:relative;width:100%;background:var(--carousel-background)}.tet-carousel.dark{--carousel-dot-active-background:var(--tc-layer-inverse-primary-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover-dark);--carousel-dot-active-hover-background:var(--tc-grey-80-dark);--carousel-label-color:var(--tc-text-secondary-dark);--carousel-gradient:var(--tc-background-primary-dark)}.tet-carousel__container{width:var(--carousel-item-width);max-width:var(--carousel-item-width);height:var(--carousel-track-height);position:relative;margin-bottom:var(--carousel-dot-margin-mobile)}.tet-carousel__controls{position:relative;display:flex;align-items:center;justify-content:center;height:fit-content;margin-bottom:var(--carousel-dot-margin-mobile);min-height:2.75rem;touch-action:manipulation}.tet-carousel__label{color:var(--carousel-label-color);margin-left:auto;margin-right:auto;margin-bottom:1rem;text-align:center;font-family:var(--font-family-content);font-size:0.875rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:-0.003125rem}.tet-carousel__track{touch-action:pan-y;display:flex;height:var(--carousel-track-height);will-change:transform}.tet-carousel__track--center{justify-content:center}.tet-carousel__track-content{display:flex;gap:var(--carousel-track-gap);will-change:transform}.tet-carousel__track-content--nudge{animation:tet-carousel-nudge var(--carousel-nudge-animation-duration) ease-in-out}@media (hover: hover) and (pointer: fine){.tet-carousel:hover .tet-carousel__track-content--nudge{animation-play-state:paused}}.tet-carousel__track-content>*{flex-shrink:0;display:flex;align-items:center;justify-content:center}.tet-carousel__buttons{position:absolute;right:0;bottom:50%;display:flex;transform:translateY(50%);gap:var(--carousel-buttons-gap);z-index:2}.tet-carousel__buttons--mobile{display:flex;left:0}.tet-carousel__buttons--desktop{display:none !important}.tet-carousel__dots{display:flex;width:100%;gap:var(--carousel-dots-gap);justify-content:center;align-items:center}.tet-carousel__dot{width:var(--carousel-dot-size);height:var(--carousel-dot-size);border-radius:50%;background:var(--carousel-dot-background);cursor:pointer;transition:background 0.2s;border:var(--carousel-dot-border);z-index:2;touch-action:manipulation}.tet-carousel__dot:hover{background:var(--carousel-dot-hover-background)}.tet-carousel__dot.active{background:var(--carousel-dot-active-background);border:none}.tet-carousel__dot.active:hover{background:var(--carousel-dot-active-hover-background)}.tet-carousel__dot:focus-visible{outline:0.125rem solid var(--tc-blue-40-dark);outline-offset:0.125rem}.tet-carousel__gradient-left,.tet-carousel__gradient-right{position:absolute;top:0;display:block;width:13.75rem;height:100%;transition:opacity 0.4s ease-out;pointer-events:none;z-index:20;opacity:0}.tet-carousel__gradient-left{background:linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);left:0}.tet-carousel__gradient-right{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);right:0}@keyframes tet-carousel-nudge{0%{transform:translateX(0)}50%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}70%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}100%{transform:translateX(0)}}@media all and (min-width: 46.25rem){.tet-carousel__controls{margin-bottom:var(--carousel-dot-margin)}.tet-carousel__label{font-size:1rem;line-height:1.5rem;letter-spacing:-0.00625rem}.tet-carousel__buttons{right:0.25rem}.tet-carousel__buttons--mobile{display:none}.tet-carousel__buttons--desktop{display:flex !important}}@media all and (min-width: 90rem){.tet-carousel__label{font-size:1.125rem;line-height:1.75rem}}";
6
+ const tetCarouselCss = ":host{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit;padding:0;margin:0}:host{--color-gray-light:#cdd2de;--color-ta070:#f5f6f8;--color-ta080:#e6e8ee;--color-ta100:#cdd2de;--color-ta200:#9ba5be;--color-ta300:#69789c;--color-ta500:#1e356a;--color-ta600:#051d59;--color-tc090:#d6e6fd;--color-tc100:#d1dffe;--color-tc300:#75a1fb;--color-tc500:#1a70f6;--color-tc600:#0060f5;--color-td500:#00F1F2;--color-td600:#01cbe0;--color-tf600:#f53b2a;--color-tg300:#2b3036;--color-tg400:#1d2128;--color-tg500:#12171e;--color-tg600:#01050c;--color-th500:#f5f5f5;--color-ti500:#869198;--color-ti600:#aeb7bc;--text-font:Gilroy, serif;--text-color-darker:var(--color-ta600);--text-color-dark:var(--color-ta500);--text-color-dark-theme:var(--color-th500);--icons-font:Tet Icons, serif}.icon.tet-search{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-search::before{content:\"\\e86e\"}.icon.tet-close-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close-circled::before{content:\"\\e85a\"}.icon.tet-close{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-close::before{content:\"\\e85b\"}.icon.tet-check-circled{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check-circled::before{content:\"\\e86c\"}.icon.tet-check{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-check::before{content:\"\\e855\"}.icon.tet-chevron-up{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-up::before{content:\"\\e859\"}.icon.tet-chevron-down{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-chevron-down::before{content:\"\\e856\"}.icon.tet-clipboard{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-clipboard::before{content:\"\\e86a\"}.icon.tet-info{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-info::before{content:\"\\e81d\"}.icon.tet-done{font-family:var(--icons-font);font-weight:400;font-style:normal;font-size:1.25rem;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;speak:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}.icon.tet-done::before{content:\"\\e867\"}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Medium.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Medium.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Semibold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Semibold.woff\") format(\"woff\")}@font-face{font-family:\"Gilroy\";font-style:normal;font-weight:700;font-display:swap;src:url(\"assets/fonts/Gilroy-W05-Bold.woff2\") format(\"woff2\"), url(\"assets/fonts/Gilroy-W05-Bold.woff\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:400;font-display:swap;src:url(\"assets/fonts/Inter-Regular.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Regular.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:500;font-display:swap;src:url(\"assets/fonts/Inter-Medium.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-Medium.woff?v=3.19\") format(\"woff\")}@font-face{font-family:\"Inter\";font-style:normal;font-weight:600;font-display:swap;src:url(\"assets/fonts/Inter-SemiBold.woff2?v=3.19\") format(\"woff2\"), url(\"assets/fonts/Inter-SemiBold.woff?v=3.19\") format(\"woff\")}:host{--font-family-fallback:Gilroy, Arial, sans-serif;--font-family-headline:Gilroy;--font-family-content:Inter, var(--font-family-fallback);font-family:var(--font-family-content)}:host{--carousel-background:transparent;--carousel-dot-size:1rem;--carousel-buttons-bottom:-1rem;--carousel-dot-background:transparent;--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-border:0.0625rem solid var(--tc-grey-70);--carousel-dot-margin:0;--carousel-dot-margin-mobile:1rem;--carousel-label-color:var(--tc-text-secondary);--carousel-dot-active-background:var(--tc-layer-inverse-primary);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover);--carousel-dot-active-hover-background:var(--tc-grey-80);--carousel-dots-gap:0.5rem;--carousel-buttons-gap:1rem;--carousel-track-gap:0;--carousel-track-height:100%;--carousel-item-width:100%;--carousel-item-height:100%;--carousel-buttons-right:2rem;--carousel-dots-bottom:-1rem;--carousel-nudge-animation-duration:1.5s;--carousel-gradient:var(--tc-background-primary);-webkit-tap-highlight-color:transparent;display:inline-block;width:100%}.tet-carousel{position:relative;width:100%;background:var(--carousel-background)}.tet-carousel.dark{--carousel-dot-active-background:var(--tc-layer-inverse-primary-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-border:0.0625rem solid var(--tc-grey-70-dark);--carousel-dot-hover-background:var(--tc-button-secondary-outline-background-hover-dark);--carousel-dot-active-hover-background:var(--tc-grey-80-dark);--carousel-label-color:var(--tc-text-secondary-dark);--carousel-gradient:var(--tc-background-primary-dark)}.tet-carousel__container{width:var(--carousel-item-width);max-width:var(--carousel-item-width);height:var(--carousel-track-height);position:relative;margin-bottom:var(--carousel-dot-margin-mobile)}.tet-carousel__controls{position:relative;display:flex;align-items:center;justify-content:center;height:fit-content;margin-bottom:var(--carousel-dot-margin-mobile);min-height:2.75rem;touch-action:manipulation}.tet-carousel__label{color:var(--carousel-label-color);margin-left:auto;margin-right:auto;margin-bottom:1rem;text-align:center;font-family:var(--font-family-content);font-size:0.875rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:-0.003125rem}.tet-carousel__track{touch-action:pan-y;display:flex;height:var(--carousel-track-height);will-change:transform}.tet-carousel__track--center{justify-content:center}.tet-carousel__track-content{display:flex;gap:var(--carousel-track-gap);will-change:transform}.tet-carousel__track-content--nudge{animation:tet-carousel-nudge var(--carousel-nudge-animation-duration) ease-in-out}@media (hover: hover) and (pointer: fine){.tet-carousel:hover .tet-carousel__track-content--nudge{animation-play-state:paused}}.tet-carousel__track-content>*{flex-shrink:0;display:flex;align-items:center;justify-content:center}.tet-carousel__buttons{position:absolute;right:0;bottom:50%;display:flex;transform:translateY(50%);gap:var(--carousel-buttons-gap);z-index:2}.tet-carousel__buttons--mobile{display:flex;left:0}.tet-carousel__buttons--desktop{display:none !important}.tet-carousel__dots{display:flex;width:100%;gap:var(--carousel-dots-gap);justify-content:center;align-items:center}.tet-carousel__dot{width:var(--carousel-dot-size);height:var(--carousel-dot-size);border-radius:50%;background:var(--carousel-dot-background);cursor:pointer;transition:background 0.2s;border:var(--carousel-dot-border);z-index:2;touch-action:manipulation}.tet-carousel__dot:hover{background:var(--carousel-dot-hover-background)}.tet-carousel__dot.active{background:var(--carousel-dot-active-background);border:none}.tet-carousel__dot.active:hover{background:var(--carousel-dot-active-hover-background)}.tet-carousel__dot:focus-visible{outline:0.125rem solid var(--tc-blue-40-dark);outline-offset:0.125rem}.tet-carousel__gradient-left,.tet-carousel__gradient-right{position:absolute;top:0;display:block;width:13.75rem;height:100%;transition:opacity 0.4s ease-out;pointer-events:none;z-index:20;opacity:0}.tet-carousel__gradient-left{background:linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);left:0}.tet-carousel__gradient-right{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, var(--carousel-gradient) 100%);right:0}@keyframes tet-carousel-nudge{0%{transform:translateX(0)}50%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}70%{transform:translateX(calc(var(--tet-carousel-nudge-distance) * -1))}100%{transform:translateX(0)}}@media all and (min-width: 46.25rem){.tet-carousel__controls{margin-bottom:var(--carousel-dot-margin)}.tet-carousel__label{font-size:1rem;line-height:1.5rem;letter-spacing:-0.00625rem}.tet-carousel__buttons{right:0.25rem}.tet-carousel__buttons--mobile{display:none}.tet-carousel__buttons--desktop{display:flex !important}}@media all and (min-width: 90rem){.tet-carousel__label{font-size:1.125rem;line-height:1.75rem}}";
7
7
  const TetCarouselStyle0 = tetCarouselCss;
8
8
 
9
9
  const TetCarousel = class {
@@ -33,42 +33,73 @@ const TetCarousel = class {
33
33
  static NUDGE_DISTANCE_PX = 16;
34
34
  static NUDGE_IDLE_THRESHOLD_MS = 1500;
35
35
  static GRADIENT_VISIBILITY_THRESHOLD_PX = 1;
36
+ static EDGE_DRAG_MAX_PX = 32;
37
+ static EDGE_DRAG_RESISTANCE = 0.95;
38
+ static MOUSE_DRAG_SMOOTHING_MS = 60;
39
+ focusableSelector = 'a[href], [tabindex]:not([tabindex="-1"])';
40
+ handleResize = () => {
41
+ this.getDotCount();
42
+ const assigned = this.getSlotElements();
43
+ if (!assigned?.length)
44
+ return;
45
+ const idx = Math.max(0, Math.min(this.activeItem, assigned.length - 1));
46
+ this.moveToItem(assigned[idx], idx);
47
+ this.checkGradient();
48
+ };
49
+ handleSlotChangeListener = () => this.handleSlotChange();
50
+ managedFocusableElements = [];
51
+ managedSlideFocusWithinListeners = [];
36
52
  draggedAnchor = null;
37
53
  dragMoved = false;
38
54
  dragPointerStartX = 0;
39
55
  dragStartX = 0;
56
+ dragStartActiveItem = 0;
57
+ dragPointerType = '';
40
58
  nudgeTimeoutId;
41
59
  nudgeGradientRafId;
42
60
  lastInteractionAt = 0;
43
61
  trackElement = null;
44
62
  trackContentElement = null;
63
+ mobileBackButtonWrapper = null;
45
64
  container;
46
65
  leftGradientRef;
47
66
  rightGradientRef;
48
67
  slotObserver;
49
- async onLanguageChange(language) {
50
- processTranslations('tet-components', language).then(() => forceUpdate(this));
68
+ safeForceUpdate() {
69
+ try {
70
+ forceUpdate(this);
71
+ }
72
+ catch { }
73
+ }
74
+ syncTranslations(language) {
75
+ processTranslations('tet-components', language).then(() => this.safeForceUpdate());
76
+ }
77
+ onLanguageChange(language) {
78
+ this.syncTranslations(language);
79
+ }
80
+ onActiveItemChange() {
81
+ this.updateSlideFocusableTabIndexes();
51
82
  }
52
83
  checkGradient() {
53
84
  if (this.showGradient) {
54
- const absOffset = Math.abs(this.getRealDragOffset());
55
85
  const wrapperWidth = this.getViewportWidth();
56
86
  const totalWidth = this.getSlotClientWidth();
57
- const rightEdgeDistance = totalWidth - absOffset - wrapperWidth;
58
- if (rightEdgeDistance >= 0) {
59
- const rightEdge = rightEdgeDistance < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX;
60
- if (absOffset < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX) {
61
- this.leftGradientRef.style.opacity = '0';
62
- this.rightGradientRef.style.opacity = '1';
63
- }
64
- else if (rightEdge) {
65
- this.leftGradientRef.style.opacity = '1';
66
- this.rightGradientRef.style.opacity = '0';
67
- }
68
- else {
69
- this.leftGradientRef.style.opacity = '1';
70
- this.rightGradientRef.style.opacity = '1';
71
- }
87
+ const maxScrollableOffset = Math.max(0, totalWidth - wrapperWidth);
88
+ const rawScrollableOffset = -this.getRealDragOffset();
89
+ const clampedScrollableOffset = Math.max(0, Math.min(maxScrollableOffset, rawScrollableOffset));
90
+ const rightEdgeDistance = maxScrollableOffset - clampedScrollableOffset;
91
+ const rightEdge = rightEdgeDistance < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX;
92
+ if (clampedScrollableOffset < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX) {
93
+ this.leftGradientRef.style.opacity = '0';
94
+ this.rightGradientRef.style.opacity = '1';
95
+ }
96
+ else if (rightEdge) {
97
+ this.leftGradientRef.style.opacity = '1';
98
+ this.rightGradientRef.style.opacity = '0';
99
+ }
100
+ else {
101
+ this.leftGradientRef.style.opacity = '1';
102
+ this.rightGradientRef.style.opacity = '1';
72
103
  }
73
104
  }
74
105
  else {
@@ -84,7 +115,7 @@ const TetCarousel = class {
84
115
  this.checkGradient();
85
116
  }
86
117
  componentWillLoad() {
87
- processTranslations('tet-components', this.language).then(() => forceUpdate(this));
118
+ this.syncTranslations(this.language);
88
119
  }
89
120
  getSlotElements() {
90
121
  const slot = this.container?.querySelector('slot');
@@ -104,6 +135,9 @@ const TetCarousel = class {
104
135
  getSlotClientWidth() {
105
136
  return this.trackElement?.querySelector('slot')?.offsetWidth || window.innerWidth;
106
137
  }
138
+ getMaxScrollableOffset() {
139
+ return Math.max(0, this.getSlotClientWidth() - this.getViewportWidth());
140
+ }
107
141
  // Run a callback after layout/paint to ensure DOM measurements are up to date
108
142
  afterLayout(cb) {
109
143
  requestAnimationFrame(() => requestAnimationFrame(cb));
@@ -126,30 +160,140 @@ const TetCarousel = class {
126
160
  const lastScreenBorder = Math.max(dotScreenLength, viewportWidth);
127
161
  return this.isLast(lastScreenBorder, position);
128
162
  }
129
- getFullyVisibleItemCount() {
163
+ getItemLayoutMetrics() {
130
164
  const assigned = this.getSlotElements();
131
165
  if (!assigned || assigned.length === 0)
166
+ return [];
167
+ return assigned.map((item, index) => {
168
+ const left = item.offsetLeft;
169
+ return {
170
+ item,
171
+ index,
172
+ left,
173
+ right: left + item.offsetWidth
174
+ };
175
+ });
176
+ }
177
+ getFullyVisibleItemCount() {
178
+ const metrics = this.getItemLayoutMetrics();
179
+ if (!metrics.length)
132
180
  return 0;
133
181
  const viewportWidth = this.getViewportWidth();
134
- const absOffset = Math.abs(this.dragOffset);
135
- const visibleLeft = absOffset;
136
- const visibleRight = absOffset + viewportWidth;
182
+ const visibleLeft = Math.abs(this.dragOffset);
183
+ const visibleRight = visibleLeft + viewportWidth;
137
184
  let count = 0;
138
- for (const item of assigned) {
139
- const rect = item.getBoundingClientRect();
140
- const trackRect = this.trackElement.getBoundingClientRect();
141
- const relativeLeft = rect.left - trackRect.left;
142
- const relativeRight = relativeLeft + item.offsetWidth;
143
- // Fully visible when the entire item falls inside the viewport window
144
- if (relativeLeft >= visibleLeft && relativeRight <= visibleRight) {
185
+ for (const { left, right } of metrics) {
186
+ if (left >= visibleLeft && right <= visibleRight) {
145
187
  count++;
146
188
  }
147
189
  }
148
190
  return count;
149
191
  }
192
+ getVisibleItemCountFromIndex(startIndex) {
193
+ const metrics = this.getItemLayoutMetrics();
194
+ if (!metrics.length)
195
+ return 1;
196
+ const safeStart = Math.max(0, Math.min(startIndex, metrics.length - 1));
197
+ const viewportWidth = this.getViewportWidth();
198
+ const startLeft = metrics[safeStart].left;
199
+ const visibleRight = startLeft + viewportWidth + 0.5;
200
+ let count = 0;
201
+ for (let index = safeStart; index < metrics.length; index++) {
202
+ if (metrics[index].right <= visibleRight) {
203
+ count++;
204
+ }
205
+ else {
206
+ break;
207
+ }
208
+ }
209
+ return Math.max(1, count);
210
+ }
211
+ getFirstVisibleItemInViewport() {
212
+ const metrics = this.getItemLayoutMetrics();
213
+ if (!metrics.length)
214
+ return null;
215
+ const viewportLeft = Math.abs(this.dragOffset);
216
+ const edgeEpsilon = 0.5;
217
+ const current = metrics.find((metric) => metric.left <= viewportLeft + edgeEpsilon && metric.right > viewportLeft + edgeEpsilon);
218
+ if (current) {
219
+ const itemWidth = current.right - current.left;
220
+ const visibleWidth = current.right - viewportLeft;
221
+ const isAtLeastHalfVisible = visibleWidth >= itemWidth / 2;
222
+ if (isAtLeastHalfVisible || current.index === metrics.length - 1) {
223
+ return { item: current.item, index: current.index };
224
+ }
225
+ const next = metrics[current.index + 1];
226
+ if (next) {
227
+ return { item: next.item, index: next.index };
228
+ }
229
+ }
230
+ if (viewportLeft <= metrics[0].left + edgeEpsilon) {
231
+ return { item: metrics[0].item, index: metrics[0].index };
232
+ }
233
+ const firstAfterViewport = metrics.find((metric) => metric.left > viewportLeft + edgeEpsilon);
234
+ if (firstAfterViewport) {
235
+ return { item: firstAfterViewport.item, index: firstAfterViewport.index };
236
+ }
237
+ const last = metrics.at(-1);
238
+ return { item: last.item, index: last.index };
239
+ }
240
+ getEdgeSnapTarget(direction) {
241
+ const metrics = this.getItemLayoutMetrics();
242
+ if (!metrics.length)
243
+ return null;
244
+ const viewportLeft = Math.abs(this.dragOffset);
245
+ const viewportRight = viewportLeft + this.getViewportWidth();
246
+ const first = metrics[0];
247
+ const last = metrics.at(-1);
248
+ if (direction < 0) {
249
+ const firstVisibleWidth = Math.min(first.right, viewportRight) - Math.max(first.left, viewportLeft);
250
+ if (firstVisibleWidth > 0 && firstVisibleWidth >= (first.right - first.left) / 2) {
251
+ return { item: first.item, index: first.index };
252
+ }
253
+ }
254
+ if (direction > 0) {
255
+ const lastVisibleWidth = Math.min(last.right, viewportRight) - Math.max(last.left, viewportLeft);
256
+ if (lastVisibleWidth > 0 && lastVisibleWidth >= (last.right - last.left) / 2) {
257
+ return { item: last.item, index: last.index };
258
+ }
259
+ }
260
+ return null;
261
+ }
262
+ getSwipeTarget(direction) {
263
+ const assigned = this.getSlotElements();
264
+ if (!assigned || assigned.length === 0)
265
+ return null;
266
+ const edgeSnapTarget = this.getEdgeSnapTarget(direction);
267
+ if (edgeSnapTarget) {
268
+ return edgeSnapTarget;
269
+ }
270
+ const firstVisible = this.getFirstVisibleItemInViewport();
271
+ let targetIndex = firstVisible?.index ?? this.dragStartActiveItem;
272
+ if (direction > 0 && targetIndex <= this.dragStartActiveItem) {
273
+ targetIndex = this.dragStartActiveItem + 1;
274
+ }
275
+ if (direction < 0 && targetIndex >= this.dragStartActiveItem) {
276
+ targetIndex = this.dragStartActiveItem - 1;
277
+ }
278
+ targetIndex = Math.max(0, Math.min(assigned.length - 1, targetIndex));
279
+ const targetItem = assigned[targetIndex];
280
+ if (!targetItem)
281
+ return null;
282
+ return { item: targetItem, index: targetIndex };
283
+ }
150
284
  getRealDragOffset() {
151
285
  return this.dragOffset + this.getCurrentNudgeTranslateX();
152
286
  }
287
+ applyEdgeDragResistance(offset, minDragOffset) {
288
+ if (offset > 0) {
289
+ return Math.min(TetCarousel.EDGE_DRAG_MAX_PX, offset * TetCarousel.EDGE_DRAG_RESISTANCE);
290
+ }
291
+ if (offset < minDragOffset) {
292
+ const overscrollPastEnd = offset - minDragOffset;
293
+ return minDragOffset + Math.max(-TetCarousel.EDGE_DRAG_MAX_PX, overscrollPastEnd * TetCarousel.EDGE_DRAG_RESISTANCE);
294
+ }
295
+ return offset;
296
+ }
153
297
  getCurrentNudgeTranslateX() {
154
298
  if (!this.isNudgeAnimating || !this.trackContentElement)
155
299
  return 0;
@@ -168,53 +312,53 @@ const TetCarousel = class {
168
312
  if (!assigned) {
169
313
  this.dotCount = 1;
170
314
  this.totalItems = 0;
171
- return 1;
315
+ this.activeDotIndex = 0;
316
+ return;
172
317
  }
173
318
  this.totalItems = assigned.length;
174
319
  const viewportWidth = this.getViewportWidth();
175
320
  const totalWidth = this.getSlotClientWidth();
176
321
  // Precise: add a dot whenever there's any overflow beyond a full viewport
177
322
  const exactScreens = Math.ceil(totalWidth / Math.max(1, viewportWidth));
178
- this.dotCount = Math.max(1, Math.min(this?.maxDots, exactScreens));
323
+ const maxDots = Number.isFinite(this.maxDots) ? this.maxDots : exactScreens;
324
+ this.dotCount = Math.max(1, Math.min(maxDots, exactScreens));
325
+ this.activeDotIndex = this.clampDotIndex(this.activeDotIndex);
179
326
  }
180
327
  handleMove = () => {
181
328
  const assigned = this.getSlotElements();
182
329
  if (!assigned)
183
- return 1;
330
+ return;
184
331
  const item = assigned[this.activeItem];
185
332
  if (item) {
186
333
  this.moveToItem(item);
187
334
  }
188
335
  };
189
- handlePrev = () => {
336
+ navigateByStep(direction) {
190
337
  this.registerUserInteraction();
191
- if (this.activeItem <= 0)
338
+ const assigned = this.getSlotElements();
339
+ if (!assigned || assigned.length === 0)
192
340
  return;
193
- this.afterLayout(() => {
194
- const visibleItems = Math.max(1, this.getFullyVisibleItemCount());
195
- if (this.activeItem && this.activeItem < visibleItems) {
196
- this.activeItem -= this.activeItem;
197
- }
198
- else {
199
- this.activeItem -= visibleItems;
200
- }
201
- this.handleMove();
202
- });
341
+ const previousDotIndex = this.activeDotIndex;
342
+ const viewportFirstVisible = this.getFirstVisibleItemInViewport();
343
+ const baseIndex = viewportFirstVisible?.index ?? this.activeItem;
344
+ const visibleItems = this.getVisibleItemCountFromIndex(baseIndex);
345
+ const targetIndex = Math.max(0, Math.min(assigned.length - 1, baseIndex + direction * visibleItems));
346
+ if (targetIndex === baseIndex)
347
+ return;
348
+ const targetItem = assigned[targetIndex];
349
+ if (!targetItem)
350
+ return;
351
+ this.moveToItem(targetItem, targetIndex);
352
+ // Keep arrow-driven dot navigation stable: one arrow press must not skip more than one dot.
353
+ if (Math.abs(this.activeDotIndex - previousDotIndex) > 1) {
354
+ this.moveToDotIndex(previousDotIndex + direction);
355
+ }
356
+ }
357
+ handlePrev = () => {
358
+ this.navigateByStep(-1);
203
359
  };
204
360
  handleNext = () => {
205
- this.registerUserInteraction();
206
- if (this.activeItem >= this.totalItems - 1)
207
- return;
208
- this.afterLayout(() => {
209
- const visibleItems = Math.max(1, this.getFullyVisibleItemCount());
210
- if (this.totalItems - this.activeItem < visibleItems) {
211
- this.activeItem = this.totalItems - 1;
212
- }
213
- else {
214
- this.activeItem += visibleItems;
215
- }
216
- this.handleMove();
217
- });
361
+ this.navigateByStep(1);
218
362
  };
219
363
  moveToLastScreen = () => {
220
364
  const wrapperWidth = this.getViewportWidth();
@@ -235,9 +379,9 @@ const TetCarousel = class {
235
379
  const assigned = this.getSlotElements();
236
380
  if (!assigned)
237
381
  return null;
382
+ const trackRect = this.trackElement.getBoundingClientRect();
238
383
  for (const [index, item] of assigned.entries()) {
239
384
  const rect = item.getBoundingClientRect();
240
- const trackRect = this.trackElement.getBoundingClientRect();
241
385
  let relativeLeft = rect.left - trackRect.left;
242
386
  const gradientOffset = this.calculateGradient(item, relativeLeft);
243
387
  if (relativeLeft >= target - this.swipeThreshold + gradientOffset) {
@@ -246,33 +390,94 @@ const TetCarousel = class {
246
390
  }
247
391
  return { item: assigned[0], index: 0 };
248
392
  };
393
+ moveToDotIndex(idx) {
394
+ this.activeDotIndex = this.clampDotIndex(idx);
395
+ const maxScrollableOffset = this.getMaxScrollableOffset();
396
+ const isLastDot = this.dotCount - 1 === this.activeDotIndex && !this.isDragging;
397
+ const unclampedTargetOffset = isLastDot ? maxScrollableOffset : this.activeDotIndex * this.getDotScreenLength();
398
+ const targetOffset = Math.max(0, Math.min(unclampedTargetOffset, maxScrollableOffset));
399
+ const lastScreenElement = this.calcLastScreenElement(targetOffset);
400
+ if (!lastScreenElement) {
401
+ this.activeItem = 0;
402
+ this.dragOffset = 0;
403
+ return;
404
+ }
405
+ const { index } = lastScreenElement;
406
+ this.activeItem = index;
407
+ this.dragOffset = -targetOffset;
408
+ }
249
409
  handleDotClick = (idx) => {
250
410
  this.registerUserInteraction();
251
- this.activeDotIndex = idx;
252
- const totalWidth = this.getSlotClientWidth();
253
- let targetDragOffset = 0;
254
- if (this.dotCount - 1 === this.activeDotIndex && !this.isDragging) {
255
- const viewPortWidth = this.getViewportWidth();
256
- targetDragOffset = totalWidth - viewPortWidth;
257
- }
258
- else {
259
- targetDragOffset = idx * this.getDotScreenLength();
260
- }
261
- const { item, index } = this.calcLastScreenElement(targetDragOffset);
262
- if (!this.isLastViewport(targetDragOffset)) {
263
- if (!item)
411
+ this.moveToDotIndex(idx);
412
+ };
413
+ focusDot = (idx) => {
414
+ if (!this.container)
415
+ return;
416
+ const dots = Array.from(this.container.querySelectorAll('.tet-carousel__dot'));
417
+ dots[idx]?.focus();
418
+ };
419
+ getKeyboardTargetIndex(key, currentIndex, maxIndex) {
420
+ if (maxIndex < 1)
421
+ return null;
422
+ switch (key) {
423
+ case 'ArrowRight':
424
+ case 'ArrowDown':
425
+ return Math.min(maxIndex, currentIndex + 1);
426
+ case 'ArrowLeft':
427
+ case 'ArrowUp':
428
+ return Math.max(0, currentIndex - 1);
429
+ case 'Home':
430
+ return 0;
431
+ case 'End':
432
+ return maxIndex;
433
+ default:
434
+ return null;
435
+ }
436
+ }
437
+ handleNavigationKeyDown(event, currentIndex, maxIndex, onNavigate, onFocus) {
438
+ const targetIndex = this.getKeyboardTargetIndex(event.key, currentIndex, maxIndex);
439
+ if (targetIndex === null)
440
+ return;
441
+ event.preventDefault();
442
+ event.stopPropagation();
443
+ if (!onNavigate(targetIndex))
444
+ return;
445
+ this.afterLayout(() => onFocus(targetIndex));
446
+ }
447
+ handleDotKeyDown = (event, idx) => {
448
+ if (event.key === 'Tab' && event.shiftKey) {
449
+ if (this.hasVisibleMobileBackButtonTarget())
264
450
  return;
265
- this.moveToItem(item, index);
266
- }
267
- else {
268
- if (index || index === 0) {
269
- this.activeItem = index;
270
- }
271
- this.moveToLastScreen();
451
+ this.registerUserInteraction();
452
+ event.preventDefault();
453
+ event.stopPropagation();
454
+ this.afterLayout(() => this.focusSlideByIndex(this.activeItem));
455
+ return;
272
456
  }
457
+ this.handleNavigationKeyDown(event, idx, this.dotCount - 1, (targetIdx) => {
458
+ this.handleDotClick(targetIdx);
459
+ return true;
460
+ }, (targetIdx) => this.focusDot(targetIdx));
273
461
  };
462
+ isElementVisible(element) {
463
+ if (!element.isConnected)
464
+ return false;
465
+ if (element.hidden || element.hasAttribute('hidden'))
466
+ return false;
467
+ if (element.getClientRects().length === 0)
468
+ return false;
469
+ const style = getComputedStyle(element);
470
+ return style.display !== 'none' && style.visibility !== 'hidden';
471
+ }
472
+ hasVisibleMobileBackButtonTarget() {
473
+ if (this.isLeftNavigationDisabled())
474
+ return false;
475
+ const wrapper = this.mobileBackButtonWrapper;
476
+ return !!wrapper && this.isElementVisible(wrapper);
477
+ }
274
478
  onPointerDown = (e) => {
275
479
  this.registerUserInteraction();
480
+ this.dragPointerType = e.pointerType || 'mouse';
276
481
  e.preventDefault();
277
482
  e.stopPropagation();
278
483
  e.stopImmediatePropagation();
@@ -280,9 +485,11 @@ const TetCarousel = class {
280
485
  this.dragStartX = e.screenX;
281
486
  this.dragMoved = false;
282
487
  this.dragPointerStartX = e.screenX;
488
+ this.dragStartActiveItem = this.activeItem;
283
489
  document.body.style.userSelect = 'none';
284
490
  document.addEventListener('pointermove', this.onPointerMove);
285
491
  document.addEventListener('pointerup', this.onPointerUp);
492
+ document.addEventListener('pointercancel', this.onPointerUp);
286
493
  let el = e.target;
287
494
  this.draggedAnchor = null;
288
495
  while (el) {
@@ -296,7 +503,6 @@ const TetCarousel = class {
296
503
  onPointerMove = (e) => {
297
504
  if (!this.isDragging)
298
505
  return;
299
- this.registerUserInteraction();
300
506
  // Only consider this a move (and prevent clicks) when movement exceeds a small threshold.
301
507
  const moveDistanceFromStart = Math.abs(e.screenX - this.dragPointerStartX);
302
508
  if (!this.dragMoved && moveDistanceFromStart > 5) {
@@ -314,84 +520,117 @@ const TetCarousel = class {
314
520
  this.dragStartX = e.screenX;
315
521
  const wrapperWidth = this.getViewportWidth();
316
522
  const totalWidth = this.getSlotClientWidth();
317
- const totalScrollableWidth = -(totalWidth - wrapperWidth);
318
- if (totalScrollableWidth < _dragOffset && _dragOffset < 0) {
319
- this.dragOffset = _dragOffset;
523
+ const minDragOffset = -(totalWidth - wrapperWidth);
524
+ this.dragOffset = this.applyEdgeDragResistance(_dragOffset, minDragOffset);
525
+ const firstVisible = this.getFirstVisibleItemInViewport();
526
+ if (firstVisible && this.activeItem !== firstVisible.index) {
527
+ this.activeItem = firstVisible.index;
320
528
  }
321
529
  };
322
- onPointerUp = (e) => {
323
- if (!this.isDragging)
530
+ releaseTrackPointerCapture(pointerId) {
531
+ try {
532
+ this.trackElement?.releasePointerCapture?.(pointerId);
533
+ }
534
+ catch { }
535
+ }
536
+ getMinDragOffset() {
537
+ const wrapperWidth = this.getViewportWidth();
538
+ const totalWidth = this.getSlotClientWidth();
539
+ return -(totalWidth - wrapperWidth);
540
+ }
541
+ snapToEdge(minDragOffset) {
542
+ const hitStartEdge = this.dragOffset > 0;
543
+ this.activeItem = hitStartEdge ? 0 : Math.max(0, this.totalItems - 1);
544
+ this.activeDotIndex = hitStartEdge ? 0 : Math.max(0, this.dotCount - 1);
545
+ this.dragOffset = hitStartEdge ? 0 : minDragOffset;
546
+ }
547
+ moveBySwipeDelta(delta) {
548
+ if (Math.abs(delta) <= this.swipeThreshold) {
549
+ this.activeItem = this.dragStartActiveItem;
550
+ this.afterLayout(() => this.handleMove());
324
551
  return;
325
- this.registerUserInteraction();
326
- if (this.trackElement) {
327
- try {
328
- this.trackElement.releasePointerCapture?.(e.pointerId);
329
- }
330
- catch { }
331
552
  }
553
+ const direction = delta < 0 ? 1 : -1;
554
+ const swipeTarget = this.getSwipeTarget(direction);
555
+ if (swipeTarget) {
556
+ this.moveToItem(swipeTarget.item, swipeTarget.index);
557
+ }
558
+ }
559
+ finalizePointerDrag() {
560
+ document.body.style.userSelect = '';
561
+ document.removeEventListener('pointermove', this.onPointerMove);
562
+ document.removeEventListener('pointerup', this.onPointerUp);
563
+ document.removeEventListener('pointercancel', this.onPointerUp);
564
+ this.dragPointerType = '';
565
+ }
566
+ preventClickAfterDrag() {
567
+ if (!this.draggedAnchor || !this.dragMoved)
568
+ return;
569
+ const preventClick = (ev) => {
570
+ ev.preventDefault();
571
+ ev.stopPropagation();
572
+ this.draggedAnchor?.removeEventListener('click', preventClick, true);
573
+ };
574
+ this.draggedAnchor.addEventListener('click', preventClick, true);
575
+ }
576
+ onPointerUp = (e) => {
332
577
  if (!this.isDragging)
333
578
  return;
334
- // Snap activeDotIndex when dragOffset passes threshold from last index position
579
+ this.registerUserInteraction();
580
+ this.releaseTrackPointerCapture(e.pointerId);
335
581
  this.isDragging = false;
336
- // Let the once:true capture handler auto-remove itself. Clear flag after a tick.
582
+ const minDragOffset = this.getMinDragOffset();
583
+ const isOutOfBounds = this.dragOffset > 0 || this.dragOffset < minDragOffset;
337
584
  const delta = e.screenX - this.dragPointerStartX;
338
- if (Math.abs(delta) > this.swipeThreshold) {
339
- if (delta < 0) {
340
- this.handleNext();
341
- }
342
- if (delta > 0) {
343
- this.handlePrev();
344
- }
585
+ if (isOutOfBounds) {
586
+ this.snapToEdge(minDragOffset);
345
587
  }
346
- document.body.style.userSelect = '';
347
- document.removeEventListener('pointermove', this.onPointerMove);
348
- document.removeEventListener('pointerup', this.onPointerUp);
349
- if (this.draggedAnchor && this.dragMoved) {
350
- const preventClick = (ev) => {
351
- ev.preventDefault();
352
- ev.stopPropagation();
353
- this.draggedAnchor?.removeEventListener('click', preventClick, true);
354
- };
355
- this.draggedAnchor.addEventListener('click', preventClick, true);
588
+ else {
589
+ this.moveBySwipeDelta(delta);
356
590
  }
591
+ this.finalizePointerDrag();
592
+ this.preventClickAfterDrag();
357
593
  };
358
- _showButtons() {
594
+ _showButtons(fullyVisibleItemCount = this.getFullyVisibleItemCount()) {
359
595
  if (!this.showButtons) {
360
596
  return false;
361
597
  }
362
- if (this.getFullyVisibleItemCount() >= this.totalItems) {
598
+ if (fullyVisibleItemCount >= this.totalItems) {
363
599
  return false;
364
600
  }
365
601
  return true;
366
602
  }
367
- _showDots() {
603
+ _showDots(fullyVisibleItemCount = this.getFullyVisibleItemCount()) {
368
604
  if (!this.showDots) {
369
605
  return false;
370
606
  }
371
- if (this.getFullyVisibleItemCount() && this.getFullyVisibleItemCount() >= this.totalItems) {
607
+ if (this.totalItems <= 0 || fullyVisibleItemCount >= this.totalItems) {
372
608
  return false;
373
609
  }
374
610
  return true;
375
611
  }
376
612
  componentDidLoad() {
377
613
  this.getDotCount();
378
- window.addEventListener('resize', this.getDotCount.bind(this));
379
- this.addAnchorFocusListeners();
614
+ window.addEventListener('resize', this.handleResize);
380
615
  this.checkGradient();
381
616
  this.initSlotListeners();
382
617
  this.syncNudgeSchedule();
618
+ this.refreshSlideFocusableElements();
383
619
  }
384
620
  handleSlotChange() {
385
621
  this.getDotCount();
622
+ const maxItemIndex = Math.max(0, this.totalItems - 1);
623
+ this.activeItem = Math.max(0, Math.min(this.activeItem, maxItemIndex));
624
+ this.refreshSlideFocusableElements();
386
625
  this.checkGradient();
387
- forceUpdate(this);
626
+ this.safeForceUpdate();
388
627
  }
389
628
  initSlotListeners() {
390
629
  const slot = this.container?.querySelector('slot');
391
630
  if (!slot)
392
631
  return;
393
632
  // add listeners for slot elements
394
- slot.addEventListener('slotchange', () => this.handleSlotChange());
633
+ slot.addEventListener('slotchange', this.handleSlotChangeListener);
395
634
  // add listeners for slot element children
396
635
  if (typeof slot.assignedElements !== 'function')
397
636
  return;
@@ -405,32 +644,105 @@ const TetCarousel = class {
405
644
  subtree: false
406
645
  });
407
646
  }
408
- addAnchorFocusListeners() {
409
- const assigned = this.getSlotElements();
410
- if (!assigned)
411
- return 1;
412
- let anchors = [];
413
- assigned.forEach((el) => {
414
- if (el.tagName === 'A') {
415
- anchors.push(el);
647
+ isTabbableElement(element) {
648
+ if (element.tagName === 'A') {
649
+ return element.hasAttribute('href');
650
+ }
651
+ const tabIndexValue = element.getAttribute('tabindex');
652
+ return tabIndexValue !== null && tabIndexValue.trim() !== '-1';
653
+ }
654
+ getSlideFocusableElements(slide) {
655
+ const focusableElements = new Set();
656
+ if (this.isTabbableElement(slide)) {
657
+ focusableElements.add(slide);
658
+ }
659
+ const descendants = Array.from(slide.querySelectorAll(this.focusableSelector));
660
+ descendants.forEach((element) => {
661
+ if (this.isTabbableElement(element)) {
662
+ focusableElements.add(element);
416
663
  }
417
- anchors = anchors.concat(Array.from(el.querySelectorAll('a')));
418
- if (el.getAttribute('tabindex') === '0') {
419
- anchors.push(el);
664
+ });
665
+ if (slide.shadowRoot) {
666
+ const shadowDescendants = Array.from(slide.shadowRoot.querySelectorAll(this.focusableSelector));
667
+ shadowDescendants.forEach((element) => {
668
+ if (this.isTabbableElement(element)) {
669
+ focusableElements.add(element);
670
+ }
671
+ });
672
+ }
673
+ return Array.from(focusableElements);
674
+ }
675
+ clearManagedSlideFocusableElements() {
676
+ this.managedSlideFocusWithinListeners.forEach(({ slide, onFocusWithin }) => {
677
+ slide.removeEventListener('focusin', onFocusWithin);
678
+ });
679
+ this.managedSlideFocusWithinListeners = [];
680
+ this.managedFocusableElements.forEach(({ element, originalTabIndex, onKeyDown }) => {
681
+ element.removeEventListener('keydown', onKeyDown);
682
+ if (originalTabIndex === null) {
683
+ element.removeAttribute('tabindex');
420
684
  }
421
- const tabIndexElements = Array.from(el.querySelectorAll('[tabindex="0"]'));
422
- anchors = anchors.concat(tabIndexElements);
423
- if (el.shadowRoot) {
424
- const deepTabIndexElements = Array.from(el.shadowRoot.querySelectorAll('[tabindex="0"]'));
425
- anchors = anchors.concat(deepTabIndexElements);
685
+ else {
686
+ element.setAttribute('tabindex', originalTabIndex);
426
687
  }
427
688
  });
428
- anchors.forEach((a, index) => {
429
- a.addEventListener('focus', () => {
689
+ this.managedFocusableElements = [];
690
+ }
691
+ updateSlideFocusableTabIndexes() {
692
+ if (!this.managedFocusableElements.length)
693
+ return;
694
+ this.managedFocusableElements.forEach(({ element, slideIndex }) => {
695
+ element.setAttribute('tabindex', slideIndex === this.activeItem ? '0' : '-1');
696
+ });
697
+ }
698
+ focusSlideByIndex(index) {
699
+ const focusable = this.managedFocusableElements.find((element) => element.slideIndex === index);
700
+ const element = focusable?.element;
701
+ if (!element)
702
+ return;
703
+ try {
704
+ element.focus({ preventScroll: true });
705
+ }
706
+ catch { }
707
+ }
708
+ handleSlideKeyDown(event, idx) {
709
+ this.handleNavigationKeyDown(event, idx, this.totalItems - 1, (targetIdx) => {
710
+ const assigned = this.getSlotElements();
711
+ if (!assigned?.[targetIdx])
712
+ return false;
713
+ this.registerUserInteraction();
714
+ this.moveToItem(assigned[targetIdx], targetIdx);
715
+ return true;
716
+ }, (targetIdx) => this.focusSlideByIndex(targetIdx));
717
+ }
718
+ refreshSlideFocusableElements() {
719
+ this.clearManagedSlideFocusableElements();
720
+ const assigned = this.getSlotElements();
721
+ if (!assigned?.length)
722
+ return;
723
+ assigned.forEach((slide, slideIndex) => {
724
+ const onFocusWithin = () => {
430
725
  this.registerUserInteraction();
431
- this.moveToItem(a, index);
726
+ this.moveToItem(slide, slideIndex);
727
+ };
728
+ this.managedSlideFocusWithinListeners.push({
729
+ slide,
730
+ onFocusWithin
731
+ });
732
+ slide.addEventListener('focusin', onFocusWithin);
733
+ const focusableElements = this.getSlideFocusableElements(slide);
734
+ focusableElements.forEach((element) => {
735
+ const onKeyDown = (event) => this.handleSlideKeyDown(event, slideIndex);
736
+ this.managedFocusableElements.push({
737
+ element,
738
+ slideIndex,
739
+ originalTabIndex: element.getAttribute('tabindex'),
740
+ onKeyDown
741
+ });
742
+ element.addEventListener('keydown', onKeyDown);
432
743
  });
433
744
  });
745
+ this.updateSlideFocusableTabIndexes();
434
746
  }
435
747
  startNudgeGradientLoop() {
436
748
  if (this.nudgeGradientRafId)
@@ -473,8 +785,16 @@ const TetCarousel = class {
473
785
  isRightNavigationDisabled() {
474
786
  return this.dotCount <= 1 || this.activeItem === this.totalItems - 1 || this.isLastViewport(-this.dragOffset);
475
787
  }
788
+ isLeftNavigationDisabled() {
789
+ return this.dotCount <= 1 || this.activeItem === 0;
790
+ }
476
791
  isNudgeEligible() {
477
- return !!this.trackElement && !this.isDragging && !this.isNudgeAnimating && !this.hasRecentInteraction() && !this.isRightNavigationDisabled();
792
+ return (!!this.trackElement &&
793
+ !this.isDragging &&
794
+ !this.isNudgeAnimating &&
795
+ !this.hasRecentInteraction() &&
796
+ !this.isRightNavigationDisabled() &&
797
+ this.dragOffset === 0);
478
798
  }
479
799
  scheduleNextNudge() {
480
800
  if (this.nudgeAnimationInterval <= 0)
@@ -526,7 +846,7 @@ const TetCarousel = class {
526
846
  dotIndex = this.dotCount - 1;
527
847
  }
528
848
  else {
529
- dotIndex = Math.floor((position + gradientOffset) / dotScreenLength);
849
+ dotIndex = Math.round((position + gradientOffset) / dotScreenLength);
530
850
  }
531
851
  this.activeDotIndex = this.clampDotIndex(dotIndex);
532
852
  }
@@ -549,47 +869,54 @@ const TetCarousel = class {
549
869
  disconnectedCallback() {
550
870
  this.stopNudgeSchedule();
551
871
  this.stopNudgeGradientLoop();
552
- window.removeEventListener('resize', this.getDotCount.bind(this));
872
+ window.removeEventListener('resize', this.handleResize);
873
+ this.clearManagedSlideFocusableElements();
553
874
  const slot = this.container?.querySelector('slot');
554
875
  if (slot) {
555
- slot.removeEventListener('slotchange', () => this.handleSlotChange());
876
+ slot.removeEventListener('slotchange', this.handleSlotChangeListener);
556
877
  }
557
878
  if (this.slotObserver) {
558
- this.slotObserver?.disconnect();
879
+ this.slotObserver.disconnect();
559
880
  this.slotObserver = null;
560
881
  }
561
882
  document.removeEventListener('pointermove', this.onPointerMove);
562
883
  document.removeEventListener('pointerup', this.onPointerUp);
884
+ document.removeEventListener('pointercancel', this.onPointerUp);
563
885
  }
564
886
  render() {
565
- return (h(Host, { key: '3a7b181e4c8a1d19777a39ca77197199452e12b5' }, h("div", { key: 'f5830e6a8158c0ae5ffddd3cde678223b8e1b51a', class: { 'tet-carousel': true, [`${this.theme}`]: true }, ref: (el) => (this.container = el), part: "carousel" }, h("div", { key: '77031caf2348f1a06e757096192cdaa7cadaf3cc', class: "tet-carousel__container" }, h("div", { key: 'd514790264ef2b4a7faf66ef9932871525db053a', class: "tet-carousel__gradient-left", ref: (el) => {
887
+ const fullyVisibleItemCount = this.getFullyVisibleItemCount();
888
+ const showButtons = this._showButtons(fullyVisibleItemCount);
889
+ const showDots = this._showDots(fullyVisibleItemCount);
890
+ const showControls = showButtons || showDots;
891
+ let trackTransition = `transform ${this.transitionDuration}ms ${this.transitionTiming}`;
892
+ if (this.isDragging) {
893
+ if (this.dragPointerType === 'mouse') {
894
+ trackTransition = `transform ${TetCarousel.MOUSE_DRAG_SMOOTHING_MS}ms linear`;
895
+ }
896
+ else {
897
+ trackTransition = 'none';
898
+ }
899
+ }
900
+ return (h(Host, { key: '9767de8c2faf3b0e4830a392c9ba0d86c613646e' }, h("div", { key: 'fa87bbfcf929287a5440accd922698d4ad1f6d4b', class: { 'tet-carousel': true, [`${this.theme}`]: true }, ref: (el) => (this.container = el), part: "carousel" }, h("div", { key: 'f5650393d39f906e8c47fd299680b09f82b00a07', class: "tet-carousel__container" }, h("div", { key: 'f6bd47326c58ef355d35e33c037025e1d5a7b5a8', class: "tet-carousel__gradient-left", ref: (el) => {
566
901
  this.leftGradientRef = el;
567
- } }), h("div", { key: 'ced61d4ccfcc5de268ba1da71bccff32ad8ec9f6', class: "tet-carousel__gradient-right", ref: (el) => {
902
+ } }), h("div", { key: '685cad2d917518a83c6db28ef451563fe349c218', class: "tet-carousel__gradient-right", ref: (el) => {
568
903
  this.rightGradientRef = el;
569
- } }), h("div", { key: 'd76b0c1211165a3ee32adfec02cc109b7d296307', class: `tet-carousel__track ${!this._showButtons() && !this._showDots() ? 'tet-carousel__track--center' : ''}`, ref: (el) => (this.trackElement = el), style: {
570
- transform: `translateX(${this.dragOffset}px)`,
571
- transition: this.isDragging ? 'none' : `transform ${this.transitionDuration}ms ${this.transitionTiming}`
572
- }, onPointerDown: this.onPointerDown, onMouseMove: this.onPointerMove, onPointerUp: this.onPointerUp, onMouseLeave: this.onPointerUp }, h("div", { key: '874945906359997e34b179988f05b33d4300b4ae', class: {
904
+ } }), h("div", { key: '2f5acf14605c82e42c845766bd50e61a644a6fe6', class: `tet-carousel__track ${showControls ? '' : 'tet-carousel__track--center'}`, ref: (el) => (this.trackElement = el), style: {
905
+ transform: `translate3d(${this.dragOffset}px, 0, 0)`,
906
+ transition: trackTransition,
907
+ willChange: 'transform'
908
+ }, onPointerDown: this.onPointerDown, onPointerUp: this.onPointerUp }, h("div", { key: '84bcc48d810f6cd0d15022cdc6d48841187613ad', class: {
573
909
  'tet-carousel__track-content': true,
574
910
  'tet-carousel__track-content--nudge': this.isNudgeAnimating
575
911
  }, ref: (el) => (this.trackContentElement = el), style: {
576
912
  '--tet-carousel-nudge-distance': `${TetCarousel.NUDGE_DISTANCE_PX}px`
577
- }, onAnimationEnd: this.onNudgeAnimationEnd }, h("slot", { key: 'c714dd8072438aae03661de4d3dc689fb471e412' })))), !!this.label && h("div", { key: '28a233d7c5c7799b0dc505e83616da798deb970c', class: "tet-carousel__label" }, this.label), (this._showButtons() || this._showDots()) && (h("div", { key: 'e84c35e48571aa85420686a5e608135610103571', class: "tet-carousel__controls" }, this._showButtons() && (h("div", { key: '3222b45cfd3a37deb7a4a572d0523044be1eb1f5', class: "tet-carousel__buttons tet-carousel__buttons--mobile" }, h("tet-button", { key: 'a296a74cbbecb955d378de5e9ba04c6ef1a4a74f', theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconLeft, "icon-mode": true, tabIndex: -1, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
578
- if (!this.isDragging)
579
- this.handlePrev();
580
- }, "aria-label": translate('components-carousel-previous'), disabled: this.dotCount <= 1 || this.activeItem === 0 }))), this._showDots() && (h("div", { key: 'e205c6a0354ab7a66985759dd95f6f0aa086bba0', class: "tet-carousel__dots" }, Array.from({ length: this.dotCount }).map((_, idx) => (h("button", { type: "button", tabIndex: -1, class: `tet-carousel__dot${idx === this.activeDotIndex ? ' active' : ''}`, key: idx, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
581
- if (!this.isDragging)
582
- this.handleDotClick(idx);
583
- }, onClick: () => this.handleDotClick(idx) }))))), this._showButtons() && (h("div", { key: 'ff9081c15d417e870db6e5e82f030bc031310027', class: "tet-carousel__buttons" }, h("tet-button", { key: '279bac2814813a2ce35308d556bca341f1b4a3bb', class: "tet-carousel__buttons--desktop", theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconLeft, "icon-mode": true, tabIndex: -1, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
584
- if (!this.isDragging)
585
- this.handlePrev();
586
- }, accessibilityLabel: translate('components-carousel-previous'), disabled: this.dotCount <= 1 || this.activeItem === 0 }), h("tet-button", { key: '320adc13d425ca84c26ef2d1cc7001220ce7d9c4', theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconRight, "icon-mode": true, tabIndex: -1, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
587
- if (!this.isDragging)
588
- this.handleNext();
589
- }, accessibilityLabel: translate('components-carousel-next'), disabled: this.isRightNavigationDisabled() }))))))));
913
+ }, onAnimationEnd: this.onNudgeAnimationEnd }, h("slot", { key: '008187ecc9d482ffd1565aaa2c6da818a7bf34ed' })))), !!this.label && h("div", { key: 'd040796e5dc156331fdb2356cd7bb20e7900f460', class: "tet-carousel__label" }, this.label), showControls && (h("div", { key: '4446a2194185bae6fef623d21790f89346378194', class: "tet-carousel__controls" }, showButtons && (h("div", { key: '6c3c10f149b11f9b6503392f16d2d74b526d74c8', class: "tet-carousel__buttons tet-carousel__buttons--mobile", ref: (el) => (this.mobileBackButtonWrapper = el) }, h("tet-button", { key: 'e8f3dad8e0978add649e844149b94072e366f4d8', theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconLeft, "icon-mode": true, onPointerDown: (e) => e.stopPropagation(), onClick: () => this.handlePrev(), accessibilityLabel: translate('components-carousel-previous'), disabled: this.isLeftNavigationDisabled() }))), showDots && (h("div", { key: 'a747eb625e0bf36603a279f29f17ccac16c2e84c', class: "tet-carousel__dots" }, Array.from({ length: this.dotCount }).map((_, idx) => (h("button", { type: "button", tabIndex: idx === this.activeDotIndex ? 0 : -1, class: `tet-carousel__dot${idx === this.activeDotIndex ? ' active' : ''}`, key: idx, "aria-label": `${idx === this.activeDotIndex
914
+ ? translate('components-carousel-indicator-button-active')
915
+ : translate('components-carousel-indicator-button')} ${idx + 1}/${this.dotCount}`, "aria-current": idx === this.activeDotIndex ? 'true' : undefined, onPointerDown: (e) => e.stopPropagation(), onKeyDown: (event) => this.handleDotKeyDown(event, idx), onClick: () => this.handleDotClick(idx) }))))), showButtons && (h("div", { key: '4ffa948621436b96fb9b8d6b10308ec9aa98dff3', class: "tet-carousel__buttons" }, h("tet-button", { key: '43de7d0b8e92e6b1e0e2b7f1ff5f851c4fc75ead', class: "tet-carousel__buttons--desktop", theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconLeft, "icon-mode": true, onPointerDown: (e) => e.stopPropagation(), onClick: () => this.handlePrev(), accessibilityLabel: translate('components-carousel-previous'), disabled: this.isLeftNavigationDisabled() }), h("tet-button", { key: 'eb7b1f82803e0bc39ffb41721a1a906dd5fc6d55', theme: this.theme, type: "secondary", size: "medium", "icon-name": this.buttonIconRight, "icon-mode": true, onPointerDown: (e) => e.stopPropagation(), onClick: () => this.handleNext(), accessibilityLabel: translate('components-carousel-next'), disabled: this.isRightNavigationDisabled() }))))))));
590
916
  }
591
917
  static get watchers() { return {
592
918
  "language": ["onLanguageChange"],
919
+ "activeItem": ["onActiveItemChange"],
593
920
  "showGradient": ["checkGradient"],
594
921
  "dragOffset": ["checkGradient"],
595
922
  "nudgeAnimationInterval": ["onNudgeAnimIntervalChange"],