@synergy-design-system/components 1.27.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/README.md +6 -0
  2. package/dist/chunks/{chunk.EBLECPJG.js → chunk.2FG75Q7J.js} +4 -4
  3. package/dist/chunks/{chunk.J5LCVXA5.js → chunk.36SZKAYW.js} +5 -5
  4. package/dist/chunks/{chunk.J5LCVXA5.js.map → chunk.36SZKAYW.js.map} +1 -1
  5. package/dist/chunks/{chunk.BKPZVGJQ.js → chunk.3ABNIRST.js} +3 -3
  6. package/dist/chunks/{chunk.TTS5Z3YN.js → chunk.3HLC4LA4.js} +2 -2
  7. package/dist/chunks/{chunk.JH2RNNHN.js → chunk.3VLVBVTP.js} +10 -10
  8. package/dist/chunks/{chunk.BTBIQMBX.js → chunk.3YSKET4G.js} +2 -2
  9. package/dist/chunks/{chunk.O3YPM3KC.js → chunk.4CZBOBMX.js} +2 -2
  10. package/dist/chunks/{chunk.ZYUVZEJW.js → chunk.4RDYWHUI.js} +2 -2
  11. package/dist/chunks/{chunk.3ZYWXZRL.js → chunk.53Q6SWKS.js} +2 -2
  12. package/dist/chunks/chunk.63OREJEF.js +356 -0
  13. package/dist/chunks/chunk.63OREJEF.js.map +7 -0
  14. package/dist/chunks/{chunk.DF2335CD.js → chunk.6UEMF3N6.js} +4 -4
  15. package/dist/chunks/{chunk.QY3GFWGZ.js → chunk.6XXPHG57.js} +2 -1
  16. package/dist/chunks/{chunk.QY3GFWGZ.js.map → chunk.6XXPHG57.js.map} +2 -2
  17. package/dist/chunks/{chunk.3QPG42BO.js → chunk.74RW2G4A.js} +12 -12
  18. package/dist/chunks/chunk.74RW2G4A.js.map +7 -0
  19. package/dist/chunks/{chunk.ILTSTORV.js → chunk.76N53L44.js} +3 -3
  20. package/dist/chunks/{chunk.TUIMTZS3.js → chunk.7BN75LQX.js} +3 -3
  21. package/dist/chunks/{chunk.QZNE2FOK.js → chunk.7C7XOARZ.js} +2 -2
  22. package/dist/chunks/{chunk.22MYJOLE.js → chunk.7ESCUXNQ.js} +3 -3
  23. package/dist/chunks/chunk.7FKF5RI3.js +12 -0
  24. package/dist/chunks/chunk.7FKF5RI3.js.map +7 -0
  25. package/dist/chunks/{chunk.I2EUWBRS.js → chunk.7KDXBRUI.js} +2 -2
  26. package/dist/chunks/{chunk.WBMLUOGK.js → chunk.7Q7PVXO3.js} +44 -27
  27. package/dist/chunks/chunk.7Q7PVXO3.js.map +7 -0
  28. package/dist/chunks/{chunk.QLDA2CKN.js → chunk.7RF5DYVF.js} +2 -2
  29. package/dist/chunks/{chunk.PYXHGNNO.js → chunk.ABWTBF7U.js} +2 -2
  30. package/dist/chunks/{chunk.RU4ZC6UP.js → chunk.ABZAI4LR.js} +6 -6
  31. package/dist/chunks/{chunk.CWXJ42YP.js → chunk.AM4TRH2T.js} +4 -4
  32. package/dist/chunks/{chunk.WG2QFF66.js → chunk.B7T2GNE3.js} +5 -5
  33. package/dist/chunks/{chunk.MOGGUYYP.js → chunk.BMDVBBSK.js} +3 -3
  34. package/dist/chunks/{chunk.P6KHTL53.js → chunk.C6OY6VJH.js} +2 -2
  35. package/dist/chunks/{chunk.6NKWF633.js → chunk.CK72A4UN.js} +2 -2
  36. package/dist/chunks/{chunk.6FQ4SKI2.js → chunk.CSLZHXEE.js} +2 -2
  37. package/dist/chunks/{chunk.CQF2SSDJ.js → chunk.CXJXUIHE.js} +2 -2
  38. package/dist/chunks/{chunk.SHIBG5ZI.js → chunk.DYLLTTO7.js} +4 -4
  39. package/dist/chunks/{chunk.JVN6QVKB.js → chunk.EPP5MGNJ.js} +3 -3
  40. package/dist/chunks/{chunk.VYQU5NRM.js → chunk.F6HATFB6.js} +3 -3
  41. package/dist/chunks/{chunk.KQHYIQJN.js → chunk.G3RGLGE5.js} +2 -2
  42. package/dist/chunks/{chunk.ULXRBTQD.js → chunk.GC2WQKSX.js} +2 -2
  43. package/dist/chunks/{chunk.3TRBUEJ3.js → chunk.GK2R5VV6.js} +2 -2
  44. package/dist/chunks/{chunk.ZOSQLG4U.js → chunk.GNT5NIFP.js} +6 -6
  45. package/dist/chunks/{chunk.S7G2FNQC.js → chunk.GRPQ7TL2.js} +2 -2
  46. package/dist/chunks/{chunk.ET3NIUTG.js → chunk.HMNKECG7.js} +2 -2
  47. package/dist/chunks/{chunk.VCOQY4Y7.js → chunk.HQUIJTRL.js} +2 -2
  48. package/dist/chunks/{chunk.VHZOV7T4.js → chunk.IFVLU7ZD.js} +2 -2
  49. package/dist/chunks/{chunk.NTXHHR4Y.js → chunk.IJKGJOBG.js} +2 -2
  50. package/dist/chunks/{chunk.GUJCUZXE.js → chunk.IUB3EVHS.js} +2 -2
  51. package/dist/chunks/{chunk.2FONE7D4.js → chunk.IZVJSS3N.js} +2 -2
  52. package/dist/chunks/{chunk.AGPBBA42.js → chunk.J6CJP4LF.js} +3 -3
  53. package/dist/chunks/{chunk.66MOXMDP.js → chunk.JF333ACU.js} +2 -2
  54. package/dist/chunks/{chunk.ZMVR45S6.js → chunk.JMRR5VH7.js} +2 -2
  55. package/dist/chunks/{chunk.IC2DDTSC.js → chunk.JWVUCFMH.js} +2 -2
  56. package/dist/chunks/{chunk.PK3QUCBG.js → chunk.JZHMDO6I.js} +2 -2
  57. package/dist/chunks/{chunk.VX7U6NLG.js → chunk.K3D5B3ZN.js} +2 -2
  58. package/dist/chunks/{chunk.FGE6BQJ3.js → chunk.KGJX3LKJ.js} +2 -2
  59. package/dist/chunks/{chunk.CVQEFENM.js → chunk.LTKXEY4M.js} +2 -2
  60. package/dist/chunks/{chunk.5PFW6CJB.js → chunk.LVTHHB6Y.js} +2 -2
  61. package/dist/chunks/{chunk.GEHO4WRP.js → chunk.M6WH7QEC.js} +2 -2
  62. package/dist/chunks/{chunk.GEHO4WRP.js.map → chunk.M6WH7QEC.js.map} +1 -1
  63. package/dist/chunks/{chunk.54CX4HAW.js → chunk.N3SU4QV7.js} +2 -2
  64. package/dist/chunks/{chunk.XNSEXZCK.js → chunk.NF4C4WLY.js} +2 -2
  65. package/dist/chunks/{chunk.EHOKGWX4.js → chunk.NGI3AJKA.js} +5 -5
  66. package/dist/chunks/chunk.NGI67WXT.js +235 -0
  67. package/dist/chunks/chunk.NGI67WXT.js.map +7 -0
  68. package/dist/chunks/{chunk.ALVUFXV4.js → chunk.NHFTJEYN.js} +2 -2
  69. package/dist/chunks/{chunk.ALVUFXV4.js.map → chunk.NHFTJEYN.js.map} +1 -1
  70. package/dist/chunks/{chunk.5YWK3G4K.js → chunk.NW5K3IBJ.js} +2 -2
  71. package/dist/chunks/chunk.NXTU4OEY.js +12 -0
  72. package/dist/chunks/chunk.NXTU4OEY.js.map +7 -0
  73. package/dist/chunks/chunk.OE4RXQU2.js +92 -0
  74. package/dist/chunks/chunk.OE4RXQU2.js.map +7 -0
  75. package/dist/chunks/{chunk.GO3CCKC3.js → chunk.ONW45GQI.js} +3 -3
  76. package/dist/chunks/chunk.ONW45GQI.js.map +7 -0
  77. package/dist/chunks/{chunk.KPSGO6JT.js → chunk.PGZOI4DU.js} +6 -6
  78. package/dist/chunks/{chunk.CUXUFPU7.js → chunk.PTVHS6BE.js} +3 -3
  79. package/dist/chunks/{chunk.7ERFK5ZT.js → chunk.PX5RMIM2.js} +6 -6
  80. package/dist/chunks/{chunk.7ERFK5ZT.js.map → chunk.PX5RMIM2.js.map} +2 -2
  81. package/dist/chunks/chunk.Q2LICMN2.js +65 -0
  82. package/dist/chunks/chunk.Q2LICMN2.js.map +7 -0
  83. package/dist/chunks/{chunk.LDKF7GK5.js → chunk.QG3EP4DT.js} +3 -3
  84. package/dist/chunks/chunk.QTTBNK5Q.js +192 -0
  85. package/dist/chunks/chunk.QTTBNK5Q.js.map +7 -0
  86. package/dist/chunks/{chunk.UHHXPHZM.js → chunk.QUR6IKYK.js} +2 -2
  87. package/dist/chunks/chunk.QYBARUDC.js +12 -0
  88. package/dist/chunks/chunk.QYBARUDC.js.map +7 -0
  89. package/dist/chunks/{chunk.3WS2ECKG.js → chunk.RESDFE73.js} +4 -4
  90. package/dist/chunks/{chunk.VTKIDI7N.js → chunk.SDQC32B3.js} +5 -3
  91. package/dist/chunks/chunk.SDQC32B3.js.map +7 -0
  92. package/dist/chunks/{chunk.CGOGFD2K.js → chunk.SGA64JW4.js} +2 -2
  93. package/dist/chunks/{chunk.75XQL6PG.js → chunk.SUZB2AJU.js} +4 -4
  94. package/dist/chunks/{chunk.O7UOM5HF.js → chunk.SZFQAOEB.js} +2 -2
  95. package/dist/chunks/{chunk.IODSZKC3.js → chunk.TZCBMMHE.js} +2 -2
  96. package/dist/chunks/{chunk.AORDSCKC.js → chunk.UYPITOFJ.js} +2 -2
  97. package/dist/chunks/{chunk.N6ZPVKHZ.js → chunk.V4G76JVW.js} +6 -6
  98. package/dist/chunks/{chunk.CAVC2BLL.js → chunk.VKFY3IRP.js} +3 -3
  99. package/dist/chunks/{chunk.JM6D5VUH.js → chunk.WFVW45MV.js} +2 -2
  100. package/dist/chunks/chunk.WJ7KOQIH.js +119 -0
  101. package/dist/chunks/chunk.WJ7KOQIH.js.map +7 -0
  102. package/dist/chunks/chunk.WXYS5UVK.js +77 -0
  103. package/dist/chunks/chunk.WXYS5UVK.js.map +7 -0
  104. package/dist/chunks/{chunk.6LNLSUMW.js → chunk.X5ELNELV.js} +4 -4
  105. package/dist/chunks/chunk.XHWYGYMQ.js +13 -0
  106. package/dist/chunks/chunk.XHWYGYMQ.js.map +7 -0
  107. package/dist/chunks/{chunk.DCMV63MP.js → chunk.XMQLJOHH.js} +2 -2
  108. package/dist/chunks/{chunk.U33GULWV.js → chunk.YHWGQZLS.js} +2 -2
  109. package/dist/chunks/chunk.YUHA7UIQ.js +24 -0
  110. package/dist/chunks/chunk.YUHA7UIQ.js.map +7 -0
  111. package/dist/chunks/{chunk.YGWAASPJ.js → chunk.Z5MQOTP5.js} +2 -2
  112. package/dist/chunks/{chunk.FNQSNNJR.js → chunk.ZV7LSX6O.js} +2 -2
  113. package/dist/chunks/{chunk.7XHOKC22.js → chunk.ZZY64J7L.js} +2 -2
  114. package/dist/components/alert/alert.component.js +9 -9
  115. package/dist/components/alert/alert.js +10 -10
  116. package/dist/components/badge/badge.component.js +5 -5
  117. package/dist/components/badge/badge.js +6 -6
  118. package/dist/components/breadcrumb/breadcrumb.component.js +7 -7
  119. package/dist/components/breadcrumb/breadcrumb.js +8 -8
  120. package/dist/components/breadcrumb-item/breadcrumb-item.component.js +2 -2
  121. package/dist/components/breadcrumb-item/breadcrumb-item.js +3 -3
  122. package/dist/components/button/button.component.js +8 -8
  123. package/dist/components/button/button.js +9 -9
  124. package/dist/components/button-group/button-group.component.js +2 -2
  125. package/dist/components/button-group/button-group.js +3 -3
  126. package/dist/components/card/card.component.d.ts +2 -2
  127. package/dist/components/card/card.component.js +3 -3
  128. package/dist/components/card/card.custom.styles.js +1 -1
  129. package/dist/components/card/card.js +4 -4
  130. package/dist/components/checkbox/checkbox.component.js +5 -5
  131. package/dist/components/checkbox/checkbox.js +6 -6
  132. package/dist/components/dialog/dialog.component.js +8 -8
  133. package/dist/components/dialog/dialog.js +9 -9
  134. package/dist/components/divider/divider.component.js +2 -2
  135. package/dist/components/divider/divider.js +3 -3
  136. package/dist/components/drawer/drawer.component.js +8 -8
  137. package/dist/components/drawer/drawer.js +9 -9
  138. package/dist/components/dropdown/dropdown.component.js +5 -5
  139. package/dist/components/dropdown/dropdown.js +6 -6
  140. package/dist/components/header/header.component.d.ts +26 -18
  141. package/dist/components/header/header.component.js +8 -8
  142. package/dist/components/header/header.js +9 -9
  143. package/dist/components/icon/icon.component.js +4 -4
  144. package/dist/components/icon/icon.js +5 -5
  145. package/dist/components/icon/library.js +2 -2
  146. package/dist/components/icon/library.system.js +1 -1
  147. package/dist/components/icon-button/icon-button.component.js +5 -5
  148. package/dist/components/icon-button/icon-button.js +6 -6
  149. package/dist/components/input/input.component.js +8 -8
  150. package/dist/components/input/input.js +9 -9
  151. package/dist/components/menu/menu.component.js +2 -2
  152. package/dist/components/menu/menu.js +3 -3
  153. package/dist/components/menu-item/menu-item.component.js +9 -9
  154. package/dist/components/menu-item/menu-item.js +10 -10
  155. package/dist/components/menu-item/submenu-controller.js +2 -2
  156. package/dist/components/menu-label/menu-label.component.js +3 -3
  157. package/dist/components/menu-label/menu-label.js +4 -4
  158. package/dist/components/nav-item/nav-item.component.js +3 -3
  159. package/dist/components/nav-item/nav-item.js +4 -4
  160. package/dist/components/optgroup/optgroup.component.js +3 -3
  161. package/dist/components/optgroup/optgroup.js +4 -4
  162. package/dist/components/option/option.component.js +7 -7
  163. package/dist/components/option/option.js +8 -8
  164. package/dist/components/popup/popup.component.js +2 -2
  165. package/dist/components/popup/popup.js +3 -3
  166. package/dist/components/prio-nav/prio-nav.component.d.ts +1 -5
  167. package/dist/components/prio-nav/prio-nav.component.js +12 -12
  168. package/dist/components/prio-nav/prio-nav.js +13 -13
  169. package/dist/components/progress-bar/progress-bar.component.js +4 -4
  170. package/dist/components/progress-bar/progress-bar.js +5 -5
  171. package/dist/components/progress-ring/progress-ring.component.js +4 -4
  172. package/dist/components/progress-ring/progress-ring.js +5 -5
  173. package/dist/components/radio/radio.component.js +5 -5
  174. package/dist/components/radio/radio.js +6 -6
  175. package/dist/components/radio-button/radio-button.component.js +2 -2
  176. package/dist/components/radio-button/radio-button.js +3 -3
  177. package/dist/components/radio-group/radio-group.component.js +3 -3
  178. package/dist/components/radio-group/radio-group.js +4 -4
  179. package/dist/components/select/select.component.js +10 -10
  180. package/dist/components/select/select.js +11 -11
  181. package/dist/components/side-nav/side-nav.component.js +11 -11
  182. package/dist/components/side-nav/side-nav.js +12 -12
  183. package/dist/components/side-nav/side-nav.styles.js +1 -1
  184. package/dist/components/spinner/spinner.component.js +4 -4
  185. package/dist/components/spinner/spinner.js +5 -5
  186. package/dist/components/switch/switch.component.js +2 -2
  187. package/dist/components/switch/switch.js +3 -3
  188. package/dist/components/tab/tab.component.d.ts +51 -0
  189. package/dist/components/tab/tab.component.js +24 -0
  190. package/dist/components/tab/tab.component.js.map +7 -0
  191. package/dist/components/tab/tab.custom.styles.d.ts +2 -0
  192. package/dist/components/tab/tab.custom.styles.js +8 -0
  193. package/dist/components/tab/tab.custom.styles.js.map +7 -0
  194. package/dist/components/tab/tab.d.ts +8 -0
  195. package/dist/components/tab/tab.js +25 -0
  196. package/dist/components/tab/tab.js.map +7 -0
  197. package/dist/components/tab/tab.styles.d.ts +2 -0
  198. package/dist/components/tab/tab.styles.js +8 -0
  199. package/dist/components/tab/tab.styles.js.map +7 -0
  200. package/dist/components/tab-group/tab-group.component.d.ts +85 -0
  201. package/dist/components/tab-group/tab-group.component.js +25 -0
  202. package/dist/components/tab-group/tab-group.component.js.map +7 -0
  203. package/dist/components/tab-group/tab-group.custom.styles.d.ts +2 -0
  204. package/dist/components/tab-group/tab-group.custom.styles.js +8 -0
  205. package/dist/components/tab-group/tab-group.custom.styles.js.map +7 -0
  206. package/dist/components/tab-group/tab-group.d.ts +8 -0
  207. package/dist/components/tab-group/tab-group.js +26 -0
  208. package/dist/components/tab-group/tab-group.js.map +7 -0
  209. package/dist/components/tab-group/tab-group.styles.d.ts +2 -0
  210. package/dist/components/tab-group/tab-group.styles.js +8 -0
  211. package/dist/components/tab-group/tab-group.styles.js.map +7 -0
  212. package/dist/components/tab-panel/tab-panel.component.d.ts +26 -0
  213. package/dist/components/tab-panel/tab-panel.component.js +12 -0
  214. package/dist/components/tab-panel/tab-panel.component.js.map +7 -0
  215. package/dist/components/tab-panel/tab-panel.custom.styles.d.ts +2 -0
  216. package/dist/components/tab-panel/tab-panel.custom.styles.js +8 -0
  217. package/dist/components/tab-panel/tab-panel.custom.styles.js.map +7 -0
  218. package/dist/components/tab-panel/tab-panel.d.ts +8 -0
  219. package/dist/components/tab-panel/tab-panel.js +13 -0
  220. package/dist/components/tab-panel/tab-panel.js.map +7 -0
  221. package/dist/components/tab-panel/tab-panel.styles.d.ts +2 -0
  222. package/dist/components/tab-panel/tab-panel.styles.js +8 -0
  223. package/dist/components/tab-panel/tab-panel.styles.js.map +7 -0
  224. package/dist/components/tag/tag.component.js +8 -8
  225. package/dist/components/tag/tag.js +9 -9
  226. package/dist/components/textarea/textarea.component.js +2 -2
  227. package/dist/components/textarea/textarea.js +3 -3
  228. package/dist/components/tooltip/tooltip.component.js +5 -5
  229. package/dist/components/tooltip/tooltip.js +6 -6
  230. package/dist/custom-elements.json +834 -81
  231. package/dist/events/events.d.ts +6 -2
  232. package/dist/events/syn-burger-menu-closed.d.ts +6 -0
  233. package/dist/events/syn-burger-menu-hidden.d.ts +6 -0
  234. package/dist/events/syn-burger-menu-open.d.ts +6 -0
  235. package/dist/events/syn-close.d.ts +6 -0
  236. package/dist/events/syn-tab-hide.d.ts +8 -0
  237. package/dist/events/syn-tab-show.d.ts +8 -0
  238. package/dist/internal/test/element-visible-overflow.d.ts +11 -0
  239. package/dist/internal/test/wait-for-scrolling.d.ts +9 -0
  240. package/dist/synergy.d.ts +3 -0
  241. package/dist/synergy.js +111 -90
  242. package/dist/translations/de.js +5 -4
  243. package/dist/translations/de.js.map +2 -2
  244. package/dist/translations/en.js +1 -1
  245. package/dist/utilities/icon-library.js +2 -2
  246. package/dist/utilities/localize.d.ts +1 -0
  247. package/dist/utilities/localize.js +2 -2
  248. package/dist/vscode.html-custom-data.json +103 -19
  249. package/package.json +5 -5
  250. package/dist/chunks/chunk.3QPG42BO.js.map +0 -7
  251. package/dist/chunks/chunk.GO3CCKC3.js.map +0 -7
  252. package/dist/chunks/chunk.VTKIDI7N.js.map +0 -7
  253. package/dist/chunks/chunk.WBMLUOGK.js.map +0 -7
  254. package/dist/events/syn-burger-menu-hide.d.ts +0 -6
  255. package/dist/events/syn-burger-menu-show.d.ts +0 -6
  256. /package/dist/chunks/{chunk.EBLECPJG.js.map → chunk.2FG75Q7J.js.map} +0 -0
  257. /package/dist/chunks/{chunk.BKPZVGJQ.js.map → chunk.3ABNIRST.js.map} +0 -0
  258. /package/dist/chunks/{chunk.TTS5Z3YN.js.map → chunk.3HLC4LA4.js.map} +0 -0
  259. /package/dist/chunks/{chunk.JH2RNNHN.js.map → chunk.3VLVBVTP.js.map} +0 -0
  260. /package/dist/chunks/{chunk.BTBIQMBX.js.map → chunk.3YSKET4G.js.map} +0 -0
  261. /package/dist/chunks/{chunk.O3YPM3KC.js.map → chunk.4CZBOBMX.js.map} +0 -0
  262. /package/dist/chunks/{chunk.ZYUVZEJW.js.map → chunk.4RDYWHUI.js.map} +0 -0
  263. /package/dist/chunks/{chunk.3ZYWXZRL.js.map → chunk.53Q6SWKS.js.map} +0 -0
  264. /package/dist/chunks/{chunk.DF2335CD.js.map → chunk.6UEMF3N6.js.map} +0 -0
  265. /package/dist/chunks/{chunk.ILTSTORV.js.map → chunk.76N53L44.js.map} +0 -0
  266. /package/dist/chunks/{chunk.TUIMTZS3.js.map → chunk.7BN75LQX.js.map} +0 -0
  267. /package/dist/chunks/{chunk.QZNE2FOK.js.map → chunk.7C7XOARZ.js.map} +0 -0
  268. /package/dist/chunks/{chunk.22MYJOLE.js.map → chunk.7ESCUXNQ.js.map} +0 -0
  269. /package/dist/chunks/{chunk.I2EUWBRS.js.map → chunk.7KDXBRUI.js.map} +0 -0
  270. /package/dist/chunks/{chunk.QLDA2CKN.js.map → chunk.7RF5DYVF.js.map} +0 -0
  271. /package/dist/chunks/{chunk.PYXHGNNO.js.map → chunk.ABWTBF7U.js.map} +0 -0
  272. /package/dist/chunks/{chunk.RU4ZC6UP.js.map → chunk.ABZAI4LR.js.map} +0 -0
  273. /package/dist/chunks/{chunk.CWXJ42YP.js.map → chunk.AM4TRH2T.js.map} +0 -0
  274. /package/dist/chunks/{chunk.WG2QFF66.js.map → chunk.B7T2GNE3.js.map} +0 -0
  275. /package/dist/chunks/{chunk.MOGGUYYP.js.map → chunk.BMDVBBSK.js.map} +0 -0
  276. /package/dist/chunks/{chunk.P6KHTL53.js.map → chunk.C6OY6VJH.js.map} +0 -0
  277. /package/dist/chunks/{chunk.6NKWF633.js.map → chunk.CK72A4UN.js.map} +0 -0
  278. /package/dist/chunks/{chunk.6FQ4SKI2.js.map → chunk.CSLZHXEE.js.map} +0 -0
  279. /package/dist/chunks/{chunk.CQF2SSDJ.js.map → chunk.CXJXUIHE.js.map} +0 -0
  280. /package/dist/chunks/{chunk.SHIBG5ZI.js.map → chunk.DYLLTTO7.js.map} +0 -0
  281. /package/dist/chunks/{chunk.JVN6QVKB.js.map → chunk.EPP5MGNJ.js.map} +0 -0
  282. /package/dist/chunks/{chunk.VYQU5NRM.js.map → chunk.F6HATFB6.js.map} +0 -0
  283. /package/dist/chunks/{chunk.KQHYIQJN.js.map → chunk.G3RGLGE5.js.map} +0 -0
  284. /package/dist/chunks/{chunk.ULXRBTQD.js.map → chunk.GC2WQKSX.js.map} +0 -0
  285. /package/dist/chunks/{chunk.3TRBUEJ3.js.map → chunk.GK2R5VV6.js.map} +0 -0
  286. /package/dist/chunks/{chunk.ZOSQLG4U.js.map → chunk.GNT5NIFP.js.map} +0 -0
  287. /package/dist/chunks/{chunk.S7G2FNQC.js.map → chunk.GRPQ7TL2.js.map} +0 -0
  288. /package/dist/chunks/{chunk.ET3NIUTG.js.map → chunk.HMNKECG7.js.map} +0 -0
  289. /package/dist/chunks/{chunk.VCOQY4Y7.js.map → chunk.HQUIJTRL.js.map} +0 -0
  290. /package/dist/chunks/{chunk.VHZOV7T4.js.map → chunk.IFVLU7ZD.js.map} +0 -0
  291. /package/dist/chunks/{chunk.NTXHHR4Y.js.map → chunk.IJKGJOBG.js.map} +0 -0
  292. /package/dist/chunks/{chunk.GUJCUZXE.js.map → chunk.IUB3EVHS.js.map} +0 -0
  293. /package/dist/chunks/{chunk.2FONE7D4.js.map → chunk.IZVJSS3N.js.map} +0 -0
  294. /package/dist/chunks/{chunk.AGPBBA42.js.map → chunk.J6CJP4LF.js.map} +0 -0
  295. /package/dist/chunks/{chunk.66MOXMDP.js.map → chunk.JF333ACU.js.map} +0 -0
  296. /package/dist/chunks/{chunk.ZMVR45S6.js.map → chunk.JMRR5VH7.js.map} +0 -0
  297. /package/dist/chunks/{chunk.IC2DDTSC.js.map → chunk.JWVUCFMH.js.map} +0 -0
  298. /package/dist/chunks/{chunk.PK3QUCBG.js.map → chunk.JZHMDO6I.js.map} +0 -0
  299. /package/dist/chunks/{chunk.VX7U6NLG.js.map → chunk.K3D5B3ZN.js.map} +0 -0
  300. /package/dist/chunks/{chunk.FGE6BQJ3.js.map → chunk.KGJX3LKJ.js.map} +0 -0
  301. /package/dist/chunks/{chunk.CVQEFENM.js.map → chunk.LTKXEY4M.js.map} +0 -0
  302. /package/dist/chunks/{chunk.5PFW6CJB.js.map → chunk.LVTHHB6Y.js.map} +0 -0
  303. /package/dist/chunks/{chunk.54CX4HAW.js.map → chunk.N3SU4QV7.js.map} +0 -0
  304. /package/dist/chunks/{chunk.XNSEXZCK.js.map → chunk.NF4C4WLY.js.map} +0 -0
  305. /package/dist/chunks/{chunk.EHOKGWX4.js.map → chunk.NGI3AJKA.js.map} +0 -0
  306. /package/dist/chunks/{chunk.5YWK3G4K.js.map → chunk.NW5K3IBJ.js.map} +0 -0
  307. /package/dist/chunks/{chunk.KPSGO6JT.js.map → chunk.PGZOI4DU.js.map} +0 -0
  308. /package/dist/chunks/{chunk.CUXUFPU7.js.map → chunk.PTVHS6BE.js.map} +0 -0
  309. /package/dist/chunks/{chunk.LDKF7GK5.js.map → chunk.QG3EP4DT.js.map} +0 -0
  310. /package/dist/chunks/{chunk.UHHXPHZM.js.map → chunk.QUR6IKYK.js.map} +0 -0
  311. /package/dist/chunks/{chunk.3WS2ECKG.js.map → chunk.RESDFE73.js.map} +0 -0
  312. /package/dist/chunks/{chunk.CGOGFD2K.js.map → chunk.SGA64JW4.js.map} +0 -0
  313. /package/dist/chunks/{chunk.75XQL6PG.js.map → chunk.SUZB2AJU.js.map} +0 -0
  314. /package/dist/chunks/{chunk.O7UOM5HF.js.map → chunk.SZFQAOEB.js.map} +0 -0
  315. /package/dist/chunks/{chunk.IODSZKC3.js.map → chunk.TZCBMMHE.js.map} +0 -0
  316. /package/dist/chunks/{chunk.AORDSCKC.js.map → chunk.UYPITOFJ.js.map} +0 -0
  317. /package/dist/chunks/{chunk.N6ZPVKHZ.js.map → chunk.V4G76JVW.js.map} +0 -0
  318. /package/dist/chunks/{chunk.CAVC2BLL.js.map → chunk.VKFY3IRP.js.map} +0 -0
  319. /package/dist/chunks/{chunk.JM6D5VUH.js.map → chunk.WFVW45MV.js.map} +0 -0
  320. /package/dist/chunks/{chunk.6LNLSUMW.js.map → chunk.X5ELNELV.js.map} +0 -0
  321. /package/dist/chunks/{chunk.DCMV63MP.js.map → chunk.XMQLJOHH.js.map} +0 -0
  322. /package/dist/chunks/{chunk.U33GULWV.js.map → chunk.YHWGQZLS.js.map} +0 -0
  323. /package/dist/chunks/{chunk.YGWAASPJ.js.map → chunk.Z5MQOTP5.js.map} +0 -0
  324. /package/dist/chunks/{chunk.FNQSNNJR.js.map → chunk.ZV7LSX6O.js.map} +0 -0
  325. /package/dist/chunks/{chunk.7XHOKC22.js.map → chunk.ZZY64J7L.js.map} +0 -0
