@synergy-design-system/components 2.22.6 → 2.24.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 (302) hide show
  1. package/code-quality/html-validate/.eslintrc.json +3 -0
  2. package/code-quality/html-validate/.htmlvalidate.js +16 -0
  3. package/code-quality/html-validate/DEVELOPMENT.md +59 -0
  4. package/code-quality/html-validate/README.md +64 -0
  5. package/code-quality/html-validate/scripts/createElements.js +118 -0
  6. package/code-quality/html-validate/scripts/deprecation.js +28 -0
  7. package/code-quality/html-validate/scripts/mergeDeep.js +25 -0
  8. package/code-quality/html-validate/scripts/synergy-element-rules.js +468 -0
  9. package/dist/chunks/{chunk.NCYMUAVJ.js → chunk.2K7POF7W.js} +2 -2
  10. package/dist/chunks/{chunk.MKHAD4O6.js → chunk.3AKOFH7W.js} +2 -2
  11. package/dist/chunks/{chunk.M44OPTMJ.js → chunk.3CCO6KYW.js} +2 -2
  12. package/dist/chunks/{chunk.ACOQ7XH4.js → chunk.3GHOYCG6.js} +2 -2
  13. package/dist/chunks/{chunk.2DZDPJ7I.js → chunk.3IJP2LQ7.js} +2 -2
  14. package/dist/chunks/{chunk.G4WGXPRG.js → chunk.4TBUNZHP.js} +2 -2
  15. package/dist/chunks/{chunk.FL2IZRHI.js → chunk.4YT6LU6E.js} +2 -2
  16. package/dist/chunks/{chunk.6NB2EYVX.js → chunk.56EKPHBC.js} +2 -2
  17. package/dist/chunks/{chunk.577KHYWU.js → chunk.5CCFQ7BI.js} +2 -2
  18. package/dist/chunks/{chunk.WJ73XWLJ.js → chunk.5EXONNYD.js} +3 -3
  19. package/dist/chunks/{chunk.3ZS2PTHA.js → chunk.5I2I5CMV.js} +3 -3
  20. package/dist/chunks/{chunk.A6T2WI54.js → chunk.6B5KCVTR.js} +2 -2
  21. package/dist/chunks/{chunk.I77LSMIV.js → chunk.6VAONDTI.js} +2 -2
  22. package/dist/chunks/{chunk.PA6T4LHE.js → chunk.7GO5LCAF.js} +3 -3
  23. package/dist/chunks/{chunk.DZED2W5H.js → chunk.7UZQ5F3L.js} +5 -5
  24. package/dist/chunks/{chunk.NNDQWIFM.js → chunk.7VZXNOPY.js} +3 -3
  25. package/dist/chunks/{chunk.WU7XENP6.js → chunk.A534KITM.js} +2 -2
  26. package/dist/chunks/{chunk.LRW2BB4F.js → chunk.AUV7MSZW.js} +3 -3
  27. package/dist/chunks/{chunk.VKTPMVT6.js → chunk.BA5QB7YE.js} +3 -3
  28. package/dist/chunks/{chunk.SXA3KZRB.js → chunk.BEXHKN2C.js} +4 -4
  29. package/dist/chunks/{chunk.O37SRM7V.js → chunk.CFOZG4JA.js} +3 -3
  30. package/dist/chunks/{chunk.BYPIFPYT.js → chunk.D35FQOPA.js} +2 -2
  31. package/dist/chunks/{chunk.MA4NG45R.js → chunk.DGRYQCQO.js} +2 -2
  32. package/dist/chunks/{chunk.JGYJVAIY.js → chunk.DSYBAKAE.js} +3 -3
  33. package/dist/chunks/{chunk.IIR5HGSF.js → chunk.DTO6RDWL.js} +2 -2
  34. package/dist/chunks/{chunk.4OL5646A.js → chunk.E2JDLRIO.js} +2 -2
  35. package/dist/chunks/{chunk.HNJY63F3.js → chunk.EGAGRPM2.js} +3 -3
  36. package/dist/chunks/{chunk.VCE2KQYH.js → chunk.EO65WIUS.js} +3 -3
  37. package/dist/chunks/{chunk.SYRQ4ZHZ.js → chunk.EXYDRWFC.js} +3 -3
  38. package/dist/chunks/{chunk.4UZWKIK5.js → chunk.FBLQSWD5.js} +2 -2
  39. package/dist/chunks/{chunk.AE7DMM7J.js → chunk.FDADGARQ.js} +2 -2
  40. package/dist/chunks/{chunk.X3F54GGG.js → chunk.G55BVC24.js} +3 -3
  41. package/dist/chunks/{chunk.INKMJ5Z6.js → chunk.GEFXI4TP.js} +2 -2
  42. package/dist/chunks/{chunk.5BVDDY33.js → chunk.GJAC4GH6.js} +2 -2
  43. package/dist/chunks/{chunk.PIWAF3OB.js → chunk.GTXYQQBD.js} +2 -2
  44. package/dist/chunks/{chunk.GVLDPB2Y.js → chunk.HV4MWJH7.js} +2 -2
  45. package/dist/chunks/{chunk.VCUZN2GK.js → chunk.IB6KKFII.js} +6 -6
  46. package/dist/chunks/{chunk.VADHBLQ5.js → chunk.ICGDS4DO.js} +5 -5
  47. package/dist/chunks/{chunk.RQGA6U2H.js → chunk.IDGCZKGX.js} +2 -2
  48. package/dist/chunks/{chunk.BHOWZYP5.js → chunk.ILWMA74P.js} +4 -4
  49. package/dist/chunks/{chunk.MDYN2MGD.js → chunk.JACC66WX.js} +2 -2
  50. package/dist/chunks/{chunk.EBKGWKCQ.js → chunk.JGPBIDXV.js} +2 -2
  51. package/dist/chunks/{chunk.PMBGOOAY.js → chunk.JKB75RXK.js} +3 -3
  52. package/dist/chunks/{chunk.S5CCGCQI.js → chunk.JNDOMASG.js} +2 -2
  53. package/dist/chunks/{chunk.Q2Q4IVPH.js → chunk.KCM3YWSC.js} +3 -3
  54. package/dist/chunks/{chunk.WSB6MMGW.js → chunk.KDXKRB75.js} +2 -2
  55. package/dist/chunks/{chunk.5NTZE23P.js → chunk.KGJAACFK.js} +2 -2
  56. package/dist/chunks/{chunk.5C7O6VJL.js → chunk.L4QFNZRE.js} +2 -2
  57. package/dist/chunks/{chunk.WQSJGXPT.js → chunk.ME2OYOYN.js} +2 -2
  58. package/dist/chunks/{chunk.LB4LQ2AR.js → chunk.MIKOIKVB.js} +2 -2
  59. package/dist/chunks/{chunk.O7MDBFZX.js → chunk.MMSUFHKX.js} +2 -2
  60. package/dist/chunks/{chunk.LLSOSTWI.js → chunk.MNJ64CCX.js} +2 -2
  61. package/dist/chunks/{chunk.HAMEK6ZC.js → chunk.MWVAG37O.js} +2 -2
  62. package/dist/chunks/{chunk.OWC2NQYF.js → chunk.NWMYHJFU.js} +2 -2
  63. package/dist/chunks/{chunk.4H3L2KD3.js → chunk.NZXXBH2S.js} +2 -2
  64. package/dist/chunks/{chunk.TQ5UQ7TD.js → chunk.ONZXA7KO.js} +5 -5
  65. package/dist/chunks/{chunk.JCAIKOFE.js → chunk.OOXCYCF6.js} +2 -2
  66. package/dist/chunks/{chunk.44AEP7IH.js → chunk.OXBSOMPA.js} +2 -2
  67. package/dist/chunks/{chunk.CYJ6ITND.js → chunk.PBGTDPNG.js} +2 -2
  68. package/dist/chunks/{chunk.JPVJPLG2.js → chunk.QAS2F26K.js} +2 -2
  69. package/dist/chunks/{chunk.NROVN5DT.js → chunk.QGVGQMFJ.js} +5 -5
  70. package/dist/chunks/{chunk.54WTNRMZ.js → chunk.R5NY26Z7.js} +2 -2
  71. package/dist/chunks/{chunk.54WTNRMZ.js.map → chunk.R5NY26Z7.js.map} +1 -1
  72. package/dist/chunks/{chunk.Q5DY3TAO.js → chunk.RCKLABRL.js} +2 -2
  73. package/dist/chunks/{chunk.PXWQLE63.js → chunk.ROA3E7IS.js} +2 -2
  74. package/dist/chunks/{chunk.O3ICJ46L.js → chunk.RZ2V3GHI.js} +2 -2
  75. package/dist/chunks/{chunk.NIQTDXGX.js → chunk.S7WBQTMG.js} +9 -9
  76. package/dist/chunks/{chunk.W6NLOKT3.js → chunk.SHSJSIBS.js} +4 -4
  77. package/dist/chunks/{chunk.DZRHESRV.js → chunk.SQZALIZG.js} +2 -2
  78. package/dist/chunks/{chunk.D4G7XVPH.js → chunk.SW25NFGN.js} +2 -2
  79. package/dist/chunks/{chunk.GM3KU3J5.js → chunk.SYT2UVSO.js} +2 -2
  80. package/dist/chunks/{chunk.P2X5CSJH.js → chunk.T2GTTEV7.js} +2 -2
  81. package/dist/chunks/{chunk.DP6SL7FQ.js → chunk.T6R3ZQI5.js} +2 -2
  82. package/dist/chunks/{chunk.7IBKK6B4.js → chunk.THRYGOK4.js} +2 -2
  83. package/dist/chunks/{chunk.6FSW2VV5.js → chunk.TKKHBRLK.js} +3 -3
  84. package/dist/chunks/{chunk.7VUM3Y4G.js → chunk.TPU5AZRR.js} +4 -4
  85. package/dist/chunks/{chunk.3UKYACMI.js → chunk.UDZUREOZ.js} +2 -2
  86. package/dist/chunks/{chunk.GDUFUUVW.js → chunk.UMGOKL75.js} +2 -2
  87. package/dist/chunks/{chunk.YN4VCNSC.js → chunk.UOXXEQRU.js} +3 -3
  88. package/dist/chunks/{chunk.JLGCIN6X.js → chunk.UT5IJK2K.js} +2 -2
  89. package/dist/chunks/{chunk.ABWM7CDZ.js → chunk.VW3KSNVE.js} +3 -3
  90. package/dist/chunks/{chunk.SJXWBYUJ.js → chunk.VZJIA5T7.js} +2 -2
  91. package/dist/chunks/{chunk.WY5KVZYW.js → chunk.WZEY37ML.js} +2 -2
  92. package/dist/chunks/{chunk.VQIZDYEF.js → chunk.X7NRLSDI.js} +2 -2
  93. package/dist/chunks/{chunk.KD7SF2U2.js → chunk.XAPW5BOQ.js} +2 -2
  94. package/dist/chunks/{chunk.3B22DBSJ.js → chunk.XAQKFEHH.js} +10 -5
  95. package/dist/chunks/{chunk.3B22DBSJ.js.map → chunk.XAQKFEHH.js.map} +2 -2
  96. package/dist/chunks/{chunk.VYDTADBN.js → chunk.XEIX4MF6.js} +2 -2
  97. package/dist/chunks/{chunk.KNEXVTC6.js → chunk.XGYWA4MR.js} +4 -4
  98. package/dist/chunks/{chunk.P6XKNXPC.js → chunk.YAUMHXQB.js} +5 -5
  99. package/dist/chunks/chunk.YAUMHXQB.js.map +7 -0
  100. package/dist/chunks/{chunk.EEZRSWLG.js → chunk.YG6DD7I4.js} +2 -2
  101. package/dist/chunks/{chunk.W6QGMCIA.js → chunk.YHRE5SBL.js} +2 -2
  102. package/dist/chunks/{chunk.SH7IDP5K.js → chunk.YMAWE474.js} +2 -2
  103. package/dist/chunks/{chunk.XTTMGP6X.js → chunk.YXUSUMCF.js} +2 -2
  104. package/dist/chunks/{chunk.JBUMOZUA.js → chunk.ZEEXNCQS.js} +2 -2
  105. package/dist/chunks/{chunk.7HFVNOSC.js → chunk.ZQQ4BTEM.js} +2 -2
  106. package/dist/chunks/{chunk.M5YDQFQH.js → chunk.ZXZO3BO4.js} +3 -3
  107. package/dist/chunks/{chunk.PWC46EJR.js → chunk.ZZXBWWJT.js} +2 -2
  108. package/dist/components/accordion/accordion.component.js +3 -3
  109. package/dist/components/accordion/accordion.js +4 -4
  110. package/dist/components/alert/alert.component.js +6 -6
  111. package/dist/components/alert/alert.js +7 -7
  112. package/dist/components/badge/badge.component.js +2 -2
  113. package/dist/components/badge/badge.js +3 -3
  114. package/dist/components/breadcrumb/breadcrumb.component.js +3 -3
  115. package/dist/components/breadcrumb/breadcrumb.js +4 -4
  116. package/dist/components/breadcrumb-item/breadcrumb-item.component.js +2 -2
  117. package/dist/components/breadcrumb-item/breadcrumb-item.js +3 -3
  118. package/dist/components/button/button.component.js +4 -4
  119. package/dist/components/button/button.js +5 -5
  120. package/dist/components/button-group/button-group.component.js +2 -2
  121. package/dist/components/button-group/button-group.js +3 -3
  122. package/dist/components/card/card.component.js +2 -2
  123. package/dist/components/card/card.js +3 -3
  124. package/dist/components/checkbox/checkbox.component.js +3 -3
  125. package/dist/components/checkbox/checkbox.js +4 -4
  126. package/dist/components/combobox/combobox.component.js +5 -5
  127. package/dist/components/combobox/combobox.js +6 -6
  128. package/dist/components/details/details.component.js +3 -3
  129. package/dist/components/details/details.js +4 -4
  130. package/dist/components/dialog/dialog.component.js +4 -4
  131. package/dist/components/dialog/dialog.js +5 -5
  132. package/dist/components/divider/divider.component.js +2 -2
  133. package/dist/components/divider/divider.js +3 -3
  134. package/dist/components/drawer/drawer.component.js +4 -4
  135. package/dist/components/drawer/drawer.js +5 -5
  136. package/dist/components/dropdown/dropdown.component.js +3 -3
  137. package/dist/components/dropdown/dropdown.js +4 -4
  138. package/dist/components/file/file.component.js +5 -5
  139. package/dist/components/file/file.js +6 -6
  140. package/dist/components/header/header.component.js +4 -4
  141. package/dist/components/header/header.js +5 -5
  142. package/dist/components/icon/icon.component.js +2 -2
  143. package/dist/components/icon/icon.js +3 -3
  144. package/dist/components/icon-button/icon-button.component.js +3 -3
  145. package/dist/components/icon-button/icon-button.js +4 -4
  146. package/dist/components/input/input.component.d.ts +5 -0
  147. package/dist/components/input/input.component.js +5 -5
  148. package/dist/components/input/input.js +6 -6
  149. package/dist/components/input/input.styles.js +1 -1
  150. package/dist/components/menu/menu.component.js +2 -2
  151. package/dist/components/menu/menu.js +3 -3
  152. package/dist/components/menu-item/menu-item.component.js +5 -5
  153. package/dist/components/menu-item/menu-item.js +6 -6
  154. package/dist/components/menu-label/menu-label.component.js +3 -3
  155. package/dist/components/menu-label/menu-label.js +4 -4
  156. package/dist/components/nav-item/nav-item.component.js +3 -3
  157. package/dist/components/nav-item/nav-item.js +4 -4
  158. package/dist/components/optgroup/optgroup.component.js +3 -3
  159. package/dist/components/optgroup/optgroup.js +4 -4
  160. package/dist/components/option/option.component.js +3 -3
  161. package/dist/components/option/option.js +4 -4
  162. package/dist/components/popup/popup.component.js +2 -2
  163. package/dist/components/popup/popup.js +3 -3
  164. package/dist/components/prio-nav/prio-nav.component.js +8 -8
  165. package/dist/components/prio-nav/prio-nav.js +9 -9
  166. package/dist/components/progress-bar/progress-bar.component.js +2 -2
  167. package/dist/components/progress-bar/progress-bar.js +3 -3
  168. package/dist/components/progress-ring/progress-ring.component.js +2 -2
  169. package/dist/components/progress-ring/progress-ring.js +3 -3
  170. package/dist/components/radio/radio.component.js +3 -3
  171. package/dist/components/radio/radio.js +4 -4
  172. package/dist/components/radio-button/radio-button.component.js +2 -2
  173. package/dist/components/radio-button/radio-button.js +3 -3
  174. package/dist/components/radio-group/radio-group.component.js +3 -3
  175. package/dist/components/radio-group/radio-group.js +4 -4
  176. package/dist/components/range/range.component.js +4 -4
  177. package/dist/components/range/range.js +5 -5
  178. package/dist/components/range-tick/range-tick.component.js +2 -2
  179. package/dist/components/range-tick/range-tick.js +3 -3
  180. package/dist/components/resize-observer/resize-observer.component.js +2 -2
  181. package/dist/components/select/select.component.js +6 -6
  182. package/dist/components/select/select.js +7 -7
  183. package/dist/components/side-nav/side-nav.component.js +6 -6
  184. package/dist/components/side-nav/side-nav.js +7 -7
  185. package/dist/components/spinner/spinner.component.js +2 -2
  186. package/dist/components/spinner/spinner.js +3 -3
  187. package/dist/components/switch/switch.component.js +2 -2
  188. package/dist/components/switch/switch.js +3 -3
  189. package/dist/components/tab/tab.component.js +4 -4
  190. package/dist/components/tab/tab.js +5 -5
  191. package/dist/components/tab-group/tab-group.component.js +5 -5
  192. package/dist/components/tab-group/tab-group.js +6 -6
  193. package/dist/components/tab-panel/tab-panel.component.js +2 -2
  194. package/dist/components/tab-panel/tab-panel.js +3 -3
  195. package/dist/components/tag/tag.component.js +4 -4
  196. package/dist/components/tag/tag.js +5 -5
  197. package/dist/components/textarea/textarea.component.js +2 -2
  198. package/dist/components/textarea/textarea.js +3 -3
  199. package/dist/components/tooltip/tooltip.component.js +3 -3
  200. package/dist/components/tooltip/tooltip.js +4 -4
  201. package/dist/components/validate/utility.js +2 -2
  202. package/dist/components/validate/validate.component.js +8 -8
  203. package/dist/components/validate/validate.js +9 -9
  204. package/dist/custom-elements.json +20 -2
  205. package/dist/styles/index.css +1 -1
  206. package/dist/synergy.js +101 -101
  207. package/dist/vscode.html-custom-data.json +1 -1
  208. package/package.json +7 -2
  209. package/dist/chunks/chunk.P6XKNXPC.js.map +0 -7
  210. /package/dist/chunks/{chunk.NCYMUAVJ.js.map → chunk.2K7POF7W.js.map} +0 -0
  211. /package/dist/chunks/{chunk.MKHAD4O6.js.map → chunk.3AKOFH7W.js.map} +0 -0
  212. /package/dist/chunks/{chunk.M44OPTMJ.js.map → chunk.3CCO6KYW.js.map} +0 -0
  213. /package/dist/chunks/{chunk.ACOQ7XH4.js.map → chunk.3GHOYCG6.js.map} +0 -0
  214. /package/dist/chunks/{chunk.2DZDPJ7I.js.map → chunk.3IJP2LQ7.js.map} +0 -0
  215. /package/dist/chunks/{chunk.G4WGXPRG.js.map → chunk.4TBUNZHP.js.map} +0 -0
  216. /package/dist/chunks/{chunk.FL2IZRHI.js.map → chunk.4YT6LU6E.js.map} +0 -0
  217. /package/dist/chunks/{chunk.6NB2EYVX.js.map → chunk.56EKPHBC.js.map} +0 -0
  218. /package/dist/chunks/{chunk.577KHYWU.js.map → chunk.5CCFQ7BI.js.map} +0 -0
  219. /package/dist/chunks/{chunk.WJ73XWLJ.js.map → chunk.5EXONNYD.js.map} +0 -0
  220. /package/dist/chunks/{chunk.3ZS2PTHA.js.map → chunk.5I2I5CMV.js.map} +0 -0
  221. /package/dist/chunks/{chunk.A6T2WI54.js.map → chunk.6B5KCVTR.js.map} +0 -0
  222. /package/dist/chunks/{chunk.I77LSMIV.js.map → chunk.6VAONDTI.js.map} +0 -0
  223. /package/dist/chunks/{chunk.PA6T4LHE.js.map → chunk.7GO5LCAF.js.map} +0 -0
  224. /package/dist/chunks/{chunk.DZED2W5H.js.map → chunk.7UZQ5F3L.js.map} +0 -0
  225. /package/dist/chunks/{chunk.NNDQWIFM.js.map → chunk.7VZXNOPY.js.map} +0 -0
  226. /package/dist/chunks/{chunk.WU7XENP6.js.map → chunk.A534KITM.js.map} +0 -0
  227. /package/dist/chunks/{chunk.LRW2BB4F.js.map → chunk.AUV7MSZW.js.map} +0 -0
  228. /package/dist/chunks/{chunk.VKTPMVT6.js.map → chunk.BA5QB7YE.js.map} +0 -0
  229. /package/dist/chunks/{chunk.SXA3KZRB.js.map → chunk.BEXHKN2C.js.map} +0 -0
  230. /package/dist/chunks/{chunk.O37SRM7V.js.map → chunk.CFOZG4JA.js.map} +0 -0
  231. /package/dist/chunks/{chunk.BYPIFPYT.js.map → chunk.D35FQOPA.js.map} +0 -0
  232. /package/dist/chunks/{chunk.MA4NG45R.js.map → chunk.DGRYQCQO.js.map} +0 -0
  233. /package/dist/chunks/{chunk.JGYJVAIY.js.map → chunk.DSYBAKAE.js.map} +0 -0
  234. /package/dist/chunks/{chunk.IIR5HGSF.js.map → chunk.DTO6RDWL.js.map} +0 -0
  235. /package/dist/chunks/{chunk.4OL5646A.js.map → chunk.E2JDLRIO.js.map} +0 -0
  236. /package/dist/chunks/{chunk.HNJY63F3.js.map → chunk.EGAGRPM2.js.map} +0 -0
  237. /package/dist/chunks/{chunk.VCE2KQYH.js.map → chunk.EO65WIUS.js.map} +0 -0
  238. /package/dist/chunks/{chunk.SYRQ4ZHZ.js.map → chunk.EXYDRWFC.js.map} +0 -0
  239. /package/dist/chunks/{chunk.4UZWKIK5.js.map → chunk.FBLQSWD5.js.map} +0 -0
  240. /package/dist/chunks/{chunk.AE7DMM7J.js.map → chunk.FDADGARQ.js.map} +0 -0
  241. /package/dist/chunks/{chunk.X3F54GGG.js.map → chunk.G55BVC24.js.map} +0 -0
  242. /package/dist/chunks/{chunk.INKMJ5Z6.js.map → chunk.GEFXI4TP.js.map} +0 -0
  243. /package/dist/chunks/{chunk.5BVDDY33.js.map → chunk.GJAC4GH6.js.map} +0 -0
  244. /package/dist/chunks/{chunk.PIWAF3OB.js.map → chunk.GTXYQQBD.js.map} +0 -0
  245. /package/dist/chunks/{chunk.GVLDPB2Y.js.map → chunk.HV4MWJH7.js.map} +0 -0
  246. /package/dist/chunks/{chunk.VCUZN2GK.js.map → chunk.IB6KKFII.js.map} +0 -0
  247. /package/dist/chunks/{chunk.VADHBLQ5.js.map → chunk.ICGDS4DO.js.map} +0 -0
  248. /package/dist/chunks/{chunk.RQGA6U2H.js.map → chunk.IDGCZKGX.js.map} +0 -0
  249. /package/dist/chunks/{chunk.BHOWZYP5.js.map → chunk.ILWMA74P.js.map} +0 -0
  250. /package/dist/chunks/{chunk.MDYN2MGD.js.map → chunk.JACC66WX.js.map} +0 -0
  251. /package/dist/chunks/{chunk.EBKGWKCQ.js.map → chunk.JGPBIDXV.js.map} +0 -0
  252. /package/dist/chunks/{chunk.PMBGOOAY.js.map → chunk.JKB75RXK.js.map} +0 -0
  253. /package/dist/chunks/{chunk.S5CCGCQI.js.map → chunk.JNDOMASG.js.map} +0 -0
  254. /package/dist/chunks/{chunk.Q2Q4IVPH.js.map → chunk.KCM3YWSC.js.map} +0 -0
  255. /package/dist/chunks/{chunk.WSB6MMGW.js.map → chunk.KDXKRB75.js.map} +0 -0
  256. /package/dist/chunks/{chunk.5NTZE23P.js.map → chunk.KGJAACFK.js.map} +0 -0
  257. /package/dist/chunks/{chunk.5C7O6VJL.js.map → chunk.L4QFNZRE.js.map} +0 -0
  258. /package/dist/chunks/{chunk.WQSJGXPT.js.map → chunk.ME2OYOYN.js.map} +0 -0
  259. /package/dist/chunks/{chunk.LB4LQ2AR.js.map → chunk.MIKOIKVB.js.map} +0 -0
  260. /package/dist/chunks/{chunk.O7MDBFZX.js.map → chunk.MMSUFHKX.js.map} +0 -0
  261. /package/dist/chunks/{chunk.LLSOSTWI.js.map → chunk.MNJ64CCX.js.map} +0 -0
  262. /package/dist/chunks/{chunk.HAMEK6ZC.js.map → chunk.MWVAG37O.js.map} +0 -0
  263. /package/dist/chunks/{chunk.OWC2NQYF.js.map → chunk.NWMYHJFU.js.map} +0 -0
  264. /package/dist/chunks/{chunk.4H3L2KD3.js.map → chunk.NZXXBH2S.js.map} +0 -0
  265. /package/dist/chunks/{chunk.TQ5UQ7TD.js.map → chunk.ONZXA7KO.js.map} +0 -0
  266. /package/dist/chunks/{chunk.JCAIKOFE.js.map → chunk.OOXCYCF6.js.map} +0 -0
  267. /package/dist/chunks/{chunk.44AEP7IH.js.map → chunk.OXBSOMPA.js.map} +0 -0
  268. /package/dist/chunks/{chunk.CYJ6ITND.js.map → chunk.PBGTDPNG.js.map} +0 -0
  269. /package/dist/chunks/{chunk.JPVJPLG2.js.map → chunk.QAS2F26K.js.map} +0 -0
  270. /package/dist/chunks/{chunk.NROVN5DT.js.map → chunk.QGVGQMFJ.js.map} +0 -0
  271. /package/dist/chunks/{chunk.Q5DY3TAO.js.map → chunk.RCKLABRL.js.map} +0 -0
  272. /package/dist/chunks/{chunk.PXWQLE63.js.map → chunk.ROA3E7IS.js.map} +0 -0
  273. /package/dist/chunks/{chunk.O3ICJ46L.js.map → chunk.RZ2V3GHI.js.map} +0 -0
  274. /package/dist/chunks/{chunk.NIQTDXGX.js.map → chunk.S7WBQTMG.js.map} +0 -0
  275. /package/dist/chunks/{chunk.W6NLOKT3.js.map → chunk.SHSJSIBS.js.map} +0 -0
  276. /package/dist/chunks/{chunk.DZRHESRV.js.map → chunk.SQZALIZG.js.map} +0 -0
  277. /package/dist/chunks/{chunk.D4G7XVPH.js.map → chunk.SW25NFGN.js.map} +0 -0
  278. /package/dist/chunks/{chunk.GM3KU3J5.js.map → chunk.SYT2UVSO.js.map} +0 -0
  279. /package/dist/chunks/{chunk.P2X5CSJH.js.map → chunk.T2GTTEV7.js.map} +0 -0
  280. /package/dist/chunks/{chunk.DP6SL7FQ.js.map → chunk.T6R3ZQI5.js.map} +0 -0
  281. /package/dist/chunks/{chunk.7IBKK6B4.js.map → chunk.THRYGOK4.js.map} +0 -0
  282. /package/dist/chunks/{chunk.6FSW2VV5.js.map → chunk.TKKHBRLK.js.map} +0 -0
  283. /package/dist/chunks/{chunk.7VUM3Y4G.js.map → chunk.TPU5AZRR.js.map} +0 -0
  284. /package/dist/chunks/{chunk.3UKYACMI.js.map → chunk.UDZUREOZ.js.map} +0 -0
  285. /package/dist/chunks/{chunk.GDUFUUVW.js.map → chunk.UMGOKL75.js.map} +0 -0
  286. /package/dist/chunks/{chunk.YN4VCNSC.js.map → chunk.UOXXEQRU.js.map} +0 -0
  287. /package/dist/chunks/{chunk.JLGCIN6X.js.map → chunk.UT5IJK2K.js.map} +0 -0
  288. /package/dist/chunks/{chunk.ABWM7CDZ.js.map → chunk.VW3KSNVE.js.map} +0 -0
  289. /package/dist/chunks/{chunk.SJXWBYUJ.js.map → chunk.VZJIA5T7.js.map} +0 -0
  290. /package/dist/chunks/{chunk.WY5KVZYW.js.map → chunk.WZEY37ML.js.map} +0 -0
  291. /package/dist/chunks/{chunk.VQIZDYEF.js.map → chunk.X7NRLSDI.js.map} +0 -0
  292. /package/dist/chunks/{chunk.KD7SF2U2.js.map → chunk.XAPW5BOQ.js.map} +0 -0
  293. /package/dist/chunks/{chunk.VYDTADBN.js.map → chunk.XEIX4MF6.js.map} +0 -0
  294. /package/dist/chunks/{chunk.KNEXVTC6.js.map → chunk.XGYWA4MR.js.map} +0 -0
  295. /package/dist/chunks/{chunk.EEZRSWLG.js.map → chunk.YG6DD7I4.js.map} +0 -0
  296. /package/dist/chunks/{chunk.W6QGMCIA.js.map → chunk.YHRE5SBL.js.map} +0 -0
  297. /package/dist/chunks/{chunk.SH7IDP5K.js.map → chunk.YMAWE474.js.map} +0 -0
  298. /package/dist/chunks/{chunk.XTTMGP6X.js.map → chunk.YXUSUMCF.js.map} +0 -0
  299. /package/dist/chunks/{chunk.JBUMOZUA.js.map → chunk.ZEEXNCQS.js.map} +0 -0
  300. /package/dist/chunks/{chunk.7HFVNOSC.js.map → chunk.ZQQ4BTEM.js.map} +0 -0
  301. /package/dist/chunks/{chunk.M5YDQFQH.js.map → chunk.ZXZO3BO4.js.map} +0 -0
  302. /package/dist/chunks/{chunk.PWC46EJR.js.map → chunk.ZZXBWWJT.js.map} +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": ["@synergy-design-system/eslint-config-syn"]
