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

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