package/README.md CHANGED
@@ -161,6 +161,12 @@ This package ships with a [custom-elements-manifest](https://github.com/webcompo
161
161
 
162
162
  ---
163
163
 
164
+ ### 6. Breaking changes between major versions
165
+
166
+ Please have a look at the official [breaking changes list](https://synergy-design-system.github.io/?path=/docs/packages-components-breaking-changes--docs) for information how to update to new major versions of Synergy.
167
+
168
+ ---
169
+
164
170
  ## Local setup
165
171
 
166
172
  ### Using the vendor cli
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk.RIJKFEYZ.js";
14
14
  import {
15
15
  SynIconButton
16
- } from "./chunk.TUIMTZS3.js";
16
+ } from "./chunk.7BN75LQX.js";
17
17
  import {
18
18
  animateTo,
19
19
  stopAnimations,
@@ -31,11 +31,11 @@ import {
31
31
  } from "./chunk.AVTU2BGE.js";
32
32
  import {
33
33
  LocalizeController
34
- } from "./chunk.GEHO4WRP.js";
34
+ } from "./chunk.M6WH7QEC.js";
35
35
  import {
36
36
  SynergyElement,
37
37
  component_styles_default
38
- } from "./chunk.ALVUFXV4.js";
38
+ } from "./chunk.NHFTJEYN.js";
39
39
  import {
40
40
  __decorateClass
41
41
  } from "./chunk.QNDC5KWA.js";