3
+ }
@@ -0,0 +1,16 @@
1
+ import { defineConfig } from "html-validate";
2
+ import { createElements } from "./scripts/createElements.js";
3
+
4
+ export default defineConfig({
5
+ extends: ["html-validate:recommended"],
6
+ elements: [
7
+ "html5",
8
+ createElements(),
9
+ ],
10
+ root: true,
11
+ rules: {
12
+ 'wcag/h32': 'off',
13
+ 'no-deprecated-attr': 'warn',
14
+ 'no-inline-style': 'off'
15
+ },
16
+ });
@@ -0,0 +1,59 @@
1
+ ## About html-validate
2
+
3
+ Provided rules are created dynamically with some static overrides that cannot be obtained from the components manifest.
4
+ Each element has its own custom configuration that overrides all dynamically created settings.
5
+ Custom rules for each element can be found in `scripts/synergy-element-rules.js`.
6
+ Most of those rules adjust the [Content category](https://html-validate.org/usage/elements.html#content-categories) used for the element. It also keeps track for various other actions like flagging a custom element as [`formAssociated`](https://html-validate.org/usage/elements.html#formassociated).
7
+
8
+ > The configuration is created on the fly via a function.
9
+ > This may have to reload your IDEs plugin for the change to take effect.
10
+ > For development purposes, it is advised to rely on the command line interface instead!
11
+
12
+ ### Deprecating properties for future releases
13
+
14
+ For future releases where an attribute is phased out, it is desirable to flag the attribute as [`deprecated`](https://html-validate.org/usage/elements.html#deprecated). This can be done in the custom configuration like this:
15
+
16
+ ```javascript
17
+ // Example: <syn-header>
18
+ // Synergy@1.x still has the attribute show-burger-menu for syn-header,
19
+ // but we know we want to remove it in version 2.0
20
+ /**
21
+ * @type {import('html-validate').MetaElement}
22
+ */
23
+ const SynHeader = {
24
+ attributes: {
25
+ "show-burger-menu": {
26
+ boolean: true,
27
+ deprecated: willDeprecateInRelease(
28
+ "2.0",
29
+ "Will be replaced with `burger-menu`",
30
+ ),
31
+ },
32
+ },
33
+ flow: true,
34
+ heading: true,
35
+ sectioning: true,
36
+ };
37
+ ```
38
+
39
+ When the new Synergy major version is released, you can finally deprecate the property:
40
+
41
+ ```javascript
42
+ // Example: <syn-header>
43
+ // Synergy@2.x removed the attribute show-burger-menu for syn-header,
44
+ // so we replace the warning with a hard error
45
+ const SynHeader = {
46
+ attributes: {
47
+ "show-burger-menu": {
48
+ allowed: deprecatedForRelease(
49
+ "2.0",
50
+ "Please use the `burger-menu` attribute instead.",
51
+ ),
52
+ boolean: true,
53
+ },
54
+ },
55
+ flow: true,
56
+ heading: true,
57
+ sectioning: true,
58
+ };
59
+ ```
@@ -0,0 +1,64 @@
1
+ # Linting HTML
2
+
3
+ The components package also comes with its own set of linting rules that make it possible to automatically check for invalid, deprecated or removed properties. This feature uses [html-validate](https://html-validate.org/) underneath. Rule updates are always shipped with the component release of Synergy to make sure rules are always running against your current Synergy version.
4
+
5
+ > Linting is only available for static HTML assets. When running `html-validate` via command line, it will only check files with an ending of `.htm` and `.html`.
6
+ > It is currently not planned to support custom framework languages like `JSX` or `VUE`!
7
+
8
+ ## 1. Features
9
+
10
+ The Synergy ruleset include various rules that make it more secure to use Synergy Web-Components in context of static HTML:
11
+
12
+ ### Property type checking
13
+
14
+ All attributes are checked for their type (e.g. `Boolean`).
15
+ Also, if the attribute only allows a list of predefined values, it will also show errors via the [`attribute-allowed-values rule`](https://html-validate.org/rules/attribute-allowed-values.html) when providing an unknown value.
16
+
17
+ ### Future deprecations
18
+
19
+ Future deprecations are flagged as warnings via the [`no-deprecated-attr rule`](https://html-validate.org/rules/no-deprecated-attr.html).
20
+ This will make it easier to spot deprecations for future major releases of Synergy.
21
+
22
+ ### Deprecated attributes
23
+
24
+ Flags attributes that where removed in major versions as removed via the [`attribute-misuse rule`](https://html-validate.org/rules/attribute-misuse.html). This will help you identify any attributes that have been removed following a major update of Synergy.
25
+
26
+ ## 2. Installation
27
+
28
+ Please issue one of the following commands to install the linting toolchain (assuming `@synergy-design-system/components` is already installed):
29
+
30
+ ```bash
31
+ npm install --save-dev html-validate
32
+ yarn add --dev html-validate
33
+ pnpm i -D html-validate
34
+ ```
35
+
36
+ ## 3. Configuration
37
+
38
+ ### Using the Synergy Default Configuration
39
+
40
+ The default configuration that may be used as a drop-in setting for getting started. It is based on the [html-validate recommended settings](https://html-validate.org/rules/presets.html#html-validate-recommended). You may use it in the following way:
41
+
42
+ 1. Make sure you have `type="module"` set in your projects `package.json`.
43
+ 2. Create a new file `.htmlvalidate.js`
44
+ 3. Open the new file and load the synergy configuration: `import synConfig from '@synergy-design-system/components/html-validate.js'; export default synConfig;`
45
+
46
+ ### Adjusting an existing configuration
47
+
48
+ If you already have a configuration for `html-validate` in place, just add the missing elements to your configuration:
49
+
50
+ ```javascript
51
+ // .htmlvalidate.js
52
+ import { defineConfig } from "html-validate";
53
+ import { createElements } from "@synergy-design-system/components/html-validate/scripts/createElements.js";
54
+
55
+ export default defineConfig({
56
+ extends: ["html-validate:recommended"],
57
+ elements: [
58
+ "html5",
59
+ // 👇 Add this statement to make synergy elements work
60
+ createElements(),
61
+ ],
62
+ root: true,
63
+ });
64
+ ```
@@ -0,0 +1,118 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
2
+ import { readFileSync } from 'node:fs';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { defineMetadata } from 'html-validate';
5
+ import { mergeDeep } from './mergeDeep.js';
6
+ import { rules } from './synergy-element-rules.js';
7
+
8
+ // Get the destination of the custom elements file
9
+ // Note we need to use relative module imports here
10
+ // as we don´t know the location of the file when it is imported
11
+ const fileSystemDestinationOfCustomElements = import.meta.resolve('../../../dist/custom-elements.json');
12
+ const metadata = JSON.parse(readFileSync(fileURLToPath(fileSystemDestinationOfCustomElements), 'utf-8'));
13
+
14
+ /**
15
+ * Creates the attributes for a given declaration
16
+ * @returns {Record<string, import('html-validate').MetaAttribute>}
17
+ */
18
+ const createAttributes = (declaration) => {
19
+ const attributes = (declaration.attributes || [])
20
+ .filter(attr => !!attr?.type?.text)
21
+ .map(attr => {
22
+ // Special case for boolean attributes
23
+ if (attr.type.text === 'boolean') {
24
+ return {
25
+ [attr.name]: {
26
+ boolean: true,
27
+ },
28
+ };
29
+ }
30
+
31
+ // Special case for attributes that have a fixed set of values
32
+ if (attr.type.text.includes('|')) {
33
+ const values = attr
34
+ .type
35
+ .text
36
+ .split('|')
37
+ .filter(value => value.includes("'"))
38
+ .map(value => value.trim().replaceAll("'", ''))
39
+ .filter(Boolean);
40
+
41
+ if (values.length === 0) {
42
+ return {
43
+ [attr.name]: {},
44
+ };
45
+ }
46
+
47
+ return {
48
+ [attr.name]: {
49
+ enum: values,
50
+ omit: false,
51
+ },
52
+ };
53
+ }
54
+
55
+ // Value is a number
56
+ if (attr.type.text === 'number') {
57
+ return {
58
+ [attr.name]: {
59
+ enum: [/^[+-]?(\d+(\.\d*)?|\.\d+)$/],
60
+ },
61
+ };
62
+ }
63
+
64
+ // Default case, just flag all empty values as invalid,
65
+ // e.g. <syn-input value=""> is invalid, as is <syn-input value>
66
+ return {
67
+ [attr.name]: {
68
+ enum: [/.+/],
69
+ },
70
+ };
71
+ })
72
+ .filter(Boolean)
73
+ .reduce((acc, curr) => ({
74
+ ...acc,
75
+ ...curr,
76
+ }), {});
77
+
78
+ return attributes;
79
+ };
80
+
81
+ const createTextContent = (declaration) => {
82
+ const { slots } = declaration;
83
+
84
+ // If the element does not have slots, disallow text content
85
+ if (!slots || slots.length === 0) {
86
+ return 'none';
87
+ }
88
+ return 'default';
89
+ };
90
+
91
+ const createMetaElement = (declaration) => ({
92
+ ...rules[declaration.name],
93
+ attributes: mergeDeep(
94
+ createAttributes(declaration),
95
+ rules[declaration.name]?.attributes || {},
96
+ ),
97
+ textContent: createTextContent(declaration),
98
+ });
99
+
100
+ export const createMetaData = () => {
101
+ const elements = metadata
102
+ .modules
103
+ .filter(module => module.declarations.filter(kind => kind === 'class'))
104
+ .map(module => module.declarations)
105
+ .flatMap(declaration => declaration)
106
+ .map(declaration => [declaration.tagName, createMetaElement(declaration)]);
107
+
108
+ const output = Object.fromEntries(elements);
109
+ // console.log(JSON.stringify(output, null, 2));
110
+ return output;
111
+ };
112
+
113
+ export const createElements = () => defineMetadata({
114
+ ...createMetaData(),
115
+ });
116
+
117
+ // Enable for debugging
118
+ // console.log(createMetaData());
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Creates a deprecation message for a given synergy version
3
+ * @param {string} version The Synergy Version the attribute will be deprecated in
4
+ * @param {string} reason [optional]
5
+ * @returns {string} The final deprecation message
6
+ */
7
+ export const willDeprecateInRelease = (version, reason = '') => `
8
+ This attribute is deprecated and will be removed in Synergy version ${version}!
9
+ ${reason}
10
+ `.trim();
11
+
12
+ /**
13
+ * Creates a deprecation message for a given synergy version
14
+ * @param {string} version The Synergy Version the attribute was deprecated in
15
+ * @param {string} reason [optional]
16
+ * @returns {string} The final deprecation message
17
+ */
18
+ export const deprecatedForRelease = (version, reason = '') => `
19
+ This attribute was deprecated in Synergy version ${version}!
20
+ ${reason}
21
+ Further information can be found at https://github.com/synergy-design-system/synergy-design-system/blob/main/packages/components/BREAKING_CHANGES.md#version-${version.replaceAll('.', '')} for further information.
22
+ `.trim();
23
+
24
+ // Utility classes for deprecation.
25
+ // Please add one deprecation warning per major version.
26
+ // Also note that you have to return a function that calls
27
+ // deprecateIn, otherwise the message will not be displayed.
28
+ export const deprecatedForV2 = (reason = '') => () => deprecatedForRelease('2.0', reason);
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Creates a deep merged clone of the given objects.
3
+ * @param {...any} objects The objects to merge
4
+ * @returns {object} The new object
5
+ */
6
+ export const mergeDeep = (...objects) => {
7
+ const isObject = obj => obj && typeof obj === 'object';
8
+
9
+ return objects.reduce((acc, obj) => {
10
+ Object.keys(obj).forEach(key => {
11
+ const accValue = acc[key];
12
+ const objValue = obj[key];
13
+
14
+ if (Array.isArray(objValue)) {
15
+ acc[key] = Array.isArray(accValue) ? [...accValue, ...objValue] : [...objValue];
16
+ } else if (isObject(objValue)) {
17
+ acc[key] = isObject(accValue) ? mergeDeep(accValue, objValue) : { ...objValue };
18
+ } else {
19
+ acc[key] = objValue;
20
+ }
21
+ });
22
+
23
+ return acc;
24
+ }, {});
25
+ };