@synergy-design-system/components 2.23.0 → 2.24.1
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.
- package/code-quality/html-validate/.eslintrc.json +3 -0
- package/code-quality/html-validate/.htmlvalidate.js +16 -0
- package/code-quality/html-validate/DEVELOPMENT.md +59 -0
- package/code-quality/html-validate/README.md +64 -0
- package/code-quality/html-validate/scripts/createElements.js +118 -0
- package/code-quality/html-validate/scripts/deprecation.js +28 -0
- package/code-quality/html-validate/scripts/mergeDeep.js +25 -0
- package/code-quality/html-validate/scripts/synergy-element-rules.js +468 -0
- package/dist/chunks/{chunk.MCJ5KPYQ.js → chunk.2NR4BBBW.js} +3 -3
- package/dist/chunks/{chunk.VND6WP4W.js → chunk.2QK5RLKF.js} +2 -2
- package/dist/chunks/{chunk.GQSJQQQR.js → chunk.2QL6XSZT.js} +3 -3
- package/dist/chunks/{chunk.LA7VZTHW.js → chunk.3MCBZILR.js} +2 -2
- package/dist/chunks/{chunk.CEESQM3N.js → chunk.3TOPMX5G.js} +2 -2
- package/dist/chunks/{chunk.QMLZ5T2L.js → chunk.3XAVJ44K.js} +2 -2
- package/dist/chunks/{chunk.UKMNCIRO.js → chunk.4XZAQSWP.js} +2 -2
- package/dist/chunks/{chunk.754YNTP6.js → chunk.4YTLPKHV.js} +2 -2
- package/dist/chunks/{chunk.IWYFCM2J.js → chunk.5N3FX5HB.js} +2 -2
- package/dist/chunks/{chunk.UHSH4JMU.js → chunk.665OIGGF.js} +2 -2
- package/dist/chunks/{chunk.VWIOLP7J.js → chunk.6K6TCNXT.js} +2 -2
- package/dist/chunks/{chunk.62D6M6ZS.js → chunk.6REZTNDZ.js} +2 -2
- package/dist/chunks/{chunk.L4243H4L.js → chunk.7E6LDCV4.js} +2 -2
- package/dist/chunks/{chunk.2NHTNETT.js → chunk.AJFVSKNJ.js} +3 -3
- package/dist/chunks/{chunk.ODXE3NLR.js → chunk.AUMRCCOZ.js} +3 -3
- package/dist/chunks/{chunk.HNDQLTGC.js → chunk.AYH3MEFO.js} +3 -3
- package/dist/chunks/{chunk.4HDBI2SR.js → chunk.BKFCWDQZ.js} +2 -2
- package/dist/chunks/{chunk.XH64TA7E.js → chunk.CIMOIHXM.js} +2 -2
- package/dist/chunks/{chunk.H5MW7DPQ.js → chunk.CP4TIE4P.js} +3 -3
- package/dist/chunks/{chunk.OQPNGXMA.js → chunk.CRUI5O5Z.js} +2 -2
- package/dist/chunks/{chunk.YR722W3R.js → chunk.D5DJRAMX.js} +2 -2
- package/dist/chunks/{chunk.OXZX7LPP.js → chunk.EAQDDBCF.js} +2 -2
- package/dist/chunks/{chunk.2KVGRKIN.js → chunk.EDWDTBDB.js} +2 -2
- package/dist/chunks/{chunk.42TSQYDV.js → chunk.EGHBMTNS.js} +3 -3
- package/dist/chunks/{chunk.VZVDKTXO.js → chunk.EV3DP4XG.js} +4 -4
- package/dist/chunks/{chunk.CQZTVYSP.js → chunk.FJCULZNC.js} +2 -2
- package/dist/chunks/{chunk.7YH6D6RA.js → chunk.FSHLOWJI.js} +2 -2
- package/dist/chunks/{chunk.A2NGOD7T.js → chunk.FSS4I4QN.js} +2 -2
- package/dist/chunks/{chunk.LZXFU6ND.js → chunk.FWWGAHVE.js} +2 -2
- package/dist/chunks/{chunk.YS3NCTUX.js → chunk.GA3JMXQS.js} +2 -2
- package/dist/chunks/{chunk.W4K3YK6Y.js → chunk.GGHEV4WR.js} +3 -3
- package/dist/chunks/{chunk.CYSCJWOT.js → chunk.GI43PPPP.js} +3 -3
- package/dist/chunks/{chunk.SWHOQBNJ.js → chunk.GNE26GLH.js} +3 -3
- package/dist/chunks/{chunk.O4XZ67VO.js → chunk.GUMTEMAC.js} +6 -6
- package/dist/chunks/{chunk.TWRT4JBD.js → chunk.HHGBBWAK.js} +3 -3
- package/dist/chunks/{chunk.BZYYMMUY.js → chunk.HZ4MHK5I.js} +2 -2
- package/dist/chunks/{chunk.A24LF4XY.js → chunk.I3XIZIKO.js} +2 -2
- package/dist/chunks/{chunk.ZUZP74WM.js → chunk.IRE6E5ID.js} +2 -2
- package/dist/chunks/{chunk.4HLATYLE.js → chunk.IT5VQCID.js} +2 -2
- package/dist/chunks/{chunk.D32TUWZ5.js → chunk.JL7G4AWD.js} +4 -4
- package/dist/chunks/{chunk.NSUNYLN3.js → chunk.JLIOQKCM.js} +3 -3
- package/dist/chunks/{chunk.V32K2DUN.js → chunk.KG6RS57D.js} +4 -4
- package/dist/chunks/{chunk.33POLQE6.js → chunk.KL7QEVHH.js} +2 -2
- package/dist/chunks/{chunk.LXT5LVT4.js → chunk.KMZ5VRBD.js} +2 -2
- package/dist/chunks/{chunk.D2E3T6A5.js → chunk.KVD725DM.js} +4 -4
- package/dist/chunks/{chunk.PIZPMV3G.js → chunk.L4JBOA37.js} +2 -2
- package/dist/chunks/{chunk.HBKY7DWQ.js → chunk.LCVMSBND.js} +2 -2
- package/dist/chunks/{chunk.4LA5EA7M.js → chunk.LM5NKDKT.js} +3 -3
- package/dist/chunks/{chunk.5HPCCNUZ.js → chunk.MF43IYM3.js} +2 -2
- package/dist/chunks/{chunk.U7F4NOVR.js → chunk.N64V5RFU.js} +2 -2
- package/dist/chunks/{chunk.4I2VOAFM.js → chunk.O3K5WIC7.js} +2 -2
- package/dist/chunks/{chunk.2KRKYZ6X.js → chunk.O3QZ575N.js} +2 -2
- package/dist/chunks/{chunk.2KRKYZ6X.js.map → chunk.O3QZ575N.js.map} +1 -1
- package/dist/chunks/{chunk.I7HAUEUI.js → chunk.OD4LCF75.js} +2 -2
- package/dist/chunks/{chunk.SXJJ7SO4.js → chunk.OEOUJD7P.js} +2 -2
- package/dist/chunks/{chunk.JNJJKKA6.js → chunk.OIWBAZJO.js} +2 -2
- package/dist/chunks/{chunk.YP2Z63MI.js → chunk.OKFDKER4.js} +2 -2
- package/dist/chunks/{chunk.NCC5CYN4.js → chunk.OUIFOO3Z.js} +2 -2
- package/dist/chunks/{chunk.HPUCK7WY.js → chunk.OUQPAJ5E.js} +2 -2
- package/dist/chunks/{chunk.RFZUGJKA.js → chunk.OW5TLKQE.js} +2 -2
- package/dist/chunks/{chunk.PJVPQT5H.js → chunk.PBEKATKR.js} +3 -3
- package/dist/chunks/{chunk.MK2HVCND.js → chunk.PE5JDYTF.js} +2 -2
- package/dist/chunks/{chunk.4JL7WJ6E.js → chunk.PGVB3BCW.js} +2 -2
- package/dist/chunks/{chunk.4BR4N2RQ.js → chunk.PTVJODLN.js} +4 -4
- package/dist/chunks/{chunk.HLX7STO2.js → chunk.Q6HNHX7T.js} +3 -3
- package/dist/chunks/{chunk.TICVU75M.js → chunk.QUQNFOFI.js} +3 -3
- package/dist/chunks/{chunk.EO7ZW7IO.js → chunk.R2CI6QPE.js} +2 -2
- package/dist/chunks/{chunk.UUAIZTWG.js → chunk.RFDW6Q7D.js} +2 -2
- package/dist/chunks/{chunk.W37QUVFI.js → chunk.RGE6GFJP.js} +2 -2
- package/dist/chunks/{chunk.WXNILGZ4.js → chunk.RNXMAU2O.js} +2 -2
- package/dist/chunks/{chunk.43ZMINPT.js → chunk.S3EUXE7T.js} +2 -2
- package/dist/chunks/{chunk.46NHZFGK.js → chunk.S7XFLXVI.js} +2 -2
- package/dist/chunks/{chunk.KG7WW3I6.js → chunk.SA2D6NZU.js} +2 -2
- package/dist/chunks/{chunk.HSZOOHHK.js → chunk.SKDUF25U.js} +2 -2
- package/dist/chunks/{chunk.WM2EDUOT.js → chunk.STSPQS7A.js} +19 -12
- package/dist/chunks/chunk.STSPQS7A.js.map +7 -0
- package/dist/chunks/{chunk.RZ42NH2L.js → chunk.SYRAED6N.js} +5 -5
- package/dist/chunks/{chunk.2TS74WPB.js → chunk.T3ZU2N5P.js} +2 -2
- package/dist/chunks/{chunk.RKO6E5EE.js → chunk.TA6UIZKI.js} +2 -2
- package/dist/chunks/{chunk.VHDNLEA4.js → chunk.TQPY4DCL.js} +2 -2
- package/dist/chunks/{chunk.M6YRLC26.js → chunk.TWSKID6P.js} +2 -2
- package/dist/chunks/{chunk.M5Y7V3U2.js → chunk.UBH6GN2J.js} +2 -2
- package/dist/chunks/{chunk.SCFH3NLO.js → chunk.UK5IK443.js} +5 -5
- package/dist/chunks/{chunk.OREXRKUO.js → chunk.URD4JX2O.js} +2 -2
- package/dist/chunks/{chunk.7LBCQNNE.js → chunk.VJKZZJ54.js} +4 -4
- package/dist/chunks/{chunk.SMSEFJUK.js → chunk.VMSQGQZP.js} +2 -2
- package/dist/chunks/{chunk.QRNDZEGS.js → chunk.VXCABWQR.js} +2 -2
- package/dist/chunks/{chunk.RVSWJZQV.js → chunk.WE3NXA5H.js} +2 -2
- package/dist/chunks/{chunk.ZYTP6II2.js → chunk.X2H2MMT6.js} +3 -3
- package/dist/chunks/{chunk.LEJZINH6.js → chunk.XCLE3H7L.js} +2 -2
- package/dist/chunks/{chunk.4NHCVLE5.js → chunk.XGOAWPYJ.js} +3 -3
- package/dist/chunks/{chunk.IJMUWBJW.js → chunk.XKWCSEVO.js} +3 -3
- package/dist/chunks/{chunk.F7BLRYFE.js → chunk.Y62T2V3K.js} +2 -2
- package/dist/chunks/{chunk.MRGLPUME.js → chunk.YFQ5ZUIK.js} +2 -2
- package/dist/chunks/{chunk.DLVYD4GO.js → chunk.ZESL6M27.js} +2 -2
- package/dist/chunks/{chunk.J43VXD2W.js → chunk.ZO44ZZZQ.js} +2 -2
- package/dist/chunks/{chunk.MCNYPOZS.js → chunk.ZSHHRJ3F.js} +2 -2
- package/dist/components/accordion/accordion.component.js +2 -2
- package/dist/components/accordion/accordion.js +3 -3
- package/dist/components/alert/alert.component.js +4 -4
- package/dist/components/alert/alert.js +5 -5
- package/dist/components/badge/badge.component.js +2 -2
- package/dist/components/badge/badge.js +3 -3
- package/dist/components/breadcrumb/breadcrumb.component.js +3 -3
- package/dist/components/breadcrumb/breadcrumb.js +4 -4
- package/dist/components/breadcrumb-item/breadcrumb-item.component.js +2 -2
- package/dist/components/breadcrumb-item/breadcrumb-item.js +3 -3
- package/dist/components/button/button.component.js +4 -4
- package/dist/components/button/button.js +5 -5
- package/dist/components/button-group/button-group.component.js +2 -2
- package/dist/components/button-group/button-group.js +3 -3
- package/dist/components/card/card.component.js +2 -2
- package/dist/components/card/card.js +3 -3
- package/dist/components/checkbox/checkbox.component.js +3 -3
- package/dist/components/checkbox/checkbox.js +4 -4
- package/dist/components/combobox/combobox.component.d.ts +1 -0
- package/dist/components/combobox/combobox.component.js +5 -5
- package/dist/components/combobox/combobox.js +6 -6
- package/dist/components/details/details.component.js +3 -3
- package/dist/components/details/details.js +4 -4
- package/dist/components/dialog/dialog.component.js +4 -4
- package/dist/components/dialog/dialog.js +5 -5
- package/dist/components/divider/divider.component.js +2 -2
- package/dist/components/divider/divider.js +3 -3
- package/dist/components/drawer/drawer.component.js +4 -4
- package/dist/components/drawer/drawer.js +5 -5
- package/dist/components/dropdown/dropdown.component.js +3 -3
- package/dist/components/dropdown/dropdown.js +4 -4
- package/dist/components/file/file.component.js +5 -5
- package/dist/components/file/file.js +6 -6
- package/dist/components/header/header.component.js +4 -4
- package/dist/components/header/header.js +5 -5
- package/dist/components/icon/icon.component.js +2 -2
- package/dist/components/icon/icon.js +3 -3
- package/dist/components/icon-button/icon-button.component.js +3 -3
- package/dist/components/icon-button/icon-button.js +4 -4
- package/dist/components/input/input.component.js +4 -4
- package/dist/components/input/input.js +5 -5
- package/dist/components/menu/menu.component.js +2 -2
- package/dist/components/menu/menu.js +3 -3
- package/dist/components/menu-item/menu-item.component.js +5 -5
- package/dist/components/menu-item/menu-item.js +6 -6
- package/dist/components/menu-label/menu-label.component.js +3 -3
- package/dist/components/menu-label/menu-label.js +4 -4
- package/dist/components/nav-item/nav-item.component.js +3 -3
- package/dist/components/nav-item/nav-item.js +4 -4
- package/dist/components/optgroup/optgroup.component.js +3 -3
- package/dist/components/optgroup/optgroup.js +4 -4
- package/dist/components/option/option.component.js +3 -3
- package/dist/components/option/option.js +4 -4
- package/dist/components/popup/popup.component.js +2 -2
- package/dist/components/popup/popup.js +3 -3
- package/dist/components/prio-nav/prio-nav.component.js +8 -8
- package/dist/components/prio-nav/prio-nav.js +9 -9
- package/dist/components/progress-bar/progress-bar.component.js +2 -2
- package/dist/components/progress-bar/progress-bar.js +3 -3
- package/dist/components/progress-ring/progress-ring.component.js +2 -2
- package/dist/components/progress-ring/progress-ring.js +3 -3
- package/dist/components/radio/radio.component.js +3 -3
- package/dist/components/radio/radio.js +4 -4
- package/dist/components/radio-button/radio-button.component.js +2 -2
- package/dist/components/radio-button/radio-button.js +3 -3
- package/dist/components/radio-group/radio-group.component.js +3 -3
- package/dist/components/radio-group/radio-group.js +4 -4
- package/dist/components/range/range.component.js +4 -4
- package/dist/components/range/range.js +5 -5
- package/dist/components/range-tick/range-tick.component.js +2 -2
- package/dist/components/range-tick/range-tick.js +3 -3
- package/dist/components/resize-observer/resize-observer.component.js +2 -2
- package/dist/components/select/select.component.js +6 -6
- package/dist/components/select/select.js +7 -7
- package/dist/components/side-nav/side-nav.component.js +6 -6
- package/dist/components/side-nav/side-nav.js +7 -7
- package/dist/components/spinner/spinner.component.js +2 -2
- package/dist/components/spinner/spinner.js +3 -3
- package/dist/components/switch/switch.component.js +2 -2
- package/dist/components/switch/switch.js +3 -3
- package/dist/components/tab/tab.component.js +4 -4
- package/dist/components/tab/tab.js +5 -5
- package/dist/components/tab-group/tab-group.component.js +5 -5
- package/dist/components/tab-group/tab-group.js +6 -6
- package/dist/components/tab-panel/tab-panel.component.js +2 -2
- package/dist/components/tab-panel/tab-panel.js +3 -3
- package/dist/components/tag/tag.component.js +4 -4
- package/dist/components/tag/tag.js +5 -5
- package/dist/components/textarea/textarea.component.js +2 -2
- package/dist/components/textarea/textarea.js +3 -3
- package/dist/components/tooltip/tooltip.component.js +3 -3
- package/dist/components/tooltip/tooltip.js +4 -4
- package/dist/components/validate/utility.js +2 -2
- package/dist/components/validate/validate.component.js +6 -6
- package/dist/components/validate/validate.js +7 -7
- package/dist/custom-elements.json +11 -1
- package/dist/styles/index.css +1 -1
- package/dist/synergy.js +95 -95
- package/package.json +7 -2
- package/dist/chunks/chunk.WM2EDUOT.js.map +0 -7
- /package/dist/chunks/{chunk.MCJ5KPYQ.js.map → chunk.2NR4BBBW.js.map} +0 -0
- /package/dist/chunks/{chunk.VND6WP4W.js.map → chunk.2QK5RLKF.js.map} +0 -0
- /package/dist/chunks/{chunk.GQSJQQQR.js.map → chunk.2QL6XSZT.js.map} +0 -0
- /package/dist/chunks/{chunk.LA7VZTHW.js.map → chunk.3MCBZILR.js.map} +0 -0
- /package/dist/chunks/{chunk.CEESQM3N.js.map → chunk.3TOPMX5G.js.map} +0 -0
- /package/dist/chunks/{chunk.QMLZ5T2L.js.map → chunk.3XAVJ44K.js.map} +0 -0
- /package/dist/chunks/{chunk.UKMNCIRO.js.map → chunk.4XZAQSWP.js.map} +0 -0
- /package/dist/chunks/{chunk.754YNTP6.js.map → chunk.4YTLPKHV.js.map} +0 -0
- /package/dist/chunks/{chunk.IWYFCM2J.js.map → chunk.5N3FX5HB.js.map} +0 -0
- /package/dist/chunks/{chunk.UHSH4JMU.js.map → chunk.665OIGGF.js.map} +0 -0
- /package/dist/chunks/{chunk.VWIOLP7J.js.map → chunk.6K6TCNXT.js.map} +0 -0
- /package/dist/chunks/{chunk.62D6M6ZS.js.map → chunk.6REZTNDZ.js.map} +0 -0
- /package/dist/chunks/{chunk.L4243H4L.js.map → chunk.7E6LDCV4.js.map} +0 -0
- /package/dist/chunks/{chunk.2NHTNETT.js.map → chunk.AJFVSKNJ.js.map} +0 -0
- /package/dist/chunks/{chunk.ODXE3NLR.js.map → chunk.AUMRCCOZ.js.map} +0 -0
- /package/dist/chunks/{chunk.HNDQLTGC.js.map → chunk.AYH3MEFO.js.map} +0 -0
- /package/dist/chunks/{chunk.4HDBI2SR.js.map → chunk.BKFCWDQZ.js.map} +0 -0
- /package/dist/chunks/{chunk.XH64TA7E.js.map → chunk.CIMOIHXM.js.map} +0 -0
- /package/dist/chunks/{chunk.H5MW7DPQ.js.map → chunk.CP4TIE4P.js.map} +0 -0
- /package/dist/chunks/{chunk.OQPNGXMA.js.map → chunk.CRUI5O5Z.js.map} +0 -0
- /package/dist/chunks/{chunk.YR722W3R.js.map → chunk.D5DJRAMX.js.map} +0 -0
- /package/dist/chunks/{chunk.OXZX7LPP.js.map → chunk.EAQDDBCF.js.map} +0 -0
- /package/dist/chunks/{chunk.2KVGRKIN.js.map → chunk.EDWDTBDB.js.map} +0 -0
- /package/dist/chunks/{chunk.42TSQYDV.js.map → chunk.EGHBMTNS.js.map} +0 -0
- /package/dist/chunks/{chunk.VZVDKTXO.js.map → chunk.EV3DP4XG.js.map} +0 -0
- /package/dist/chunks/{chunk.CQZTVYSP.js.map → chunk.FJCULZNC.js.map} +0 -0
- /package/dist/chunks/{chunk.7YH6D6RA.js.map → chunk.FSHLOWJI.js.map} +0 -0
- /package/dist/chunks/{chunk.A2NGOD7T.js.map → chunk.FSS4I4QN.js.map} +0 -0
- /package/dist/chunks/{chunk.LZXFU6ND.js.map → chunk.FWWGAHVE.js.map} +0 -0
- /package/dist/chunks/{chunk.YS3NCTUX.js.map → chunk.GA3JMXQS.js.map} +0 -0
- /package/dist/chunks/{chunk.W4K3YK6Y.js.map → chunk.GGHEV4WR.js.map} +0 -0
- /package/dist/chunks/{chunk.CYSCJWOT.js.map → chunk.GI43PPPP.js.map} +0 -0
- /package/dist/chunks/{chunk.SWHOQBNJ.js.map → chunk.GNE26GLH.js.map} +0 -0
- /package/dist/chunks/{chunk.O4XZ67VO.js.map → chunk.GUMTEMAC.js.map} +0 -0
- /package/dist/chunks/{chunk.TWRT4JBD.js.map → chunk.HHGBBWAK.js.map} +0 -0
- /package/dist/chunks/{chunk.BZYYMMUY.js.map → chunk.HZ4MHK5I.js.map} +0 -0
- /package/dist/chunks/{chunk.A24LF4XY.js.map → chunk.I3XIZIKO.js.map} +0 -0
- /package/dist/chunks/{chunk.ZUZP74WM.js.map → chunk.IRE6E5ID.js.map} +0 -0
- /package/dist/chunks/{chunk.4HLATYLE.js.map → chunk.IT5VQCID.js.map} +0 -0
- /package/dist/chunks/{chunk.D32TUWZ5.js.map → chunk.JL7G4AWD.js.map} +0 -0
- /package/dist/chunks/{chunk.NSUNYLN3.js.map → chunk.JLIOQKCM.js.map} +0 -0
- /package/dist/chunks/{chunk.V32K2DUN.js.map → chunk.KG6RS57D.js.map} +0 -0
- /package/dist/chunks/{chunk.33POLQE6.js.map → chunk.KL7QEVHH.js.map} +0 -0
- /package/dist/chunks/{chunk.LXT5LVT4.js.map → chunk.KMZ5VRBD.js.map} +0 -0
- /package/dist/chunks/{chunk.D2E3T6A5.js.map → chunk.KVD725DM.js.map} +0 -0
- /package/dist/chunks/{chunk.PIZPMV3G.js.map → chunk.L4JBOA37.js.map} +0 -0
- /package/dist/chunks/{chunk.HBKY7DWQ.js.map → chunk.LCVMSBND.js.map} +0 -0
- /package/dist/chunks/{chunk.4LA5EA7M.js.map → chunk.LM5NKDKT.js.map} +0 -0
- /package/dist/chunks/{chunk.5HPCCNUZ.js.map → chunk.MF43IYM3.js.map} +0 -0
- /package/dist/chunks/{chunk.U7F4NOVR.js.map → chunk.N64V5RFU.js.map} +0 -0
- /package/dist/chunks/{chunk.4I2VOAFM.js.map → chunk.O3K5WIC7.js.map} +0 -0
- /package/dist/chunks/{chunk.I7HAUEUI.js.map → chunk.OD4LCF75.js.map} +0 -0
- /package/dist/chunks/{chunk.SXJJ7SO4.js.map → chunk.OEOUJD7P.js.map} +0 -0
- /package/dist/chunks/{chunk.JNJJKKA6.js.map → chunk.OIWBAZJO.js.map} +0 -0
- /package/dist/chunks/{chunk.YP2Z63MI.js.map → chunk.OKFDKER4.js.map} +0 -0
- /package/dist/chunks/{chunk.NCC5CYN4.js.map → chunk.OUIFOO3Z.js.map} +0 -0
- /package/dist/chunks/{chunk.HPUCK7WY.js.map → chunk.OUQPAJ5E.js.map} +0 -0
- /package/dist/chunks/{chunk.RFZUGJKA.js.map → chunk.OW5TLKQE.js.map} +0 -0
- /package/dist/chunks/{chunk.PJVPQT5H.js.map → chunk.PBEKATKR.js.map} +0 -0
- /package/dist/chunks/{chunk.MK2HVCND.js.map → chunk.PE5JDYTF.js.map} +0 -0
- /package/dist/chunks/{chunk.4JL7WJ6E.js.map → chunk.PGVB3BCW.js.map} +0 -0
- /package/dist/chunks/{chunk.4BR4N2RQ.js.map → chunk.PTVJODLN.js.map} +0 -0
- /package/dist/chunks/{chunk.HLX7STO2.js.map → chunk.Q6HNHX7T.js.map} +0 -0
- /package/dist/chunks/{chunk.TICVU75M.js.map → chunk.QUQNFOFI.js.map} +0 -0
- /package/dist/chunks/{chunk.EO7ZW7IO.js.map → chunk.R2CI6QPE.js.map} +0 -0
- /package/dist/chunks/{chunk.UUAIZTWG.js.map → chunk.RFDW6Q7D.js.map} +0 -0
- /package/dist/chunks/{chunk.W37QUVFI.js.map → chunk.RGE6GFJP.js.map} +0 -0
- /package/dist/chunks/{chunk.WXNILGZ4.js.map → chunk.RNXMAU2O.js.map} +0 -0
- /package/dist/chunks/{chunk.43ZMINPT.js.map → chunk.S3EUXE7T.js.map} +0 -0
- /package/dist/chunks/{chunk.46NHZFGK.js.map → chunk.S7XFLXVI.js.map} +0 -0
- /package/dist/chunks/{chunk.KG7WW3I6.js.map → chunk.SA2D6NZU.js.map} +0 -0
- /package/dist/chunks/{chunk.HSZOOHHK.js.map → chunk.SKDUF25U.js.map} +0 -0
- /package/dist/chunks/{chunk.RZ42NH2L.js.map → chunk.SYRAED6N.js.map} +0 -0
- /package/dist/chunks/{chunk.2TS74WPB.js.map → chunk.T3ZU2N5P.js.map} +0 -0
- /package/dist/chunks/{chunk.RKO6E5EE.js.map → chunk.TA6UIZKI.js.map} +0 -0
- /package/dist/chunks/{chunk.VHDNLEA4.js.map → chunk.TQPY4DCL.js.map} +0 -0
- /package/dist/chunks/{chunk.M6YRLC26.js.map → chunk.TWSKID6P.js.map} +0 -0
- /package/dist/chunks/{chunk.M5Y7V3U2.js.map → chunk.UBH6GN2J.js.map} +0 -0
- /package/dist/chunks/{chunk.SCFH3NLO.js.map → chunk.UK5IK443.js.map} +0 -0
- /package/dist/chunks/{chunk.OREXRKUO.js.map → chunk.URD4JX2O.js.map} +0 -0
- /package/dist/chunks/{chunk.7LBCQNNE.js.map → chunk.VJKZZJ54.js.map} +0 -0
- /package/dist/chunks/{chunk.SMSEFJUK.js.map → chunk.VMSQGQZP.js.map} +0 -0
- /package/dist/chunks/{chunk.QRNDZEGS.js.map → chunk.VXCABWQR.js.map} +0 -0
- /package/dist/chunks/{chunk.RVSWJZQV.js.map → chunk.WE3NXA5H.js.map} +0 -0
- /package/dist/chunks/{chunk.ZYTP6II2.js.map → chunk.X2H2MMT6.js.map} +0 -0
- /package/dist/chunks/{chunk.LEJZINH6.js.map → chunk.XCLE3H7L.js.map} +0 -0
- /package/dist/chunks/{chunk.4NHCVLE5.js.map → chunk.XGOAWPYJ.js.map} +0 -0
- /package/dist/chunks/{chunk.IJMUWBJW.js.map → chunk.XKWCSEVO.js.map} +0 -0
- /package/dist/chunks/{chunk.F7BLRYFE.js.map → chunk.Y62T2V3K.js.map} +0 -0
- /package/dist/chunks/{chunk.MRGLPUME.js.map → chunk.YFQ5ZUIK.js.map} +0 -0
- /package/dist/chunks/{chunk.DLVYD4GO.js.map → chunk.ZESL6M27.js.map} +0 -0
- /package/dist/chunks/{chunk.J43VXD2W.js.map → chunk.ZO44ZZZQ.js.map} +0 -0
- /package/dist/chunks/{chunk.MCNYPOZS.js.map → chunk.ZSHHRJ3F.js.map} +0 -0
|
@@ -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
|
+
};
|