@@ -391,4 +391,4 @@ setDefaultAnimation("drawer.overlay.hide", {
391
391
  export {
392
392
  SynDrawer
393
393
  };
394
- //# sourceMappingURL=chunk.EBLECPJG.js.map
394
+ //# sourceMappingURL=chunk.2FG75Q7J.js.map
@@ -39,16 +39,16 @@ var card_custom_styles_default = css`
39
39
  }
40
40
 
41
41
  /**
42
- * Cards that are nested do not receive a border radius
42
+ * Cards that are sharp do not receive a border radius
43
43
  */
44
- .card--nested {
44
+ .card--sharp {
45
45
  border-radius: var(--syn-border-radius-none);
46
46
  }
47
47
 
48
48
  /**
49
- * Do not apply border radius to nested card images
49
+ * Do not apply border radius to sharp card images
50
50
  */
51
- .card--nested .card__image {
51
+ .card--sharp .card__image {
52
52
  border-top-left-radius: var(--syn-border-radius-none);
53
53
  border-top-right-radius: var(--syn-border-radius-none);
54
54
  }
@@ -58,4 +58,4 @@ var card_custom_styles_default = css`
58
58
  export {
59
59
  card_custom_styles_default
60
60
  };
61
- //# sourceMappingURL=chunk.J5LCVXA5.js.map
61
+ //# sourceMappingURL=chunk.36SZKAYW.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/card/card.custom.styles.ts"],
4
- "sourcesContent": ["import { css } from 'lit';\n\nexport default css`\n :host {\n --border-color: var(--syn-color-neutral-300);\n --border-width: var(--syn-border-width-small);\n --border-radius: var(--syn-border-radius-medium);\n }\n\n .card {\n box-shadow: none;\n }\n\n /**\n * Header adjustments\n */\n .card__header {\n border: none;\n color: var(--syn-typography-color-text);\n font: var(--syn-heading-large);\n line-height: var(--syn-line-height-normal);\n }\n\n /**\n * Card body\n */\n .card__body,\n .card__body::slotted(*) {\n color: var(--syn-typography-color-text);\n font: var(--syn-body-medium-regular);\n }\n\n /**\n * Card Footer\n */\n .card--has-footer .card__footer {\n border-top: none;\n padding: var(--syn-spacing-x-small) var(--syn-spacing-large) var(--syn-spacing-large);\n }\n\n /**\n * Cards that are nested do not receive a border radius\n */\n .card--nested {\n border-radius: var(--syn-border-radius-none);\n }\n\n /**\n * Do not apply border radius to nested card images\n */\n .card--nested .card__image {\n border-top-left-radius: var(--syn-border-radius-none);\n border-top-right-radius: var(--syn-border-radius-none);\n }\n\n`;\n"],
4
+ "sourcesContent": ["import { css } from 'lit';\n\nexport default css`\n :host {\n --border-color: var(--syn-color-neutral-300);\n --border-width: var(--syn-border-width-small);\n --border-radius: var(--syn-border-radius-medium);\n }\n\n .card {\n box-shadow: none;\n }\n\n /**\n * Header adjustments\n */\n .card__header {\n border: none;\n color: var(--syn-typography-color-text);\n font: var(--syn-heading-large);\n line-height: var(--syn-line-height-normal);\n }\n\n /**\n * Card body\n */\n .card__body,\n .card__body::slotted(*) {\n color: var(--syn-typography-color-text);\n font: var(--syn-body-medium-regular);\n }\n\n /**\n * Card Footer\n */\n .card--has-footer .card__footer {\n border-top: none;\n padding: var(--syn-spacing-x-small) var(--syn-spacing-large) var(--syn-spacing-large);\n }\n\n /**\n * Cards that are sharp do not receive a border radius\n */\n .card--sharp {\n border-radius: var(--syn-border-radius-none);\n }\n\n /**\n * Do not apply border radius to sharp card images\n */\n .card--sharp .card__image {\n border-top-left-radius: var(--syn-border-radius-none);\n border-top-right-radius: var(--syn-border-radius-none);\n }\n\n`;\n"],
5
5
  "mappings": ";AAAA,SAAS,WAAW;AAEpB,IAAO,6BAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -6,14 +6,14 @@ import {
6
6
  } from "./chunk.PKO6FEOM.js";
7
7
  import {
8
8
  SynIcon
9
- } from "./chunk.JVN6QVKB.js";
9
+ } from "./chunk.EPP5MGNJ.js";
10
10
  import {
11
11
  watch
12
12
  } from "./chunk.AVTU2BGE.js";
