@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
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-3242ff3f.js');
6
- const translations = require('./translations-03c9de64.js');
5
+ const index = require('./index-faec4c52.js');
6
+ const translations = require('./translations-89a0ec3d.js');
7
7
  require('./typecheck-d48810dc.js');
8
- require('./http-codes-40da1e61.js');
8
+ require('./http-codes-062f76cf.js');
9
9
 
10
- 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}}";
10
+ 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}}";
11
11
  const TetCarouselStyle0 = tetCarouselCss;
12
12
 
13
13
  const TetCarousel = class {
@@ -37,42 +37,73 @@ const TetCarousel = class {
37
37
  static NUDGE_DISTANCE_PX = 16;
38
38
  static NUDGE_IDLE_THRESHOLD_MS = 1500;
39
39
  static GRADIENT_VISIBILITY_THRESHOLD_PX = 1;
40
+ static EDGE_DRAG_MAX_PX = 32;
41
+ static EDGE_DRAG_RESISTANCE = 0.95;
42
+ static MOUSE_DRAG_SMOOTHING_MS = 60;
43
+ focusableSelector = 'a[href], [tabindex]:not([tabindex="-1"])';
44
+ handleResize = () => {
45
+ this.getDotCount();
46
+ const assigned = this.getSlotElements();
47
+ if (!assigned?.length)
48
+ return;
49
+ const idx = Math.max(0, Math.min(this.activeItem, assigned.length - 1));
50
+ this.moveToItem(assigned[idx], idx);
51
+ this.checkGradient();
52
+ };
53
+ handleSlotChangeListener = () => this.handleSlotChange();
54
+ managedFocusableElements = [];
55
+ managedSlideFocusWithinListeners = [];
40
56
  draggedAnchor = null;
41
57
  dragMoved = false;
42
58
  dragPointerStartX = 0;
43
59
  dragStartX = 0;
60
+ dragStartActiveItem = 0;
61
+ dragPointerType = '';
44
62
  nudgeTimeoutId;
45
63
  nudgeGradientRafId;
46
64
  lastInteractionAt = 0;
47
65
  trackElement = null;
48
66
  trackContentElement = null;
67
+ mobileBackButtonWrapper = null;
49
68
  container;
50
69
  leftGradientRef;
51
70
  rightGradientRef;
52
71
  slotObserver;
53
- async onLanguageChange(language) {
54
- translations.processTranslations('tet-components', language).then(() => index.forceUpdate(this));
72
+ safeForceUpdate() {
73
+ try {
74
+ index.forceUpdate(this);
75
+ }
76
+ catch { }
77
+ }
78
+ syncTranslations(language) {
79
+ translations.processTranslations('tet-components', language).then(() => this.safeForceUpdate());
80
+ }
81
+ onLanguageChange(language) {
82
+ this.syncTranslations(language);
83
+ }
84
+ onActiveItemChange() {
85
+ this.updateSlideFocusableTabIndexes();
55
86
  }
56
87
  checkGradient() {
57
88
  if (this.showGradient) {
58
- const absOffset = Math.abs(this.getRealDragOffset());
59
89
  const wrapperWidth = this.getViewportWidth();
60
90
  const totalWidth = this.getSlotClientWidth();
61
- const rightEdgeDistance = totalWidth - absOffset - wrapperWidth;
62
- if (rightEdgeDistance >= 0) {
63
- const rightEdge = rightEdgeDistance < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX;
64
- if (absOffset < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX) {
65
- this.leftGradientRef.style.opacity = '0';
66
- this.rightGradientRef.style.opacity = '1';
67
- }
68
- else if (rightEdge) {
69
- this.leftGradientRef.style.opacity = '1';
70
- this.rightGradientRef.style.opacity = '0';
71
- }
72
- else {
73
- this.leftGradientRef.style.opacity = '1';
74
- this.rightGradientRef.style.opacity = '1';
75
- }
91
+ const maxScrollableOffset = Math.max(0, totalWidth - wrapperWidth);
92
+ const rawScrollableOffset = -this.getRealDragOffset();
93
+ const clampedScrollableOffset = Math.max(0, Math.min(maxScrollableOffset, rawScrollableOffset));
94
+ const rightEdgeDistance = maxScrollableOffset - clampedScrollableOffset;
95
+ const rightEdge = rightEdgeDistance < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX;
96
+ if (clampedScrollableOffset < TetCarousel.GRADIENT_VISIBILITY_THRESHOLD_PX) {
97
+ this.leftGradientRef.style.opacity = '0';
98
+ this.rightGradientRef.style.opacity = '1';
99
+ }
100
+ else if (rightEdge) {
101
+ this.leftGradientRef.style.opacity = '1';
102
+ this.rightGradientRef.style.opacity = '0';
103
+ }
104
+ else {
105
+ this.leftGradientRef.style.opacity = '1';
106
+ this.rightGradientRef.style.opacity = '1';
76
107
  }
77
108
  }
78
109
  else {
@@ -88,7 +119,7 @@ const TetCarousel = class {
88
119
  this.checkGradient();
89
120
  }
90
121
  componentWillLoad() {
91
- translations.processTranslations('tet-components', this.language).then(() => index.forceUpdate(this));
122
+ this.syncTranslations(this.language);
92
123
  }
93
124
  getSlotElements() {
94
125
  const slot = this.container?.querySelector('slot');
@@ -108,6 +139,9 @@ const TetCarousel = class {
108
139
  getSlotClientWidth() {
109
140
  return this.trackElement?.querySelector('slot')?.offsetWidth || window.innerWidth;
110
141
  }
142
+ getMaxScrollableOffset() {
143
+ return Math.max(0, this.getSlotClientWidth() - this.getViewportWidth());
144
+ }
111
145
  // Run a callback after layout/paint to ensure DOM measurements are up to date
112
146
  afterLayout(cb) {
113
147
  requestAnimationFrame(() => requestAnimationFrame(cb));
@@ -130,30 +164,140 @@ const TetCarousel = class {
130
164
  const lastScreenBorder = Math.max(dotScreenLength, viewportWidth);
131
165
  return this.isLast(lastScreenBorder, position);
132
166
  }
133
- getFullyVisibleItemCount() {
167
+ getItemLayoutMetrics() {
134
168
  const assigned = this.getSlotElements();
135
169
  if (!assigned || assigned.length === 0)
170
+ return [];
171
+ return assigned.map((item, index) => {
172
+ const left = item.offsetLeft;
173
+ return {
174
+ item,
175
+ index,
176
+ left,
177
+ right: left + item.offsetWidth
178
+ };
179
+ });
180
+ }
181
+ getFullyVisibleItemCount() {
182
+ const metrics = this.getItemLayoutMetrics();
183
+ if (!metrics.length)
136
184
  return 0;
137
185
  const viewportWidth = this.getViewportWidth();
138
- const absOffset = Math.abs(this.dragOffset);
139
- const visibleLeft = absOffset;
140
- const visibleRight = absOffset + viewportWidth;
186
+ const visibleLeft = Math.abs(this.dragOffset);
187
+ const visibleRight = visibleLeft + viewportWidth;
141
188
  let count = 0;
142
- for (const item of assigned) {
143
- const rect = item.getBoundingClientRect();
144
- const trackRect = this.trackElement.getBoundingClientRect();
145
- const relativeLeft = rect.left - trackRect.left;
146
- const relativeRight = relativeLeft + item.offsetWidth;
147
- // Fully visible when the entire item falls inside the viewport window
148
- if (relativeLeft >= visibleLeft && relativeRight <= visibleRight) {
189
+ for (const { left, right } of metrics) {
190
+ if (left >= visibleLeft && right <= visibleRight) {
149
191
  count++;
150
192
  }
151
193
  }
152
194
  return count;
153
195
  }
196
+ getVisibleItemCountFromIndex(startIndex) {
197
+ const metrics = this.getItemLayoutMetrics();
198
+ if (!metrics.length)
199
+ return 1;
200
+ const safeStart = Math.max(0, Math.min(startIndex, metrics.length - 1));
201
+ const viewportWidth = this.getViewportWidth();
202
+ const startLeft = metrics[safeStart].left;
203
+ const visibleRight = startLeft + viewportWidth + 0.5;
204
+ let count = 0;
205
+ for (let index = safeStart; index < metrics.length; index++) {
206
+ if (metrics[index].right <= visibleRight) {
207
+ count++;
208
+ }
209
+ else {
210
+ break;
211
+ }
212
+ }
213
+ return Math.max(1, count);
214
+ }
215
+ getFirstVisibleItemInViewport() {
216
+ const metrics = this.getItemLayoutMetrics();
217
+ if (!metrics.length)
218
+ return null;
219
+ const viewportLeft = Math.abs(this.dragOffset);
220
+ const edgeEpsilon = 0.5;
221
+ const current = metrics.find((metric) => metric.left <= viewportLeft + edgeEpsilon && metric.right > viewportLeft + edgeEpsilon);
222
+ if (current) {
223
+ const itemWidth = current.right - current.left;
224
+ const visibleWidth = current.right - viewportLeft;
225
+ const isAtLeastHalfVisible = visibleWidth >= itemWidth / 2;
226
+ if (isAtLeastHalfVisible || current.index === metrics.length - 1) {
227
+ return { item: current.item, index: current.index };
228
+ }
229
+ const next = metrics[current.index + 1];
230
+ if (next) {
231
+ return { item: next.item, index: next.index };
232
+ }
233
+ }
234
+ if (viewportLeft <= metrics[0].left + edgeEpsilon) {
235
+ return { item: metrics[0].item, index: metrics[0].index };
236
+ }
237
+ const firstAfterViewport = metrics.find((metric) => metric.left > viewportLeft + edgeEpsilon);
238
+ if (firstAfterViewport) {
239
+ return { item: firstAfterViewport.item, index: firstAfterViewport.index };
240
+ }
241
+ const last = metrics.at(-1);
242
+ return { item: last.item, index: last.index };
243
+ }
244
+ getEdgeSnapTarget(direction) {
245
+ const metrics = this.getItemLayoutMetrics();
246
+ if (!metrics.length)
247
+ return null;
248
+ const viewportLeft = Math.abs(this.dragOffset);
249
+ const viewportRight = viewportLeft + this.getViewportWidth();
250
+ const first = metrics[0];
251
+ const last = metrics.at(-1);
252
+ if (direction < 0) {
253
+ const firstVisibleWidth = Math.min(first.right, viewportRight) - Math.max(first.left, viewportLeft);
254
+ if (firstVisibleWidth > 0 && firstVisibleWidth >= (first.right - first.left) / 2) {
255
+ return { item: first.item, index: first.index };
256
+ }
257
+ }
258
+ if (direction > 0) {
259
+ const lastVisibleWidth = Math.min(last.right, viewportRight) - Math.max(last.left, viewportLeft);
260
+ if (lastVisibleWidth > 0 && lastVisibleWidth >= (last.right - last.left) / 2) {
261
+ return { item: last.item, index: last.index };
262
+ }
263
+ }
264
+ return null;
265
+ }
266
+ getSwipeTarget(direction) {
267
+ const assigned = this.getSlotElements();
268
+ if (!assigned || assigned.length === 0)
269
+ return null;
270
+ const edgeSnapTarget = this.getEdgeSnapTarget(direction);
271
+ if (edgeSnapTarget) {
272
+ return edgeSnapTarget;
273
+ }
274
+ const firstVisible = this.getFirstVisibleItemInViewport();
275
+ let targetIndex = firstVisible?.index ?? this.dragStartActiveItem;
276
+ if (direction > 0 && targetIndex <= this.dragStartActiveItem) {
277
+ targetIndex = this.dragStartActiveItem + 1;
278
+ }
279
+ if (direction < 0 && targetIndex >= this.dragStartActiveItem) {
280
+ targetIndex = this.dragStartActiveItem - 1;
281
+ }
282
+ targetIndex = Math.max(0, Math.min(assigned.length - 1, targetIndex));
283
+ const targetItem = assigned[targetIndex];
284
+ if (!targetItem)
285
+ return null;
286
+ return { item: targetItem, index: targetIndex };
287
+ }
154
288
  getRealDragOffset() {
155
289
  return this.dragOffset + this.getCurrentNudgeTranslateX();
156
290
  }
291
+ applyEdgeDragResistance(offset, minDragOffset) {
292
+ if (offset > 0) {
293
+ return Math.min(TetCarousel.EDGE_DRAG_MAX_PX, offset * TetCarousel.EDGE_DRAG_RESISTANCE);
294
+ }
295
+ if (offset < minDragOffset) {
296
+ const overscrollPastEnd = offset - minDragOffset;
297
+ return minDragOffset + Math.max(-TetCarousel.EDGE_DRAG_MAX_PX, overscrollPastEnd * TetCarousel.EDGE_DRAG_RESISTANCE);
298
+ }
299
+ return offset;
300
+ }
157
301
  getCurrentNudgeTranslateX() {
158
302
  if (!this.isNudgeAnimating || !this.trackContentElement)
159
303
  return 0;
@@ -172,53 +316,53 @@ const TetCarousel = class {
172
316
  if (!assigned) {
173
317
  this.dotCount = 1;
174
318
  this.totalItems = 0;
175
- return 1;
319
+ this.activeDotIndex = 0;
320
+ return;
176
321
  }
177
322
  this.totalItems = assigned.length;
178
323
  const viewportWidth = this.getViewportWidth();
179
324
  const totalWidth = this.getSlotClientWidth();
180
325
  // Precise: add a dot whenever there's any overflow beyond a full viewport
181
326
  const exactScreens = Math.ceil(totalWidth / Math.max(1, viewportWidth));
182
- this.dotCount = Math.max(1, Math.min(this?.maxDots, exactScreens));
327
+ const maxDots = Number.isFinite(this.maxDots) ? this.maxDots : exactScreens;
328
+ this.dotCount = Math.max(1, Math.min(maxDots, exactScreens));
329
+ this.activeDotIndex = this.clampDotIndex(this.activeDotIndex);
183
330
  }
184
331
  handleMove = () => {
185
332
  const assigned = this.getSlotElements();
186
333
  if (!assigned)
187
- return 1;
334
+ return;
188
335
  const item = assigned[this.activeItem];
189
336
  if (item) {
190
337
  this.moveToItem(item);
191
338
  }
192
339
  };
193
- handlePrev = () => {
340
+ navigateByStep(direction) {
194
341
  this.registerUserInteraction();
195
- if (this.activeItem <= 0)
342
+ const assigned = this.getSlotElements();
343
+ if (!assigned || assigned.length === 0)
196
344
  return;
197
- this.afterLayout(() => {
198
- const visibleItems = Math.max(1, this.getFullyVisibleItemCount());
199
- if (this.activeItem && this.activeItem < visibleItems) {
200
- this.activeItem -= this.activeItem;
201
- }
202
- else {
203
- this.activeItem -= visibleItems;
204
- }
205
- this.handleMove();
206
- });
345
+ const previousDotIndex = this.activeDotIndex;
346
+ const viewportFirstVisible = this.getFirstVisibleItemInViewport();
347
+ const baseIndex = viewportFirstVisible?.index ?? this.activeItem;
348
+ const visibleItems = this.getVisibleItemCountFromIndex(baseIndex);
349
+ const targetIndex = Math.max(0, Math.min(assigned.length - 1, baseIndex + direction * visibleItems));
350
+ if (targetIndex === baseIndex)
351
+ return;
352
+ const targetItem = assigned[targetIndex];
353
+ if (!targetItem)
354
+ return;
355
+ this.moveToItem(targetItem, targetIndex);
356
+ // Keep arrow-driven dot navigation stable: one arrow press must not skip more than one dot.
357
+ if (Math.abs(this.activeDotIndex - previousDotIndex) > 1) {
358
+ this.moveToDotIndex(previousDotIndex + direction);
359
+ }
360
+ }
361
+ handlePrev = () => {
362
+ this.navigateByStep(-1);
207
363
  };
208
364
  handleNext = () => {
209
- this.registerUserInteraction();
210
- if (this.activeItem >= this.totalItems - 1)
211
- return;
212
- this.afterLayout(() => {
213
- const visibleItems = Math.max(1, this.getFullyVisibleItemCount());
214
- if (this.totalItems - this.activeItem < visibleItems) {
215
- this.activeItem = this.totalItems - 1;
216
- }
217
- else {
218
- this.activeItem += visibleItems;
219
- }
220
- this.handleMove();
221
- });
365
+ this.navigateByStep(1);
222
366
  };
223
367
  moveToLastScreen = () => {
224
368
  const wrapperWidth = this.getViewportWidth();
@@ -239,9 +383,9 @@ const TetCarousel = class {
239
383
  const assigned = this.getSlotElements();
240
384
  if (!assigned)
241
385
  return null;
386
+ const trackRect = this.trackElement.getBoundingClientRect();
242
387
  for (const [index, item] of assigned.entries()) {
243
388
  const rect = item.getBoundingClientRect();
244
- const trackRect = this.trackElement.getBoundingClientRect();
245
389
  let relativeLeft = rect.left - trackRect.left;
246
390
  const gradientOffset = this.calculateGradient(item, relativeLeft);
247
391
  if (relativeLeft >= target - this.swipeThreshold + gradientOffset) {
@@ -250,33 +394,94 @@ const TetCarousel = class {
250
394
  }
251
395
  return { item: assigned[0], index: 0 };
252
396
  };
397
+ moveToDotIndex(idx) {
398
+ this.activeDotIndex = this.clampDotIndex(idx);
399
+ const maxScrollableOffset = this.getMaxScrollableOffset();
400
+ const isLastDot = this.dotCount - 1 === this.activeDotIndex && !this.isDragging;
401
+ const unclampedTargetOffset = isLastDot ? maxScrollableOffset : this.activeDotIndex * this.getDotScreenLength();
402
+ const targetOffset = Math.max(0, Math.min(unclampedTargetOffset, maxScrollableOffset));
403
+ const lastScreenElement = this.calcLastScreenElement(targetOffset);
404
+ if (!lastScreenElement) {
405
+ this.activeItem = 0;
406
+ this.dragOffset = 0;
407
+ return;
408
+ }
409
+ const { index } = lastScreenElement;
410
+ this.activeItem = index;
411
+ this.dragOffset = -targetOffset;
412
+ }
253
413
  handleDotClick = (idx) => {
254
414
  this.registerUserInteraction();
255
- this.activeDotIndex = idx;
256
- const totalWidth = this.getSlotClientWidth();
257
- let targetDragOffset = 0;
258
- if (this.dotCount - 1 === this.activeDotIndex && !this.isDragging) {
259
- const viewPortWidth = this.getViewportWidth();
260
- targetDragOffset = totalWidth - viewPortWidth;
261
- }
262
- else {
263
- targetDragOffset = idx * this.getDotScreenLength();
264
- }
265
- const { item, index } = this.calcLastScreenElement(targetDragOffset);
266
- if (!this.isLastViewport(targetDragOffset)) {
267
- if (!item)
415
+ this.moveToDotIndex(idx);
416
+ };
417
+ focusDot = (idx) => {
418
+ if (!this.container)
419
+ return;
420
+ const dots = Array.from(this.container.querySelectorAll('.tet-carousel__dot'));
421
+ dots[idx]?.focus();
422
+ };
423
+ getKeyboardTargetIndex(key, currentIndex, maxIndex) {
424
+ if (maxIndex < 1)
425
+ return null;
426
+ switch (key) {
427
+ case 'ArrowRight':
428
+ case 'ArrowDown':
429
+ return Math.min(maxIndex, currentIndex + 1);
430
+ case 'ArrowLeft':
431
+ case 'ArrowUp':
432
+ return Math.max(0, currentIndex - 1);
433
+ case 'Home':
434
+ return 0;
435
+ case 'End':
436
+ return maxIndex;
437
+ default:
438
+ return null;
439
+ }
440
+ }
441
+ handleNavigationKeyDown(event, currentIndex, maxIndex, onNavigate, onFocus) {
442
+ const targetIndex = this.getKeyboardTargetIndex(event.key, currentIndex, maxIndex);
443
+ if (targetIndex === null)
444
+ return;
445
+ event.preventDefault();
446
+ event.stopPropagation();
447
+ if (!onNavigate(targetIndex))
448
+ return;
449
+ this.afterLayout(() => onFocus(targetIndex));
450
+ }
451
+ handleDotKeyDown = (event, idx) => {
452
+ if (event.key === 'Tab' && event.shiftKey) {
453
+ if (this.hasVisibleMobileBackButtonTarget())
268
454
  return;
269
- this.moveToItem(item, index);
270
- }
271
- else {
272
- if (index || index === 0) {
273
- this.activeItem = index;
274
- }
275
- this.moveToLastScreen();
455
+ this.registerUserInteraction();
456
+ event.preventDefault();
457
+ event.stopPropagation();
458
+ this.afterLayout(() => this.focusSlideByIndex(this.activeItem));
459
+ return;
276
460
  }
461
+ this.handleNavigationKeyDown(event, idx, this.dotCount - 1, (targetIdx) => {
462
+ this.handleDotClick(targetIdx);
463
+ return true;
464
+ }, (targetIdx) => this.focusDot(targetIdx));
277
465
  };
466
+ isElementVisible(element) {
467
+ if (!element.isConnected)
468
+ return false;
469
+ if (element.hidden || element.hasAttribute('hidden'))
470
+ return false;
471
+ if (element.getClientRects().length === 0)
472
+ return false;
473
+ const style = getComputedStyle(element);
474
+ return style.display !== 'none' && style.visibility !== 'hidden';
475
+ }
476
+ hasVisibleMobileBackButtonTarget() {
477
+ if (this.isLeftNavigationDisabled())
478
+ return false;
479
+ const wrapper = this.mobileBackButtonWrapper;
480
+ return !!wrapper && this.isElementVisible(wrapper);
481
+ }
278
482
  onPointerDown = (e) => {
279
483
  this.registerUserInteraction();
484
+ this.dragPointerType = e.pointerType || 'mouse';
280
485
  e.preventDefault();
281
486
  e.stopPropagation();
282
487
  e.stopImmediatePropagation();
@@ -284,9 +489,11 @@ const TetCarousel = class {
284
489
  this.dragStartX = e.screenX;
285
490
  this.dragMoved = false;
286
491
  this.dragPointerStartX = e.screenX;
492
+ this.dragStartActiveItem = this.activeItem;
287
493
  document.body.style.userSelect = 'none';
288
494
  document.addEventListener('pointermove', this.onPointerMove);
289
495
  document.addEventListener('pointerup', this.onPointerUp);
496
+ document.addEventListener('pointercancel', this.onPointerUp);
290
497
  let el = e.target;
291
498
  this.draggedAnchor = null;
292
499
  while (el) {
@@ -300,7 +507,6 @@ const TetCarousel = class {
300
507
  onPointerMove = (e) => {
301
508
  if (!this.isDragging)
302
509
  return;
303
- this.registerUserInteraction();
304
510
  // Only consider this a move (and prevent clicks) when movement exceeds a small threshold.
305
511
  const moveDistanceFromStart = Math.abs(e.screenX - this.dragPointerStartX);
306
512
  if (!this.dragMoved && moveDistanceFromStart > 5) {
@@ -318,84 +524,117 @@ const TetCarousel = class {
318
524
  this.dragStartX = e.screenX;
319
525
  const wrapperWidth = this.getViewportWidth();
320
526
  const totalWidth = this.getSlotClientWidth();
321
- const totalScrollableWidth = -(totalWidth - wrapperWidth);
322
- if (totalScrollableWidth < _dragOffset && _dragOffset < 0) {
323
- this.dragOffset = _dragOffset;
527
+ const minDragOffset = -(totalWidth - wrapperWidth);
528
+ this.dragOffset = this.applyEdgeDragResistance(_dragOffset, minDragOffset);
529
+ const firstVisible = this.getFirstVisibleItemInViewport();
530
+ if (firstVisible && this.activeItem !== firstVisible.index) {
531
+ this.activeItem = firstVisible.index;
324
532
  }
325
533
  };
326
- onPointerUp = (e) => {
327
- if (!this.isDragging)
534
+ releaseTrackPointerCapture(pointerId) {
535
+ try {
536
+ this.trackElement?.releasePointerCapture?.(pointerId);
537
+ }
538
+ catch { }
539
+ }
540
+ getMinDragOffset() {
541
+ const wrapperWidth = this.getViewportWidth();
542
+ const totalWidth = this.getSlotClientWidth();
543
+ return -(totalWidth - wrapperWidth);
544
+ }
545
+ snapToEdge(minDragOffset) {
546
+ const hitStartEdge = this.dragOffset > 0;
547
+ this.activeItem = hitStartEdge ? 0 : Math.max(0, this.totalItems - 1);
548
+ this.activeDotIndex = hitStartEdge ? 0 : Math.max(0, this.dotCount - 1);
549
+ this.dragOffset = hitStartEdge ? 0 : minDragOffset;
550
+ }
551
+ moveBySwipeDelta(delta) {
552
+ if (Math.abs(delta) <= this.swipeThreshold) {
553
+ this.activeItem = this.dragStartActiveItem;
554
+ this.afterLayout(() => this.handleMove());
328
555
  return;
329
- this.registerUserInteraction();
330
- if (this.trackElement) {
331
- try {
332
- this.trackElement.releasePointerCapture?.(e.pointerId);
333
- }
334
- catch { }
335
556
  }
557
+ const direction = delta < 0 ? 1 : -1;
558
+ const swipeTarget = this.getSwipeTarget(direction);
559
+ if (swipeTarget) {
560
+ this.moveToItem(swipeTarget.item, swipeTarget.index);
561
+ }
562
+ }
563
+ finalizePointerDrag() {
564
+ document.body.style.userSelect = '';
565
+ document.removeEventListener('pointermove', this.onPointerMove);
566
+ document.removeEventListener('pointerup', this.onPointerUp);
567
+ document.removeEventListener('pointercancel', this.onPointerUp);
568
+ this.dragPointerType = '';
569
+ }
570
+ preventClickAfterDrag() {
571
+ if (!this.draggedAnchor || !this.dragMoved)
572
+ return;
573
+ const preventClick = (ev) => {
574
+ ev.preventDefault();
575
+ ev.stopPropagation();
576
+ this.draggedAnchor?.removeEventListener('click', preventClick, true);
577
+ };
578
+ this.draggedAnchor.addEventListener('click', preventClick, true);
579
+ }
580
+ onPointerUp = (e) => {
336
581
  if (!this.isDragging)
337
582
  return;
338
- // Snap activeDotIndex when dragOffset passes threshold from last index position
583
+ this.registerUserInteraction();
584
+ this.releaseTrackPointerCapture(e.pointerId);
339
585
  this.isDragging = false;
340
- // Let the once:true capture handler auto-remove itself. Clear flag after a tick.
586
+ const minDragOffset = this.getMinDragOffset();
587
+ const isOutOfBounds = this.dragOffset > 0 || this.dragOffset < minDragOffset;
341
588
  const delta = e.screenX - this.dragPointerStartX;
342
- if (Math.abs(delta) > this.swipeThreshold) {
343
- if (delta < 0) {
344
- this.handleNext();
345
- }
346
- if (delta > 0) {
347
- this.handlePrev();
348
- }
589
+ if (isOutOfBounds) {
590
+ this.snapToEdge(minDragOffset);
349
591
  }
350
- document.body.style.userSelect = '';
351
- document.removeEventListener('pointermove', this.onPointerMove);
352
- document.removeEventListener('pointerup', this.onPointerUp);
353
- if (this.draggedAnchor && this.dragMoved) {
354
- const preventClick = (ev) => {
355
- ev.preventDefault();
356
- ev.stopPropagation();
357
- this.draggedAnchor?.removeEventListener('click', preventClick, true);
358
- };
359
- this.draggedAnchor.addEventListener('click', preventClick, true);
592
+ else {
593
+ this.moveBySwipeDelta(delta);
360
594
  }
595
+ this.finalizePointerDrag();
596
+ this.preventClickAfterDrag();
361
597
  };
362
- _showButtons() {
598
+ _showButtons(fullyVisibleItemCount = this.getFullyVisibleItemCount()) {
363
599
  if (!this.showButtons) {
364
600
  return false;
365
601
  }
366
- if (this.getFullyVisibleItemCount() >= this.totalItems) {
602
+ if (fullyVisibleItemCount >= this.totalItems) {
367
603
  return false;
368
604
  }
369
605
  return true;
370
606
  }
371
- _showDots() {
607
+ _showDots(fullyVisibleItemCount = this.getFullyVisibleItemCount()) {
372
608
  if (!this.showDots) {
373
609
  return false;
374
610
  }
375
- if (this.getFullyVisibleItemCount() && this.getFullyVisibleItemCount() >= this.totalItems) {
611
+ if (this.totalItems <= 0 || fullyVisibleItemCount >= this.totalItems) {
376
612
  return false;
377
613
  }
378
614
  return true;
379
615
  }
380
616
  componentDidLoad() {
381
617
  this.getDotCount();
382
- window.addEventListener('resize', this.getDotCount.bind(this));
383
- this.addAnchorFocusListeners();
618
+ window.addEventListener('resize', this.handleResize);
384
619
  this.checkGradient();
385
620
  this.initSlotListeners();
386
621
  this.syncNudgeSchedule();
622
+ this.refreshSlideFocusableElements();
387
623
  }
388
624
  handleSlotChange() {
389
625
  this.getDotCount();
626
+ const maxItemIndex = Math.max(0, this.totalItems - 1);
627
+ this.activeItem = Math.max(0, Math.min(this.activeItem, maxItemIndex));
628
+ this.refreshSlideFocusableElements();
390
629
  this.checkGradient();
391
- index.forceUpdate(this);
630
+ this.safeForceUpdate();
392
631
  }
393
632
  initSlotListeners() {
394
633
  const slot = this.container?.querySelector('slot');
395
634
  if (!slot)
396
635
  return;
397
636
  // add listeners for slot elements
398
- slot.addEventListener('slotchange', () => this.handleSlotChange());
637
+ slot.addEventListener('slotchange', this.handleSlotChangeListener);
399
638
  // add listeners for slot element children
400
639
  if (typeof slot.assignedElements !== 'function')
401
640
  return;
@@ -409,32 +648,105 @@ const TetCarousel = class {
409
648
  subtree: false
410
649
  });
411
650
  }
412
- addAnchorFocusListeners() {
413
- const assigned = this.getSlotElements();
414
- if (!assigned)
415
- return 1;
416
- let anchors = [];
417
- assigned.forEach((el) => {
418
- if (el.tagName === 'A') {
419
- anchors.push(el);
651
+ isTabbableElement(element) {
652
+ if (element.tagName === 'A') {
653
+ return element.hasAttribute('href');
654
+ }
655
+ const tabIndexValue = element.getAttribute('tabindex');
656
+ return tabIndexValue !== null && tabIndexValue.trim() !== '-1';
657
+ }
658
+ getSlideFocusableElements(slide) {
659
+ const focusableElements = new Set();
660
+ if (this.isTabbableElement(slide)) {
661
+ focusableElements.add(slide);
662
+ }
663
+ const descendants = Array.from(slide.querySelectorAll(this.focusableSelector));
664
+ descendants.forEach((element) => {
665
+ if (this.isTabbableElement(element)) {
666
+ focusableElements.add(element);
420
667
  }
421
- anchors = anchors.concat(Array.from(el.querySelectorAll('a')));
422
- if (el.getAttribute('tabindex') === '0') {
423
- anchors.push(el);
668
+ });
669
+ if (slide.shadowRoot) {
670
+ const shadowDescendants = Array.from(slide.shadowRoot.querySelectorAll(this.focusableSelector));
671
+ shadowDescendants.forEach((element) => {
672
+ if (this.isTabbableElement(element)) {
673
+ focusableElements.add(element);
674
+ }
675
+ });
676
+ }
677
+ return Array.from(focusableElements);
678
+ }
679
+ clearManagedSlideFocusableElements() {
680
+ this.managedSlideFocusWithinListeners.forEach(({ slide, onFocusWithin }) => {
681
+ slide.removeEventListener('focusin', onFocusWithin);
682
+ });
683
+ this.managedSlideFocusWithinListeners = [];
684
+ this.managedFocusableElements.forEach(({ element, originalTabIndex, onKeyDown }) => {
685
+ element.removeEventListener('keydown', onKeyDown);
686
+ if (originalTabIndex === null) {
687
+ element.removeAttribute('tabindex');
424
688
  }
425
- const tabIndexElements = Array.from(el.querySelectorAll('[tabindex="0"]'));
426
- anchors = anchors.concat(tabIndexElements);
427
- if (el.shadowRoot) {
428
- const deepTabIndexElements = Array.from(el.shadowRoot.querySelectorAll('[tabindex="0"]'));
429
- anchors = anchors.concat(deepTabIndexElements);
689
+ else {
690
+ element.setAttribute('tabindex', originalTabIndex);
430
691
  }
431
692
  });
432
- anchors.forEach((a, index) => {
433
- a.addEventListener('focus', () => {
693
+ this.managedFocusableElements = [];
694
+ }
695
+ updateSlideFocusableTabIndexes() {
696
+ if (!this.managedFocusableElements.length)
697
+ return;
698
+ this.managedFocusableElements.forEach(({ element, slideIndex }) => {
699
+ element.setAttribute('tabindex', slideIndex === this.activeItem ? '0' : '-1');
700
+ });
701
+ }
702
+ focusSlideByIndex(index) {
703
+ const focusable = this.managedFocusableElements.find((element) => element.slideIndex === index);
704
+ const element = focusable?.element;
705
+ if (!element)
706
+ return;
707
+ try {
708
+ element.focus({ preventScroll: true });
709
+ }
710
+ catch { }
711
+ }
712
+ handleSlideKeyDown(event, idx) {
713
+ this.handleNavigationKeyDown(event, idx, this.totalItems - 1, (targetIdx) => {
714
+ const assigned = this.getSlotElements();
715
+ if (!assigned?.[targetIdx])
716
+ return false;
717
+ this.registerUserInteraction();
718
+ this.moveToItem(assigned[targetIdx], targetIdx);
719
+ return true;
720
+ }, (targetIdx) => this.focusSlideByIndex(targetIdx));
721
+ }
722
+ refreshSlideFocusableElements() {
723
+ this.clearManagedSlideFocusableElements();
724
+ const assigned = this.getSlotElements();
725
+ if (!assigned?.length)
726
+ return;
727
+ assigned.forEach((slide, slideIndex) => {
728
+ const onFocusWithin = () => {
434
729
  this.registerUserInteraction();
435
- this.moveToItem(a, index);
730
+ this.moveToItem(slide, slideIndex);
731
+ };
732
+ this.managedSlideFocusWithinListeners.push({
733
+ slide,
734
+ onFocusWithin
735
+ });
736
+ slide.addEventListener('focusin', onFocusWithin);
737
+ const focusableElements = this.getSlideFocusableElements(slide);
738
+ focusableElements.forEach((element) => {
739
+ const onKeyDown = (event) => this.handleSlideKeyDown(event, slideIndex);
740
+ this.managedFocusableElements.push({
741
+ element,
742
+ slideIndex,
743
+ originalTabIndex: element.getAttribute('tabindex'),
744
+ onKeyDown
745
+ });
746
+ element.addEventListener('keydown', onKeyDown);
436
747
  });
437
748
  });
749
+ this.updateSlideFocusableTabIndexes();
438
750
  }
439
751
  startNudgeGradientLoop() {
440
752
  if (this.nudgeGradientRafId)
@@ -477,8 +789,16 @@ const TetCarousel = class {
477
789
  isRightNavigationDisabled() {
478
790
  return this.dotCount <= 1 || this.activeItem === this.totalItems - 1 || this.isLastViewport(-this.dragOffset);
479
791
  }
792
+ isLeftNavigationDisabled() {
793
+ return this.dotCount <= 1 || this.activeItem === 0;
794
+ }
480
795
  isNudgeEligible() {
481
- return !!this.trackElement && !this.isDragging && !this.isNudgeAnimating && !this.hasRecentInteraction() && !this.isRightNavigationDisabled();
796
+ return (!!this.trackElement &&
797
+ !this.isDragging &&
798
+ !this.isNudgeAnimating &&
799
+ !this.hasRecentInteraction() &&
800
+ !this.isRightNavigationDisabled() &&
801
+ this.dragOffset === 0);
482
802
  }
483
803
  scheduleNextNudge() {
484
804
  if (this.nudgeAnimationInterval <= 0)
@@ -530,7 +850,7 @@ const TetCarousel = class {
530
850
  dotIndex = this.dotCount - 1;
531
851
  }
532
852
  else {
533
- dotIndex = Math.floor((position + gradientOffset) / dotScreenLength);
853
+ dotIndex = Math.round((position + gradientOffset) / dotScreenLength);
534
854
  }
535
855
  this.activeDotIndex = this.clampDotIndex(dotIndex);
536
856
  }
@@ -553,47 +873,54 @@ const TetCarousel = class {
553
873
  disconnectedCallback() {
554
874
  this.stopNudgeSchedule();
555
875
  this.stopNudgeGradientLoop();
556
- window.removeEventListener('resize', this.getDotCount.bind(this));
876
+ window.removeEventListener('resize', this.handleResize);
877
+ this.clearManagedSlideFocusableElements();
557
878
  const slot = this.container?.querySelector('slot');
558
879
  if (slot) {
559
- slot.removeEventListener('slotchange', () => this.handleSlotChange());
880
+ slot.removeEventListener('slotchange', this.handleSlotChangeListener);
560
881
  }
561
882
  if (this.slotObserver) {
562
- this.slotObserver?.disconnect();
883
+ this.slotObserver.disconnect();
563
884
  this.slotObserver = null;
564
885
  }
565
886
  document.removeEventListener('pointermove', this.onPointerMove);
566
887
  document.removeEventListener('pointerup', this.onPointerUp);
888
+ document.removeEventListener('pointercancel', this.onPointerUp);
567
889
  }
568
890
  render() {
569
- return (index.h(index.Host, { key: '3a7b181e4c8a1d19777a39ca77197199452e12b5' }, index.h("div", { key: 'f5830e6a8158c0ae5ffddd3cde678223b8e1b51a', class: { 'tet-carousel': true, [`${this.theme}`]: true }, ref: (el) => (this.container = el), part: "carousel" }, index.h("div", { key: '77031caf2348f1a06e757096192cdaa7cadaf3cc', class: "tet-carousel__container" }, index.h("div", { key: 'd514790264ef2b4a7faf66ef9932871525db053a', class: "tet-carousel__gradient-left", ref: (el) => {
891
+ const fullyVisibleItemCount = this.getFullyVisibleItemCount();
892
+ const showButtons = this._showButtons(fullyVisibleItemCount);
893
+ const showDots = this._showDots(fullyVisibleItemCount);
894
+ const showControls = showButtons || showDots;
895
+ let trackTransition = `transform ${this.transitionDuration}ms ${this.transitionTiming}`;
896
+ if (this.isDragging) {
897
+ if (this.dragPointerType === 'mouse') {
898
+ trackTransition = `transform ${TetCarousel.MOUSE_DRAG_SMOOTHING_MS}ms linear`;
899
+ }
900
+ else {
901
+ trackTransition = 'none';
902
+ }
903
+ }
904
+ return (index.h(index.Host, { key: '9767de8c2faf3b0e4830a392c9ba0d86c613646e' }, index.h("div", { key: 'fa87bbfcf929287a5440accd922698d4ad1f6d4b', class: { 'tet-carousel': true, [`${this.theme}`]: true }, ref: (el) => (this.container = el), part: "carousel" }, index.h("div", { key: 'f5650393d39f906e8c47fd299680b09f82b00a07', class: "tet-carousel__container" }, index.h("div", { key: 'f6bd47326c58ef355d35e33c037025e1d5a7b5a8', class: "tet-carousel__gradient-left", ref: (el) => {
570
905
  this.leftGradientRef = el;
571
- } }), index.h("div", { key: 'ced61d4ccfcc5de268ba1da71bccff32ad8ec9f6', class: "tet-carousel__gradient-right", ref: (el) => {
906
+ } }), index.h("div", { key: '685cad2d917518a83c6db28ef451563fe349c218', class: "tet-carousel__gradient-right", ref: (el) => {
572
907
  this.rightGradientRef = el;
573
- } }), index.h("div", { key: 'd76b0c1211165a3ee32adfec02cc109b7d296307', class: `tet-carousel__track ${!this._showButtons() && !this._showDots() ? 'tet-carousel__track--center' : ''}`, ref: (el) => (this.trackElement = el), style: {
574
- transform: `translateX(${this.dragOffset}px)`,
575
- transition: this.isDragging ? 'none' : `transform ${this.transitionDuration}ms ${this.transitionTiming}`
576
- }, onPointerDown: this.onPointerDown, onMouseMove: this.onPointerMove, onPointerUp: this.onPointerUp, onMouseLeave: this.onPointerUp }, index.h("div", { key: '874945906359997e34b179988f05b33d4300b4ae', class: {
908
+ } }), index.h("div", { key: '2f5acf14605c82e42c845766bd50e61a644a6fe6', class: `tet-carousel__track ${showControls ? '' : 'tet-carousel__track--center'}`, ref: (el) => (this.trackElement = el), style: {
909
+ transform: `translate3d(${this.dragOffset}px, 0, 0)`,
910
+ transition: trackTransition,
911
+ willChange: 'transform'
912
+ }, onPointerDown: this.onPointerDown, onPointerUp: this.onPointerUp }, index.h("div", { key: '84bcc48d810f6cd0d15022cdc6d48841187613ad', class: {
577
913
  'tet-carousel__track-content': true,
578
914
  'tet-carousel__track-content--nudge': this.isNudgeAnimating
579
915
  }, ref: (el) => (this.trackContentElement = el), style: {
580
916
  '--tet-carousel-nudge-distance': `${TetCarousel.NUDGE_DISTANCE_PX}px`
581
- }, onAnimationEnd: this.onNudgeAnimationEnd }, index.h("slot", { key: 'c714dd8072438aae03661de4d3dc689fb471e412' })))), !!this.label && index.h("div", { key: '28a233d7c5c7799b0dc505e83616da798deb970c', class: "tet-carousel__label" }, this.label), (this._showButtons() || this._showDots()) && (index.h("div", { key: 'e84c35e48571aa85420686a5e608135610103571', class: "tet-carousel__controls" }, this._showButtons() && (index.h("div", { key: '3222b45cfd3a37deb7a4a572d0523044be1eb1f5', class: "tet-carousel__buttons tet-carousel__buttons--mobile" }, index.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: () => {
582
- if (!this.isDragging)
583
- this.handlePrev();
584
- }, "aria-label": translations.translate('components-carousel-previous'), disabled: this.dotCount <= 1 || this.activeItem === 0 }))), this._showDots() && (index.h("div", { key: 'e205c6a0354ab7a66985759dd95f6f0aa086bba0', class: "tet-carousel__dots" }, Array.from({ length: this.dotCount }).map((_, idx) => (index.h("button", { type: "button", tabIndex: -1, class: `tet-carousel__dot${idx === this.activeDotIndex ? ' active' : ''}`, key: idx, onPointerDown: (e) => e.stopPropagation(), onPointerUp: () => {
585
- if (!this.isDragging)
586
- this.handleDotClick(idx);
587
- }, onClick: () => this.handleDotClick(idx) }))))), this._showButtons() && (index.h("div", { key: 'ff9081c15d417e870db6e5e82f030bc031310027', class: "tet-carousel__buttons" }, index.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: () => {
588
- if (!this.isDragging)
589
- this.handlePrev();
590
- }, accessibilityLabel: translations.translate('components-carousel-previous'), disabled: this.dotCount <= 1 || this.activeItem === 0 }), index.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: () => {
591
- if (!this.isDragging)
592
- this.handleNext();
593
- }, accessibilityLabel: translations.translate('components-carousel-next'), disabled: this.isRightNavigationDisabled() }))))))));
917
+ }, onAnimationEnd: this.onNudgeAnimationEnd }, index.h("slot", { key: '008187ecc9d482ffd1565aaa2c6da818a7bf34ed' })))), !!this.label && index.h("div", { key: 'd040796e5dc156331fdb2356cd7bb20e7900f460', class: "tet-carousel__label" }, this.label), showControls && (index.h("div", { key: '4446a2194185bae6fef623d21790f89346378194', class: "tet-carousel__controls" }, showButtons && (index.h("div", { key: '6c3c10f149b11f9b6503392f16d2d74b526d74c8', class: "tet-carousel__buttons tet-carousel__buttons--mobile", ref: (el) => (this.mobileBackButtonWrapper = el) }, index.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: translations.translate('components-carousel-previous'), disabled: this.isLeftNavigationDisabled() }))), showDots && (index.h("div", { key: 'a747eb625e0bf36603a279f29f17ccac16c2e84c', class: "tet-carousel__dots" }, Array.from({ length: this.dotCount }).map((_, idx) => (index.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
918
+ ? translations.translate('components-carousel-indicator-button-active')
919
+ : translations.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 && (index.h("div", { key: '4ffa948621436b96fb9b8d6b10308ec9aa98dff3', class: "tet-carousel__buttons" }, index.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: translations.translate('components-carousel-previous'), disabled: this.isLeftNavigationDisabled() }), index.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: translations.translate('components-carousel-next'), disabled: this.isRightNavigationDisabled() }))))))));
594
920
  }
595
921
  static get watchers() { return {
596
922
  "language": ["onLanguageChange"],
923
+ "activeItem": ["onActiveItemChange"],
597
924
  "showGradient": ["checkGradient"],
598
925
  "dragOffset": ["checkGradient"],
599
926
  "nudgeAnimationInterval": ["onNudgeAnimIntervalChange"],