@lnpg/pkgn-sol 1.0.0-beta.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.
- package/LICENSE +15 -0
- package/README.md +64 -0
- package/dist/assets/fonts/montserrat/Montserrat-Variable-Font.ttf +0 -0
- package/dist/assets/fonts/montserrat/Montserrat-Variable-Italic-Font.ttf +0 -0
- package/dist/assets/fonts/montserrat/OFL.txt +93 -0
- package/dist/assets/fonts/montserrat/README.txt +81 -0
- package/dist/cjs/chunks/dom.cjs +2 -0
- package/dist/cjs/chunks/dom.cjs.map +1 -0
- package/dist/cjs/chunks/inline.cjs +2 -0
- package/dist/cjs/chunks/inline.cjs.map +1 -0
- package/dist/cjs/chunks/pkgn-sol.cjs +2 -0
- package/dist/cjs/chunks/pkgn-sol.cjs.map +1 -0
- package/dist/cjs/elements/break/br/br.cjs +2 -0
- package/dist/cjs/elements/break/br/br.cjs.map +1 -0
- package/dist/cjs/elements/break/break.cjs +2 -0
- package/dist/cjs/elements/break/break.cjs.map +1 -0
- package/dist/cjs/elements/break/wbr/wbr.cjs +2 -0
- package/dist/cjs/elements/break/wbr/wbr.cjs.map +1 -0
- package/dist/cjs/elements/container/container.cjs +2 -0
- package/dist/cjs/elements/container/container.cjs.map +1 -0
- package/dist/cjs/elements/container/div/div.cjs +2 -0
- package/dist/cjs/elements/container/div/div.cjs.map +1 -0
- package/dist/cjs/elements/container/span/span.cjs +2 -0
- package/dist/cjs/elements/container/span/span.cjs.map +1 -0
- package/dist/cjs/elements/figure/figcaption/figcaption.cjs +2 -0
- package/dist/cjs/elements/figure/figcaption/figcaption.cjs.map +1 -0
- package/dist/cjs/elements/figure/figure/figure.cjs +2 -0
- package/dist/cjs/elements/figure/figure/figure.cjs.map +1 -0
- package/dist/cjs/elements/figure/figure.cjs +2 -0
- package/dist/cjs/elements/figure/figure.cjs.map +1 -0
- package/dist/cjs/elements/form/button/button.cjs +2 -0
- package/dist/cjs/elements/form/button/button.cjs.map +1 -0
- package/dist/cjs/elements/form/datalist/datalist.cjs +2 -0
- package/dist/cjs/elements/form/datalist/datalist.cjs.map +1 -0
- package/dist/cjs/elements/form/fieldset/fieldset.cjs +2 -0
- package/dist/cjs/elements/form/fieldset/fieldset.cjs.map +1 -0
- package/dist/cjs/elements/form/form/form.cjs +2 -0
- package/dist/cjs/elements/form/form/form.cjs.map +1 -0
- package/dist/cjs/elements/form/form.cjs +2 -0
- package/dist/cjs/elements/form/form.cjs.map +1 -0
- package/dist/cjs/elements/form/input/input.cjs +2 -0
- package/dist/cjs/elements/form/input/input.cjs.map +1 -0
- package/dist/cjs/elements/form/label/label.cjs +2 -0
- package/dist/cjs/elements/form/label/label.cjs.map +1 -0
- package/dist/cjs/elements/form/legend/legend.cjs +2 -0
- package/dist/cjs/elements/form/legend/legend.cjs.map +1 -0
- package/dist/cjs/elements/form/meter/meter.cjs +2 -0
- package/dist/cjs/elements/form/meter/meter.cjs.map +1 -0
- package/dist/cjs/elements/form/optgroup/optgroup.cjs +2 -0
- package/dist/cjs/elements/form/optgroup/optgroup.cjs.map +1 -0
- package/dist/cjs/elements/form/option/option.cjs +2 -0
- package/dist/cjs/elements/form/option/option.cjs.map +1 -0
- package/dist/cjs/elements/form/output/output.cjs +2 -0
- package/dist/cjs/elements/form/output/output.cjs.map +1 -0
- package/dist/cjs/elements/form/progress/progress.cjs +2 -0
- package/dist/cjs/elements/form/progress/progress.cjs.map +1 -0
- package/dist/cjs/elements/form/select/select.cjs +2 -0
- package/dist/cjs/elements/form/select/select.cjs.map +1 -0
- package/dist/cjs/elements/form/textarea/textarea.cjs +2 -0
- package/dist/cjs/elements/form/textarea/textarea.cjs.map +1 -0
- package/dist/cjs/elements/heading/h1/h1.cjs +2 -0
- package/dist/cjs/elements/heading/h1/h1.cjs.map +1 -0
- package/dist/cjs/elements/heading/h2/h2.cjs +2 -0
- package/dist/cjs/elements/heading/h2/h2.cjs.map +1 -0
- package/dist/cjs/elements/heading/h3/h3.cjs +2 -0
- package/dist/cjs/elements/heading/h3/h3.cjs.map +1 -0
- package/dist/cjs/elements/heading/h4/h4.cjs +2 -0
- package/dist/cjs/elements/heading/h4/h4.cjs.map +1 -0
- package/dist/cjs/elements/heading/h5/h5.cjs +2 -0
- package/dist/cjs/elements/heading/h5/h5.cjs.map +1 -0
- package/dist/cjs/elements/heading/h6/h6.cjs +2 -0
- package/dist/cjs/elements/heading/h6/h6.cjs.map +1 -0
- package/dist/cjs/elements/heading/heading.cjs +2 -0
- package/dist/cjs/elements/heading/heading.cjs.map +1 -0
- package/dist/cjs/elements/inline/a/a.cjs +2 -0
- package/dist/cjs/elements/inline/a/a.cjs.map +1 -0
- package/dist/cjs/elements/inline/abbr/abbr.cjs +2 -0
- package/dist/cjs/elements/inline/abbr/abbr.cjs.map +1 -0
- package/dist/cjs/elements/inline/b/b.cjs +2 -0
- package/dist/cjs/elements/inline/b/b.cjs.map +1 -0
- package/dist/cjs/elements/inline/cite/cite.cjs +2 -0
- package/dist/cjs/elements/inline/cite/cite.cjs.map +1 -0
- package/dist/cjs/elements/inline/code/code.cjs +2 -0
- package/dist/cjs/elements/inline/code/code.cjs.map +1 -0
- package/dist/cjs/elements/inline/data/data.cjs +2 -0
- package/dist/cjs/elements/inline/data/data.cjs.map +1 -0
- package/dist/cjs/elements/inline/dfn/dfn.cjs +2 -0
- package/dist/cjs/elements/inline/dfn/dfn.cjs.map +1 -0
- package/dist/cjs/elements/inline/em/em.cjs +2 -0
- package/dist/cjs/elements/inline/em/em.cjs.map +1 -0
- package/dist/cjs/elements/inline/i/i.cjs +2 -0
- package/dist/cjs/elements/inline/i/i.cjs.map +1 -0
- package/dist/cjs/elements/inline/inline.cjs +1 -0
- package/dist/cjs/elements/inline/kbd/kbd.cjs +2 -0
- package/dist/cjs/elements/inline/kbd/kbd.cjs.map +1 -0
- package/dist/cjs/elements/inline/mark/mark.cjs +2 -0
- package/dist/cjs/elements/inline/mark/mark.cjs.map +1 -0
- package/dist/cjs/elements/inline/q/q.cjs +2 -0
- package/dist/cjs/elements/inline/q/q.cjs.map +1 -0
- package/dist/cjs/elements/inline/rb/rb.cjs +2 -0
- package/dist/cjs/elements/inline/rb/rb.cjs.map +1 -0
- package/dist/cjs/elements/inline/rt/rt.cjs +2 -0
- package/dist/cjs/elements/inline/rt/rt.cjs.map +1 -0
- package/dist/cjs/elements/inline/rtc/rtc.cjs +2 -0
- package/dist/cjs/elements/inline/rtc/rtc.cjs.map +1 -0
- package/dist/cjs/elements/inline/ruby/ruby.cjs +2 -0
- package/dist/cjs/elements/inline/ruby/ruby.cjs.map +1 -0
- package/dist/cjs/elements/inline/s/s.cjs +2 -0
- package/dist/cjs/elements/inline/s/s.cjs.map +1 -0
- package/dist/cjs/elements/inline/samp/samp.cjs +2 -0
- package/dist/cjs/elements/inline/samp/samp.cjs.map +1 -0
- package/dist/cjs/elements/inline/small/small.cjs +2 -0
- package/dist/cjs/elements/inline/small/small.cjs.map +1 -0
- package/dist/cjs/elements/inline/strong/strong.cjs +2 -0
- package/dist/cjs/elements/inline/strong/strong.cjs.map +1 -0
- package/dist/cjs/elements/inline/sub/sub.cjs +2 -0
- package/dist/cjs/elements/inline/sub/sub.cjs.map +1 -0
- package/dist/cjs/elements/inline/sup/sup.cjs +2 -0
- package/dist/cjs/elements/inline/sup/sup.cjs.map +1 -0
- package/dist/cjs/elements/inline/time/time.cjs +2 -0
- package/dist/cjs/elements/inline/time/time.cjs.map +1 -0
- package/dist/cjs/elements/inline/u/u.cjs +2 -0
- package/dist/cjs/elements/inline/u/u.cjs.map +1 -0
- package/dist/cjs/elements/inline/var/var.cjs +2 -0
- package/dist/cjs/elements/inline/var/var.cjs.map +1 -0
- package/dist/cjs/elements/interactive/details/details.cjs +2 -0
- package/dist/cjs/elements/interactive/details/details.cjs.map +1 -0
- package/dist/cjs/elements/interactive/dialog/dialog.cjs +2 -0
- package/dist/cjs/elements/interactive/dialog/dialog.cjs.map +1 -0
- package/dist/cjs/elements/interactive/interactive.cjs +2 -0
- package/dist/cjs/elements/interactive/interactive.cjs.map +1 -0
- package/dist/cjs/elements/interactive/summary/summary.cjs +2 -0
- package/dist/cjs/elements/interactive/summary/summary.cjs.map +1 -0
- package/dist/cjs/elements/layout/article/article.cjs +2 -0
- package/dist/cjs/elements/layout/article/article.cjs.map +1 -0
- package/dist/cjs/elements/layout/aside/aside.cjs +2 -0
- package/dist/cjs/elements/layout/aside/aside.cjs.map +1 -0
- package/dist/cjs/elements/layout/footer/footer.cjs +2 -0
- package/dist/cjs/elements/layout/footer/footer.cjs.map +1 -0
- package/dist/cjs/elements/layout/header/header.cjs +2 -0
- package/dist/cjs/elements/layout/header/header.cjs.map +1 -0
- package/dist/cjs/elements/layout/layout.cjs +2 -0
- package/dist/cjs/elements/layout/layout.cjs.map +1 -0
- package/dist/cjs/elements/layout/main/main.cjs +2 -0
- package/dist/cjs/elements/layout/main/main.cjs.map +1 -0
- package/dist/cjs/elements/layout/nav/nav.cjs +2 -0
- package/dist/cjs/elements/layout/nav/nav.cjs.map +1 -0
- package/dist/cjs/elements/layout/section/section.cjs +2 -0
- package/dist/cjs/elements/layout/section/section.cjs.map +1 -0
- package/dist/cjs/elements/list/dd/dd.cjs +2 -0
- package/dist/cjs/elements/list/dd/dd.cjs.map +1 -0
- package/dist/cjs/elements/list/dl/dl.cjs +2 -0
- package/dist/cjs/elements/list/dl/dl.cjs.map +1 -0
- package/dist/cjs/elements/list/dt/dt.cjs +2 -0
- package/dist/cjs/elements/list/dt/dt.cjs.map +1 -0
- package/dist/cjs/elements/list/li/li.cjs +2 -0
- package/dist/cjs/elements/list/li/li.cjs.map +1 -0
- package/dist/cjs/elements/list/list.cjs +2 -0
- package/dist/cjs/elements/list/list.cjs.map +1 -0
- package/dist/cjs/elements/list/ol/ol.cjs +2 -0
- package/dist/cjs/elements/list/ol/ol.cjs.map +1 -0
- package/dist/cjs/elements/list/ul/ul.cjs +2 -0
- package/dist/cjs/elements/list/ul/ul.cjs.map +1 -0
- package/dist/cjs/elements/media/audio/audio.cjs +2 -0
- package/dist/cjs/elements/media/audio/audio.cjs.map +1 -0
- package/dist/cjs/elements/media/canvas/canvas.cjs +2 -0
- package/dist/cjs/elements/media/canvas/canvas.cjs.map +1 -0
- package/dist/cjs/elements/media/embed/embed.cjs +2 -0
- package/dist/cjs/elements/media/embed/embed.cjs.map +1 -0
- package/dist/cjs/elements/media/iframe/iframe.cjs +2 -0
- package/dist/cjs/elements/media/iframe/iframe.cjs.map +1 -0
- package/dist/cjs/elements/media/img/img.cjs +2 -0
- package/dist/cjs/elements/media/img/img.cjs.map +1 -0
- package/dist/cjs/elements/media/math/math.cjs +2 -0
- package/dist/cjs/elements/media/math/math.cjs.map +1 -0
- package/dist/cjs/elements/media/media.cjs +2 -0
- package/dist/cjs/elements/media/media.cjs.map +1 -0
- package/dist/cjs/elements/media/object/object.cjs +2 -0
- package/dist/cjs/elements/media/object/object.cjs.map +1 -0
- package/dist/cjs/elements/media/svg/svg.cjs +2 -0
- package/dist/cjs/elements/media/svg/svg.cjs.map +1 -0
- package/dist/cjs/elements/media/video/video.cjs +2 -0
- package/dist/cjs/elements/media/video/video.cjs.map +1 -0
- package/dist/cjs/elements/responsive/area/area.cjs +2 -0
- package/dist/cjs/elements/responsive/area/area.cjs.map +1 -0
- package/dist/cjs/elements/responsive/map/map.cjs +2 -0
- package/dist/cjs/elements/responsive/map/map.cjs.map +1 -0
- package/dist/cjs/elements/responsive/picture/picture.cjs +2 -0
- package/dist/cjs/elements/responsive/picture/picture.cjs.map +1 -0
- package/dist/cjs/elements/responsive/responsive.cjs +2 -0
- package/dist/cjs/elements/responsive/responsive.cjs.map +1 -0
- package/dist/cjs/elements/responsive/source/source.cjs +2 -0
- package/dist/cjs/elements/responsive/source/source.cjs.map +1 -0
- package/dist/cjs/elements/responsive/track/track.cjs +2 -0
- package/dist/cjs/elements/responsive/track/track.cjs.map +1 -0
- package/dist/cjs/elements/table/caption/caption.cjs +2 -0
- package/dist/cjs/elements/table/caption/caption.cjs.map +1 -0
- package/dist/cjs/elements/table/col/col.cjs +2 -0
- package/dist/cjs/elements/table/col/col.cjs.map +1 -0
- package/dist/cjs/elements/table/colgroup/colgroup.cjs +2 -0
- package/dist/cjs/elements/table/colgroup/colgroup.cjs.map +1 -0
- package/dist/cjs/elements/table/table/table.cjs +2 -0
- package/dist/cjs/elements/table/table/table.cjs.map +1 -0
- package/dist/cjs/elements/table/table.cjs +2 -0
- package/dist/cjs/elements/table/table.cjs.map +1 -0
- package/dist/cjs/elements/table/tbody/tbody.cjs +2 -0
- package/dist/cjs/elements/table/tbody/tbody.cjs.map +1 -0
- package/dist/cjs/elements/table/td/td.cjs +2 -0
- package/dist/cjs/elements/table/td/td.cjs.map +1 -0
- package/dist/cjs/elements/table/tfoot/tfoot.cjs +2 -0
- package/dist/cjs/elements/table/tfoot/tfoot.cjs.map +1 -0
- package/dist/cjs/elements/table/th/th.cjs +2 -0
- package/dist/cjs/elements/table/th/th.cjs.map +1 -0
- package/dist/cjs/elements/table/thead/thead.cjs +2 -0
- package/dist/cjs/elements/table/thead/thead.cjs.map +1 -0
- package/dist/cjs/elements/table/tr/tr.cjs +2 -0
- package/dist/cjs/elements/table/tr/tr.cjs.map +1 -0
- package/dist/cjs/elements/text/address/address.cjs +2 -0
- package/dist/cjs/elements/text/address/address.cjs.map +1 -0
- package/dist/cjs/elements/text/blockquote/blockquote.cjs +2 -0
- package/dist/cjs/elements/text/blockquote/blockquote.cjs.map +1 -0
- package/dist/cjs/elements/text/hr/hr.cjs +2 -0
- package/dist/cjs/elements/text/hr/hr.cjs.map +1 -0
- package/dist/cjs/elements/text/paragraph/paragraph.cjs +2 -0
- package/dist/cjs/elements/text/paragraph/paragraph.cjs.map +1 -0
- package/dist/cjs/elements/text/pre/pre.cjs +2 -0
- package/dist/cjs/elements/text/pre/pre.cjs.map +1 -0
- package/dist/cjs/elements/text/text.cjs +2 -0
- package/dist/cjs/elements/text/text.cjs.map +1 -0
- package/dist/cjs/elements.cjs +2 -0
- package/dist/cjs/elements.cjs.map +1 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/css/core.css +1 -0
- package/dist/css/core.css.map +1 -0
- package/dist/css/elements/break/br/br.css +1 -0
- package/dist/css/elements/break/br/br.css.map +1 -0
- package/dist/css/elements/break/wbr/wbr.css +1 -0
- package/dist/css/elements/break/wbr/wbr.css.map +1 -0
- package/dist/css/elements/container/div/div.css +1 -0
- package/dist/css/elements/container/div/div.css.map +1 -0
- package/dist/css/elements/container/span/span.css +1 -0
- package/dist/css/elements/container/span/span.css.map +1 -0
- package/dist/css/elements/figure/figcaption/figcaption.css +1 -0
- package/dist/css/elements/figure/figcaption/figcaption.css.map +1 -0
- package/dist/css/elements/figure/figure/figure.css +1 -0
- package/dist/css/elements/figure/figure/figure.css.map +1 -0
- package/dist/css/elements/form/button/button.css +1 -0
- package/dist/css/elements/form/button/button.css.map +1 -0
- package/dist/css/elements/form/datalist/datalist.css +1 -0
- package/dist/css/elements/form/datalist/datalist.css.map +1 -0
- package/dist/css/elements/form/fieldset/fieldset.css +1 -0
- package/dist/css/elements/form/fieldset/fieldset.css.map +1 -0
- package/dist/css/elements/form/form/form.css +1 -0
- package/dist/css/elements/form/form/form.css.map +1 -0
- package/dist/css/elements/form/input/input.css +1 -0
- package/dist/css/elements/form/input/input.css.map +1 -0
- package/dist/css/elements/form/label/label.css +1 -0
- package/dist/css/elements/form/label/label.css.map +1 -0
- package/dist/css/elements/form/legend/legend.css +1 -0
- package/dist/css/elements/form/legend/legend.css.map +1 -0
- package/dist/css/elements/form/meter/meter.css +1 -0
- package/dist/css/elements/form/meter/meter.css.map +1 -0
- package/dist/css/elements/form/optgroup/optgroup.css +1 -0
- package/dist/css/elements/form/optgroup/optgroup.css.map +1 -0
- package/dist/css/elements/form/option/option.css +1 -0
- package/dist/css/elements/form/option/option.css.map +1 -0
- package/dist/css/elements/form/output/output.css +1 -0
- package/dist/css/elements/form/output/output.css.map +1 -0
- package/dist/css/elements/form/progress/progress.css +1 -0
- package/dist/css/elements/form/progress/progress.css.map +1 -0
- package/dist/css/elements/form/select/select.css +1 -0
- package/dist/css/elements/form/select/select.css.map +1 -0
- package/dist/css/elements/form/textarea/textarea.css +1 -0
- package/dist/css/elements/form/textarea/textarea.css.map +1 -0
- package/dist/css/elements/heading/h1/h1.css +1 -0
- package/dist/css/elements/heading/h1/h1.css.map +1 -0
- package/dist/css/elements/heading/h2/h2.css +1 -0
- package/dist/css/elements/heading/h2/h2.css.map +1 -0
- package/dist/css/elements/heading/h3/h3.css +1 -0
- package/dist/css/elements/heading/h3/h3.css.map +1 -0
- package/dist/css/elements/heading/h4/h4.css +1 -0
- package/dist/css/elements/heading/h4/h4.css.map +1 -0
- package/dist/css/elements/heading/h5/h5.css +1 -0
- package/dist/css/elements/heading/h5/h5.css.map +1 -0
- package/dist/css/elements/heading/h6/h6.css +1 -0
- package/dist/css/elements/heading/h6/h6.css.map +1 -0
- package/dist/css/elements/inline/a/a.css +1 -0
- package/dist/css/elements/inline/a/a.css.map +1 -0
- package/dist/css/elements/inline/abbr/abbr.css +1 -0
- package/dist/css/elements/inline/abbr/abbr.css.map +1 -0
- package/dist/css/elements/inline/b/b.css +1 -0
- package/dist/css/elements/inline/b/b.css.map +1 -0
- package/dist/css/elements/inline/cite/cite.css +1 -0
- package/dist/css/elements/inline/cite/cite.css.map +1 -0
- package/dist/css/elements/inline/code/code.css +1 -0
- package/dist/css/elements/inline/code/code.css.map +1 -0
- package/dist/css/elements/inline/data/data.css +1 -0
- package/dist/css/elements/inline/data/data.css.map +1 -0
- package/dist/css/elements/inline/dfn/dfn.css +1 -0
- package/dist/css/elements/inline/dfn/dfn.css.map +1 -0
- package/dist/css/elements/inline/em/em.css +1 -0
- package/dist/css/elements/inline/em/em.css.map +1 -0
- package/dist/css/elements/inline/i/i.css +1 -0
- package/dist/css/elements/inline/i/i.css.map +1 -0
- package/dist/css/elements/inline/kbd/kbd.css +1 -0
- package/dist/css/elements/inline/kbd/kbd.css.map +1 -0
- package/dist/css/elements/inline/mark/mark.css +1 -0
- package/dist/css/elements/inline/mark/mark.css.map +1 -0
- package/dist/css/elements/inline/q/q.css +1 -0
- package/dist/css/elements/inline/q/q.css.map +1 -0
- package/dist/css/elements/inline/rb/rb.css +1 -0
- package/dist/css/elements/inline/rb/rb.css.map +1 -0
- package/dist/css/elements/inline/rp/rp.css +1 -0
- package/dist/css/elements/inline/rp/rp.css.map +1 -0
- package/dist/css/elements/inline/rt/rt.css +1 -0
- package/dist/css/elements/inline/rt/rt.css.map +1 -0
- package/dist/css/elements/inline/rtc/rtc.css +1 -0
- package/dist/css/elements/inline/rtc/rtc.css.map +1 -0
- package/dist/css/elements/inline/ruby/ruby.css +1 -0
- package/dist/css/elements/inline/ruby/ruby.css.map +1 -0
- package/dist/css/elements/inline/s/s.css +1 -0
- package/dist/css/elements/inline/s/s.css.map +1 -0
- package/dist/css/elements/inline/samp/samp.css +1 -0
- package/dist/css/elements/inline/samp/samp.css.map +1 -0
- package/dist/css/elements/inline/small/small.css +1 -0
- package/dist/css/elements/inline/small/small.css.map +1 -0
- package/dist/css/elements/inline/strong/strong.css +1 -0
- package/dist/css/elements/inline/strong/strong.css.map +1 -0
- package/dist/css/elements/inline/sub/sub.css +1 -0
- package/dist/css/elements/inline/sub/sub.css.map +1 -0
- package/dist/css/elements/inline/sup/sup.css +1 -0
- package/dist/css/elements/inline/sup/sup.css.map +1 -0
- package/dist/css/elements/inline/time/time.css +1 -0
- package/dist/css/elements/inline/time/time.css.map +1 -0
- package/dist/css/elements/inline/u/u.css +1 -0
- package/dist/css/elements/inline/u/u.css.map +1 -0
- package/dist/css/elements/inline/var/var.css +1 -0
- package/dist/css/elements/inline/var/var.css.map +1 -0
- package/dist/css/elements/interactive/details/details.css +1 -0
- package/dist/css/elements/interactive/details/details.css.map +1 -0
- package/dist/css/elements/interactive/dialog/dialog.css +1 -0
- package/dist/css/elements/interactive/dialog/dialog.css.map +1 -0
- package/dist/css/elements/interactive/summary/summary.css +1 -0
- package/dist/css/elements/interactive/summary/summary.css.map +1 -0
- package/dist/css/elements/layout/article/article.css +1 -0
- package/dist/css/elements/layout/article/article.css.map +1 -0
- package/dist/css/elements/layout/aside/aside.css +1 -0
- package/dist/css/elements/layout/aside/aside.css.map +1 -0
- package/dist/css/elements/layout/footer/footer.css +1 -0
- package/dist/css/elements/layout/footer/footer.css.map +1 -0
- package/dist/css/elements/layout/header/header.css +1 -0
- package/dist/css/elements/layout/header/header.css.map +1 -0
- package/dist/css/elements/layout/main/main.css +1 -0
- package/dist/css/elements/layout/main/main.css.map +1 -0
- package/dist/css/elements/layout/nav/nav.css +1 -0
- package/dist/css/elements/layout/nav/nav.css.map +1 -0
- package/dist/css/elements/layout/section/section.css +1 -0
- package/dist/css/elements/layout/section/section.css.map +1 -0
- package/dist/css/elements/list/dd/dd.css +1 -0
- package/dist/css/elements/list/dd/dd.css.map +1 -0
- package/dist/css/elements/list/dl/dl.css +1 -0
- package/dist/css/elements/list/dl/dl.css.map +1 -0
- package/dist/css/elements/list/dt/dt.css +1 -0
- package/dist/css/elements/list/dt/dt.css.map +1 -0
- package/dist/css/elements/list/li/li.css +1 -0
- package/dist/css/elements/list/li/li.css.map +1 -0
- package/dist/css/elements/list/ol/ol.css +1 -0
- package/dist/css/elements/list/ol/ol.css.map +1 -0
- package/dist/css/elements/list/ul/ul.css +1 -0
- package/dist/css/elements/list/ul/ul.css.map +1 -0
- package/dist/css/elements/media/audio/audio.css +1 -0
- package/dist/css/elements/media/audio/audio.css.map +1 -0
- package/dist/css/elements/media/canvas/canvas.css +1 -0
- package/dist/css/elements/media/canvas/canvas.css.map +1 -0
- package/dist/css/elements/media/embed/embed.css +1 -0
- package/dist/css/elements/media/embed/embed.css.map +1 -0
- package/dist/css/elements/media/iframe/iframe.css +1 -0
- package/dist/css/elements/media/iframe/iframe.css.map +1 -0
- package/dist/css/elements/media/img/img.css +1 -0
- package/dist/css/elements/media/img/img.css.map +1 -0
- package/dist/css/elements/media/math/math.css +1 -0
- package/dist/css/elements/media/math/math.css.map +1 -0
- package/dist/css/elements/media/object/object.css +1 -0
- package/dist/css/elements/media/object/object.css.map +1 -0
- package/dist/css/elements/media/svg/svg.css +1 -0
- package/dist/css/elements/media/svg/svg.css.map +1 -0
- package/dist/css/elements/media/video/video.css +1 -0
- package/dist/css/elements/media/video/video.css.map +1 -0
- package/dist/css/elements/responsive/area/area.css +1 -0
- package/dist/css/elements/responsive/area/area.css.map +1 -0
- package/dist/css/elements/responsive/map/map.css +1 -0
- package/dist/css/elements/responsive/map/map.css.map +1 -0
- package/dist/css/elements/responsive/picture/picture.css +1 -0
- package/dist/css/elements/responsive/picture/picture.css.map +1 -0
- package/dist/css/elements/responsive/source/source.css +1 -0
- package/dist/css/elements/responsive/source/source.css.map +1 -0
- package/dist/css/elements/responsive/track/track.css +1 -0
- package/dist/css/elements/responsive/track/track.css.map +1 -0
- package/dist/css/elements/table/caption/caption.css +1 -0
- package/dist/css/elements/table/caption/caption.css.map +1 -0
- package/dist/css/elements/table/col/col.css +1 -0
- package/dist/css/elements/table/col/col.css.map +1 -0
- package/dist/css/elements/table/colgroup/colgroup.css +1 -0
- package/dist/css/elements/table/colgroup/colgroup.css.map +1 -0
- package/dist/css/elements/table/table/table.css +1 -0
- package/dist/css/elements/table/table/table.css.map +1 -0
- package/dist/css/elements/table/tbody/tbody.css +1 -0
- package/dist/css/elements/table/tbody/tbody.css.map +1 -0
- package/dist/css/elements/table/td/td.css +1 -0
- package/dist/css/elements/table/td/td.css.map +1 -0
- package/dist/css/elements/table/tfoot/tfoot.css +1 -0
- package/dist/css/elements/table/tfoot/tfoot.css.map +1 -0
- package/dist/css/elements/table/th/th.css +1 -0
- package/dist/css/elements/table/th/th.css.map +1 -0
- package/dist/css/elements/table/thead/thead.css +1 -0
- package/dist/css/elements/table/thead/thead.css.map +1 -0
- package/dist/css/elements/table/tr/tr.css +1 -0
- package/dist/css/elements/table/tr/tr.css.map +1 -0
- package/dist/css/elements/text/address/address.css +1 -0
- package/dist/css/elements/text/address/address.css.map +1 -0
- package/dist/css/elements/text/blockquote/blockquote.css +1 -0
- package/dist/css/elements/text/blockquote/blockquote.css.map +1 -0
- package/dist/css/elements/text/hr/hr.css +1 -0
- package/dist/css/elements/text/hr/hr.css.map +1 -0
- package/dist/css/elements/text/paragraph/paragraph.css +1 -0
- package/dist/css/elements/text/paragraph/paragraph.css.map +1 -0
- package/dist/css/elements/text/pre/pre.css +1 -0
- package/dist/css/elements/text/pre/pre.css.map +1 -0
- package/dist/css/main.css +1 -0
- package/dist/css/main.css.map +1 -0
- package/dist/esm/chunks/dom.js +38 -0
- package/dist/esm/chunks/dom.js.map +1 -0
- package/dist/esm/chunks/inline.js +81 -0
- package/dist/esm/chunks/inline.js.map +1 -0
- package/dist/esm/chunks/pkgn-sol.js +7 -0
- package/dist/esm/chunks/pkgn-sol.js.map +1 -0
- package/dist/esm/elements/break/br/br.js +26 -0
- package/dist/esm/elements/break/br/br.js.map +1 -0
- package/dist/esm/elements/break/break.js +12 -0
- package/dist/esm/elements/break/break.js.map +1 -0
- package/dist/esm/elements/break/wbr/wbr.js +26 -0
- package/dist/esm/elements/break/wbr/wbr.js.map +1 -0
- package/dist/esm/elements/container/container.js +12 -0
- package/dist/esm/elements/container/container.js.map +1 -0
- package/dist/esm/elements/container/div/div.js +26 -0
- package/dist/esm/elements/container/div/div.js.map +1 -0
- package/dist/esm/elements/container/span/span.js +26 -0
- package/dist/esm/elements/container/span/span.js.map +1 -0
- package/dist/esm/elements/figure/figcaption/figcaption.js +26 -0
- package/dist/esm/elements/figure/figcaption/figcaption.js.map +1 -0
- package/dist/esm/elements/figure/figure/figure.js +26 -0
- package/dist/esm/elements/figure/figure/figure.js.map +1 -0
- package/dist/esm/elements/figure/figure.js +12 -0
- package/dist/esm/elements/figure/figure.js.map +1 -0
- package/dist/esm/elements/form/button/button.js +31 -0
- package/dist/esm/elements/form/button/button.js.map +1 -0
- package/dist/esm/elements/form/datalist/datalist.js +26 -0
- package/dist/esm/elements/form/datalist/datalist.js.map +1 -0
- package/dist/esm/elements/form/fieldset/fieldset.js +27 -0
- package/dist/esm/elements/form/fieldset/fieldset.js.map +1 -0
- package/dist/esm/elements/form/form/form.js +27 -0
- package/dist/esm/elements/form/form/form.js.map +1 -0
- package/dist/esm/elements/form/form.js +36 -0
- package/dist/esm/elements/form/form.js.map +1 -0
- package/dist/esm/elements/form/input/input.js +31 -0
- package/dist/esm/elements/form/input/input.js.map +1 -0
- package/dist/esm/elements/form/label/label.js +29 -0
- package/dist/esm/elements/form/label/label.js.map +1 -0
- package/dist/esm/elements/form/legend/legend.js +26 -0
- package/dist/esm/elements/form/legend/legend.js.map +1 -0
- package/dist/esm/elements/form/meter/meter.js +29 -0
- package/dist/esm/elements/form/meter/meter.js.map +1 -0
- package/dist/esm/elements/form/optgroup/optgroup.js +24 -0
- package/dist/esm/elements/form/optgroup/optgroup.js.map +1 -0
- package/dist/esm/elements/form/option/option.js +26 -0
- package/dist/esm/elements/form/option/option.js.map +1 -0
- package/dist/esm/elements/form/output/output.js +27 -0
- package/dist/esm/elements/form/output/output.js.map +1 -0
- package/dist/esm/elements/form/progress/progress.js +27 -0
- package/dist/esm/elements/form/progress/progress.js.map +1 -0
- package/dist/esm/elements/form/select/select.js +29 -0
- package/dist/esm/elements/form/select/select.js.map +1 -0
- package/dist/esm/elements/form/textarea/textarea.js +31 -0
- package/dist/esm/elements/form/textarea/textarea.js.map +1 -0
- package/dist/esm/elements/heading/h1/h1.js +26 -0
- package/dist/esm/elements/heading/h1/h1.js.map +1 -0
- package/dist/esm/elements/heading/h2/h2.js +26 -0
- package/dist/esm/elements/heading/h2/h2.js.map +1 -0
- package/dist/esm/elements/heading/h3/h3.js +26 -0
- package/dist/esm/elements/heading/h3/h3.js.map +1 -0
- package/dist/esm/elements/heading/h4/h4.js +26 -0
- package/dist/esm/elements/heading/h4/h4.js.map +1 -0
- package/dist/esm/elements/heading/h5/h5.js +26 -0
- package/dist/esm/elements/heading/h5/h5.js.map +1 -0
- package/dist/esm/elements/heading/h6/h6.js +26 -0
- package/dist/esm/elements/heading/h6/h6.js.map +1 -0
- package/dist/esm/elements/heading/heading.js +20 -0
- package/dist/esm/elements/heading/heading.js.map +1 -0
- package/dist/esm/elements/inline/a/a.js +28 -0
- package/dist/esm/elements/inline/a/a.js.map +1 -0
- package/dist/esm/elements/inline/abbr/abbr.js +26 -0
- package/dist/esm/elements/inline/abbr/abbr.js.map +1 -0
- package/dist/esm/elements/inline/b/b.js +26 -0
- package/dist/esm/elements/inline/b/b.js.map +1 -0
- package/dist/esm/elements/inline/cite/cite.js +26 -0
- package/dist/esm/elements/inline/cite/cite.js.map +1 -0
- package/dist/esm/elements/inline/code/code.js +26 -0
- package/dist/esm/elements/inline/code/code.js.map +1 -0
- package/dist/esm/elements/inline/data/data.js +26 -0
- package/dist/esm/elements/inline/data/data.js.map +1 -0
- package/dist/esm/elements/inline/dfn/dfn.js +26 -0
- package/dist/esm/elements/inline/dfn/dfn.js.map +1 -0
- package/dist/esm/elements/inline/em/em.js +26 -0
- package/dist/esm/elements/inline/em/em.js.map +1 -0
- package/dist/esm/elements/inline/i/i.js +26 -0
- package/dist/esm/elements/inline/i/i.js.map +1 -0
- package/dist/esm/elements/inline/inline.js +27 -0
- package/dist/esm/elements/inline/kbd/kbd.js +26 -0
- package/dist/esm/elements/inline/kbd/kbd.js.map +1 -0
- package/dist/esm/elements/inline/mark/mark.js +26 -0
- package/dist/esm/elements/inline/mark/mark.js.map +1 -0
- package/dist/esm/elements/inline/q/q.js +33 -0
- package/dist/esm/elements/inline/q/q.js.map +1 -0
- package/dist/esm/elements/inline/rb/rb.js +26 -0
- package/dist/esm/elements/inline/rb/rb.js.map +1 -0
- package/dist/esm/elements/inline/rt/rt.js +26 -0
- package/dist/esm/elements/inline/rt/rt.js.map +1 -0
- package/dist/esm/elements/inline/rtc/rtc.js +27 -0
- package/dist/esm/elements/inline/rtc/rtc.js.map +1 -0
- package/dist/esm/elements/inline/ruby/ruby.js +26 -0
- package/dist/esm/elements/inline/ruby/ruby.js.map +1 -0
- package/dist/esm/elements/inline/s/s.js +26 -0
- package/dist/esm/elements/inline/s/s.js.map +1 -0
- package/dist/esm/elements/inline/samp/samp.js +26 -0
- package/dist/esm/elements/inline/samp/samp.js.map +1 -0
- package/dist/esm/elements/inline/small/small.js +26 -0
- package/dist/esm/elements/inline/small/small.js.map +1 -0
- package/dist/esm/elements/inline/strong/strong.js +26 -0
- package/dist/esm/elements/inline/strong/strong.js.map +1 -0
- package/dist/esm/elements/inline/sub/sub.js +26 -0
- package/dist/esm/elements/inline/sub/sub.js.map +1 -0
- package/dist/esm/elements/inline/sup/sup.js +26 -0
- package/dist/esm/elements/inline/sup/sup.js.map +1 -0
- package/dist/esm/elements/inline/time/time.js +26 -0
- package/dist/esm/elements/inline/time/time.js.map +1 -0
- package/dist/esm/elements/inline/u/u.js +26 -0
- package/dist/esm/elements/inline/u/u.js.map +1 -0
- package/dist/esm/elements/inline/var/var.js +26 -0
- package/dist/esm/elements/inline/var/var.js.map +1 -0
- package/dist/esm/elements/interactive/details/details.js +29 -0
- package/dist/esm/elements/interactive/details/details.js.map +1 -0
- package/dist/esm/elements/interactive/dialog/dialog.js +26 -0
- package/dist/esm/elements/interactive/dialog/dialog.js.map +1 -0
- package/dist/esm/elements/interactive/interactive.js +14 -0
- package/dist/esm/elements/interactive/interactive.js.map +1 -0
- package/dist/esm/elements/interactive/summary/summary.js +26 -0
- package/dist/esm/elements/interactive/summary/summary.js.map +1 -0
- package/dist/esm/elements/layout/article/article.js +26 -0
- package/dist/esm/elements/layout/article/article.js.map +1 -0
- package/dist/esm/elements/layout/aside/aside.js +26 -0
- package/dist/esm/elements/layout/aside/aside.js.map +1 -0
- package/dist/esm/elements/layout/footer/footer.js +26 -0
- package/dist/esm/elements/layout/footer/footer.js.map +1 -0
- package/dist/esm/elements/layout/header/header.js +26 -0
- package/dist/esm/elements/layout/header/header.js.map +1 -0
- package/dist/esm/elements/layout/layout.js +22 -0
- package/dist/esm/elements/layout/layout.js.map +1 -0
- package/dist/esm/elements/layout/main/main.js +26 -0
- package/dist/esm/elements/layout/main/main.js.map +1 -0
- package/dist/esm/elements/layout/nav/nav.js +26 -0
- package/dist/esm/elements/layout/nav/nav.js.map +1 -0
- package/dist/esm/elements/layout/section/section.js +26 -0
- package/dist/esm/elements/layout/section/section.js.map +1 -0
- package/dist/esm/elements/list/dd/dd.js +26 -0
- package/dist/esm/elements/list/dd/dd.js.map +1 -0
- package/dist/esm/elements/list/dl/dl.js +26 -0
- package/dist/esm/elements/list/dl/dl.js.map +1 -0
- package/dist/esm/elements/list/dt/dt.js +26 -0
- package/dist/esm/elements/list/dt/dt.js.map +1 -0
- package/dist/esm/elements/list/li/li.js +27 -0
- package/dist/esm/elements/list/li/li.js.map +1 -0
- package/dist/esm/elements/list/list.js +20 -0
- package/dist/esm/elements/list/list.js.map +1 -0
- package/dist/esm/elements/list/ol/ol.js +27 -0
- package/dist/esm/elements/list/ol/ol.js.map +1 -0
- package/dist/esm/elements/list/ul/ul.js +26 -0
- package/dist/esm/elements/list/ul/ul.js.map +1 -0
- package/dist/esm/elements/media/audio/audio.js +27 -0
- package/dist/esm/elements/media/audio/audio.js.map +1 -0
- package/dist/esm/elements/media/canvas/canvas.js +21 -0
- package/dist/esm/elements/media/canvas/canvas.js.map +1 -0
- package/dist/esm/elements/media/embed/embed.js +44 -0
- package/dist/esm/elements/media/embed/embed.js.map +1 -0
- package/dist/esm/elements/media/iframe/iframe.js +27 -0
- package/dist/esm/elements/media/iframe/iframe.js.map +1 -0
- package/dist/esm/elements/media/img/img.js +25 -0
- package/dist/esm/elements/media/img/img.js.map +1 -0
- package/dist/esm/elements/media/math/math.js +23 -0
- package/dist/esm/elements/media/math/math.js.map +1 -0
- package/dist/esm/elements/media/media.js +26 -0
- package/dist/esm/elements/media/media.js.map +1 -0
- package/dist/esm/elements/media/object/object.js +37 -0
- package/dist/esm/elements/media/object/object.js.map +1 -0
- package/dist/esm/elements/media/svg/svg.js +27 -0
- package/dist/esm/elements/media/svg/svg.js.map +1 -0
- package/dist/esm/elements/media/video/video.js +27 -0
- package/dist/esm/elements/media/video/video.js.map +1 -0
- package/dist/esm/elements/responsive/area/area.js +20 -0
- package/dist/esm/elements/responsive/area/area.js.map +1 -0
- package/dist/esm/elements/responsive/map/map.js +35 -0
- package/dist/esm/elements/responsive/map/map.js.map +1 -0
- package/dist/esm/elements/responsive/picture/picture.js +26 -0
- package/dist/esm/elements/responsive/picture/picture.js.map +1 -0
- package/dist/esm/elements/responsive/responsive.js +18 -0
- package/dist/esm/elements/responsive/responsive.js.map +1 -0
- package/dist/esm/elements/responsive/source/source.js +29 -0
- package/dist/esm/elements/responsive/source/source.js.map +1 -0
- package/dist/esm/elements/responsive/track/track.js +27 -0
- package/dist/esm/elements/responsive/track/track.js.map +1 -0
- package/dist/esm/elements/table/caption/caption.js +26 -0
- package/dist/esm/elements/table/caption/caption.js.map +1 -0
- package/dist/esm/elements/table/col/col.js +30 -0
- package/dist/esm/elements/table/col/col.js.map +1 -0
- package/dist/esm/elements/table/colgroup/colgroup.js +33 -0
- package/dist/esm/elements/table/colgroup/colgroup.js.map +1 -0
- package/dist/esm/elements/table/table/table.js +26 -0
- package/dist/esm/elements/table/table/table.js.map +1 -0
- package/dist/esm/elements/table/table.js +28 -0
- package/dist/esm/elements/table/table.js.map +1 -0
- package/dist/esm/elements/table/tbody/tbody.js +26 -0
- package/dist/esm/elements/table/tbody/tbody.js.map +1 -0
- package/dist/esm/elements/table/td/td.js +39 -0
- package/dist/esm/elements/table/td/td.js.map +1 -0
- package/dist/esm/elements/table/tfoot/tfoot.js +26 -0
- package/dist/esm/elements/table/tfoot/tfoot.js.map +1 -0
- package/dist/esm/elements/table/th/th.js +33 -0
- package/dist/esm/elements/table/th/th.js.map +1 -0
- package/dist/esm/elements/table/thead/thead.js +26 -0
- package/dist/esm/elements/table/thead/thead.js.map +1 -0
- package/dist/esm/elements/table/tr/tr.js +26 -0
- package/dist/esm/elements/table/tr/tr.js.map +1 -0
- package/dist/esm/elements/text/address/address.js +26 -0
- package/dist/esm/elements/text/address/address.js.map +1 -0
- package/dist/esm/elements/text/blockquote/blockquote.js +29 -0
- package/dist/esm/elements/text/blockquote/blockquote.js.map +1 -0
- package/dist/esm/elements/text/hr/hr.js +26 -0
- package/dist/esm/elements/text/hr/hr.js.map +1 -0
- package/dist/esm/elements/text/paragraph/paragraph.js +26 -0
- package/dist/esm/elements/text/paragraph/paragraph.js.map +1 -0
- package/dist/esm/elements/text/pre/pre.js +26 -0
- package/dist/esm/elements/text/pre/pre.js.map +1 -0
- package/dist/esm/elements/text/text.js +18 -0
- package/dist/esm/elements/text/text.js.map +1 -0
- package/dist/esm/elements.js +34 -0
- package/dist/esm/elements.js.map +1 -0
- package/dist/esm/index.js +73 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types/elements/break/br/index.d.ts +111 -0
- package/dist/types/elements/break/br/index.d.ts.map +1 -0
- package/dist/types/elements/break/index.d.ts +32 -0
- package/dist/types/elements/break/index.d.ts.map +1 -0
- package/dist/types/elements/break/wbr/index.d.ts +112 -0
- package/dist/types/elements/break/wbr/index.d.ts.map +1 -0
- package/dist/types/elements/container/div/index.d.ts +123 -0
- package/dist/types/elements/container/div/index.d.ts.map +1 -0
- package/dist/types/elements/container/index.d.ts +32 -0
- package/dist/types/elements/container/index.d.ts.map +1 -0
- package/dist/types/elements/container/span/index.d.ts +100 -0
- package/dist/types/elements/container/span/index.d.ts.map +1 -0
- package/dist/types/elements/figure/figcaption/index.d.ts +115 -0
- package/dist/types/elements/figure/figcaption/index.d.ts.map +1 -0
- package/dist/types/elements/figure/figure/index.d.ts +124 -0
- package/dist/types/elements/figure/figure/index.d.ts.map +1 -0
- package/dist/types/elements/figure/index.d.ts +38 -0
- package/dist/types/elements/figure/index.d.ts.map +1 -0
- package/dist/types/elements/form/button/index.d.ts +216 -0
- package/dist/types/elements/form/button/index.d.ts.map +1 -0
- package/dist/types/elements/form/datalist/index.d.ts +140 -0
- package/dist/types/elements/form/datalist/index.d.ts.map +1 -0
- package/dist/types/elements/form/fieldset/index.d.ts +147 -0
- package/dist/types/elements/form/fieldset/index.d.ts.map +1 -0
- package/dist/types/elements/form/form/index.d.ts +210 -0
- package/dist/types/elements/form/form/index.d.ts.map +1 -0
- package/dist/types/elements/form/index.d.ts +140 -0
- package/dist/types/elements/form/index.d.ts.map +1 -0
- package/dist/types/elements/form/input/index.d.ts +313 -0
- package/dist/types/elements/form/input/index.d.ts.map +1 -0
- package/dist/types/elements/form/label/index.d.ts +144 -0
- package/dist/types/elements/form/label/index.d.ts.map +1 -0
- package/dist/types/elements/form/legend/index.d.ts +126 -0
- package/dist/types/elements/form/legend/index.d.ts.map +1 -0
- package/dist/types/elements/form/meter/index.d.ts +152 -0
- package/dist/types/elements/form/meter/index.d.ts.map +1 -0
- package/dist/types/elements/form/optgroup/index.d.ts +127 -0
- package/dist/types/elements/form/optgroup/index.d.ts.map +1 -0
- package/dist/types/elements/form/option/index.d.ts +160 -0
- package/dist/types/elements/form/option/index.d.ts.map +1 -0
- package/dist/types/elements/form/output/index.d.ts +146 -0
- package/dist/types/elements/form/output/index.d.ts.map +1 -0
- package/dist/types/elements/form/progress/index.d.ts +140 -0
- package/dist/types/elements/form/progress/index.d.ts.map +1 -0
- package/dist/types/elements/form/select/index.d.ts +158 -0
- package/dist/types/elements/form/select/index.d.ts.map +1 -0
- package/dist/types/elements/form/textarea/index.d.ts +228 -0
- package/dist/types/elements/form/textarea/index.d.ts.map +1 -0
- package/dist/types/elements/heading/h1/index.d.ts +130 -0
- package/dist/types/elements/heading/h1/index.d.ts.map +1 -0
- package/dist/types/elements/heading/h2/index.d.ts +128 -0
- package/dist/types/elements/heading/h2/index.d.ts.map +1 -0
- package/dist/types/elements/heading/h3/index.d.ts +126 -0
- package/dist/types/elements/heading/h3/index.d.ts.map +1 -0
- package/dist/types/elements/heading/h4/index.d.ts +113 -0
- package/dist/types/elements/heading/h4/index.d.ts.map +1 -0
- package/dist/types/elements/heading/h5/index.d.ts +126 -0
- package/dist/types/elements/heading/h5/index.d.ts.map +1 -0
- package/dist/types/elements/heading/h6/index.d.ts +119 -0
- package/dist/types/elements/heading/h6/index.d.ts.map +1 -0
- package/dist/types/elements/heading/index.d.ts +68 -0
- package/dist/types/elements/heading/index.d.ts.map +1 -0
- package/dist/types/elements/index.d.ts +106 -0
- package/dist/types/elements/index.d.ts.map +1 -0
- package/dist/types/elements/inline/a/index.d.ts +203 -0
- package/dist/types/elements/inline/a/index.d.ts.map +1 -0
- package/dist/types/elements/inline/abbr/index.d.ts +132 -0
- package/dist/types/elements/inline/abbr/index.d.ts.map +1 -0
- package/dist/types/elements/inline/b/index.d.ts +121 -0
- package/dist/types/elements/inline/b/index.d.ts.map +1 -0
- package/dist/types/elements/inline/cite/index.d.ts +125 -0
- package/dist/types/elements/inline/cite/index.d.ts.map +1 -0
- package/dist/types/elements/inline/code/index.d.ts +137 -0
- package/dist/types/elements/inline/code/index.d.ts.map +1 -0
- package/dist/types/elements/inline/data/index.d.ts +144 -0
- package/dist/types/elements/inline/data/index.d.ts.map +1 -0
- package/dist/types/elements/inline/dfn/index.d.ts +124 -0
- package/dist/types/elements/inline/dfn/index.d.ts.map +1 -0
- package/dist/types/elements/inline/em/index.d.ts +124 -0
- package/dist/types/elements/inline/em/index.d.ts.map +1 -0
- package/dist/types/elements/inline/i/index.d.ts +143 -0
- package/dist/types/elements/inline/i/index.d.ts.map +1 -0
- package/dist/types/elements/inline/index.d.ts +229 -0
- package/dist/types/elements/inline/index.d.ts.map +1 -0
- package/dist/types/elements/inline/kbd/index.d.ts +123 -0
- package/dist/types/elements/inline/kbd/index.d.ts.map +1 -0
- package/dist/types/elements/inline/mark/index.d.ts +125 -0
- package/dist/types/elements/inline/mark/index.d.ts.map +1 -0
- package/dist/types/elements/inline/q/index.d.ts +138 -0
- package/dist/types/elements/inline/q/index.d.ts.map +1 -0
- package/dist/types/elements/inline/rb/index.d.ts +143 -0
- package/dist/types/elements/inline/rb/index.d.ts.map +1 -0
- package/dist/types/elements/inline/rp/index.d.ts +123 -0
- package/dist/types/elements/inline/rp/index.d.ts.map +1 -0
- package/dist/types/elements/inline/rt/index.d.ts +124 -0
- package/dist/types/elements/inline/rt/index.d.ts.map +1 -0
- package/dist/types/elements/inline/rtc/index.d.ts +122 -0
- package/dist/types/elements/inline/rtc/index.d.ts.map +1 -0
- package/dist/types/elements/inline/ruby/index.d.ts +147 -0
- package/dist/types/elements/inline/ruby/index.d.ts.map +1 -0
- package/dist/types/elements/inline/s/index.d.ts +125 -0
- package/dist/types/elements/inline/s/index.d.ts.map +1 -0
- package/dist/types/elements/inline/samp/index.d.ts +122 -0
- package/dist/types/elements/inline/samp/index.d.ts.map +1 -0
- package/dist/types/elements/inline/small/index.d.ts +138 -0
- package/dist/types/elements/inline/small/index.d.ts.map +1 -0
- package/dist/types/elements/inline/strong/index.d.ts +126 -0
- package/dist/types/elements/inline/strong/index.d.ts.map +1 -0
- package/dist/types/elements/inline/sub/index.d.ts +130 -0
- package/dist/types/elements/inline/sub/index.d.ts.map +1 -0
- package/dist/types/elements/inline/sup/index.d.ts +125 -0
- package/dist/types/elements/inline/sup/index.d.ts.map +1 -0
- package/dist/types/elements/inline/time/index.d.ts +149 -0
- package/dist/types/elements/inline/time/index.d.ts.map +1 -0
- package/dist/types/elements/inline/u/index.d.ts +122 -0
- package/dist/types/elements/inline/u/index.d.ts.map +1 -0
- package/dist/types/elements/inline/var/index.d.ts +127 -0
- package/dist/types/elements/inline/var/index.d.ts.map +1 -0
- package/dist/types/elements/interactive/details/index.d.ts +134 -0
- package/dist/types/elements/interactive/details/index.d.ts.map +1 -0
- package/dist/types/elements/interactive/dialog/index.d.ts +162 -0
- package/dist/types/elements/interactive/dialog/index.d.ts.map +1 -0
- package/dist/types/elements/interactive/index.d.ts +48 -0
- package/dist/types/elements/interactive/index.d.ts.map +1 -0
- package/dist/types/elements/interactive/summary/index.d.ts +122 -0
- package/dist/types/elements/interactive/summary/index.d.ts.map +1 -0
- package/dist/types/elements/layout/article/index.d.ts +129 -0
- package/dist/types/elements/layout/article/index.d.ts.map +1 -0
- package/dist/types/elements/layout/aside/index.d.ts +122 -0
- package/dist/types/elements/layout/aside/index.d.ts.map +1 -0
- package/dist/types/elements/layout/footer/index.d.ts +122 -0
- package/dist/types/elements/layout/footer/index.d.ts.map +1 -0
- package/dist/types/elements/layout/header/index.d.ts +131 -0
- package/dist/types/elements/layout/header/index.d.ts.map +1 -0
- package/dist/types/elements/layout/index.d.ts +83 -0
- package/dist/types/elements/layout/index.d.ts.map +1 -0
- package/dist/types/elements/layout/main/index.d.ts +135 -0
- package/dist/types/elements/layout/main/index.d.ts.map +1 -0
- package/dist/types/elements/layout/nav/index.d.ts +136 -0
- package/dist/types/elements/layout/nav/index.d.ts.map +1 -0
- package/dist/types/elements/layout/section/index.d.ts +128 -0
- package/dist/types/elements/layout/section/index.d.ts.map +1 -0
- package/dist/types/elements/list/dd/index.d.ts +120 -0
- package/dist/types/elements/list/dd/index.d.ts.map +1 -0
- package/dist/types/elements/list/dl/index.d.ts +131 -0
- package/dist/types/elements/list/dl/index.d.ts.map +1 -0
- package/dist/types/elements/list/dt/index.d.ts +126 -0
- package/dist/types/elements/list/dt/index.d.ts.map +1 -0
- package/dist/types/elements/list/index.d.ts +69 -0
- package/dist/types/elements/list/index.d.ts.map +1 -0
- package/dist/types/elements/list/li/index.d.ts +155 -0
- package/dist/types/elements/list/li/index.d.ts.map +1 -0
- package/dist/types/elements/list/ol/index.d.ts +155 -0
- package/dist/types/elements/list/ol/index.d.ts.map +1 -0
- package/dist/types/elements/list/ul/index.d.ts +145 -0
- package/dist/types/elements/list/ul/index.d.ts.map +1 -0
- package/dist/types/elements/media/audio/index.d.ts +197 -0
- package/dist/types/elements/media/audio/index.d.ts.map +1 -0
- package/dist/types/elements/media/canvas/index.d.ts +146 -0
- package/dist/types/elements/media/canvas/index.d.ts.map +1 -0
- package/dist/types/elements/media/embed/index.d.ts +138 -0
- package/dist/types/elements/media/embed/index.d.ts.map +1 -0
- package/dist/types/elements/media/iframe/index.d.ts +222 -0
- package/dist/types/elements/media/iframe/index.d.ts.map +1 -0
- package/dist/types/elements/media/img/index.d.ts +83 -0
- package/dist/types/elements/media/img/index.d.ts.map +1 -0
- package/dist/types/elements/media/index.d.ts +89 -0
- package/dist/types/elements/media/index.d.ts.map +1 -0
- package/dist/types/elements/media/math/index.d.ts +132 -0
- package/dist/types/elements/media/math/index.d.ts.map +1 -0
- package/dist/types/elements/media/object/index.d.ts +183 -0
- package/dist/types/elements/media/object/index.d.ts.map +1 -0
- package/dist/types/elements/media/svg/index.d.ts +44 -0
- package/dist/types/elements/media/svg/index.d.ts.map +1 -0
- package/dist/types/elements/media/video/index.d.ts +225 -0
- package/dist/types/elements/media/video/index.d.ts.map +1 -0
- package/dist/types/elements/responsive/area/index.d.ts +158 -0
- package/dist/types/elements/responsive/area/index.d.ts.map +1 -0
- package/dist/types/elements/responsive/index.d.ts +67 -0
- package/dist/types/elements/responsive/index.d.ts.map +1 -0
- package/dist/types/elements/responsive/map/index.d.ts +138 -0
- package/dist/types/elements/responsive/map/index.d.ts.map +1 -0
- package/dist/types/elements/responsive/picture/index.d.ts +120 -0
- package/dist/types/elements/responsive/picture/index.d.ts.map +1 -0
- package/dist/types/elements/responsive/source/index.d.ts +175 -0
- package/dist/types/elements/responsive/source/index.d.ts.map +1 -0
- package/dist/types/elements/responsive/track/index.d.ts +183 -0
- package/dist/types/elements/responsive/track/index.d.ts.map +1 -0
- package/dist/types/elements/table/caption/index.d.ts +132 -0
- package/dist/types/elements/table/caption/index.d.ts.map +1 -0
- package/dist/types/elements/table/col/index.d.ts +132 -0
- package/dist/types/elements/table/col/index.d.ts.map +1 -0
- package/dist/types/elements/table/colgroup/index.d.ts +147 -0
- package/dist/types/elements/table/colgroup/index.d.ts.map +1 -0
- package/dist/types/elements/table/index.d.ts +102 -0
- package/dist/types/elements/table/index.d.ts.map +1 -0
- package/dist/types/elements/table/table/index.d.ts +143 -0
- package/dist/types/elements/table/table/index.d.ts.map +1 -0
- package/dist/types/elements/table/tbody/index.d.ts +134 -0
- package/dist/types/elements/table/tbody/index.d.ts.map +1 -0
- package/dist/types/elements/table/td/index.d.ts +146 -0
- package/dist/types/elements/table/td/index.d.ts.map +1 -0
- package/dist/types/elements/table/tfoot/index.d.ts +131 -0
- package/dist/types/elements/table/tfoot/index.d.ts.map +1 -0
- package/dist/types/elements/table/th/index.d.ts +187 -0
- package/dist/types/elements/table/th/index.d.ts.map +1 -0
- package/dist/types/elements/table/thead/index.d.ts +130 -0
- package/dist/types/elements/table/thead/index.d.ts.map +1 -0
- package/dist/types/elements/table/tr/index.d.ts +134 -0
- package/dist/types/elements/table/tr/index.d.ts.map +1 -0
- package/dist/types/elements/text/address/index.d.ts +133 -0
- package/dist/types/elements/text/address/index.d.ts.map +1 -0
- package/dist/types/elements/text/blockquote/index.d.ts +153 -0
- package/dist/types/elements/text/blockquote/index.d.ts.map +1 -0
- package/dist/types/elements/text/hr/index.d.ts +121 -0
- package/dist/types/elements/text/hr/index.d.ts.map +1 -0
- package/dist/types/elements/text/index.d.ts +57 -0
- package/dist/types/elements/text/index.d.ts.map +1 -0
- package/dist/types/elements/text/paragraph/index.d.ts +139 -0
- package/dist/types/elements/text/paragraph/index.d.ts.map +1 -0
- package/dist/types/elements/text/pre/index.d.ts +135 -0
- package/dist/types/elements/text/pre/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/ts/adapters/tailwind/v4/index.d.ts +3 -0
- package/dist/types/ts/adapters/tailwind/v4/index.d.ts.map +1 -0
- package/dist/types/ts/adapters/tailwind/v4/plugin.d.ts +11 -0
- package/dist/types/ts/adapters/tailwind/v4/plugin.d.ts.map +1 -0
- package/dist/types/ts/adapters/tailwind/v4/preset.d.ts +12 -0
- package/dist/types/ts/adapters/tailwind/v4/preset.d.ts.map +1 -0
- package/dist/types/ts/dom.d.ts +247 -0
- package/dist/types/ts/dom.d.ts.map +1 -0
- package/package.json +705 -0
- package/src/elements/break/br/br.scss +26 -0
- package/src/elements/break/br/index.ts +150 -0
- package/src/elements/break/index.ts +33 -0
- package/src/elements/break/wbr/index.ts +151 -0
- package/src/elements/break/wbr/wbr.scss +27 -0
- package/src/elements/container/div/div.scss +27 -0
- package/src/elements/container/div/index.ts +163 -0
- package/src/elements/container/index.ts +33 -0
- package/src/elements/container/span/index.ts +137 -0
- package/src/elements/container/span/span.scss +28 -0
- package/src/elements/figure/figcaption/figcaption.scss +53 -0
- package/src/elements/figure/figcaption/index.ts +157 -0
- package/src/elements/figure/figure/figure.scss +53 -0
- package/src/elements/figure/figure/index.ts +164 -0
- package/src/elements/figure/index.ts +39 -0
- package/src/elements/form/button/button.scss +39 -0
- package/src/elements/form/button/index.ts +335 -0
- package/src/elements/form/datalist/datalist.scss +40 -0
- package/src/elements/form/datalist/index.ts +183 -0
- package/src/elements/form/fieldset/fieldset.scss +46 -0
- package/src/elements/form/fieldset/index.ts +211 -0
- package/src/elements/form/form/form.scss +42 -0
- package/src/elements/form/form/index.ts +308 -0
- package/src/elements/form/index.ts +153 -0
- package/src/elements/form/input/index.ts +528 -0
- package/src/elements/form/input/input.scss +39 -0
- package/src/elements/form/label/index.ts +194 -0
- package/src/elements/form/label/label.scss +41 -0
- package/src/elements/form/legend/index.ts +166 -0
- package/src/elements/form/legend/legend.scss +40 -0
- package/src/elements/form/meter/index.ts +231 -0
- package/src/elements/form/meter/meter.scss +36 -0
- package/src/elements/form/optgroup/index.ts +187 -0
- package/src/elements/form/optgroup/optgroup.scss +37 -0
- package/src/elements/form/option/index.ts +218 -0
- package/src/elements/form/option/option.scss +38 -0
- package/src/elements/form/output/index.ts +205 -0
- package/src/elements/form/output/output.scss +42 -0
- package/src/elements/form/progress/index.ts +215 -0
- package/src/elements/form/progress/progress.scss +38 -0
- package/src/elements/form/select/index.ts +250 -0
- package/src/elements/form/select/select.scss +38 -0
- package/src/elements/form/textarea/index.ts +351 -0
- package/src/elements/form/textarea/textarea.scss +39 -0
- package/src/elements/heading/h1/h1.scss +59 -0
- package/src/elements/heading/h1/index.ts +170 -0
- package/src/elements/heading/h2/h2.scss +53 -0
- package/src/elements/heading/h2/index.ts +168 -0
- package/src/elements/heading/h3/h3.scss +54 -0
- package/src/elements/heading/h3/index.ts +166 -0
- package/src/elements/heading/h4/h4.scss +48 -0
- package/src/elements/heading/h4/index.ts +150 -0
- package/src/elements/heading/h5/h5.scss +50 -0
- package/src/elements/heading/h5/index.ts +166 -0
- package/src/elements/heading/h6/h6.scss +48 -0
- package/src/elements/heading/h6/index.ts +158 -0
- package/src/elements/heading/index.ts +73 -0
- package/src/elements/index.ts +118 -0
- package/src/elements/inline/a/a.scss +55 -0
- package/src/elements/inline/a/index.ts +291 -0
- package/src/elements/inline/abbr/abbr.scss +54 -0
- package/src/elements/inline/abbr/index.ts +172 -0
- package/src/elements/inline/b/b.scss +38 -0
- package/src/elements/inline/b/index.ts +161 -0
- package/src/elements/inline/cite/cite.scss +36 -0
- package/src/elements/inline/cite/index.ts +165 -0
- package/src/elements/inline/code/code.scss +45 -0
- package/src/elements/inline/code/index.ts +176 -0
- package/src/elements/inline/data/data.scss +36 -0
- package/src/elements/inline/data/index.ts +208 -0
- package/src/elements/inline/dfn/dfn.scss +36 -0
- package/src/elements/inline/dfn/index.ts +164 -0
- package/src/elements/inline/em/em.scss +35 -0
- package/src/elements/inline/em/index.ts +164 -0
- package/src/elements/inline/i/i.scss +38 -0
- package/src/elements/inline/i/index.ts +182 -0
- package/src/elements/inline/index.ts +254 -0
- package/src/elements/inline/kbd/index.ts +163 -0
- package/src/elements/inline/kbd/kbd.scss +44 -0
- package/src/elements/inline/mark/index.ts +165 -0
- package/src/elements/inline/mark/mark.scss +45 -0
- package/src/elements/inline/q/index.ts +206 -0
- package/src/elements/inline/q/q.scss +44 -0
- package/src/elements/inline/rb/index.ts +186 -0
- package/src/elements/inline/rb/rb.scss +35 -0
- package/src/elements/inline/rp/index.ts +163 -0
- package/src/elements/inline/rp/rp.scss +41 -0
- package/src/elements/inline/rt/index.ts +164 -0
- package/src/elements/inline/rt/rt.scss +36 -0
- package/src/elements/inline/rtc/index.ts +168 -0
- package/src/elements/inline/rtc/rtc.scss +40 -0
- package/src/elements/inline/ruby/index.ts +186 -0
- package/src/elements/inline/ruby/ruby.scss +39 -0
- package/src/elements/inline/s/index.ts +165 -0
- package/src/elements/inline/s/s.scss +37 -0
- package/src/elements/inline/samp/index.ts +162 -0
- package/src/elements/inline/samp/samp.scss +43 -0
- package/src/elements/inline/small/index.ts +177 -0
- package/src/elements/inline/small/small.scss +35 -0
- package/src/elements/inline/strong/index.ts +166 -0
- package/src/elements/inline/strong/strong.scss +35 -0
- package/src/elements/inline/sub/index.ts +170 -0
- package/src/elements/inline/sub/sub.scss +44 -0
- package/src/elements/inline/sup/index.ts +165 -0
- package/src/elements/inline/sup/sup.scss +43 -0
- package/src/elements/inline/time/index.ts +206 -0
- package/src/elements/inline/time/time.scss +38 -0
- package/src/elements/inline/u/index.ts +162 -0
- package/src/elements/inline/u/u.scss +42 -0
- package/src/elements/inline/var/index.ts +167 -0
- package/src/elements/inline/var/var.scss +44 -0
- package/src/elements/interactive/details/details.scss +42 -0
- package/src/elements/interactive/details/index.ts +198 -0
- package/src/elements/interactive/dialog/dialog.scss +55 -0
- package/src/elements/interactive/dialog/index.ts +219 -0
- package/src/elements/interactive/index.ts +50 -0
- package/src/elements/interactive/summary/index.ts +161 -0
- package/src/elements/interactive/summary/summary.scss +48 -0
- package/src/elements/layout/article/article.scss +42 -0
- package/src/elements/layout/article/index.ts +169 -0
- package/src/elements/layout/aside/aside.scss +42 -0
- package/src/elements/layout/aside/index.ts +161 -0
- package/src/elements/layout/footer/footer.scss +42 -0
- package/src/elements/layout/footer/index.ts +161 -0
- package/src/elements/layout/header/header.scss +42 -0
- package/src/elements/layout/header/index.ts +171 -0
- package/src/elements/layout/index.ts +89 -0
- package/src/elements/layout/main/index.ts +175 -0
- package/src/elements/layout/main/main.scss +43 -0
- package/src/elements/layout/nav/index.ts +176 -0
- package/src/elements/layout/nav/nav.scss +42 -0
- package/src/elements/layout/section/index.ts +168 -0
- package/src/elements/layout/section/section.scss +42 -0
- package/src/elements/list/dd/dd.scss +49 -0
- package/src/elements/list/dd/index.ts +159 -0
- package/src/elements/list/dl/dl.scss +39 -0
- package/src/elements/list/dl/index.ts +171 -0
- package/src/elements/list/dt/dt.scss +51 -0
- package/src/elements/list/dt/index.ts +166 -0
- package/src/elements/list/index.ts +74 -0
- package/src/elements/list/li/index.ts +213 -0
- package/src/elements/list/li/li.scss +39 -0
- package/src/elements/list/ol/index.ts +205 -0
- package/src/elements/list/ol/ol.scss +39 -0
- package/src/elements/list/ul/index.ts +195 -0
- package/src/elements/list/ul/ul.scss +42 -0
- package/src/elements/media/audio/audio.scss +43 -0
- package/src/elements/media/audio/index.ts +281 -0
- package/src/elements/media/canvas/canvas.scss +46 -0
- package/src/elements/media/canvas/index.ts +194 -0
- package/src/elements/media/embed/embed.scss +37 -0
- package/src/elements/media/embed/index.ts +246 -0
- package/src/elements/media/iframe/iframe.scss +39 -0
- package/src/elements/media/iframe/index.ts +331 -0
- package/src/elements/media/img/img.scss +47 -0
- package/src/elements/media/img/index.ts +146 -0
- package/src/elements/media/index.ts +97 -0
- package/src/elements/media/math/index.ts +200 -0
- package/src/elements/media/math/math.scss +46 -0
- package/src/elements/media/object/index.ts +282 -0
- package/src/elements/media/object/object.scss +42 -0
- package/src/elements/media/svg/index.ts +122 -0
- package/src/elements/media/svg/svg.scss +44 -0
- package/src/elements/media/video/index.ts +376 -0
- package/src/elements/media/video/video.scss +44 -0
- package/src/elements/responsive/area/area.scss +29 -0
- package/src/elements/responsive/area/index.ts +244 -0
- package/src/elements/responsive/index.ts +71 -0
- package/src/elements/responsive/map/index.ts +231 -0
- package/src/elements/responsive/map/map.scss +38 -0
- package/src/elements/responsive/picture/index.ts +159 -0
- package/src/elements/responsive/picture/picture.scss +32 -0
- package/src/elements/responsive/source/index.ts +247 -0
- package/src/elements/responsive/source/source.scss +28 -0
- package/src/elements/responsive/track/index.ts +254 -0
- package/src/elements/responsive/track/track.scss +28 -0
- package/src/elements/table/caption/caption.scss +54 -0
- package/src/elements/table/caption/index.ts +172 -0
- package/src/elements/table/col/col.scss +32 -0
- package/src/elements/table/col/index.ts +189 -0
- package/src/elements/table/colgroup/colgroup.scss +34 -0
- package/src/elements/table/colgroup/index.ts +224 -0
- package/src/elements/table/index.ts +111 -0
- package/src/elements/table/table/index.ts +183 -0
- package/src/elements/table/table/table.scss +56 -0
- package/src/elements/table/tbody/index.ts +174 -0
- package/src/elements/table/tbody/tbody.scss +32 -0
- package/src/elements/table/td/index.ts +220 -0
- package/src/elements/table/td/td.scss +48 -0
- package/src/elements/table/tfoot/index.ts +171 -0
- package/src/elements/table/tfoot/tfoot.scss +30 -0
- package/src/elements/table/th/index.ts +277 -0
- package/src/elements/table/th/th.scss +48 -0
- package/src/elements/table/thead/index.ts +170 -0
- package/src/elements/table/thead/thead.scss +32 -0
- package/src/elements/table/tr/index.ts +174 -0
- package/src/elements/table/tr/tr.scss +30 -0
- package/src/elements/text/address/address.scss +61 -0
- package/src/elements/text/address/index.ts +173 -0
- package/src/elements/text/blockquote/blockquote.scss +50 -0
- package/src/elements/text/blockquote/index.ts +203 -0
- package/src/elements/text/hr/hr.scss +50 -0
- package/src/elements/text/hr/index.ts +161 -0
- package/src/elements/text/index.ts +61 -0
- package/src/elements/text/paragraph/index.ts +179 -0
- package/src/elements/text/paragraph/paragraph.scss +49 -0
- package/src/elements/text/pre/index.ts +175 -0
- package/src/elements/text/pre/pre.scss +59 -0
- package/src/scss/_elements.scss +178 -0
- package/src/scss/_font-face.scss +35 -0
- package/src/scss/_reboot.scss +120 -0
- package/src/scss/_root.scss +112 -0
- package/src/scss/adapters/bootstrap/v5/index.scss +364 -0
- package/src/scss/core.scss +53 -0
- package/src/scss/functions/_colours.scss +340 -0
- package/src/scss/functions/_fonts.scss +454 -0
- package/src/scss/functions/_index.scss +78 -0
- package/src/scss/functions/_options.scss +233 -0
- package/src/scss/functions/_spacing.scss +405 -0
- package/src/scss/functions/_theme.scss +355 -0
- package/src/scss/functions/_typography.scss +403 -0
- package/src/scss/main.scss +47 -0
- package/src/scss/maps/_colours.scss +344 -0
- package/src/scss/maps/_dark-theme.scss +47 -0
- package/src/scss/maps/_fonts.scss +145 -0
- package/src/scss/maps/_index.scss +96 -0
- package/src/scss/maps/_options.scss +53 -0
- package/src/scss/maps/_spacing.scss +63 -0
- package/src/scss/maps/_theme.scss +206 -0
- package/src/scss/maps/_typography.scss +127 -0
- package/src/scss/mixins/_colours.scss +304 -0
- package/src/scss/mixins/_fonts.scss +227 -0
- package/src/scss/mixins/_index.scss +93 -0
- package/src/scss/mixins/_options.scss +297 -0
- package/src/scss/mixins/_spacing.scss +176 -0
- package/src/scss/mixins/_theme.scss +273 -0
- package/src/scss/mixins/_typography.scss +272 -0
- package/src/scss/tokens/_colours.scss +707 -0
- package/src/scss/tokens/_dark-theme.scss +50 -0
- package/src/scss/tokens/_fonts.scss +81 -0
- package/src/scss/tokens/_index.scss +100 -0
- package/src/scss/tokens/_options.scss +77 -0
- package/src/scss/tokens/_spacing.scss +43 -0
- package/src/scss/tokens/_theme.scss +325 -0
- package/src/scss/tokens/_typography.scss +218 -0
- package/src/ts/adapters/tailwind/v4/index.ts +2 -0
- package/src/ts/adapters/tailwind/v4/plugin.ts +47 -0
- package/src/ts/adapters/tailwind/v4/preset.ts +75 -0
- package/src/ts/dom.ts +378 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/responsive/picture/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
PICTURE_SELECTOR: () => i,
|
|
5
|
+
PICTURE_TAG: () => r,
|
|
6
|
+
createPicture: () => o,
|
|
7
|
+
enhancePictures: () => s
|
|
8
|
+
}), r = "picture", i = "picture";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, ...n } = e;
|
|
12
|
+
if (!t) return n;
|
|
13
|
+
let r = {};
|
|
14
|
+
return typeof t.label == "string" && (r.label = t.label), typeof t.labelledby == "string" && (r.labelledby = t.labelledby), typeof t.hidden == "boolean" && (r.hidden = t.hidden), Object.keys(r).length > 0 ? {
|
|
15
|
+
...n,
|
|
16
|
+
aria: r
|
|
17
|
+
} : n;
|
|
18
|
+
}
|
|
19
|
+
function o(e) {
|
|
20
|
+
return t(r, a(e));
|
|
21
|
+
}
|
|
22
|
+
function s(e = document) {}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { i as PICTURE_SELECTOR, r as PICTURE_TAG, o as createPicture, s as enhancePictures, n as t };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=picture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picture.js","names":[],"sources":["../../../../../src/elements/responsive/picture/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Picture element helpers.\n *\n * @remarks\n * The picture element (`<picture>`) is a container used for responsive images.\n * It allows authors to provide multiple image sources (typically via child\n * `<source>` elements) and a required fallback `<img>` element.\n *\n * Best-practice guidance:\n * - Always include an `<img>` inside `<picture>` as the fallback and for\n * accessibility. The alternative text (`alt`) belongs on the `<img>`, not on\n * `<picture>`.\n * - Use `<source>` elements with `media` and/or `type` to provide format and\n * breakpoint-specific sources.\n * - Prefer modern formats (e.g. AVIF/WebP) with a sensible fallback.\n *\n * pkgn-sol-specific conventions:\n * - `<picture>` has no element-specific attributes; this module applies global\n * attributes via pkgn-sol's hardened DOM helpers (`dom.ts`), which block inline\n * event handler attributes (e.g. `onclick`) and the raw `style` attribute\n * string.\n * - Supports a small structured ARIA input to reduce typo-based ARIA bugs.\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset mapped into {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference(s) to labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for picture containers.\n *\n * @category Constants\n */\nexport const PICTURE_TAG = 'picture' as const;\n\n/**\n * A CSS selector targeting picture elements.\n *\n * @category Constants\n */\nexport const PICTURE_SELECTOR = 'picture';\n\n/**\n * Attribute bag for picture creation/enhancement.\n *\n * @remarks\n * `<picture>` does not define unique attributes; it is a container that affects\n * image source selection in conjunction with child `<source>` and `<img>`.\n *\n *\n * pkgn-sol supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type PictureAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link PictureAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The picture attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: PictureAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a picture element with optional global attributes.\n *\n * @remarks\n * `<picture>` is a container; authors must append a fallback `<img>` and any\n * `<source>` children. The alternative text (`alt`) is provided on the `<img>`.\n *\n *\n * Global attributes are applied via pkgn-sol's shared DOM helper, including security\n * guards that block inline event handler attributes (e.g. `onclick`) and raw\n * `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<picture>` element.\n *\n * @example\n * ```ts\n * import { createPicture } from \"@lnpg/pkgn-sol/elements/responsive/picture\";\n *\n * const p = createPicture({ className: \"hero-media\" });\n * ```\n *\n * @category DOM\n */\nexport function createPicture(attrs?: PictureAttrs): ElementOf<typeof PICTURE_TAG> {\n return createElement(PICTURE_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance picture elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhancePictures(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for picture.\n void root;\n}\n"],"mappings":";;;;;;;IA8Da,IAAc,WAOd,IAAmB;AA8BhC,SAAS,EAAc,GAA+C;CACpE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,GAAG,MAAS;CAE1B,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CAQvD,OANI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAE7C,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAM,MAAM;EAAY,GAAG;;AA2BrD,SAAgB,EAAc,GAAqD;CACjF,OAAO,EAAc,GAAa,EAAc,EAAM,CAAC;;AAazD,SAAgB,EAAgB,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { i as e } from "../../chunks/dom.js";
|
|
2
|
+
import { t } from "./area/area.js";
|
|
3
|
+
import { t as n } from "./map/map.js";
|
|
4
|
+
import { t as r } from "./picture/picture.js";
|
|
5
|
+
import { t as i } from "./source/source.js";
|
|
6
|
+
import { t as a } from "./track/track.js";
|
|
7
|
+
//#region src/elements/responsive/index.ts
|
|
8
|
+
var o = /* @__PURE__ */ e({
|
|
9
|
+
area: () => t,
|
|
10
|
+
map: () => n,
|
|
11
|
+
picture: () => r,
|
|
12
|
+
source: () => i,
|
|
13
|
+
track: () => a
|
|
14
|
+
});
|
|
15
|
+
//#endregion
|
|
16
|
+
export { t as area, n as map, r as picture, i as source, o as t, a as track };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=responsive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsive.js","names":[],"sources":["../../../../src/elements/responsive/index.ts"],"sourcesContent":["/**\n * Responsive media element factories.\n *\n * Provides framework-agnostic factory functions for HTML elements commonly used\n * to deliver responsive, adaptive, and accessible media experiences.\n *\n * These factories:\n * - Create semantic responsive/media structures using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Preserve correct relationships between media resources and their metadata\n * (e.g. `<picture>` + `<source>`, media maps via `<map>` + `<area>`, and timed\n * text via `<track>`).\n * - Prevent unsafe attribute injection.\n *\n * The elements in this module support native browser features for responsive\n * images, image maps, and timed text tracks without framework assumptions.\n *\n * @module elements/responsive\n * @since 0.1.0\n */\n\n/**\n * `<area>` element factory namespace.\n *\n * Represents a clickable hotspot region within an image map, associated with a\n * `<map>` element. Typically paired with an `<img usemap=\"...\">`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area\n */\nexport * as area from './area';\n\n/**\n * `<map>` element factory namespace.\n *\n * Represents an image map container holding `<area>` definitions that describe\n * interactive regions on an associated image.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map\n */\nexport * as map from './map';\n\n/**\n * `<picture>` element factory namespace.\n *\n * Represents a container for responsive images, allowing multiple `<source>`\n * candidates and a fallback `<img>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture\n */\nexport * as picture from './picture';\n\n/**\n * `<source>` element factory namespace.\n *\n * Represents a media resource candidate for `<picture>`, `<audio>`, or\n * `<video>`, selected by the browser based on type/media conditions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source\n */\nexport * as source from './source';\n\n/**\n * `<track>` element factory namespace.\n *\n * Represents an external timed text track (subtitles, captions, descriptions,\n * chapters, or metadata) for `<audio>` or `<video>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track\n */\nexport * as track from './track';\n"],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { i as e, r as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/responsive/source/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
SOURCE_SELECTOR: () => i,
|
|
5
|
+
SOURCE_TAG: () => r,
|
|
6
|
+
createSource: () => o,
|
|
7
|
+
enhanceSources: () => s
|
|
8
|
+
}), r = "source", i = "source";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, src: n, srcSet: r, sizes: i, media: a, type: o, ...s } = e, c = typeof n == "string" && n.trim().length > 0, l = typeof r == "string" && r.trim().length > 0;
|
|
12
|
+
if (!c && !l) throw Error("source requires at least one of \"src\" or \"srcSet\".");
|
|
13
|
+
if (typeof i == "string" && i.trim().length > 0 && !l) throw Error("source \"sizes\" may only be specified when \"srcSet\" is provided.");
|
|
14
|
+
let u = { ...s }, d = { ...u.attrs ?? {} };
|
|
15
|
+
if (c && (d.src = n), l && (d.srcset = r), typeof i == "string" && i.trim().length > 0 && (d.sizes = i), typeof a == "string" && (d.media = a), typeof o == "string" && (d.type = o), Object.keys(d).length > 0 && (u.attrs = d), !t) return u;
|
|
16
|
+
let f = {};
|
|
17
|
+
return typeof t.label == "string" && (f.label = t.label), typeof t.labelledby == "string" && (f.labelledby = t.labelledby), typeof t.hidden == "boolean" && (f.hidden = t.hidden), Object.keys(f).length > 0 ? {
|
|
18
|
+
...u,
|
|
19
|
+
aria: f
|
|
20
|
+
} : u;
|
|
21
|
+
}
|
|
22
|
+
function o(e) {
|
|
23
|
+
return t(r, a(e));
|
|
24
|
+
}
|
|
25
|
+
function s(e = document) {}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { i as SOURCE_SELECTOR, r as SOURCE_TAG, o as createSource, s as enhanceSources, n as t };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","names":[],"sources":["../../../../../src/elements/responsive/source/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Source element helpers.\n *\n * @remarks\n * The source element (`<source>`) provides one or more media resources for:\n * - `<picture>` (responsive images via `srcset`/`sizes`)\n * - `<audio>` / `<video>` (alternate encodings via `src`)\n *\n * Best-practice guidance:\n * - Use `<picture><source srcset ...></picture>` for responsive images and art direction.\n * - Use multiple `<source>` children under `<audio>/<video>` to provide fallback formats.\n * - Prefer providing a `type` when possible to help user agents skip unsupported formats.\n * - Use `media` to gate sources behind media conditions.\n * - Only use `sizes` when `srcset` is present (it is meaningless otherwise).\n *\n * Attributes (element-specific):\n * - `src` (string): media resource URL (primarily for `<audio>/<video>` contexts).\n * - `srcSet` (string): source set candidates (primarily for `<picture>` contexts).\n * - `sizes` (string): sizes list for `srcset` selection.\n * - `type` (string): MIME type hint.\n * - `media` (string): media query condition.\n *\n * Notes:\n * - `<source>` is a void element (no text content).\n *\n * Security:\n * - Global attribute escape hatches are guarded by pkgn-sol's `dom.ts` helpers which\n * block inline event handler attributes (e.g. `onclick`) and raw `style`\n * attribute injection (use the `style` object field instead).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/source\n *\n * @module\n * @category Elements\n */\n\nimport { createVoidElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for source.\n *\n * @category Constants\n */\nexport const SOURCE_TAG = 'source' as const;\n\n/**\n * A CSS selector targeting source elements.\n *\n * @category Constants\n */\nexport const SOURCE_SELECTOR = 'source';\n\n/**\n * Attribute bag for source creation/enhancement.\n *\n * @remarks\n * Source elements accept standard HTML global attributes plus source-specific\n * content attributes used by `<picture>`, `<audio>`, and `<video>`.\n *\n * pkgn-sol supports structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * Validation rules enforced by this module:\n * - `sizes` may only be specified when `srcSet` is provided.\n * - At least one of `src` or `srcSet` must be provided (a `<source>` without a\n * resource is not useful).\n *\n * @category Attributes\n */\nexport type SourceAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Media resource URL.\n *\n * @remarks\n * Primarily used by `<audio>` and `<video>`. It is ignored when the `<source>`\n * is nested inside `<picture>`.\n */\n src?: string;\n\n /**\n * Image candidate source set.\n *\n * @remarks\n * Primarily used by `<picture>` responsive images.\n * Maps to the `srcset` content attribute.\n */\n srcSet?: string;\n\n /**\n * Sizes list describing the intended display size for `srcset` selection.\n *\n * @remarks\n * Only meaningful when `srcset` is present.\n */\n sizes?: string;\n\n /**\n * Media query condition for selecting this source.\n */\n media?: string;\n\n /**\n * MIME type hint for the resource(s).\n */\n type?: string;\n};\n\n/**\n * Normalize {@link SourceAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The source attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @throws Error if `sizes` is provided without `srcSet`.\n * @throws Error if neither `src` nor `srcSet` are provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SourceAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, src, srcSet, sizes, media, type, ...rest } = attrs;\n\n const hasSrc = typeof src === 'string' && src.trim().length > 0;\n const hasSrcSet = typeof srcSet === 'string' && srcSet.trim().length > 0;\n\n if (!hasSrc && !hasSrcSet) {\n throw new Error('source requires at least one of \"src\" or \"srcSet\".');\n }\n\n if (typeof sizes === 'string' && sizes.trim().length > 0 && !hasSrcSet) {\n throw new Error('source \"sizes\" may only be specified when \"srcSet\" is provided.');\n }\n\n const mapped: GlobalAttrs = { ...rest };\n\n const extra: NonNullable<GlobalAttrs['attrs']> = { ...(mapped.attrs ?? {}) };\n\n if (hasSrc) extra.src = src!;\n if (hasSrcSet) extra.srcset = srcSet!;\n if (typeof sizes === 'string' && sizes.trim().length > 0) extra.sizes = sizes;\n if (typeof media === 'string') extra.media = media;\n if (typeof type === 'string') extra.type = type;\n\n if (Object.keys(extra).length > 0) {\n mapped.attrs = extra;\n }\n\n if (!aria) return mapped;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n return hasMappedAria ? { ...mapped, aria: mappedAria } : mapped;\n}\n\n/**\n * Create a source element with attributes.\n *\n * @remarks\n * `<source>` is a void element: it never carries text content.\n *\n * Global attributes and escape-hatch attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes (e.g. `onclick`)\n * and raw `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<source>` element.\n *\n * @example\n * Responsive image source (picture):\n * ```ts\n * import { createSource } from \"@lnpg/pkgn-sol/elements/responsive/source\";\n *\n * const s = createSource({\n * srcSet: \"/img/hero-800.jpg 800w, /img/hero-1600.jpg 1600w\",\n * sizes: \"(max-width: 800px) 100vw, 800px\",\n * type: \"image/jpeg\"\n * });\n * ```\n *\n * @category DOM\n */\nexport function createSource(attrs?: SourceAttrs): ElementOf<typeof SOURCE_TAG> {\n return createVoidElement(SOURCE_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance source elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceSources(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for source.\n void root;\n}\n"],"mappings":";;;;;;;IAuEa,IAAa,UAOb,IAAkB;AAyE/B,SAAS,EAAc,GAA8C;CACnE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,QAAK,WAAQ,UAAO,UAAO,SAAM,GAAG,MAAS,GAErD,IAAS,OAAO,KAAQ,YAAY,EAAI,MAAM,CAAC,SAAS,GACxD,IAAY,OAAO,KAAW,YAAY,EAAO,MAAM,CAAC,SAAS;CAEvE,IAAI,CAAC,KAAU,CAAC,GACd,MAAU,MAAM,yDAAqD;CAGvE,IAAI,OAAO,KAAU,YAAY,EAAM,MAAM,CAAC,SAAS,KAAK,CAAC,GAC3D,MAAU,MAAM,sEAAkE;CAGpF,IAAM,IAAsB,EAAE,GAAG,GAAM,EAEjC,IAA2C,EAAE,GAAI,EAAO,SAAS,EAAE,EAAG;CAY5E,IAVI,MAAQ,EAAM,MAAM,IACpB,MAAW,EAAM,SAAS,IAC1B,OAAO,KAAU,YAAY,EAAM,MAAM,CAAC,SAAS,MAAG,EAAM,QAAQ,IACpE,OAAO,KAAU,aAAU,EAAM,QAAQ,IACzC,OAAO,KAAS,aAAU,EAAM,OAAO,IAEvC,OAAO,KAAK,EAAM,CAAC,SAAS,MAC9B,EAAO,QAAQ,IAGb,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CAQvD,OANI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAEzC,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAQ,MAAM;EAAY,GAAG;;AA8B3D,SAAgB,EAAa,GAAmD;CAC9E,OAAO,EAAkB,GAAY,EAAc,EAAM,CAAC;;AAqB5D,SAAgB,EAAe,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { i as e, r as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/responsive/track/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
TRACK_SELECTOR: () => i,
|
|
5
|
+
TRACK_TAG: () => r,
|
|
6
|
+
createTrack: () => o,
|
|
7
|
+
enhanceTracks: () => s
|
|
8
|
+
}), r = "track", i = "track";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, kind: n, src: r, srclang: i, label: a, default: o, ...s } = e, c = { ...s.attrs ?? {} }, l = (e, t) => {
|
|
12
|
+
t !== void 0 && (Object.prototype.hasOwnProperty.call(c, e) || (c[e] = t));
|
|
13
|
+
};
|
|
14
|
+
l("kind", n), l("src", r), l("srclang", i), l("label", a), o === !0 && l("default", "");
|
|
15
|
+
let u = {};
|
|
16
|
+
t && (typeof t.label == "string" && (u.label = t.label), typeof t.labelledby == "string" && (u.labelledby = t.labelledby), typeof t.hidden == "boolean" && (u.hidden = t.hidden));
|
|
17
|
+
let d = Object.keys(c).length > 0, f = Object.keys(u).length > 0, p = { ...s };
|
|
18
|
+
return d && (p.attrs = c), f && (p.aria = u), p;
|
|
19
|
+
}
|
|
20
|
+
function o(e) {
|
|
21
|
+
return t(r, a(e));
|
|
22
|
+
}
|
|
23
|
+
function s(e = document) {}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { i as TRACK_SELECTOR, r as TRACK_TAG, o as createTrack, s as enhanceTracks, n as t };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=track.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.js","names":[],"sources":["../../../../../src/elements/responsive/track/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Track element helpers.\n *\n * @remarks\n * The track element (`<track>`) provides external timed text tracks for media\n * elements such as `<video>` and `<audio>`. Tracks can represent:\n * - subtitles\n * - captions\n * - descriptions\n * - chapters\n * - metadata\n *\n * Best-practice guidance:\n * - Use `<track>` for WebVTT (and similar timed text) resources that accompany media.\n * - Use `kind` to declare the track purpose (subtitles, captions, etc.).\n * - Use `label` for a user-facing title shown in media track selection UIs.\n * - Use `srclang` to declare the track language (BCP 47 tag).\n * - If `kind=\"subtitles\"`, user agents/spec require `srclang` to be defined.\n *\n * Attribute behavior notes:\n * - `default` is a boolean attribute. When present, it indicates this track\n * should be enabled if user preferences do not indicate a better choice.\n *\n * pkgn-sol keeps the API small and framework-agnostic:\n * - Attributes are routed through pkgn-sol's hardened DOM helpers.\n * - Unsafe attributes (inline event handlers, raw style) are blocked centrally.\n * - This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track\n * @see https://html.spec.whatwg.org/multipage/media.html#the-track-element\n *\n * @module\n * @category Elements\n */\n\nimport {\n createVoidElement,\n type AttrValue,\n type ElementOf,\n type GlobalAttrs,\n} from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * Allowed values for the `kind` attribute on `<track>`.\n *\n * @remarks\n * This follows the HTML living standard's enumerated states.\n *\n * @category Attributes\n */\nexport type TrackKind = 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';\n\n/**\n * The semantic tag name for track.\n *\n * @category Constants\n */\nexport const TRACK_TAG = 'track' as const;\n\n/**\n * A CSS selector targeting track elements.\n *\n * @category Constants\n */\nexport const TRACK_SELECTOR = 'track';\n\n/**\n * Attribute bag for track creation/enhancement.\n *\n * @remarks\n * Track is a void element and must not carry text content or child nodes.\n *\n * Track accepts standard HTML global attributes plus track-specific attributes:\n * - `kind`\n * - `src`\n * - `srclang`\n * - `label`\n * - `default` (boolean attribute)\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type TrackAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * The type of text track.\n */\n kind?: TrackKind;\n\n /**\n * The URL of the timed text track resource (commonly a `.vtt` file).\n */\n src?: string;\n\n /**\n * The language of the text track, as a BCP 47 language tag.\n *\n * @remarks\n * If `kind` is `subtitles`, user agents/spec require `srclang` to be defined.\n */\n srclang?: string;\n\n /**\n * User-visible label for the track (typically shown in media UI menus).\n */\n label?: string;\n\n /**\n * Marks this track as the default if user preferences do not indicate another.\n *\n * @remarks\n * This maps to the `default` boolean attribute (presence-based).\n */\n default?: boolean;\n};\n\n/**\n * Normalize {@link TrackAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The track attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TrackAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, kind, src, srclang, label, default: isDefault, ...rest } = attrs;\n\n // Start with any caller-provided attrs escape hatch (still validated by dom.ts).\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n const setIfUnset = (key: string, value: AttrValue | undefined): void => {\n if (value === undefined) return;\n if (Object.prototype.hasOwnProperty.call(mergedAttrs, key)) return;\n mergedAttrs[key] = value;\n };\n\n setIfUnset('kind', kind);\n setIfUnset('src', src);\n setIfUnset('srclang', srclang);\n setIfUnset('label', label);\n\n // Boolean attribute presence is represented by empty string when true.\n if (isDefault === true) setIfUnset('default', '');\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n const next: GlobalAttrs = { ...rest };\n if (hasMergedAttrs) next.attrs = mergedAttrs;\n if (hasMappedAria) next.aria = mappedAria;\n\n return next;\n}\n\n/**\n * Create a track element and apply attributes.\n *\n * @remarks\n * Track is a void element:\n * - It must not have text content.\n * - It must not have child nodes.\n *\n * Global attributes are applied via pkgn-sol's shared DOM helper, including security\n * guards that block inline event handler attributes (e.g. `onclick`) and raw\n * `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<track>` element.\n *\n * @example\n * ```ts\n * import { createTrack } from \"@lnpg/pkgn-sol/elements/responsive/track\";\n *\n * const t = createTrack({\n * kind: \"subtitles\",\n * src: \"/captions/en.vtt\",\n * srclang: \"en\",\n * label: \"English\",\n * default: true\n * });\n * ```\n *\n * @category DOM\n */\nexport function createTrack(attrs?: TrackAttrs): ElementOf<typeof TRACK_TAG> {\n return createVoidElement(TRACK_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance track elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTracks(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for track.\n void root;\n}\n"],"mappings":";;;;;;;IAsFa,IAAY,SAOZ,IAAiB;AAkE9B,SAAS,EAAc,GAA6C;CAClE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,SAAM,QAAK,YAAS,UAAO,SAAS,GAAW,GAAG,MAAS,GAGnE,IAAyC,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG,EAElE,KAAc,GAAa,MAAuC;EAClE,MAAU,KAAA,MACV,OAAO,UAAU,eAAe,KAAK,GAAa,EAAI,KAC1D,EAAY,KAAO;;CASrB,AANA,EAAW,QAAQ,EAAK,EACxB,EAAW,OAAO,EAAI,EACtB,EAAW,WAAW,EAAQ,EAC9B,EAAW,SAAS,EAAM,EAGtB,MAAc,MAAM,EAAW,WAAW,GAAG;CAEjD,IAAM,IAA+C,EAAE;CACvD,AAAI,MACE,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK;CAGjE,IAAM,IAAiB,OAAO,KAAK,EAAY,CAAC,SAAS,GACnD,IAAgB,OAAO,KAAK,EAAW,CAAC,SAAS,GAEjD,IAAoB,EAAE,GAAG,GAAM;CAIrC,OAHI,MAAgB,EAAK,QAAQ,IAC7B,MAAe,EAAK,OAAO,IAExB;;AAiCT,SAAgB,EAAY,GAAiD;CAC3E,OAAO,EAAkB,GAAW,EAAc,EAAM,CAAC;;AAqB3D,SAAgB,EAAc,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/caption/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
CAPTION_SELECTOR: () => i,
|
|
5
|
+
CAPTION_TAG: () => r,
|
|
6
|
+
createCaption: () => o,
|
|
7
|
+
enhanceCaptions: () => s
|
|
8
|
+
}), r = "caption", i = "caption";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, ...n } = e;
|
|
12
|
+
if (!t) return n;
|
|
13
|
+
let r = {};
|
|
14
|
+
return typeof t.label == "string" && (r.label = t.label), typeof t.labelledby == "string" && (r.labelledby = t.labelledby), typeof t.hidden == "boolean" && (r.hidden = t.hidden), Object.keys(r).length > 0 ? {
|
|
15
|
+
...n,
|
|
16
|
+
aria: r
|
|
17
|
+
} : n;
|
|
18
|
+
}
|
|
19
|
+
function o(e, n) {
|
|
20
|
+
return t(r, a(n), e);
|
|
21
|
+
}
|
|
22
|
+
function s(e = document) {}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { i as CAPTION_SELECTOR, r as CAPTION_TAG, o as createCaption, s as enhanceCaptions, n as t };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=caption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caption.js","names":[],"sources":["../../../../../src/elements/table/caption/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Caption element helpers.\n *\n * @remarks\n * The caption element (`<caption>`) provides a title (caption) for its parent\n * `<table>`. It is an important accessibility feature because it gives the table\n * an accessible name or description when authored appropriately. :contentReference[oaicite:1]{index=1}\n *\n * Best-practice guidance:\n * - Use `<caption>` to describe the purpose of the table and help users decide\n * whether to read it. :contentReference[oaicite:2]{index=2}\n * - Place `<caption>` as the first child of the `<table>` in source order. :contentReference[oaicite:3]{index=3}\n * - Keep the caption concise but meaningful. For complex tables, captions can be\n * supplemented with additional explanatory text near the table (outside the\n * caption) when necessary. :contentReference[oaicite:4]{index=4}\n * - Avoid deprecated presentational attributes (e.g. legacy `align`) and use CSS instead. :contentReference[oaicite:5]{index=5}\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<caption>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for caption elements.\n *\n * @category Constants\n */\nexport const CAPTION_TAG = 'caption' as const;\n\n/**\n * A CSS selector targeting caption elements.\n *\n * @category Constants\n */\nexport const CAPTION_SELECTOR = 'caption';\n\n/**\n * Attribute bag for caption creation/enhancement.\n *\n * @remarks\n * Caption elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type CaptionAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link CaptionAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The caption attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: CaptionAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a caption element with optional text content and global attributes.\n *\n * @remarks\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the caption.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<caption>` element.\n *\n * @example\n * Create and prepend a caption to a table:\n * ```ts\n * import { createCaption } from \"@lnpg/pkgn-sol/elements/table/caption\";\n *\n * const table = document.createElement(\"table\");\n * table.prepend(createCaption(\"Quarterly results\"));\n * ```\n *\n * @category DOM\n */\nexport function createCaption(text?: string, attrs?: CaptionAttrs): ElementOf<typeof CAPTION_TAG> {\n return createElement(CAPTION_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance caption elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceCaptions(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for caption.\n void root;\n}\n"],"mappings":";;;;;;;IAgEa,IAAc,WAOd,IAAmB;AAgChC,SAAS,EAAc,GAA+C;CACpE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,GAAG,MAAS;CAE1B,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CASvD,OAPI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAG7C,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAM,MAAM;EAAY,GAAG;;AA2BrD,SAAgB,EAAc,GAAe,GAAqD;CAChG,OAAO,EAAc,GAAa,EAAc,EAAM,EAAE,EAAK;;AAqB/D,SAAgB,EAAgB,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { i as e, r as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/col/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
COL_SELECTOR: () => "col",
|
|
5
|
+
COL_TAG: () => "col",
|
|
6
|
+
createCol: () => o,
|
|
7
|
+
enhanceCols: () => s
|
|
8
|
+
}), r = "col", i = "col";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, span: n, attrs: r, ...i } = e, a = { ...i };
|
|
12
|
+
if (t) {
|
|
13
|
+
let e = {};
|
|
14
|
+
typeof t.label == "string" && (e.label = t.label), typeof t.labelledby == "string" && (e.labelledby = t.labelledby), typeof t.hidden == "boolean" && (e.hidden = t.hidden), Object.keys(e).length > 0 && (a.aria = e);
|
|
15
|
+
}
|
|
16
|
+
let o = { ...r ?? {} };
|
|
17
|
+
if (typeof n == "number" && !Object.prototype.hasOwnProperty.call(o, "span")) {
|
|
18
|
+
if (!Number.isInteger(n) || n <= 0) throw Error("Invalid \"span\" for <col>: expected a positive integer greater than zero.");
|
|
19
|
+
o.span = n;
|
|
20
|
+
}
|
|
21
|
+
return Object.keys(o).length > 0 && (a.attrs = o), a;
|
|
22
|
+
}
|
|
23
|
+
function o(e) {
|
|
24
|
+
return t("col", a(e));
|
|
25
|
+
}
|
|
26
|
+
function s(e = document) {}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { i as COL_SELECTOR, r as COL_TAG, o as createCol, s as enhanceCols, n as t };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=col.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"col.js","names":[],"sources":["../../../../../src/elements/table/col/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Col element helpers.\n *\n * @remarks\n * The col element (`<col>`) represents one or more columns in a table, and is\n * used to apply presentation (typically CSS) to columns as a group.\n *\n * Best-practice guidance:\n * - Use `<col>` only inside a `<colgroup>`.\n * - Use `<col>` for column-level styling (widths, background, etc.), not layout hacks.\n * - Don't rely on `<col>` for semantics or accessibility. Use proper table\n * structure (`<caption>`, `<th>`, `scope`/`headers`) for accessible data tables.\n * - Avoid obsolete presentational attributes; prefer CSS.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<col>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<col>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/col\n * - WHATWG HTML: Tables: https://html.spec.whatwg.org/multipage/tables.html\n *\n * @module\n * @category Elements\n */\n\nimport { createVoidElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for table column definitions.\n *\n * @category Constants\n */\nexport const COL_TAG = 'col' as const;\n\n/**\n * A CSS selector targeting col elements.\n *\n * @category Constants\n */\nexport const COL_SELECTOR = 'col';\n\n/**\n * Attribute bag for col creation/enhancement.\n *\n * @remarks\n * `<col>` supports standard HTML global attributes and one primary element\n * attribute: `span`.\n *\n * `span` specifies how many consecutive columns this `<col>` applies to.\n * If omitted, browsers treat it as `1`.\n *\n * pkgn-sol supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type ColAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Number of consecutive columns this `<col>` element applies to.\n *\n * @remarks\n * Must be a positive integer greater than zero. If omitted, the browser default\n * is `1`.\n */\n span?: number;\n};\n\n/**\n * Normalize {@link ColAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The col attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: ColAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, span, attrs: rawAttrs, ...rest } = attrs;\n\n const out: GlobalAttrs = { ...rest };\n\n // Map structured ARIA, only if something is actually defined.\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n if (Object.keys(mappedAria).length > 0) out.aria = mappedAria;\n }\n\n // Preserve caller escape hatch, but allow pkgn-sol-typed fields to fill gaps.\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rawAttrs ?? {}) };\n\n // Only set `span` if provided AND caller didn't already set it via raw attrs.\n if (typeof span === 'number' && !Object.prototype.hasOwnProperty.call(mergedAttrs, 'span')) {\n // Spec constraint: positive integer > 0.\n if (!Number.isInteger(span) || span <= 0) {\n throw new Error('Invalid \"span\" for <col>: expected a positive integer greater than zero.');\n }\n mergedAttrs.span = span;\n }\n\n if (Object.keys(mergedAttrs).length > 0) out.attrs = mergedAttrs;\n\n return out;\n}\n\n/**\n * Create a col element (`<col>`) and apply global attributes.\n *\n * @remarks\n * `<col>` is a void element. It does not accept text content or children.\n *\n * Global attributes are applied via pkgn-sol's shared DOM helper, including security\n * guards that block inline event handler attributes (e.g. `onclick`) and raw\n * `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<col>` element.\n *\n * @example\n * Create a `<col>` that spans 2 columns:\n * ```ts\n * import { createCol } from \"@lnpg/pkgn-sol/elements/table/col\";\n *\n * const col = createCol({ span: 2, className: \"numeric\" });\n * ```\n *\n * @category DOM\n */\nexport function createCol(attrs?: ColAttrs): ElementOf<typeof COL_TAG> {\n return createVoidElement(COL_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance col elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceCols(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for col.\n void root;\n}\n"],"mappings":";;;;;;;IAiEa,IAAU,OAOV,IAAe;AAyC5B,SAAS,EAAc,GAA2C;CAChE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,SAAM,OAAO,GAAU,GAAG,MAAS,GAE3C,IAAmB,EAAE,GAAG,GAAM;CAGpC,IAAI,GAAM;EACR,IAAM,IAA+C,EAAE;EAMvD,AAJI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAE3D,OAAO,KAAK,EAAW,CAAC,SAAS,MAAG,EAAI,OAAO;;CAIrD,IAAM,IAAiD,EAAE,GAAI,KAAY,EAAE,EAAG;CAG9E,IAAI,OAAO,KAAS,YAAY,CAAC,OAAO,UAAU,eAAe,KAAK,GAAa,OAAO,EAAE;EAE1F,IAAI,CAAC,OAAO,UAAU,EAAK,IAAI,KAAQ,GACrC,MAAU,MAAM,6EAA2E;EAE7F,EAAY,OAAO;;CAKrB,OAFI,OAAO,KAAK,EAAY,CAAC,SAAS,MAAG,EAAI,QAAQ,IAE9C;;AA0BT,SAAgB,EAAU,GAA6C;CACrE,OAAO,EAAA,OAA2B,EAAc,EAAM,CAAC;;AAazD,SAAgB,EAAY,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/colgroup/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
COLGROUP_SELECTOR: () => i,
|
|
5
|
+
COLGROUP_TAG: () => r,
|
|
6
|
+
createColgroup: () => s,
|
|
7
|
+
enhanceColgroups: () => c
|
|
8
|
+
}), r = "colgroup", i = "colgroup";
|
|
9
|
+
function a(e, t, n) {
|
|
10
|
+
Object.prototype.hasOwnProperty.call(e, t) || (e[t] = n);
|
|
11
|
+
}
|
|
12
|
+
function o(e) {
|
|
13
|
+
if (!e) return;
|
|
14
|
+
let { aria: t, span: n, ...r } = e, i = t ? (() => {
|
|
15
|
+
let e = {};
|
|
16
|
+
return typeof t.label == "string" && (e.label = t.label), typeof t.labelledby == "string" && (e.labelledby = t.labelledby), typeof t.hidden == "boolean" && (e.hidden = t.hidden), Object.keys(e).length > 0 ? e : void 0;
|
|
17
|
+
})() : void 0, o = { ...r.attrs ?? {} };
|
|
18
|
+
typeof n == "number" && Number.isFinite(n) && n > 0 && a(o, "span", Math.trunc(n));
|
|
19
|
+
let s = Object.keys(o).length > 0;
|
|
20
|
+
return {
|
|
21
|
+
...r,
|
|
22
|
+
...i ? { aria: i } : null,
|
|
23
|
+
...s ? { attrs: o } : null
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function s(e) {
|
|
27
|
+
return t(r, o(e));
|
|
28
|
+
}
|
|
29
|
+
function c(e = document) {}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { i as COLGROUP_SELECTOR, r as COLGROUP_TAG, s as createColgroup, c as enhanceColgroups, n as t };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=colgroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colgroup.js","names":[],"sources":["../../../../../src/elements/table/colgroup/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Colgroup element helpers.\n *\n * @remarks\n * The colgroup element (`<colgroup>`) represents a group of one or more columns\n * in a table and is primarily used to apply presentation (not structure) to\n * entire columns (typically via CSS). :contentReference[oaicite:1]{index=1}\n *\n * Best-practice guidance:\n * - Use `<colgroup>` (and optionally `<col>`) to apply column-level styling\n * without repeating styles across cells.\n * - Place `<colgroup>` inside a `<table>`, after any `<caption>` and before\n * `<thead>`, `<tbody>`, `<tfoot>`, or `<tr>`. :contentReference[oaicite:2]{index=2}\n * - Use the `span` attribute only when the `<colgroup>` contains no `<col>`\n * children; otherwise, define spans via `<col>` elements. :contentReference[oaicite:3]{index=3}\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<colgroup>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for colgroup elements.\n *\n * @category Constants\n */\nexport const COLGROUP_TAG = 'colgroup' as const;\n\n/**\n * A CSS selector targeting colgroup elements.\n *\n * @category Constants\n */\nexport const COLGROUP_SELECTOR = 'colgroup';\n\n/**\n * Attribute bag for colgroup creation/enhancement.\n *\n * @remarks\n * Colgroup elements accept standard HTML global attributes, plus:\n * - `span`: the number of consecutive columns in the group (when no `<col>`\n * children are present). :contentReference[oaicite:4]{index=4}\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type ColgroupAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Number of consecutive columns spanned by this column group.\n *\n * @remarks\n * This should be a positive integer. The HTML spec clamps values above 1000\n * and treats invalid/zero values as `1` in the table model. pkgn-sol does not\n * attempt to emulate the full table model at runtime; it sets the attribute\n * when you provide a valid positive integer. :contentReference[oaicite:5]{index=5}\n *\n * Note: Not permitted when the `<colgroup>` contains one or more `<col>`\n * elements. pkgn-sol does not enforce child-structure rules; consumers control\n * their DOM trees. :contentReference[oaicite:6]{index=6}\n */\n span?: number;\n};\n\n/**\n * Set an attribute only if it is not already present on the attribute bag.\n *\n * @remarks\n * This supports the pkgn-sol convention where explicit raw attributes provided via\n * {@link GlobalAttrs.attrs} are treated as the caller's final intent.\n *\n * @param attrs - The destination attributes object.\n * @param name - Attribute name.\n * @param value - Attribute value.\n *\n * @category Internal\n */\nfunction setIfUnset(\n attrs: NonNullable<GlobalAttrs['attrs']>,\n name: string,\n value: string | number | boolean,\n): void {\n if (Object.prototype.hasOwnProperty.call(attrs, name)) return;\n attrs[name] = value;\n}\n\n/**\n * Normalize {@link ColgroupAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The colgroup attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: ColgroupAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, span, ...rest } = attrs;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> | undefined = aria\n ? (() => {\n const out: NonNullable<GlobalAttrs['aria']> = {};\n if (typeof aria.label === 'string') out.label = aria.label;\n if (typeof aria.labelledby === 'string') out.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') out.hidden = aria.hidden;\n\n return Object.keys(out).length > 0 ? out : undefined;\n })()\n : undefined;\n\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rest.attrs ?? {}) };\n\n // Apply `span` only when it is a valid positive integer.\n if (typeof span === 'number' && Number.isFinite(span) && span > 0) {\n // HTML defines span as an unsigned long; we keep it integer-ish.\n setIfUnset(mergedAttrs, 'span', Math.trunc(span));\n }\n\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n\n return {\n ...rest,\n ...(mappedAria ? { aria: mappedAria } : null),\n ...(hasMergedAttrs ? { attrs: mergedAttrs } : null),\n };\n}\n\n/**\n * Create a colgroup element with global attributes.\n *\n * @remarks\n * - `<colgroup>` should not contain text content; pkgn-sol does not accept a `text`\n * argument for this factory.\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<colgroup>` element.\n *\n * @example\n * Create a colgroup that spans two columns:\n * ```ts\n * import { createColgroup } from \"@lnpg/pkgn-sol/elements/table/colgroup\";\n *\n * const colgroup = createColgroup({ span: 2, className: \"cols\" });\n * table.appendChild(colgroup);\n * ```\n *\n * @category DOM\n */\nexport function createColgroup(attrs?: ColgroupAttrs): ElementOf<typeof COLGROUP_TAG> {\n return createElement(COLGROUP_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance colgroup elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceColgroups(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for colgroup.\n void root;\n}\n"],"mappings":";;;;;;;IA+Da,IAAe,YAOf,IAAoB;AAsDjC,SAAS,EACP,GACA,GACA,GACM;CACF,OAAO,UAAU,eAAe,KAAK,GAAO,EAAK,KACrD,EAAM,KAAQ;;AAWhB,SAAS,EAAc,GAAgD;CACrE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,SAAM,GAAG,MAAS,GAE1B,IAA2D,WACtD;EACL,IAAM,IAAwC,EAAE;EAKhD,OAJI,OAAO,EAAK,SAAU,aAAU,EAAI,QAAQ,EAAK,QACjD,OAAO,EAAK,cAAe,aAAU,EAAI,aAAa,EAAK,aAC3D,OAAO,EAAK,UAAW,cAAW,EAAI,SAAS,EAAK,SAEjD,OAAO,KAAK,EAAI,CAAC,SAAS,IAAI,IAAM,KAAA;KACzC,GACJ,KAAA,GAEE,IAAiD,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG;CAGhF,AAAI,OAAO,KAAS,YAAY,OAAO,SAAS,EAAK,IAAI,IAAO,KAE9D,EAAW,GAAa,QAAQ,KAAK,MAAM,EAAK,CAAC;CAGnD,IAAM,IAAiB,OAAO,KAAK,EAAY,CAAC,SAAS;CAEzD,OAAO;EACL,GAAG;EACH,GAAI,IAAa,EAAE,MAAM,GAAY,GAAG;EACxC,GAAI,IAAiB,EAAE,OAAO,GAAa,GAAG;EAC/C;;AA2BH,SAAgB,EAAe,GAAuD;CACpF,OAAO,EAAc,GAAc,EAAc,EAAM,CAAC;;AAqB1D,SAAgB,EAAiB,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/table/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
TABLE_SELECTOR: () => i,
|
|
5
|
+
TABLE_TAG: () => r,
|
|
6
|
+
createTable: () => o,
|
|
7
|
+
enhanceTables: () => s
|
|
8
|
+
}), r = "table", i = "table";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, ...n } = e;
|
|
12
|
+
if (!t) return n;
|
|
13
|
+
let r = {};
|
|
14
|
+
return typeof t.label == "string" && (r.label = t.label), typeof t.labelledby == "string" && (r.labelledby = t.labelledby), typeof t.hidden == "boolean" && (r.hidden = t.hidden), Object.keys(r).length > 0 ? {
|
|
15
|
+
...n,
|
|
16
|
+
aria: r
|
|
17
|
+
} : n;
|
|
18
|
+
}
|
|
19
|
+
function o(e, n) {
|
|
20
|
+
return t(r, a(n), e);
|
|
21
|
+
}
|
|
22
|
+
function s(e = document) {}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { i as TABLE_SELECTOR, r as TABLE_TAG, o as createTable, s as enhanceTables, n as t };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","names":[],"sources":["../../../../../src/elements/table/table/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Table element helpers.\n *\n * @remarks\n * The table element (`<table>`) represents tabular data with more than one\n * dimension (rows and columns).\n *\n * Best-practice guidance:\n * - Use tables for data, not for layout.\n * - Provide a clear `<caption>` describing the table's purpose.\n * - Use `<thead>`, `<tbody>`, and `<tfoot>` to group table content meaningfully.\n * - Mark header cells with `<th>` (not `<td>`), and use `scope`/`headers` where\n * appropriate for accessibility, especially in more complex tables.\n * - Avoid obsolete presentational attributes (e.g. `border`, `cellpadding`,\n * `cellspacing`, `align`, `bgcolor`). Use CSS instead.\n * - If additional long-form description is needed, consider `aria-describedby`\n * pointing to explanatory text outside the table.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create table elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<table>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table\n * - WHATWG: Table model: https://html.spec.whatwg.org/multipage/tables.html\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for HTML tables.\n *\n * @category Constants\n */\nexport const TABLE_TAG = 'table' as const;\n\n/**\n * A CSS selector targeting table elements.\n *\n * @category Constants\n */\nexport const TABLE_SELECTOR = 'table';\n\n/**\n * Attribute bag for table creation/enhancement.\n *\n * @remarks\n * Table elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Note: table-specific presentational attributes historically existed but are\n * obsolete in modern HTML. Consumers can still use {@link GlobalAttrs.attrs}\n * as an escape hatch where necessary, subject to pkgn-sol's security rules in\n * `dom.ts` (blocks inline event handlers and raw `style` attribute strings).\n *\n * @category Attributes\n */\nexport type TableAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link TableAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The table attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TableAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a table element with optional text content and global attributes.\n *\n * @remarks\n * - Table content is typically structured with child elements (`<caption>`,\n * `<thead>`, `<tbody>`, `<tr>`, `<th>`, `<td>`). This helper does not build\n * table structure, it only creates the `<table>` element.\n * - Optional text content is assigned via `textContent` (never `innerHTML`).\n * In real usage, prefer building actual table child elements rather than\n * relying on text content.\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the table (generally discouraged).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<table>` element.\n *\n * @example\n * Create a table and append it:\n * ```ts\n * import { createTable } from \"@lnpg/pkgn-sol/elements/table/table\";\n *\n * const table = createTable(undefined, { className: \"data-table\" });\n * document.body.appendChild(table);\n * ```\n *\n * @category DOM\n */\nexport function createTable(text?: string, attrs?: TableAttrs): ElementOf<typeof TABLE_TAG> {\n return createElement(TABLE_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance table elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTables(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for table.\n void root;\n}\n"],"mappings":";;;;;;;IAqEa,IAAY,SAOZ,IAAiB;AAiC9B,SAAS,EAAc,GAA6C;CAClE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,GAAG,MAAS;CAE1B,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CASvD,OAPI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAG7C,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAM,MAAM;EAAY,GAAG;;AAgCrD,SAAgB,EAAY,GAAe,GAAiD;CAC1F,OAAO,EAAc,GAAW,EAAc,EAAM,EAAE,EAAK;;AAqB7D,SAAgB,EAAc,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { i as e } from "../../chunks/dom.js";
|
|
2
|
+
import { t } from "./table/table.js";
|
|
3
|
+
import { t as n } from "./colgroup/colgroup.js";
|
|
4
|
+
import { t as r } from "./col/col.js";
|
|
5
|
+
import { t as i } from "./thead/thead.js";
|
|
6
|
+
import { t as a } from "./tbody/tbody.js";
|
|
7
|
+
import { t as o } from "./tfoot/tfoot.js";
|
|
8
|
+
import { t as s } from "./tr/tr.js";
|
|
9
|
+
import { t as c } from "./th/th.js";
|
|
10
|
+
import { t as l } from "./td/td.js";
|
|
11
|
+
import { t as u } from "./caption/caption.js";
|
|
12
|
+
//#region src/elements/table/index.ts
|
|
13
|
+
var d = /* @__PURE__ */ e({
|
|
14
|
+
caption: () => u,
|
|
15
|
+
col: () => r,
|
|
16
|
+
colgroup: () => n,
|
|
17
|
+
table: () => t,
|
|
18
|
+
tbody: () => a,
|
|
19
|
+
td: () => l,
|
|
20
|
+
tfoot: () => o,
|
|
21
|
+
th: () => c,
|
|
22
|
+
thead: () => i,
|
|
23
|
+
tr: () => s
|
|
24
|
+
});
|
|
25
|
+
//#endregion
|
|
26
|
+
export { u as caption, r as col, n as colgroup, d as t, t as table, a as tbody, l as td, o as tfoot, c as th, i as thead, s as tr };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","names":[],"sources":["../../../../src/elements/table/index.ts"],"sourcesContent":["/**\n * Table element factories.\n *\n * Provides framework-agnostic factory functions for semantic HTML table\n * structures and related elements.\n *\n * These factories:\n * - Create semantic table elements using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Preserve native table semantics and accessibility.\n * - Prevent unsafe attribute injection.\n *\n * Tables in pkgn-sol are intentionally low-level primitives. They do not attempt\n * to manage layout, styling, or data structures. Consumers remain responsible\n * for building meaningful table structures.\n *\n * @module elements/table\n * @since 0.1.0\n */\n\n/**\n * `<table>` element factory namespace.\n *\n * Represents tabular data arranged in rows and columns.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table\n */\nexport * as table from './table';\n\n/**\n * `<colgroup>` element factory namespace.\n *\n * Groups one or more `<col>` elements for shared column styling and\n * structural definition.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup\n */\nexport * as colgroup from './colgroup';\n\n/**\n * `<col>` element factory namespace.\n *\n * Defines column-level properties within a table.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col\n */\nexport * as col from './col';\n\n/**\n * `<thead>` element factory namespace.\n *\n * Groups header rows that label table columns.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead\n */\nexport * as thead from './thead';\n\n/**\n * `<tbody>` element factory namespace.\n *\n * Groups the primary body rows of a table.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody\n */\nexport * as tbody from './tbody';\n\n/**\n * `<tfoot>` element factory namespace.\n *\n * Groups footer rows containing summaries or totals.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot\n */\nexport * as tfoot from './tfoot';\n\n/**\n * `<tr>` element factory namespace.\n *\n * Represents a table row.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr\n */\nexport * as tr from './tr';\n\n/**\n * `<th>` element factory namespace.\n *\n * Represents a header cell that labels a row or column.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th\n */\nexport * as th from './th';\n\n/**\n * `<td>` element factory namespace.\n *\n * Represents a standard table data cell.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td\n */\nexport * as td from './td';\n\n/**\n * `<caption>` element factory namespace.\n *\n * Provides a title or description for a table.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n */\nexport * as caption from './caption';\n"],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/tbody/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
TBODY_SELECTOR: () => i,
|
|
5
|
+
TBODY_TAG: () => r,
|
|
6
|
+
createTbody: () => o,
|
|
7
|
+
enhanceTbodies: () => s
|
|
8
|
+
}), r = "tbody", i = "tbody";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, ...n } = e;
|
|
12
|
+
if (!t) return n;
|
|
13
|
+
let r = {};
|
|
14
|
+
return typeof t.label == "string" && (r.label = t.label), typeof t.labelledby == "string" && (r.labelledby = t.labelledby), typeof t.hidden == "boolean" && (r.hidden = t.hidden), Object.keys(r).length > 0 ? {
|
|
15
|
+
...n,
|
|
16
|
+
aria: r
|
|
17
|
+
} : n;
|
|
18
|
+
}
|
|
19
|
+
function o(e, n) {
|
|
20
|
+
return t(r, a(n), e);
|
|
21
|
+
}
|
|
22
|
+
function s(e = document) {}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { i as TBODY_SELECTOR, r as TBODY_TAG, o as createTbody, s as enhanceTbodies, n as t };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=tbody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tbody.js","names":[],"sources":["../../../../../src/elements/table/tbody/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Tbody element helpers.\n *\n * @remarks\n * The tbody element (`<tbody>`) represents a block of rows that make up the main\n * body of a table's data.\n *\n * Best-practice guidance:\n * - Use tables for data, not layout.\n * - Group rows meaningfully with `<thead>`, `<tbody>`, and `<tfoot>`.\n * - Prefer semantic headers via `<th>` (with appropriate `scope`/`headers`)\n * and provide a `<caption>` for accessible tables.\n * - Avoid obsolete presentational attributes (e.g. `align`, `valign`, `char`,\n * `charoff`). Use CSS instead.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<tbody>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<tbody>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tbody\n * - WHATWG HTML: Tables: https://html.spec.whatwg.org/multipage/tables.html\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for table body sections.\n *\n * @category Constants\n */\nexport const TBODY_TAG = 'tbody' as const;\n\n/**\n * A CSS selector targeting tbody elements.\n *\n * @category Constants\n */\nexport const TBODY_SELECTOR = 'tbody';\n\n/**\n * Attribute bag for tbody creation/enhancement.\n *\n * @remarks\n * `<tbody>` accepts standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Note: some legacy presentational attributes existed historically for table\n * sections, but are obsolete. Consumers can still use {@link GlobalAttrs.attrs}\n * as an escape hatch where necessary, subject to pkgn-sol's security rules in\n * `dom.ts` (blocks inline event handlers and raw `style` attribute strings).\n *\n * @category Attributes\n */\nexport type TbodyAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link TbodyAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The tbody attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TbodyAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a tbody element with optional text content and global attributes.\n *\n * @remarks\n * - In real usage, `<tbody>` should contain `<tr>` rows (not text).\n * - Optional text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the tbody (generally discouraged).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<tbody>` element.\n *\n * @example\n * ```ts\n * import { createTbody } from \"@lnpg/pkgn-sol/elements/table/tbody\";\n *\n * const tbody = createTbody(undefined, { className: \"data-body\" });\n * ```\n *\n * @category DOM\n */\nexport function createTbody(text?: string, attrs?: TbodyAttrs): ElementOf<typeof TBODY_TAG> {\n return createElement(TBODY_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance tbody elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTbodies(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for tbody.\n void root;\n}\n"],"mappings":";;;;;;;IAkEa,IAAY,SAOZ,IAAiB;AAiC9B,SAAS,EAAc,GAA6C;CAClE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,GAAG,MAAS;CAE1B,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CASvD,OAPI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAG7C,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAM,MAAM;EAAY,GAAG;;AA0BrD,SAAgB,EAAY,GAAe,GAAiD;CAC1F,OAAO,EAAc,GAAW,EAAc,EAAM,EAAE,EAAK;;AAqB7D,SAAgB,EAAe,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/td/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
TD_SELECTOR: () => "td",
|
|
5
|
+
TD_TAG: () => "td",
|
|
6
|
+
createTd: () => o,
|
|
7
|
+
enhanceTds: () => s
|
|
8
|
+
}), r = "td", i = "td";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, colspan: n, rowspan: r, headers: i, attrs: a, ...o } = e, s = { ...o };
|
|
12
|
+
if (t) {
|
|
13
|
+
let e = {};
|
|
14
|
+
typeof t.label == "string" && (e.label = t.label), typeof t.labelledby == "string" && (e.labelledby = t.labelledby), typeof t.hidden == "boolean" && (e.hidden = t.hidden), Object.keys(e).length > 0 && (s.aria = e);
|
|
15
|
+
}
|
|
16
|
+
let c = { ...a ?? {} }, l = (e) => Object.prototype.hasOwnProperty.call(c, e);
|
|
17
|
+
if (typeof n == "number" && !l("colspan")) {
|
|
18
|
+
if (!Number.isInteger(n) || n <= 0) throw Error("Invalid \"colspan\" for <td>: expected a positive integer greater than zero.");
|
|
19
|
+
c.colspan = n;
|
|
20
|
+
}
|
|
21
|
+
if (typeof r == "number" && !l("rowspan")) {
|
|
22
|
+
if (!Number.isInteger(r) || r <= 0) throw Error("Invalid \"rowspan\" for <td>: expected a positive integer greater than zero.");
|
|
23
|
+
c.rowspan = r;
|
|
24
|
+
}
|
|
25
|
+
if (typeof i == "string" && !l("headers")) {
|
|
26
|
+
let e = i.trim();
|
|
27
|
+
if (e.length === 0) throw Error("Invalid \"headers\" for <td>: expected a non-empty string.");
|
|
28
|
+
c.headers = e;
|
|
29
|
+
}
|
|
30
|
+
return Object.keys(c).length > 0 && (s.attrs = c), s;
|
|
31
|
+
}
|
|
32
|
+
function o(e, n) {
|
|
33
|
+
return t("td", a(n), e);
|
|
34
|
+
}
|
|
35
|
+
function s(e = document) {}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { i as TD_SELECTOR, r as TD_TAG, o as createTd, s as enhanceTds, n as t };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=td.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"td.js","names":[],"sources":["../../../../../src/elements/table/td/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Td element helpers.\n *\n * @remarks\n * The td element (`<td>`) represents a data cell in a table row (`<tr>`).\n *\n * Best-practice guidance:\n * - Use `<td>` for data cells and `<th>` for header cells.\n * - Provide a `<caption>` and properly marked header cells for accessible tables.\n * - Prefer simple tables. For complex tables with multi-level headers, use\n * the `headers` attribute to associate a `<td>` with one or more `<th>` IDs.\n * - Avoid obsolete presentational attributes (e.g. `align`, `bgcolor`, `valign`).\n * Use CSS instead.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<td>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<td>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/td\n * - WHATWG HTML: Tables: https://html.spec.whatwg.org/multipage/tables.html\n * - W3C WAI: Tables (headers/id technique): https://www.w3.org/WAI/tutorials/tables/multi-level/\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for table data cells.\n *\n * @category Constants\n */\nexport const TD_TAG = 'td' as const;\n\n/**\n * A CSS selector targeting td elements.\n *\n * @category Constants\n */\nexport const TD_SELECTOR = 'td';\n\n/**\n * Attribute bag for td creation/enhancement.\n *\n * @remarks\n * In addition to global attributes, `<td>` participates in the table model via:\n * - `colspan`: number of columns spanned (positive integer)\n * - `rowspan`: number of rows spanned (positive integer)\n * - `headers`: space-separated list of `<th id=\"...\">` references for complex tables\n *\n * pkgn-sol supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type TdAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Number of columns this cell spans.\n *\n * @remarks\n * Must be a positive integer greater than zero.\n */\n colspan?: number;\n\n /**\n * Number of rows this cell spans.\n *\n * @remarks\n * Must be a positive integer greater than zero.\n */\n rowspan?: number;\n\n /**\n * Space-separated list of header cell IDs (`<th id=\"...\">`) that apply to this cell.\n *\n * @remarks\n * This is typically only necessary for complex tables.\n */\n headers?: string;\n};\n\n/**\n * Normalize {@link TdAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The td attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TdAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, colspan, rowspan, headers, attrs: rawAttrs, ...rest } = attrs;\n\n const out: GlobalAttrs = { ...rest };\n\n // Map structured ARIA, only if something is actually defined.\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n if (Object.keys(mappedAria).length > 0) out.aria = mappedAria;\n }\n\n // Preserve caller escape hatch, but allow pkgn-sol-typed fields to fill gaps.\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rawAttrs ?? {}) };\n\n const hasOwn = (k: string) => Object.prototype.hasOwnProperty.call(mergedAttrs, k);\n\n if (typeof colspan === 'number' && !hasOwn('colspan')) {\n if (!Number.isInteger(colspan) || colspan <= 0) {\n throw new Error('Invalid \"colspan\" for <td>: expected a positive integer greater than zero.');\n }\n mergedAttrs.colspan = colspan;\n }\n\n if (typeof rowspan === 'number' && !hasOwn('rowspan')) {\n if (!Number.isInteger(rowspan) || rowspan <= 0) {\n throw new Error('Invalid \"rowspan\" for <td>: expected a positive integer greater than zero.');\n }\n mergedAttrs.rowspan = rowspan;\n }\n\n if (typeof headers === 'string' && !hasOwn('headers')) {\n const trimmed = headers.trim();\n if (trimmed.length === 0) {\n throw new Error('Invalid \"headers\" for <td>: expected a non-empty string.');\n }\n mergedAttrs.headers = trimmed;\n }\n\n if (Object.keys(mergedAttrs).length > 0) out.attrs = mergedAttrs;\n\n return out;\n}\n\n/**\n * Create a td element with optional text content and global attributes.\n *\n * @remarks\n * - In real usage, `<td>` contains text and/or phrasing content, but should never\n * be built via `innerHTML` from untrusted data.\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the td.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<td>` element.\n *\n * @example\n * ```ts\n * import { createTd } from \"@lnpg/pkgn-sol/elements/table/td\";\n *\n * const cell = createTd(\"42\", { colspan: 2 });\n * ```\n *\n * @category DOM\n */\nexport function createTd(text?: string, attrs?: TdAttrs): ElementOf<typeof TD_TAG> {\n return createElement(TD_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance td elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTds(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for td.\n void root;\n}\n"],"mappings":";;;;;;;IAkEa,IAAS,MAOT,IAAc;AAuD3B,SAAS,EAAc,GAA0C;CAC/D,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,YAAS,YAAS,YAAS,OAAO,GAAU,GAAG,MAAS,GAEhE,IAAmB,EAAE,GAAG,GAAM;CAGpC,IAAI,GAAM;EACR,IAAM,IAA+C,EAAE;EAMvD,AAJI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAE3D,OAAO,KAAK,EAAW,CAAC,SAAS,MAAG,EAAI,OAAO;;CAIrD,IAAM,IAAiD,EAAE,GAAI,KAAY,EAAE,EAAG,EAExE,KAAU,MAAc,OAAO,UAAU,eAAe,KAAK,GAAa,EAAE;CAElF,IAAI,OAAO,KAAY,YAAY,CAAC,EAAO,UAAU,EAAE;EACrD,IAAI,CAAC,OAAO,UAAU,EAAQ,IAAI,KAAW,GAC3C,MAAU,MAAM,+EAA6E;EAE/F,EAAY,UAAU;;CAGxB,IAAI,OAAO,KAAY,YAAY,CAAC,EAAO,UAAU,EAAE;EACrD,IAAI,CAAC,OAAO,UAAU,EAAQ,IAAI,KAAW,GAC3C,MAAU,MAAM,+EAA6E;EAE/F,EAAY,UAAU;;CAGxB,IAAI,OAAO,KAAY,YAAY,CAAC,EAAO,UAAU,EAAE;EACrD,IAAM,IAAU,EAAQ,MAAM;EAC9B,IAAI,EAAQ,WAAW,GACrB,MAAU,MAAM,6DAA2D;EAE7E,EAAY,UAAU;;CAKxB,OAFI,OAAO,KAAK,EAAY,CAAC,SAAS,MAAG,EAAI,QAAQ,IAE9C;;AA2BT,SAAgB,EAAS,GAAe,GAA2C;CACjF,OAAO,EAAA,MAAsB,EAAc,EAAM,EAAE,EAAK;;AAa1D,SAAgB,EAAW,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/tfoot/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
TFOOT_SELECTOR: () => i,
|
|
5
|
+
TFOOT_TAG: () => r,
|
|
6
|
+
createTfoot: () => o,
|
|
7
|
+
enhanceTfoots: () => s
|
|
8
|
+
}), r = "tfoot", i = "tfoot";
|
|
9
|
+
function a(e) {
|
|
10
|
+
if (!e) return;
|
|
11
|
+
let { aria: t, ...n } = e;
|
|
12
|
+
if (!t) return n;
|
|
13
|
+
let r = {};
|
|
14
|
+
return typeof t.label == "string" && (r.label = t.label), typeof t.labelledby == "string" && (r.labelledby = t.labelledby), typeof t.hidden == "boolean" && (r.hidden = t.hidden), Object.keys(r).length > 0 ? {
|
|
15
|
+
...n,
|
|
16
|
+
aria: r
|
|
17
|
+
} : n;
|
|
18
|
+
}
|
|
19
|
+
function o(e) {
|
|
20
|
+
return t(r, a(e));
|
|
21
|
+
}
|
|
22
|
+
function s(e = document) {}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { i as TFOOT_SELECTOR, r as TFOOT_TAG, o as createTfoot, s as enhanceTfoots, n as t };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=tfoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tfoot.js","names":[],"sources":["../../../../../src/elements/table/tfoot/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Tfoot element helpers.\n *\n * @remarks\n * The tfoot element (`<tfoot>`) encapsulates a set of table rows (`<tr>`) that\n * comprise the footer of a table, typically containing column summaries such as\n * totals or other aggregate values. :contentReference[oaicite:1]{index=1}\n *\n * Best-practice guidance:\n * - Use `<tfoot>` for footer rows (summaries/totals), and keep the table's\n * structure logical with `<thead>` for headers and `<tbody>` for body rows.\n * - Many guides recommend placing `<tfoot>` after `<tbody>` for readability. :contentReference[oaicite:2]{index=2}\n * - Avoid deprecated presentational attributes and use CSS instead.\n * - Prefer native table semantics; only use ARIA when you cannot express the\n * intended structure using proper table markup.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<tfoot>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for tfoot elements.\n *\n * @category Constants\n */\nexport const TFOOT_TAG = 'tfoot' as const;\n\n/**\n * A CSS selector targeting tfoot elements.\n *\n * @category Constants\n */\nexport const TFOOT_SELECTOR = 'tfoot';\n\n/**\n * Attribute bag for tfoot creation/enhancement.\n *\n * @remarks\n * Tfoot elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type TfootAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link TfootAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The tfoot attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TfootAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a tfoot element with global attributes.\n *\n * @remarks\n * - `<tfoot>` is a structural table element. pkgn-sol does not accept a text argument\n * for this factory. Populate it with `<tr>` (and cells) as needed.\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<tfoot>` element.\n *\n * @example\n * Create and append a tfoot:\n * ```ts\n * import { createTfoot } from \"@lnpg/pkgn-sol/elements/table/tfoot\";\n *\n * const tfoot = createTfoot({ className: \"table-foot\" });\n * table.appendChild(tfoot);\n * ```\n *\n * @category DOM\n */\nexport function createTfoot(attrs?: TfootAttrs): ElementOf<typeof TFOOT_TAG> {\n return createElement(TFOOT_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance tfoot elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTfoots(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for tfoot.\n void root;\n}\n"],"mappings":";;;;;;;IA+Da,IAAY,SAOZ,IAAiB;AAgC9B,SAAS,EAAc,GAA6C;CAClE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,GAAG,MAAS;CAE1B,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CASvD,OAPI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAG7C,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAM,MAAM;EAAY,GAAG;;AA2BrD,SAAgB,EAAY,GAAiD;CAC3E,OAAO,EAAc,GAAW,EAAc,EAAM,CAAC;;AAqBvD,SAAgB,EAAc,IAAmB,UAAgB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { i as e, n as t } from "../../../chunks/dom.js";
|
|
2
|
+
//#region src/elements/table/th/index.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
TH_SELECTOR: () => "th",
|
|
5
|
+
TH_TAG: () => "th",
|
|
6
|
+
createTh: () => s,
|
|
7
|
+
enhanceThs: () => c
|
|
8
|
+
}), r = "th", i = "th";
|
|
9
|
+
function a(e, t, n) {
|
|
10
|
+
Object.prototype.hasOwnProperty.call(e, t) || (e[t] = n);
|
|
11
|
+
}
|
|
12
|
+
function o(e) {
|
|
13
|
+
if (!e) return;
|
|
14
|
+
let { aria: t, abbr: n, colspan: r, rowspan: i, headers: o, scope: s, ...c } = e, l = t ? (() => {
|
|
15
|
+
let e = {};
|
|
16
|
+
return typeof t.label == "string" && (e.label = t.label), typeof t.labelledby == "string" && (e.labelledby = t.labelledby), typeof t.hidden == "boolean" && (e.hidden = t.hidden), Object.keys(e).length > 0 ? e : void 0;
|
|
17
|
+
})() : void 0, u = { ...c.attrs ?? {} };
|
|
18
|
+
typeof n == "string" && n.length > 0 && a(u, "abbr", n), typeof o == "string" && o.length > 0 && a(u, "headers", o), typeof s == "string" && s.length > 0 && a(u, "scope", s), typeof r == "number" && Number.isFinite(r) && r > 0 && a(u, "colspan", Math.trunc(r)), typeof i == "number" && Number.isFinite(i) && i > 0 && a(u, "rowspan", Math.trunc(i));
|
|
19
|
+
let d = Object.keys(u).length > 0;
|
|
20
|
+
return {
|
|
21
|
+
...c,
|
|
22
|
+
...l ? { aria: l } : null,
|
|
23
|
+
...d ? { attrs: u } : null
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function s(e, n) {
|
|
27
|
+
return t("th", o(n), e);
|
|
28
|
+
}
|
|
29
|
+
function c(e = document) {}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { i as TH_SELECTOR, r as TH_TAG, s as createTh, c as enhanceThs, n as t };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=th.js.map
|