13
13
  import {
14
14
  SynergyElement,
15
15
  component_styles_default
16
- } from "./chunk.ALVUFXV4.js";
16
+ } from "./chunk.NHFTJEYN.js";
17
17
  import {
18
18
  __decorateClass
19
19
  } from "./chunk.QNDC5KWA.js";
@@ -112,4 +112,4 @@ __decorateClass([
112
112
  export {
113
113
  SynRadio
114
114
  };
115
- //# sourceMappingURL=chunk.BKPZVGJQ.js.map
115
+ //# sourceMappingURL=chunk.3ABNIRST.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynPopup
3
- } from "./chunk.UHHXPHZM.js";
3
+ } from "./chunk.QUR6IKYK.js";
4
4
 
5
5
  // src/components/popup/popup.ts
6
6
  var popup_default = SynPopup;
@@ -9,4 +9,4 @@ SynPopup.define("syn-popup");
9
9
  export {
10
10
  popup_default
11
11
  };
12
- //# sourceMappingURL=chunk.TTS5Z3YN.js.map
12
+ //# sourceMappingURL=chunk.3HLC4LA4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynIconButton
3
- } from "./chunk.TUIMTZS3.js";
3
+ } from "./chunk.7BN75LQX.js";
4
4
  import {
5
5
  animateTo,
6
6
  stopAnimations,
@@ -10,25 +10,25 @@ import {
10
10
  getAnimation,
11
11
  setDefaultAnimation
12
12
  } from "./chunk.QAUTITK3.js";
13
+ import {
14
+ alert_styles_default
15
+ } from "./chunk.PS4UJFYT.js";
13
16
  import {
14
17
  HasSlotController
15
18
  } from "./chunk.66WXVGAW.js";
16
19
  import {
17
20
  watch
18
21
  } from "./chunk.AVTU2BGE.js";
19
- import {
20
- alert_custom_styles_default
21
- } from "./chunk.JRYXECAY.js";
22
- import {
23
- alert_styles_default
24
- } from "./chunk.PS4UJFYT.js";
25
22
  import {
26
23
  LocalizeController
27
- } from "./chunk.GEHO4WRP.js";
24
+ } from "./chunk.M6WH7QEC.js";
28
25
  import {
29
26
  SynergyElement,
30
27
  component_styles_default
31
- } from "./chunk.ALVUFXV4.js";
28
+ } from "./chunk.NHFTJEYN.js";
29
+ import {
30
+ alert_custom_styles_default
31
+ } from "./chunk.JRYXECAY.js";
32
32
  import {
33
33
  __decorateClass
34
34
  } from "./chunk.QNDC5KWA.js";
@@ -214,4 +214,4 @@ setDefaultAnimation("alert.hide", {
214
214
  export {
215
215
  SynAlert
216
216
  };
217
- //# sourceMappingURL=chunk.JH2RNNHN.js.map
217
+ //# sourceMappingURL=chunk.3VLVBVTP.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynTextarea
3
- } from "./chunk.VX7U6NLG.js";
3
+ } from "./chunk.K3D5B3ZN.js";
4
4
 
5
5
  // src/components/textarea/textarea.ts
6
6
  var textarea_default = SynTextarea;
@@ -9,4 +9,4 @@ SynTextarea.define("syn-textarea");
9
9
  export {
10
10
  textarea_default
11
11
  };
12
- //# sourceMappingURL=chunk.BTBIQMBX.js.map
12
+ //# sourceMappingURL=chunk.3YSKET4G.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynBreadcrumbItem
3
- } from "./chunk.QLDA2CKN.js";
3
+ } from "./chunk.7RF5DYVF.js";
4
4
 
5
5
  // src/components/breadcrumb-item/breadcrumb-item.ts
6
6
  var breadcrumb_item_default = SynBreadcrumbItem;
@@ -9,4 +9,4 @@ SynBreadcrumbItem.define("syn-breadcrumb-item");
9
9
  export {
10
10
  breadcrumb_item_default
11
11
  };
12
- //# sourceMappingURL=chunk.O3YPM3KC.js.map
12
+ //# sourceMappingURL=chunk.4CZBOBMX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynRadioButton
3
- } from "./chunk.O7UOM5HF.js";
3
+ } from "./chunk.SZFQAOEB.js";
4
4
 
5
5
  // src/components/radio-button/radio-button.ts
6
6
  var radio_button_default = SynRadioButton;
@@ -9,4 +9,4 @@ SynRadioButton.define("syn-radio-button");
9
9
  export {
10
10
  radio_button_default
11
11
  };
12
- //# sourceMappingURL=chunk.ZYUVZEJW.js.map
12
+ //# sourceMappingURL=chunk.4RDYWHUI.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynBreadcrumb
3
- } from "./chunk.SHIBG5ZI.js";
3
+ } from "./chunk.DYLLTTO7.js";
4
4
 
5
5
  // src/components/breadcrumb/breadcrumb.ts
6
6
  var breadcrumb_default = SynBreadcrumb;
@@ -9,4 +9,4 @@ SynBreadcrumb.define("syn-breadcrumb");
9
9
  export {
10
10
  breadcrumb_default
11
11
  };
12
- //# sourceMappingURL=chunk.3ZYWXZRL.js.map
12
+ //# sourceMappingURL=chunk.53Q6SWKS.js.map
@@ -0,0 +1,356 @@
1
+ import {
2
+ tab_group_custom_styles_default
3
+ } from "./chunk.NGI67WXT.js";
4
+ import {
5
+ tab_group_styles_default
6
+ } from "./chunk.QTTBNK5Q.js";
7
+ import {
8
+ scrollIntoView
9
+ } from "./chunk.RIJKFEYZ.js";
10
+ import {
11
+ SynIconButton
12
+ } from "./chunk.7BN75LQX.js";
13
+ import {
14
+ watch
15
+ } from "./chunk.AVTU2BGE.js";
16
+ import {
17
+ LocalizeController
18
+ } from "./chunk.M6WH7QEC.js";
19
+ import {
20
+ SynergyElement,
21
+ component_styles_default
22
+ } from "./chunk.NHFTJEYN.js";
23
+ import {
24
+ __decorateClass,
25
+ __spreadValues
26
+ } from "./chunk.QNDC5KWA.js";
27
+
28
+ // src/components/tab-group/tab-group.component.ts
29
+ import { classMap } from "lit/directives/class-map.js";
30
+ import { html } from "lit";
31
+ import { property, query, state } from "lit/decorators.js";
32
+ var SynTabGroup = class extends SynergyElement {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.localize = new LocalizeController(this);
36
+ this.tabs = [];
37
+ this.panels = [];
38
+ this.hasScrollControls = false;
39
+ this.placement = "top";
40
+ this.activation = "auto";
41
+ this.noScrollControls = false;
42
+ this.contained = false;
43
+ this.sharp = false;
44
+ }
45
+ connectedCallback() {
46
+ const whenAllDefined = Promise.all([
47
+ customElements.whenDefined("syn-tab"),
48
+ customElements.whenDefined("syn-tab-panel")
49
+ ]);
50
+ super.connectedCallback();
51
+ this.resizeObserver = new ResizeObserver(() => {
52
+ this.repositionIndicator();
53
+ this.updateScrollControls();
54
+ });
55
+ this.mutationObserver = new MutationObserver((mutations) => {
56
+ if (mutations.some((m) => !["aria-labelledby", "aria-controls"].includes(m.attributeName))) {
57
+ setTimeout(() => this.setAriaLabels());
58
+ }
59
+ if (mutations.some((m) => m.attributeName === "disabled")) {
60
+ this.syncTabsAndPanels();
61
+ }
62
+ });
63
+ this.updateComplete.then(() => {
64
+ this.syncTabsAndPanels();
65
+ this.mutationObserver.observe(this, { attributes: true, childList: true, subtree: true });
66
+ this.resizeObserver.observe(this.nav);
67
+ whenAllDefined.then(() => {
68
+ const intersectionObserver = new IntersectionObserver((entries, observer) => {
69
+ var _a;
70
+ if (entries[0].intersectionRatio > 0) {
71
+ this.setAriaLabels();
72
+ this.setActiveTab((_a = this.getActiveTab()) != null ? _a : this.tabs[0], { emitEvents: false });
73
+ observer.unobserve(entries[0].target);
74
+ }
75
+ });
76
+ intersectionObserver.observe(this.tabGroup);
77
+ });
78
+ });
79
+ }
80
+ disconnectedCallback() {
81
+ super.disconnectedCallback();
82
+ this.mutationObserver.disconnect();
83
+ this.resizeObserver.unobserve(this.nav);
84
+ }
85
+ getAllTabs(options = { includeDisabled: true }) {
86
+ const slot = this.shadowRoot.querySelector('slot[name="nav"]');
87
+ return [...slot.assignedElements()].filter((el) => {
88
+ return options.includeDisabled ? el.tagName.toLowerCase() === "syn-tab" : el.tagName.toLowerCase() === "syn-tab" && !el.disabled;
89
+ });
90
+ }
91
+ getAllPanels() {
92
+ return [...this.body.assignedElements()].filter((el) => el.tagName.toLowerCase() === "syn-tab-panel");
93
+ }
94
+ getActiveTab() {
95
+ return this.tabs.find((el) => el.active);
96
+ }
97
+ handleClick(event) {
98
+ const target = event.target;
99
+ const tab = target.closest("syn-tab");
100
+ const tabGroup = tab == null ? void 0 : tab.closest("syn-tab-group");
101
+ if (tabGroup !== this) {
102
+ return;
103
+ }
104
+ if (tab !== null) {
105
+ this.setActiveTab(tab, { scrollBehavior: "smooth" });
106
+ }
107
+ }
108
+ handleKeyDown(event) {
109
+ const target = event.target;
110
+ const tab = target.closest("syn-tab");
111
+ const tabGroup = tab == null ? void 0 : tab.closest("syn-tab-group");
112
+ if (tabGroup !== this) {
113
+ return;
114
+ }
115
+ if (["Enter", " "].includes(event.key)) {
116
+ if (tab !== null) {
117
+ this.setActiveTab(tab, { scrollBehavior: "smooth" });
118
+ event.preventDefault();
119
+ }
120
+ }
121
+ if (["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "Home", "End"].includes(event.key)) {
122
+ const activeEl = this.tabs.find((t) => t.matches(":focus"));
123
+ const isRtl = this.localize.dir() === "rtl";
124
+ if ((activeEl == null ? void 0 : activeEl.tagName.toLowerCase()) === "syn-tab") {
125
+ let index = this.tabs.indexOf(activeEl);
126
+ if (event.key === "Home") {
127
+ index = 0;
128
+ } else if (event.key === "End") {
129
+ index = this.tabs.length - 1;
130
+ } else if (["top"].includes(this.placement) && event.key === (isRtl ? "ArrowRight" : "ArrowLeft") || ["start", "end"].includes(this.placement) && event.key === "ArrowUp") {
131
+ index--;
132
+ } else if (["top"].includes(this.placement) && event.key === (isRtl ? "ArrowLeft" : "ArrowRight") || ["start", "end"].includes(this.placement) && event.key === "ArrowDown") {
133
+ index++;
134
+ }
135
+ if (index < 0) {
136
+ index = this.tabs.length - 1;
137
+ }
138
+ if (index > this.tabs.length - 1) {
139
+ index = 0;
140
+ }
141
+ this.tabs[index].focus({ preventScroll: true });
142
+ if (this.activation === "auto") {
143
+ this.setActiveTab(this.tabs[index], { scrollBehavior: "smooth" });
144
+ }
145
+ if (["top"].includes(this.placement)) {
146
+ scrollIntoView(this.tabs[index], this.nav, "horizontal");
147
+ }
148
+ event.preventDefault();
149
+ }
150
+ }
151
+ }
152
+ handleScrollToStart() {
153
+ this.nav.scroll({
154
+ left: this.localize.dir() === "rtl" ? this.nav.scrollLeft + this.nav.clientWidth : this.nav.scrollLeft - this.nav.clientWidth,
155
+ behavior: "smooth"
156
+ });
157
+ }
158
+ handleScrollToEnd() {
159
+ this.nav.scroll({
160
+ left: this.localize.dir() === "rtl" ? this.nav.scrollLeft - this.nav.clientWidth : this.nav.scrollLeft + this.nav.clientWidth,
161
+ behavior: "smooth"
162
+ });
163
+ }
164
+ setActiveTab(tab, options) {
165
+ options = __spreadValues({
166
+ emitEvents: true,
167
+ scrollBehavior: "auto"
168
+ }, options);
169
+ if (tab !== this.activeTab && !tab.disabled) {
170
+ const previousTab = this.activeTab;
171
+ this.activeTab = tab;
172
+ this.tabs.forEach((el) => el.active = el === this.activeTab);
173
+ this.panels.forEach((el) => {
174
+ var _a;
175
+ return el.active = el.name === ((_a = this.activeTab) == null ? void 0 : _a.panel);
176
+ });
177
+ this.syncIndicator();
178
+ if (["top"].includes(this.placement)) {
179
+ scrollIntoView(this.activeTab, this.nav, "horizontal", options.scrollBehavior);
180
+ }
181
+ if (options.emitEvents) {
182
+ if (previousTab) {
183
+ this.emit("syn-tab-hide", { detail: { name: previousTab.panel } });
184
+ }
185
+ this.emit("syn-tab-show", { detail: { name: this.activeTab.panel } });
186
+ }
187
+ }
188
+ }
189
+ setAriaLabels() {
190
+ this.tabs.forEach((tab) => {
191
+ const panel = this.panels.find((el) => el.name === tab.panel);
192
+ if (panel) {
193
+ tab.setAttribute("aria-controls", panel.getAttribute("id"));
194
+ panel.setAttribute("aria-labelledby", tab.getAttribute("id"));
195
+ }
196
+ });
197
+ }
198
+ repositionIndicator() {
199
+ const currentTab = this.getActiveTab();
200
+ if (!currentTab) {
201
+ return;
202
+ }
203
+ const width = currentTab.clientWidth;
204
+ const height = currentTab.clientHeight;
205
+ const isRtl = this.localize.dir() === "rtl";
206
+ const allTabs = this.getAllTabs();
207
+ const precedingTabs = allTabs.slice(0, allTabs.indexOf(currentTab));
208
+ const offset = precedingTabs.reduce(
209
+ (previous, current) => ({
210
+ left: previous.left + current.clientWidth,
211
+ top: previous.top + current.clientHeight
212
+ }),
213
+ { left: 0, top: 0 }
214
+ );
215
+ switch (this.placement) {
216
+ case "top":
217
+ this.indicator.style.width = `calc(${width}px - ${this.contained || this.sharp ? "2 * var(--syn-spacing-large)" : "0px"})`;
218
+ this.indicator.style.height = "auto";
219
+ this.indicator.style.translate = `calc(${isRtl ? "-" : ""}1 * (${offset.left}px + ${this.contained || this.sharp ? "var(--syn-spacing-large)" : "0px"}))`;
220
+ break;
221
+ case "start":
222
+ case "end":
223
+ this.indicator.style.width = "auto";
224
+ this.indicator.style.height = `calc(${height}px - ${this.contained || this.sharp ? "2 * var(--syn-spacing-small)" : "0px"})`;
225
+ this.indicator.style.translate = `0 calc(${offset.top}px + ${this.contained || this.sharp ? "var(--syn-spacing-small)" : "0px"})`;
226
+ break;
227
+ }
228
+ }
229
+ // This stores tabs and panels so we can refer to a cache instead of calling querySelectorAll() multiple times.
230
+ syncTabsAndPanels() {
231
+ this.tabs = this.getAllTabs({ includeDisabled: false });
232
+ this.panels = this.getAllPanels();
233
+ this.syncIndicator();
234
+ this.updateComplete.then(() => this.updateScrollControls());
235
+ }
236
+ updateScrollControls() {
237
+ if (this.noScrollControls) {
238
+ this.hasScrollControls = false;
239
+ } else {
240
+ this.hasScrollControls = ["top"].includes(this.placement) && this.nav.scrollWidth > this.nav.clientWidth + 1;
241
+ }
242
+ }
243
+ syncIndicator() {
244
+ const tab = this.getActiveTab();
245
+ if (tab) {
246
+ this.indicator.style.display = "block";
247
+ this.repositionIndicator();
248
+ } else {
249
+ this.indicator.style.display = "none";
250
+ }
251
+ }
252
+ /** Shows the specified tab panel. */
253
+ show(panel) {
254
+ const tab = this.tabs.find((el) => el.panel === panel);
255
+ if (tab) {
256
+ this.setActiveTab(tab, { scrollBehavior: "smooth" });
257
+ }
258
+ }
259
+ render() {
260
+ return html`
261
+ <div
262
+ part="base"
263
+ class=${classMap({
264
+ "tab-group": true,
265
+ "tab-group--top": this.placement === "top",
266
+ "tab-group--start": this.placement === "start",
267
+ "tab-group--end": this.placement === "end",
268
+ "tab-group--rtl": this.localize.dir() === "rtl",
269
+ "tab-group--has-scroll-controls": this.hasScrollControls,
270
+ "tab-group--contained": this.contained,
271
+ "tab-group--sharp": this.sharp
272
+ })}
273
+ @click=${this.handleClick}
274
+ @keydown=${this.handleKeyDown}
275
+ >
276
+ <div class="tab-group__nav-container" part="nav">
277
+ ${this.hasScrollControls ? html`
278
+ <syn-icon-button
279
+ part="scroll-button scroll-button--start"
280
+ exportparts="base:scroll-button__base"
281
+ class="tab-group__scroll-button tab-group__scroll-button--start"
282
+ name="chevron-right"
283
+ library="system"
284
+ label=${this.localize.term("scrollToStart")}
285
+ @click=${this.handleScrollToStart}
286
+ ></syn-icon-button>
287
+ ` : ""}
288
+
289
+ <div class="tab-group__nav">
290
+ <div part="tabs" class="tab-group__tabs" role="tablist">
291
+ <div part="active-tab-indicator" class="tab-group__indicator"></div>
292
+ <slot name="nav" @slotchange=${this.syncTabsAndPanels}></slot>
293
+ </div>
294
+ </div>
295
+
296
+ ${this.hasScrollControls ? html`
297
+ <syn-icon-button
298
+ part="scroll-button scroll-button--end"
299
+ exportparts="base:scroll-button__base"
300
+ class="tab-group__scroll-button tab-group__scroll-button--end"
301
+ name="chevron-right"
302
+ library="system"
303
+ label=${this.localize.term("scrollToEnd")}
304
+ @click=${this.handleScrollToEnd}
305
+ ></syn-icon-button>
306
+ ` : ""}
307
+ </div>
308
+
309
+ <slot part="body" class="tab-group__body" @slotchange=${this.syncTabsAndPanels}></slot>
310
+ </div>
311
+ `;
312
+ }
313
+ };
314
+ SynTabGroup.styles = [component_styles_default, tab_group_styles_default, tab_group_custom_styles_default];
315
+ SynTabGroup.dependencies = { "syn-icon-button": SynIconButton };
316
+ __decorateClass([
317
+ query(".tab-group")
318
+ ], SynTabGroup.prototype, "tabGroup", 2);
319
+ __decorateClass([
320
+ query(".tab-group__body")
321
+ ], SynTabGroup.prototype, "body", 2);
322
+ __decorateClass([
323
+ query(".tab-group__nav")
324
+ ], SynTabGroup.prototype, "nav", 2);
325
+ __decorateClass([
326
+ query(".tab-group__indicator")
327
+ ], SynTabGroup.prototype, "indicator", 2);
328
+ __decorateClass([
329
+ state()
330
+ ], SynTabGroup.prototype, "hasScrollControls", 2);
331
+ __decorateClass([
332
+ property()
333
+ ], SynTabGroup.prototype, "placement", 2);
334
+ __decorateClass([
335
+ property()
336
+ ], SynTabGroup.prototype, "activation", 2);
337
+ __decorateClass([
338
+ property({ attribute: "no-scroll-controls", type: Boolean })
339
+ ], SynTabGroup.prototype, "noScrollControls", 2);
340
+ __decorateClass([
341
+ property({ type: Boolean })
342
+ ], SynTabGroup.prototype, "contained", 2);
343
+ __decorateClass([
344
+ property({ type: Boolean })
345
+ ], SynTabGroup.prototype, "sharp", 2);
346
+ __decorateClass([
347
+ watch("noScrollControls", { waitUntilFirstUpdate: true })
348
+ ], SynTabGroup.prototype, "updateScrollControls", 1);
349
+ __decorateClass([
350
+ watch("placement", { waitUntilFirstUpdate: true })
351
+ ], SynTabGroup.prototype, "syncIndicator", 1);
352
+
353
+ export {
354
+ SynTabGroup
355
+ };
356
+ //# sourceMappingURL=chunk.63OREJEF.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/tab-group/tab-group.component.ts"],
4
+ "sourcesContent": ["// ---------------------------------------------------------------------\n// \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n// Removing this comment will prevent it from being managed by it.\n// ---------------------------------------------------------------------\n\n/* eslint-disable */\nimport { classMap } from 'lit/directives/class-map.js';\nimport { html } from 'lit';\nimport { LocalizeController } from '../../utilities/localize.js';\nimport { property, query, state } from 'lit/decorators.js';\nimport { scrollIntoView } from '../../internal/scroll.js';\nimport { watch } from '../../internal/watch.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport SynIconButton from '../icon-button/icon-button.component.js';\nimport styles from './tab-group.styles.js';\nimport customStyles from './tab-group.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type SynTab from '../tab/tab.js';\nimport type SynTabPanel from '../tab-panel/tab-panel.js';\n\n/**\n * @summary Tab groups organize content into a container that shows one section at a time.\n * @documentation https://synergy.style/components/tab-group\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon-button\n *\n * @slot - Used for grouping tab panels in the tab group. Must be `<syn-tab-panel>` elements.\n * @slot nav - Used for grouping tabs in the tab group. Must be `<syn-tab>` elements.\n *\n * @event {{ name: String }} syn-tab-show - Emitted when a tab is shown. The payload of the event returns the \"panel\" attribute of the shown tab.\n * @event {{ name: String }} syn-tab-hide - Emitted when a tab is hidden. The payload of the event returns the \"panel\" attribute of the hidden tab.\n *\n * @csspart base - The component's base wrapper.\n * @csspart nav - The tab group's navigation container where tabs are slotted in.\n * @csspart tabs - The container that wraps the tabs.\n * @csspart active-tab-indicator - The line that highlights the currently selected tab.\n * @csspart body - The tab group's body where tab panels are slotted in.\n * @csspart scroll-button - The previous/next scroll buttons that show when tabs are scrollable, an `<syn-icon-button>`.\n * @csspart scroll-button--start - The starting scroll button.\n * @csspart scroll-button--end - The ending scroll button.\n * @csspart scroll-button__base - The scroll button's exported `base` part.\n *\n * @cssproperty --indicator-color - The color of the active tab indicator.\n * @cssproperty --indicator-width - The width of the active tab indicator.\n * @cssproperty --track-color - The color of the indicator's track (the line that separates tabs from panels).\n * @cssproperty --track-width - The width of the indicator's track (the line that separates tabs from panels).\n */\nexport default class SynTabGroup extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n static dependencies = { 'syn-icon-button': SynIconButton };\n\n private readonly localize = new LocalizeController(this);\n\n private activeTab?: SynTab;\n private mutationObserver: MutationObserver;\n private resizeObserver: ResizeObserver;\n private tabs: SynTab[] = [];\n private panels: SynTabPanel[] = [];\n\n @query('.tab-group') tabGroup: HTMLElement;\n @query('.tab-group__body') body: HTMLSlotElement;\n @query('.tab-group__nav') nav: HTMLElement;\n @query('.tab-group__indicator') indicator: HTMLElement;\n\n @state() private hasScrollControls = false;\n\n /** The placement of the tabs. */\n @property() placement: 'top' | 'start' | 'end' = 'top';\n\n /**\n * When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\n * manual, the tab will receive focus but will not show until the user presses spacebar or enter.\n */\n @property() activation: 'auto' | 'manual' = 'auto';\n\n /** Disables the scroll arrows that appear when tabs overflow. */\n @property({ attribute: 'no-scroll-controls', type: Boolean }) noScrollControls = false;\n\n\t/** Draws the tab group as a contained element. */\n @property({ type: Boolean }) contained = false;\n \n /** Draws the tab group with edges instead of roundings. Takes only effect if used with the 'contained' property */\n @property({ type: Boolean }) sharp = false;\n\n connectedCallback() {\n const whenAllDefined = Promise.all([\n customElements.whenDefined('syn-tab'),\n customElements.whenDefined('syn-tab-panel')\n ]);\n\n super.connectedCallback();\n\n this.resizeObserver = new ResizeObserver(() => {\n this.repositionIndicator();\n this.updateScrollControls();\n });\n\n this.mutationObserver = new MutationObserver(mutations => {\n // Update aria labels when the DOM changes\n if (mutations.some(m => !['aria-labelledby', 'aria-controls'].includes(m.attributeName!))) {\n setTimeout(() => this.setAriaLabels());\n }\n\n // Sync tabs when disabled states change\n if (mutations.some(m => m.attributeName === 'disabled')) {\n this.syncTabsAndPanels();\n }\n });\n\n // After the first update...\n this.updateComplete.then(() => {\n this.syncTabsAndPanels();\n this.mutationObserver.observe(this, { attributes: true, childList: true, subtree: true });\n this.resizeObserver.observe(this.nav);\n\n // Wait for tabs and tab panels to be registered\n whenAllDefined.then(() => {\n // Set initial tab state when the tabs become visible\n const intersectionObserver = new IntersectionObserver((entries, observer) => {\n if (entries[0].intersectionRatio > 0) {\n this.setAriaLabels();\n this.setActiveTab(this.getActiveTab() ?? this.tabs[0], { emitEvents: false });\n observer.unobserve(entries[0].target);\n }\n });\n intersectionObserver.observe(this.tabGroup);\n });\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.mutationObserver.disconnect();\n this.resizeObserver.unobserve(this.nav);\n }\n\n private getAllTabs(options: { includeDisabled: boolean } = { includeDisabled: true }) {\n const slot = this.shadowRoot!.querySelector<HTMLSlotElement>('slot[name=\"nav\"]')!;\n\n return [...(slot.assignedElements() as SynTab[])].filter(el => {\n return options.includeDisabled\n ? el.tagName.toLowerCase() === 'syn-tab'\n : el.tagName.toLowerCase() === 'syn-tab' && !el.disabled;\n });\n }\n\n private getAllPanels() {\n return [...this.body.assignedElements()].filter(el => el.tagName.toLowerCase() === 'syn-tab-panel') as [SynTabPanel];\n }\n\n private getActiveTab() {\n return this.tabs.find(el => el.active);\n }\n\n private handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('syn-tab');\n const tabGroup = tab?.closest('syn-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this) {\n return;\n }\n\n if (tab !== null) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('syn-tab');\n const tabGroup = tab?.closest('syn-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this) {\n return;\n }\n\n // Activate a tab\n if (['Enter', ' '].includes(event.key)) {\n if (tab !== null) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n event.preventDefault();\n }\n }\n\n // Move focus left or right\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n const activeEl = this.tabs.find(t => t.matches(':focus'));\n const isRtl = this.localize.dir() === 'rtl';\n\n if (activeEl?.tagName.toLowerCase() === 'syn-tab') {\n let index = this.tabs.indexOf(activeEl);\n\n if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = this.tabs.length - 1;\n } else if (\n (['top'].includes(this.placement) && event.key === (isRtl ? 'ArrowRight' : 'ArrowLeft')) ||\n (['start', 'end'].includes(this.placement) && event.key === 'ArrowUp')\n ) {\n index--;\n } else if (\n (['top'].includes(this.placement) && event.key === (isRtl ? 'ArrowLeft' : 'ArrowRight')) ||\n (['start', 'end'].includes(this.placement) && event.key === 'ArrowDown')\n ) {\n index++;\n }\n\n if (index < 0) {\n index = this.tabs.length - 1;\n }\n\n if (index > this.tabs.length - 1) {\n index = 0;\n }\n\n this.tabs[index].focus({ preventScroll: true });\n\n if (this.activation === 'auto') {\n this.setActiveTab(this.tabs[index], { scrollBehavior: 'smooth' });\n }\n\n if (['top'].includes(this.placement)) {\n scrollIntoView(this.tabs[index], this.nav, 'horizontal');\n }\n\n event.preventDefault();\n }\n }\n }\n\n private handleScrollToStart() {\n this.nav.scroll({\n left:\n this.localize.dir() === 'rtl'\n ? this.nav.scrollLeft + this.nav.clientWidth\n : this.nav.scrollLeft - this.nav.clientWidth,\n behavior: 'smooth'\n });\n }\n\n private handleScrollToEnd() {\n this.nav.scroll({\n left:\n this.localize.dir() === 'rtl'\n ? this.nav.scrollLeft - this.nav.clientWidth\n : this.nav.scrollLeft + this.nav.clientWidth,\n behavior: 'smooth'\n });\n }\n\n private setActiveTab(tab: SynTab, options?: { emitEvents?: boolean; scrollBehavior?: 'auto' | 'smooth' }) {\n options = {\n emitEvents: true,\n scrollBehavior: 'auto',\n ...options\n };\n\n if (tab !== this.activeTab && !tab.disabled) {\n const previousTab = this.activeTab;\n this.activeTab = tab;\n\n // Sync active tab and panel\n this.tabs.forEach(el => (el.active = el === this.activeTab));\n this.panels.forEach(el => (el.active = el.name === this.activeTab?.panel));\n this.syncIndicator();\n\n if (['top'].includes(this.placement)) {\n scrollIntoView(this.activeTab, this.nav, 'horizontal', options.scrollBehavior);\n }\n\n // Emit events\n if (options.emitEvents) {\n if (previousTab) {\n this.emit('syn-tab-hide', { detail: { name: previousTab.panel } });\n }\n\n this.emit('syn-tab-show', { detail: { name: this.activeTab.panel } });\n }\n }\n }\n\n private setAriaLabels() {\n // Link each tab with its corresponding panel\n this.tabs.forEach(tab => {\n const panel = this.panels.find(el => el.name === tab.panel);\n if (panel) {\n tab.setAttribute('aria-controls', panel.getAttribute('id')!);\n panel.setAttribute('aria-labelledby', tab.getAttribute('id')!);\n }\n });\n }\n\n private repositionIndicator() {\n const currentTab = this.getActiveTab();\n\n if (!currentTab) {\n return;\n }\n\n const width = currentTab.clientWidth;\n const height = currentTab.clientHeight;\n const isRtl = this.localize.dir() === 'rtl';\n\n // We can't used offsetLeft/offsetTop here due to a shadow parent issue where neither can getBoundingClientRect\n // because it provides invalid values for animating elements: https://bugs.chromium.org/p/chromium/issues/detail?id=920069\n const allTabs = this.getAllTabs();\n const precedingTabs = allTabs.slice(0, allTabs.indexOf(currentTab));\n const offset = precedingTabs.reduce(\n (previous, current) => ({\n left: previous.left + current.clientWidth,\n top: previous.top + current.clientHeight\n }),\n { left: 0, top: 0 }\n );\n\n switch (this.placement) {\n case 'top':\n this.indicator.style.width = `calc(${width}px - ${ (this.contained || this.sharp) ? '2 * var(--syn-spacing-large)' : '0px' })`;\n this.indicator.style.height = 'auto';\n this.indicator.style.translate = `calc(${isRtl ? '-' : ''}1 * (${offset.left}px + ${ (this.contained || this.sharp) ? 'var(--syn-spacing-large)' : '0px' }))`;\n break;\n\n case 'start':\n case 'end':\n this.indicator.style.width = 'auto';\n this.indicator.style.height = `calc(${height}px - ${ (this.contained || this.sharp) ? '2 * var(--syn-spacing-small)' : '0px' })`;\n this.indicator.style.translate = `0 calc(${offset.top}px + ${ (this.contained || this.sharp) ? 'var(--syn-spacing-small)' : '0px' })`;\n break;\n }\n }\n\n // This stores tabs and panels so we can refer to a cache instead of calling querySelectorAll() multiple times.\n private syncTabsAndPanels() {\n this.tabs = this.getAllTabs({ includeDisabled: false });\n this.panels = this.getAllPanels();\n this.syncIndicator();\n\n // After updating, show or hide scroll controls as needed\n this.updateComplete.then(() => this.updateScrollControls());\n }\n\n @watch('noScrollControls', { waitUntilFirstUpdate: true })\n updateScrollControls() {\n if (this.noScrollControls) {\n this.hasScrollControls = false;\n } else {\n // In most cases, we can compare scrollWidth to clientWidth to determine if scroll controls should show. However,\n // Safari appears to calculate this incorrectly when zoomed at 110%, causing the controls to toggle indefinitely.\n // Adding a single pixel to the comparison seems to resolve it.\n //\n // See https://github.com/synergy-design-system/synergy/issues/1839\n this.hasScrollControls =\n ['top'].includes(this.placement) && this.nav.scrollWidth > this.nav.clientWidth + 1;\n }\n }\n\n @watch('placement', { waitUntilFirstUpdate: true })\n syncIndicator() {\n const tab = this.getActiveTab();\n\n if (tab) {\n this.indicator.style.display = 'block';\n this.repositionIndicator();\n } else {\n this.indicator.style.display = 'none';\n }\n }\n\n /** Shows the specified tab panel. */\n show(panel: string) {\n const tab = this.tabs.find(el => el.panel === panel);\n\n if (tab) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n }\n }\n\n render() {\n\n return html`\n <div\n part=\"base\"\n class=${classMap({\n 'tab-group': true,\n 'tab-group--top': this.placement === 'top',\n 'tab-group--start': this.placement === 'start',\n 'tab-group--end': this.placement === 'end',\n 'tab-group--rtl': this.localize.dir() === 'rtl',\n 'tab-group--has-scroll-controls': this.hasScrollControls,\n 'tab-group--contained': this.contained,\n 'tab-group--sharp': this.sharp,\n })}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n >\n <div class=\"tab-group__nav-container\" part=\"nav\">\n ${this.hasScrollControls\n ? html`\n <syn-icon-button\n part=\"scroll-button scroll-button--start\"\n exportparts=\"base:scroll-button__base\"\n class=\"tab-group__scroll-button tab-group__scroll-button--start\"\n name=\"chevron-right\"\n library=\"system\"\n label=${this.localize.term('scrollToStart')}\n @click=${this.handleScrollToStart}\n ></syn-icon-button>\n `\n : ''}\n\n <div class=\"tab-group__nav\">\n <div part=\"tabs\" class=\"tab-group__tabs\" role=\"tablist\">\n <div part=\"active-tab-indicator\" class=\"tab-group__indicator\"></div>\n <slot name=\"nav\" @slotchange=${this.syncTabsAndPanels}></slot>\n </div>\n </div>\n\n ${this.hasScrollControls\n ? html`\n <syn-icon-button\n part=\"scroll-button scroll-button--end\"\n exportparts=\"base:scroll-button__base\"\n class=\"tab-group__scroll-button tab-group__scroll-button--end\"\n name=\"chevron-right\"\n library=\"system\"\n label=${this.localize.term('scrollToEnd')}\n @click=${this.handleScrollToEnd}\n ></syn-icon-button>\n `\n : ''}\n </div>\n\n <slot part=\"body\" class=\"tab-group__body\" @slotchange=${this.syncTabsAndPanels}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'syn-tab-group': SynTabGroup;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }