@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.
Files changed (1140) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +64 -0
  3. package/dist/assets/fonts/montserrat/Montserrat-Variable-Font.ttf +0 -0
  4. package/dist/assets/fonts/montserrat/Montserrat-Variable-Italic-Font.ttf +0 -0
  5. package/dist/assets/fonts/montserrat/OFL.txt +93 -0
  6. package/dist/assets/fonts/montserrat/README.txt +81 -0
  7. package/dist/cjs/chunks/dom.cjs +2 -0
  8. package/dist/cjs/chunks/dom.cjs.map +1 -0
  9. package/dist/cjs/chunks/inline.cjs +2 -0
  10. package/dist/cjs/chunks/inline.cjs.map +1 -0
  11. package/dist/cjs/chunks/pkgn-sol.cjs +2 -0
  12. package/dist/cjs/chunks/pkgn-sol.cjs.map +1 -0
  13. package/dist/cjs/elements/break/br/br.cjs +2 -0
  14. package/dist/cjs/elements/break/br/br.cjs.map +1 -0
  15. package/dist/cjs/elements/break/break.cjs +2 -0
  16. package/dist/cjs/elements/break/break.cjs.map +1 -0
  17. package/dist/cjs/elements/break/wbr/wbr.cjs +2 -0
  18. package/dist/cjs/elements/break/wbr/wbr.cjs.map +1 -0
  19. package/dist/cjs/elements/container/container.cjs +2 -0
  20. package/dist/cjs/elements/container/container.cjs.map +1 -0
  21. package/dist/cjs/elements/container/div/div.cjs +2 -0
  22. package/dist/cjs/elements/container/div/div.cjs.map +1 -0
  23. package/dist/cjs/elements/container/span/span.cjs +2 -0
  24. package/dist/cjs/elements/container/span/span.cjs.map +1 -0
  25. package/dist/cjs/elements/figure/figcaption/figcaption.cjs +2 -0
  26. package/dist/cjs/elements/figure/figcaption/figcaption.cjs.map +1 -0
  27. package/dist/cjs/elements/figure/figure/figure.cjs +2 -0
  28. package/dist/cjs/elements/figure/figure/figure.cjs.map +1 -0
  29. package/dist/cjs/elements/figure/figure.cjs +2 -0
  30. package/dist/cjs/elements/figure/figure.cjs.map +1 -0
  31. package/dist/cjs/elements/form/button/button.cjs +2 -0
  32. package/dist/cjs/elements/form/button/button.cjs.map +1 -0
  33. package/dist/cjs/elements/form/datalist/datalist.cjs +2 -0
  34. package/dist/cjs/elements/form/datalist/datalist.cjs.map +1 -0
  35. package/dist/cjs/elements/form/fieldset/fieldset.cjs +2 -0
  36. package/dist/cjs/elements/form/fieldset/fieldset.cjs.map +1 -0
  37. package/dist/cjs/elements/form/form/form.cjs +2 -0
  38. package/dist/cjs/elements/form/form/form.cjs.map +1 -0
  39. package/dist/cjs/elements/form/form.cjs +2 -0
  40. package/dist/cjs/elements/form/form.cjs.map +1 -0
  41. package/dist/cjs/elements/form/input/input.cjs +2 -0
  42. package/dist/cjs/elements/form/input/input.cjs.map +1 -0
  43. package/dist/cjs/elements/form/label/label.cjs +2 -0
  44. package/dist/cjs/elements/form/label/label.cjs.map +1 -0
  45. package/dist/cjs/elements/form/legend/legend.cjs +2 -0
  46. package/dist/cjs/elements/form/legend/legend.cjs.map +1 -0
  47. package/dist/cjs/elements/form/meter/meter.cjs +2 -0
  48. package/dist/cjs/elements/form/meter/meter.cjs.map +1 -0
  49. package/dist/cjs/elements/form/optgroup/optgroup.cjs +2 -0
  50. package/dist/cjs/elements/form/optgroup/optgroup.cjs.map +1 -0
  51. package/dist/cjs/elements/form/option/option.cjs +2 -0
  52. package/dist/cjs/elements/form/option/option.cjs.map +1 -0
  53. package/dist/cjs/elements/form/output/output.cjs +2 -0
  54. package/dist/cjs/elements/form/output/output.cjs.map +1 -0
  55. package/dist/cjs/elements/form/progress/progress.cjs +2 -0
  56. package/dist/cjs/elements/form/progress/progress.cjs.map +1 -0
  57. package/dist/cjs/elements/form/select/select.cjs +2 -0
  58. package/dist/cjs/elements/form/select/select.cjs.map +1 -0
  59. package/dist/cjs/elements/form/textarea/textarea.cjs +2 -0
  60. package/dist/cjs/elements/form/textarea/textarea.cjs.map +1 -0
  61. package/dist/cjs/elements/heading/h1/h1.cjs +2 -0
  62. package/dist/cjs/elements/heading/h1/h1.cjs.map +1 -0
  63. package/dist/cjs/elements/heading/h2/h2.cjs +2 -0
  64. package/dist/cjs/elements/heading/h2/h2.cjs.map +1 -0
  65. package/dist/cjs/elements/heading/h3/h3.cjs +2 -0
  66. package/dist/cjs/elements/heading/h3/h3.cjs.map +1 -0
  67. package/dist/cjs/elements/heading/h4/h4.cjs +2 -0
  68. package/dist/cjs/elements/heading/h4/h4.cjs.map +1 -0
  69. package/dist/cjs/elements/heading/h5/h5.cjs +2 -0
  70. package/dist/cjs/elements/heading/h5/h5.cjs.map +1 -0
  71. package/dist/cjs/elements/heading/h6/h6.cjs +2 -0
  72. package/dist/cjs/elements/heading/h6/h6.cjs.map +1 -0
  73. package/dist/cjs/elements/heading/heading.cjs +2 -0
  74. package/dist/cjs/elements/heading/heading.cjs.map +1 -0
  75. package/dist/cjs/elements/inline/a/a.cjs +2 -0
  76. package/dist/cjs/elements/inline/a/a.cjs.map +1 -0
  77. package/dist/cjs/elements/inline/abbr/abbr.cjs +2 -0
  78. package/dist/cjs/elements/inline/abbr/abbr.cjs.map +1 -0
  79. package/dist/cjs/elements/inline/b/b.cjs +2 -0
  80. package/dist/cjs/elements/inline/b/b.cjs.map +1 -0
  81. package/dist/cjs/elements/inline/cite/cite.cjs +2 -0
  82. package/dist/cjs/elements/inline/cite/cite.cjs.map +1 -0
  83. package/dist/cjs/elements/inline/code/code.cjs +2 -0
  84. package/dist/cjs/elements/inline/code/code.cjs.map +1 -0
  85. package/dist/cjs/elements/inline/data/data.cjs +2 -0
  86. package/dist/cjs/elements/inline/data/data.cjs.map +1 -0
  87. package/dist/cjs/elements/inline/dfn/dfn.cjs +2 -0
  88. package/dist/cjs/elements/inline/dfn/dfn.cjs.map +1 -0
  89. package/dist/cjs/elements/inline/em/em.cjs +2 -0
  90. package/dist/cjs/elements/inline/em/em.cjs.map +1 -0
  91. package/dist/cjs/elements/inline/i/i.cjs +2 -0
  92. package/dist/cjs/elements/inline/i/i.cjs.map +1 -0
  93. package/dist/cjs/elements/inline/inline.cjs +1 -0
  94. package/dist/cjs/elements/inline/kbd/kbd.cjs +2 -0
  95. package/dist/cjs/elements/inline/kbd/kbd.cjs.map +1 -0
  96. package/dist/cjs/elements/inline/mark/mark.cjs +2 -0
  97. package/dist/cjs/elements/inline/mark/mark.cjs.map +1 -0
  98. package/dist/cjs/elements/inline/q/q.cjs +2 -0
  99. package/dist/cjs/elements/inline/q/q.cjs.map +1 -0
  100. package/dist/cjs/elements/inline/rb/rb.cjs +2 -0
  101. package/dist/cjs/elements/inline/rb/rb.cjs.map +1 -0
  102. package/dist/cjs/elements/inline/rt/rt.cjs +2 -0
  103. package/dist/cjs/elements/inline/rt/rt.cjs.map +1 -0
  104. package/dist/cjs/elements/inline/rtc/rtc.cjs +2 -0
  105. package/dist/cjs/elements/inline/rtc/rtc.cjs.map +1 -0
  106. package/dist/cjs/elements/inline/ruby/ruby.cjs +2 -0
  107. package/dist/cjs/elements/inline/ruby/ruby.cjs.map +1 -0
  108. package/dist/cjs/elements/inline/s/s.cjs +2 -0
  109. package/dist/cjs/elements/inline/s/s.cjs.map +1 -0
  110. package/dist/cjs/elements/inline/samp/samp.cjs +2 -0
  111. package/dist/cjs/elements/inline/samp/samp.cjs.map +1 -0
  112. package/dist/cjs/elements/inline/small/small.cjs +2 -0
  113. package/dist/cjs/elements/inline/small/small.cjs.map +1 -0
  114. package/dist/cjs/elements/inline/strong/strong.cjs +2 -0
  115. package/dist/cjs/elements/inline/strong/strong.cjs.map +1 -0
  116. package/dist/cjs/elements/inline/sub/sub.cjs +2 -0
  117. package/dist/cjs/elements/inline/sub/sub.cjs.map +1 -0
  118. package/dist/cjs/elements/inline/sup/sup.cjs +2 -0
  119. package/dist/cjs/elements/inline/sup/sup.cjs.map +1 -0
  120. package/dist/cjs/elements/inline/time/time.cjs +2 -0
  121. package/dist/cjs/elements/inline/time/time.cjs.map +1 -0
  122. package/dist/cjs/elements/inline/u/u.cjs +2 -0
  123. package/dist/cjs/elements/inline/u/u.cjs.map +1 -0
  124. package/dist/cjs/elements/inline/var/var.cjs +2 -0
  125. package/dist/cjs/elements/inline/var/var.cjs.map +1 -0
  126. package/dist/cjs/elements/interactive/details/details.cjs +2 -0
  127. package/dist/cjs/elements/interactive/details/details.cjs.map +1 -0
  128. package/dist/cjs/elements/interactive/dialog/dialog.cjs +2 -0
  129. package/dist/cjs/elements/interactive/dialog/dialog.cjs.map +1 -0
  130. package/dist/cjs/elements/interactive/interactive.cjs +2 -0
  131. package/dist/cjs/elements/interactive/interactive.cjs.map +1 -0
  132. package/dist/cjs/elements/interactive/summary/summary.cjs +2 -0
  133. package/dist/cjs/elements/interactive/summary/summary.cjs.map +1 -0
  134. package/dist/cjs/elements/layout/article/article.cjs +2 -0
  135. package/dist/cjs/elements/layout/article/article.cjs.map +1 -0
  136. package/dist/cjs/elements/layout/aside/aside.cjs +2 -0
  137. package/dist/cjs/elements/layout/aside/aside.cjs.map +1 -0
  138. package/dist/cjs/elements/layout/footer/footer.cjs +2 -0
  139. package/dist/cjs/elements/layout/footer/footer.cjs.map +1 -0
  140. package/dist/cjs/elements/layout/header/header.cjs +2 -0
  141. package/dist/cjs/elements/layout/header/header.cjs.map +1 -0
  142. package/dist/cjs/elements/layout/layout.cjs +2 -0
  143. package/dist/cjs/elements/layout/layout.cjs.map +1 -0
  144. package/dist/cjs/elements/layout/main/main.cjs +2 -0
  145. package/dist/cjs/elements/layout/main/main.cjs.map +1 -0
  146. package/dist/cjs/elements/layout/nav/nav.cjs +2 -0
  147. package/dist/cjs/elements/layout/nav/nav.cjs.map +1 -0
  148. package/dist/cjs/elements/layout/section/section.cjs +2 -0
  149. package/dist/cjs/elements/layout/section/section.cjs.map +1 -0
  150. package/dist/cjs/elements/list/dd/dd.cjs +2 -0
  151. package/dist/cjs/elements/list/dd/dd.cjs.map +1 -0
  152. package/dist/cjs/elements/list/dl/dl.cjs +2 -0
  153. package/dist/cjs/elements/list/dl/dl.cjs.map +1 -0
  154. package/dist/cjs/elements/list/dt/dt.cjs +2 -0
  155. package/dist/cjs/elements/list/dt/dt.cjs.map +1 -0
  156. package/dist/cjs/elements/list/li/li.cjs +2 -0
  157. package/dist/cjs/elements/list/li/li.cjs.map +1 -0
  158. package/dist/cjs/elements/list/list.cjs +2 -0
  159. package/dist/cjs/elements/list/list.cjs.map +1 -0
  160. package/dist/cjs/elements/list/ol/ol.cjs +2 -0
  161. package/dist/cjs/elements/list/ol/ol.cjs.map +1 -0
  162. package/dist/cjs/elements/list/ul/ul.cjs +2 -0
  163. package/dist/cjs/elements/list/ul/ul.cjs.map +1 -0
  164. package/dist/cjs/elements/media/audio/audio.cjs +2 -0
  165. package/dist/cjs/elements/media/audio/audio.cjs.map +1 -0
  166. package/dist/cjs/elements/media/canvas/canvas.cjs +2 -0
  167. package/dist/cjs/elements/media/canvas/canvas.cjs.map +1 -0
  168. package/dist/cjs/elements/media/embed/embed.cjs +2 -0
  169. package/dist/cjs/elements/media/embed/embed.cjs.map +1 -0
  170. package/dist/cjs/elements/media/iframe/iframe.cjs +2 -0
  171. package/dist/cjs/elements/media/iframe/iframe.cjs.map +1 -0
  172. package/dist/cjs/elements/media/img/img.cjs +2 -0
  173. package/dist/cjs/elements/media/img/img.cjs.map +1 -0
  174. package/dist/cjs/elements/media/math/math.cjs +2 -0
  175. package/dist/cjs/elements/media/math/math.cjs.map +1 -0
  176. package/dist/cjs/elements/media/media.cjs +2 -0
  177. package/dist/cjs/elements/media/media.cjs.map +1 -0
  178. package/dist/cjs/elements/media/object/object.cjs +2 -0
  179. package/dist/cjs/elements/media/object/object.cjs.map +1 -0
  180. package/dist/cjs/elements/media/svg/svg.cjs +2 -0
  181. package/dist/cjs/elements/media/svg/svg.cjs.map +1 -0
  182. package/dist/cjs/elements/media/video/video.cjs +2 -0
  183. package/dist/cjs/elements/media/video/video.cjs.map +1 -0
  184. package/dist/cjs/elements/responsive/area/area.cjs +2 -0
  185. package/dist/cjs/elements/responsive/area/area.cjs.map +1 -0
  186. package/dist/cjs/elements/responsive/map/map.cjs +2 -0
  187. package/dist/cjs/elements/responsive/map/map.cjs.map +1 -0
  188. package/dist/cjs/elements/responsive/picture/picture.cjs +2 -0
  189. package/dist/cjs/elements/responsive/picture/picture.cjs.map +1 -0
  190. package/dist/cjs/elements/responsive/responsive.cjs +2 -0
  191. package/dist/cjs/elements/responsive/responsive.cjs.map +1 -0
  192. package/dist/cjs/elements/responsive/source/source.cjs +2 -0
  193. package/dist/cjs/elements/responsive/source/source.cjs.map +1 -0
  194. package/dist/cjs/elements/responsive/track/track.cjs +2 -0
  195. package/dist/cjs/elements/responsive/track/track.cjs.map +1 -0
  196. package/dist/cjs/elements/table/caption/caption.cjs +2 -0
  197. package/dist/cjs/elements/table/caption/caption.cjs.map +1 -0
  198. package/dist/cjs/elements/table/col/col.cjs +2 -0
  199. package/dist/cjs/elements/table/col/col.cjs.map +1 -0
  200. package/dist/cjs/elements/table/colgroup/colgroup.cjs +2 -0
  201. package/dist/cjs/elements/table/colgroup/colgroup.cjs.map +1 -0
  202. package/dist/cjs/elements/table/table/table.cjs +2 -0
  203. package/dist/cjs/elements/table/table/table.cjs.map +1 -0
  204. package/dist/cjs/elements/table/table.cjs +2 -0
  205. package/dist/cjs/elements/table/table.cjs.map +1 -0
  206. package/dist/cjs/elements/table/tbody/tbody.cjs +2 -0
  207. package/dist/cjs/elements/table/tbody/tbody.cjs.map +1 -0
  208. package/dist/cjs/elements/table/td/td.cjs +2 -0
  209. package/dist/cjs/elements/table/td/td.cjs.map +1 -0
  210. package/dist/cjs/elements/table/tfoot/tfoot.cjs +2 -0
  211. package/dist/cjs/elements/table/tfoot/tfoot.cjs.map +1 -0
  212. package/dist/cjs/elements/table/th/th.cjs +2 -0
  213. package/dist/cjs/elements/table/th/th.cjs.map +1 -0
  214. package/dist/cjs/elements/table/thead/thead.cjs +2 -0
  215. package/dist/cjs/elements/table/thead/thead.cjs.map +1 -0
  216. package/dist/cjs/elements/table/tr/tr.cjs +2 -0
  217. package/dist/cjs/elements/table/tr/tr.cjs.map +1 -0
  218. package/dist/cjs/elements/text/address/address.cjs +2 -0
  219. package/dist/cjs/elements/text/address/address.cjs.map +1 -0
  220. package/dist/cjs/elements/text/blockquote/blockquote.cjs +2 -0
  221. package/dist/cjs/elements/text/blockquote/blockquote.cjs.map +1 -0
  222. package/dist/cjs/elements/text/hr/hr.cjs +2 -0
  223. package/dist/cjs/elements/text/hr/hr.cjs.map +1 -0
  224. package/dist/cjs/elements/text/paragraph/paragraph.cjs +2 -0
  225. package/dist/cjs/elements/text/paragraph/paragraph.cjs.map +1 -0
  226. package/dist/cjs/elements/text/pre/pre.cjs +2 -0
  227. package/dist/cjs/elements/text/pre/pre.cjs.map +1 -0
  228. package/dist/cjs/elements/text/text.cjs +2 -0
  229. package/dist/cjs/elements/text/text.cjs.map +1 -0
  230. package/dist/cjs/elements.cjs +2 -0
  231. package/dist/cjs/elements.cjs.map +1 -0
  232. package/dist/cjs/index.cjs +2 -0
  233. package/dist/cjs/index.cjs.map +1 -0
  234. package/dist/css/core.css +1 -0
  235. package/dist/css/core.css.map +1 -0
  236. package/dist/css/elements/break/br/br.css +1 -0
  237. package/dist/css/elements/break/br/br.css.map +1 -0
  238. package/dist/css/elements/break/wbr/wbr.css +1 -0
  239. package/dist/css/elements/break/wbr/wbr.css.map +1 -0
  240. package/dist/css/elements/container/div/div.css +1 -0
  241. package/dist/css/elements/container/div/div.css.map +1 -0
  242. package/dist/css/elements/container/span/span.css +1 -0
  243. package/dist/css/elements/container/span/span.css.map +1 -0
  244. package/dist/css/elements/figure/figcaption/figcaption.css +1 -0
  245. package/dist/css/elements/figure/figcaption/figcaption.css.map +1 -0
  246. package/dist/css/elements/figure/figure/figure.css +1 -0
  247. package/dist/css/elements/figure/figure/figure.css.map +1 -0
  248. package/dist/css/elements/form/button/button.css +1 -0
  249. package/dist/css/elements/form/button/button.css.map +1 -0
  250. package/dist/css/elements/form/datalist/datalist.css +1 -0
  251. package/dist/css/elements/form/datalist/datalist.css.map +1 -0
  252. package/dist/css/elements/form/fieldset/fieldset.css +1 -0
  253. package/dist/css/elements/form/fieldset/fieldset.css.map +1 -0
  254. package/dist/css/elements/form/form/form.css +1 -0
  255. package/dist/css/elements/form/form/form.css.map +1 -0
  256. package/dist/css/elements/form/input/input.css +1 -0
  257. package/dist/css/elements/form/input/input.css.map +1 -0
  258. package/dist/css/elements/form/label/label.css +1 -0
  259. package/dist/css/elements/form/label/label.css.map +1 -0
  260. package/dist/css/elements/form/legend/legend.css +1 -0
  261. package/dist/css/elements/form/legend/legend.css.map +1 -0
  262. package/dist/css/elements/form/meter/meter.css +1 -0
  263. package/dist/css/elements/form/meter/meter.css.map +1 -0
  264. package/dist/css/elements/form/optgroup/optgroup.css +1 -0
  265. package/dist/css/elements/form/optgroup/optgroup.css.map +1 -0
  266. package/dist/css/elements/form/option/option.css +1 -0
  267. package/dist/css/elements/form/option/option.css.map +1 -0
  268. package/dist/css/elements/form/output/output.css +1 -0
  269. package/dist/css/elements/form/output/output.css.map +1 -0
  270. package/dist/css/elements/form/progress/progress.css +1 -0
  271. package/dist/css/elements/form/progress/progress.css.map +1 -0
  272. package/dist/css/elements/form/select/select.css +1 -0
  273. package/dist/css/elements/form/select/select.css.map +1 -0
  274. package/dist/css/elements/form/textarea/textarea.css +1 -0
  275. package/dist/css/elements/form/textarea/textarea.css.map +1 -0
  276. package/dist/css/elements/heading/h1/h1.css +1 -0
  277. package/dist/css/elements/heading/h1/h1.css.map +1 -0
  278. package/dist/css/elements/heading/h2/h2.css +1 -0
  279. package/dist/css/elements/heading/h2/h2.css.map +1 -0
  280. package/dist/css/elements/heading/h3/h3.css +1 -0
  281. package/dist/css/elements/heading/h3/h3.css.map +1 -0
  282. package/dist/css/elements/heading/h4/h4.css +1 -0
  283. package/dist/css/elements/heading/h4/h4.css.map +1 -0
  284. package/dist/css/elements/heading/h5/h5.css +1 -0
  285. package/dist/css/elements/heading/h5/h5.css.map +1 -0
  286. package/dist/css/elements/heading/h6/h6.css +1 -0
  287. package/dist/css/elements/heading/h6/h6.css.map +1 -0
  288. package/dist/css/elements/inline/a/a.css +1 -0
  289. package/dist/css/elements/inline/a/a.css.map +1 -0
  290. package/dist/css/elements/inline/abbr/abbr.css +1 -0
  291. package/dist/css/elements/inline/abbr/abbr.css.map +1 -0
  292. package/dist/css/elements/inline/b/b.css +1 -0
  293. package/dist/css/elements/inline/b/b.css.map +1 -0
  294. package/dist/css/elements/inline/cite/cite.css +1 -0
  295. package/dist/css/elements/inline/cite/cite.css.map +1 -0
  296. package/dist/css/elements/inline/code/code.css +1 -0
  297. package/dist/css/elements/inline/code/code.css.map +1 -0
  298. package/dist/css/elements/inline/data/data.css +1 -0
  299. package/dist/css/elements/inline/data/data.css.map +1 -0
  300. package/dist/css/elements/inline/dfn/dfn.css +1 -0
  301. package/dist/css/elements/inline/dfn/dfn.css.map +1 -0
  302. package/dist/css/elements/inline/em/em.css +1 -0
  303. package/dist/css/elements/inline/em/em.css.map +1 -0
  304. package/dist/css/elements/inline/i/i.css +1 -0
  305. package/dist/css/elements/inline/i/i.css.map +1 -0
  306. package/dist/css/elements/inline/kbd/kbd.css +1 -0
  307. package/dist/css/elements/inline/kbd/kbd.css.map +1 -0
  308. package/dist/css/elements/inline/mark/mark.css +1 -0
  309. package/dist/css/elements/inline/mark/mark.css.map +1 -0
  310. package/dist/css/elements/inline/q/q.css +1 -0
  311. package/dist/css/elements/inline/q/q.css.map +1 -0
  312. package/dist/css/elements/inline/rb/rb.css +1 -0
  313. package/dist/css/elements/inline/rb/rb.css.map +1 -0
  314. package/dist/css/elements/inline/rp/rp.css +1 -0
  315. package/dist/css/elements/inline/rp/rp.css.map +1 -0
  316. package/dist/css/elements/inline/rt/rt.css +1 -0
  317. package/dist/css/elements/inline/rt/rt.css.map +1 -0
  318. package/dist/css/elements/inline/rtc/rtc.css +1 -0
  319. package/dist/css/elements/inline/rtc/rtc.css.map +1 -0
  320. package/dist/css/elements/inline/ruby/ruby.css +1 -0
  321. package/dist/css/elements/inline/ruby/ruby.css.map +1 -0
  322. package/dist/css/elements/inline/s/s.css +1 -0
  323. package/dist/css/elements/inline/s/s.css.map +1 -0
  324. package/dist/css/elements/inline/samp/samp.css +1 -0
  325. package/dist/css/elements/inline/samp/samp.css.map +1 -0
  326. package/dist/css/elements/inline/small/small.css +1 -0
  327. package/dist/css/elements/inline/small/small.css.map +1 -0
  328. package/dist/css/elements/inline/strong/strong.css +1 -0
  329. package/dist/css/elements/inline/strong/strong.css.map +1 -0
  330. package/dist/css/elements/inline/sub/sub.css +1 -0
  331. package/dist/css/elements/inline/sub/sub.css.map +1 -0
  332. package/dist/css/elements/inline/sup/sup.css +1 -0
  333. package/dist/css/elements/inline/sup/sup.css.map +1 -0
  334. package/dist/css/elements/inline/time/time.css +1 -0
  335. package/dist/css/elements/inline/time/time.css.map +1 -0
  336. package/dist/css/elements/inline/u/u.css +1 -0
  337. package/dist/css/elements/inline/u/u.css.map +1 -0
  338. package/dist/css/elements/inline/var/var.css +1 -0
  339. package/dist/css/elements/inline/var/var.css.map +1 -0
  340. package/dist/css/elements/interactive/details/details.css +1 -0
  341. package/dist/css/elements/interactive/details/details.css.map +1 -0
  342. package/dist/css/elements/interactive/dialog/dialog.css +1 -0
  343. package/dist/css/elements/interactive/dialog/dialog.css.map +1 -0
  344. package/dist/css/elements/interactive/summary/summary.css +1 -0
  345. package/dist/css/elements/interactive/summary/summary.css.map +1 -0
  346. package/dist/css/elements/layout/article/article.css +1 -0
  347. package/dist/css/elements/layout/article/article.css.map +1 -0
  348. package/dist/css/elements/layout/aside/aside.css +1 -0
  349. package/dist/css/elements/layout/aside/aside.css.map +1 -0
  350. package/dist/css/elements/layout/footer/footer.css +1 -0
  351. package/dist/css/elements/layout/footer/footer.css.map +1 -0
  352. package/dist/css/elements/layout/header/header.css +1 -0
  353. package/dist/css/elements/layout/header/header.css.map +1 -0
  354. package/dist/css/elements/layout/main/main.css +1 -0
  355. package/dist/css/elements/layout/main/main.css.map +1 -0
  356. package/dist/css/elements/layout/nav/nav.css +1 -0
  357. package/dist/css/elements/layout/nav/nav.css.map +1 -0
  358. package/dist/css/elements/layout/section/section.css +1 -0
  359. package/dist/css/elements/layout/section/section.css.map +1 -0
  360. package/dist/css/elements/list/dd/dd.css +1 -0
  361. package/dist/css/elements/list/dd/dd.css.map +1 -0
  362. package/dist/css/elements/list/dl/dl.css +1 -0
  363. package/dist/css/elements/list/dl/dl.css.map +1 -0
  364. package/dist/css/elements/list/dt/dt.css +1 -0
  365. package/dist/css/elements/list/dt/dt.css.map +1 -0
  366. package/dist/css/elements/list/li/li.css +1 -0
  367. package/dist/css/elements/list/li/li.css.map +1 -0
  368. package/dist/css/elements/list/ol/ol.css +1 -0
  369. package/dist/css/elements/list/ol/ol.css.map +1 -0
  370. package/dist/css/elements/list/ul/ul.css +1 -0
  371. package/dist/css/elements/list/ul/ul.css.map +1 -0
  372. package/dist/css/elements/media/audio/audio.css +1 -0
  373. package/dist/css/elements/media/audio/audio.css.map +1 -0
  374. package/dist/css/elements/media/canvas/canvas.css +1 -0
  375. package/dist/css/elements/media/canvas/canvas.css.map +1 -0
  376. package/dist/css/elements/media/embed/embed.css +1 -0
  377. package/dist/css/elements/media/embed/embed.css.map +1 -0
  378. package/dist/css/elements/media/iframe/iframe.css +1 -0
  379. package/dist/css/elements/media/iframe/iframe.css.map +1 -0
  380. package/dist/css/elements/media/img/img.css +1 -0
  381. package/dist/css/elements/media/img/img.css.map +1 -0
  382. package/dist/css/elements/media/math/math.css +1 -0
  383. package/dist/css/elements/media/math/math.css.map +1 -0
  384. package/dist/css/elements/media/object/object.css +1 -0
  385. package/dist/css/elements/media/object/object.css.map +1 -0
  386. package/dist/css/elements/media/svg/svg.css +1 -0
  387. package/dist/css/elements/media/svg/svg.css.map +1 -0
  388. package/dist/css/elements/media/video/video.css +1 -0
  389. package/dist/css/elements/media/video/video.css.map +1 -0
  390. package/dist/css/elements/responsive/area/area.css +1 -0
  391. package/dist/css/elements/responsive/area/area.css.map +1 -0
  392. package/dist/css/elements/responsive/map/map.css +1 -0
  393. package/dist/css/elements/responsive/map/map.css.map +1 -0
  394. package/dist/css/elements/responsive/picture/picture.css +1 -0
  395. package/dist/css/elements/responsive/picture/picture.css.map +1 -0
  396. package/dist/css/elements/responsive/source/source.css +1 -0
  397. package/dist/css/elements/responsive/source/source.css.map +1 -0
  398. package/dist/css/elements/responsive/track/track.css +1 -0
  399. package/dist/css/elements/responsive/track/track.css.map +1 -0
  400. package/dist/css/elements/table/caption/caption.css +1 -0
  401. package/dist/css/elements/table/caption/caption.css.map +1 -0
  402. package/dist/css/elements/table/col/col.css +1 -0
  403. package/dist/css/elements/table/col/col.css.map +1 -0
  404. package/dist/css/elements/table/colgroup/colgroup.css +1 -0
  405. package/dist/css/elements/table/colgroup/colgroup.css.map +1 -0
  406. package/dist/css/elements/table/table/table.css +1 -0
  407. package/dist/css/elements/table/table/table.css.map +1 -0
  408. package/dist/css/elements/table/tbody/tbody.css +1 -0
  409. package/dist/css/elements/table/tbody/tbody.css.map +1 -0
  410. package/dist/css/elements/table/td/td.css +1 -0
  411. package/dist/css/elements/table/td/td.css.map +1 -0
  412. package/dist/css/elements/table/tfoot/tfoot.css +1 -0
  413. package/dist/css/elements/table/tfoot/tfoot.css.map +1 -0
  414. package/dist/css/elements/table/th/th.css +1 -0
  415. package/dist/css/elements/table/th/th.css.map +1 -0
  416. package/dist/css/elements/table/thead/thead.css +1 -0
  417. package/dist/css/elements/table/thead/thead.css.map +1 -0
  418. package/dist/css/elements/table/tr/tr.css +1 -0
  419. package/dist/css/elements/table/tr/tr.css.map +1 -0
  420. package/dist/css/elements/text/address/address.css +1 -0
  421. package/dist/css/elements/text/address/address.css.map +1 -0
  422. package/dist/css/elements/text/blockquote/blockquote.css +1 -0
  423. package/dist/css/elements/text/blockquote/blockquote.css.map +1 -0
  424. package/dist/css/elements/text/hr/hr.css +1 -0
  425. package/dist/css/elements/text/hr/hr.css.map +1 -0
  426. package/dist/css/elements/text/paragraph/paragraph.css +1 -0
  427. package/dist/css/elements/text/paragraph/paragraph.css.map +1 -0
  428. package/dist/css/elements/text/pre/pre.css +1 -0
  429. package/dist/css/elements/text/pre/pre.css.map +1 -0
  430. package/dist/css/main.css +1 -0
  431. package/dist/css/main.css.map +1 -0
  432. package/dist/esm/chunks/dom.js +38 -0
  433. package/dist/esm/chunks/dom.js.map +1 -0
  434. package/dist/esm/chunks/inline.js +81 -0
  435. package/dist/esm/chunks/inline.js.map +1 -0
  436. package/dist/esm/chunks/pkgn-sol.js +7 -0
  437. package/dist/esm/chunks/pkgn-sol.js.map +1 -0
  438. package/dist/esm/elements/break/br/br.js +26 -0
  439. package/dist/esm/elements/break/br/br.js.map +1 -0
  440. package/dist/esm/elements/break/break.js +12 -0
  441. package/dist/esm/elements/break/break.js.map +1 -0
  442. package/dist/esm/elements/break/wbr/wbr.js +26 -0
  443. package/dist/esm/elements/break/wbr/wbr.js.map +1 -0
  444. package/dist/esm/elements/container/container.js +12 -0
  445. package/dist/esm/elements/container/container.js.map +1 -0
  446. package/dist/esm/elements/container/div/div.js +26 -0
  447. package/dist/esm/elements/container/div/div.js.map +1 -0
  448. package/dist/esm/elements/container/span/span.js +26 -0
  449. package/dist/esm/elements/container/span/span.js.map +1 -0
  450. package/dist/esm/elements/figure/figcaption/figcaption.js +26 -0
  451. package/dist/esm/elements/figure/figcaption/figcaption.js.map +1 -0
  452. package/dist/esm/elements/figure/figure/figure.js +26 -0
  453. package/dist/esm/elements/figure/figure/figure.js.map +1 -0
  454. package/dist/esm/elements/figure/figure.js +12 -0
  455. package/dist/esm/elements/figure/figure.js.map +1 -0
  456. package/dist/esm/elements/form/button/button.js +31 -0
  457. package/dist/esm/elements/form/button/button.js.map +1 -0
  458. package/dist/esm/elements/form/datalist/datalist.js +26 -0
  459. package/dist/esm/elements/form/datalist/datalist.js.map +1 -0
  460. package/dist/esm/elements/form/fieldset/fieldset.js +27 -0
  461. package/dist/esm/elements/form/fieldset/fieldset.js.map +1 -0
  462. package/dist/esm/elements/form/form/form.js +27 -0
  463. package/dist/esm/elements/form/form/form.js.map +1 -0
  464. package/dist/esm/elements/form/form.js +36 -0
  465. package/dist/esm/elements/form/form.js.map +1 -0
  466. package/dist/esm/elements/form/input/input.js +31 -0
  467. package/dist/esm/elements/form/input/input.js.map +1 -0
  468. package/dist/esm/elements/form/label/label.js +29 -0
  469. package/dist/esm/elements/form/label/label.js.map +1 -0
  470. package/dist/esm/elements/form/legend/legend.js +26 -0
  471. package/dist/esm/elements/form/legend/legend.js.map +1 -0
  472. package/dist/esm/elements/form/meter/meter.js +29 -0
  473. package/dist/esm/elements/form/meter/meter.js.map +1 -0
  474. package/dist/esm/elements/form/optgroup/optgroup.js +24 -0
  475. package/dist/esm/elements/form/optgroup/optgroup.js.map +1 -0
  476. package/dist/esm/elements/form/option/option.js +26 -0
  477. package/dist/esm/elements/form/option/option.js.map +1 -0
  478. package/dist/esm/elements/form/output/output.js +27 -0
  479. package/dist/esm/elements/form/output/output.js.map +1 -0
  480. package/dist/esm/elements/form/progress/progress.js +27 -0
  481. package/dist/esm/elements/form/progress/progress.js.map +1 -0
  482. package/dist/esm/elements/form/select/select.js +29 -0
  483. package/dist/esm/elements/form/select/select.js.map +1 -0
  484. package/dist/esm/elements/form/textarea/textarea.js +31 -0
  485. package/dist/esm/elements/form/textarea/textarea.js.map +1 -0
  486. package/dist/esm/elements/heading/h1/h1.js +26 -0
  487. package/dist/esm/elements/heading/h1/h1.js.map +1 -0
  488. package/dist/esm/elements/heading/h2/h2.js +26 -0
  489. package/dist/esm/elements/heading/h2/h2.js.map +1 -0
  490. package/dist/esm/elements/heading/h3/h3.js +26 -0
  491. package/dist/esm/elements/heading/h3/h3.js.map +1 -0
  492. package/dist/esm/elements/heading/h4/h4.js +26 -0
  493. package/dist/esm/elements/heading/h4/h4.js.map +1 -0
  494. package/dist/esm/elements/heading/h5/h5.js +26 -0
  495. package/dist/esm/elements/heading/h5/h5.js.map +1 -0
  496. package/dist/esm/elements/heading/h6/h6.js +26 -0
  497. package/dist/esm/elements/heading/h6/h6.js.map +1 -0
  498. package/dist/esm/elements/heading/heading.js +20 -0
  499. package/dist/esm/elements/heading/heading.js.map +1 -0
  500. package/dist/esm/elements/inline/a/a.js +28 -0
  501. package/dist/esm/elements/inline/a/a.js.map +1 -0
  502. package/dist/esm/elements/inline/abbr/abbr.js +26 -0
  503. package/dist/esm/elements/inline/abbr/abbr.js.map +1 -0
  504. package/dist/esm/elements/inline/b/b.js +26 -0
  505. package/dist/esm/elements/inline/b/b.js.map +1 -0
  506. package/dist/esm/elements/inline/cite/cite.js +26 -0
  507. package/dist/esm/elements/inline/cite/cite.js.map +1 -0
  508. package/dist/esm/elements/inline/code/code.js +26 -0
  509. package/dist/esm/elements/inline/code/code.js.map +1 -0
  510. package/dist/esm/elements/inline/data/data.js +26 -0
  511. package/dist/esm/elements/inline/data/data.js.map +1 -0
  512. package/dist/esm/elements/inline/dfn/dfn.js +26 -0
  513. package/dist/esm/elements/inline/dfn/dfn.js.map +1 -0
  514. package/dist/esm/elements/inline/em/em.js +26 -0
  515. package/dist/esm/elements/inline/em/em.js.map +1 -0
  516. package/dist/esm/elements/inline/i/i.js +26 -0
  517. package/dist/esm/elements/inline/i/i.js.map +1 -0
  518. package/dist/esm/elements/inline/inline.js +27 -0
  519. package/dist/esm/elements/inline/kbd/kbd.js +26 -0
  520. package/dist/esm/elements/inline/kbd/kbd.js.map +1 -0
  521. package/dist/esm/elements/inline/mark/mark.js +26 -0
  522. package/dist/esm/elements/inline/mark/mark.js.map +1 -0
  523. package/dist/esm/elements/inline/q/q.js +33 -0
  524. package/dist/esm/elements/inline/q/q.js.map +1 -0
  525. package/dist/esm/elements/inline/rb/rb.js +26 -0
  526. package/dist/esm/elements/inline/rb/rb.js.map +1 -0
  527. package/dist/esm/elements/inline/rt/rt.js +26 -0
  528. package/dist/esm/elements/inline/rt/rt.js.map +1 -0
  529. package/dist/esm/elements/inline/rtc/rtc.js +27 -0
  530. package/dist/esm/elements/inline/rtc/rtc.js.map +1 -0
  531. package/dist/esm/elements/inline/ruby/ruby.js +26 -0
  532. package/dist/esm/elements/inline/ruby/ruby.js.map +1 -0
  533. package/dist/esm/elements/inline/s/s.js +26 -0
  534. package/dist/esm/elements/inline/s/s.js.map +1 -0
  535. package/dist/esm/elements/inline/samp/samp.js +26 -0
  536. package/dist/esm/elements/inline/samp/samp.js.map +1 -0
  537. package/dist/esm/elements/inline/small/small.js +26 -0
  538. package/dist/esm/elements/inline/small/small.js.map +1 -0
  539. package/dist/esm/elements/inline/strong/strong.js +26 -0
  540. package/dist/esm/elements/inline/strong/strong.js.map +1 -0
  541. package/dist/esm/elements/inline/sub/sub.js +26 -0
  542. package/dist/esm/elements/inline/sub/sub.js.map +1 -0
  543. package/dist/esm/elements/inline/sup/sup.js +26 -0
  544. package/dist/esm/elements/inline/sup/sup.js.map +1 -0
  545. package/dist/esm/elements/inline/time/time.js +26 -0
  546. package/dist/esm/elements/inline/time/time.js.map +1 -0
  547. package/dist/esm/elements/inline/u/u.js +26 -0
  548. package/dist/esm/elements/inline/u/u.js.map +1 -0
  549. package/dist/esm/elements/inline/var/var.js +26 -0
  550. package/dist/esm/elements/inline/var/var.js.map +1 -0
  551. package/dist/esm/elements/interactive/details/details.js +29 -0
  552. package/dist/esm/elements/interactive/details/details.js.map +1 -0
  553. package/dist/esm/elements/interactive/dialog/dialog.js +26 -0
  554. package/dist/esm/elements/interactive/dialog/dialog.js.map +1 -0
  555. package/dist/esm/elements/interactive/interactive.js +14 -0
  556. package/dist/esm/elements/interactive/interactive.js.map +1 -0
  557. package/dist/esm/elements/interactive/summary/summary.js +26 -0
  558. package/dist/esm/elements/interactive/summary/summary.js.map +1 -0
  559. package/dist/esm/elements/layout/article/article.js +26 -0
  560. package/dist/esm/elements/layout/article/article.js.map +1 -0
  561. package/dist/esm/elements/layout/aside/aside.js +26 -0
  562. package/dist/esm/elements/layout/aside/aside.js.map +1 -0
  563. package/dist/esm/elements/layout/footer/footer.js +26 -0
  564. package/dist/esm/elements/layout/footer/footer.js.map +1 -0
  565. package/dist/esm/elements/layout/header/header.js +26 -0
  566. package/dist/esm/elements/layout/header/header.js.map +1 -0
  567. package/dist/esm/elements/layout/layout.js +22 -0
  568. package/dist/esm/elements/layout/layout.js.map +1 -0
  569. package/dist/esm/elements/layout/main/main.js +26 -0
  570. package/dist/esm/elements/layout/main/main.js.map +1 -0
  571. package/dist/esm/elements/layout/nav/nav.js +26 -0
  572. package/dist/esm/elements/layout/nav/nav.js.map +1 -0
  573. package/dist/esm/elements/layout/section/section.js +26 -0
  574. package/dist/esm/elements/layout/section/section.js.map +1 -0
  575. package/dist/esm/elements/list/dd/dd.js +26 -0
  576. package/dist/esm/elements/list/dd/dd.js.map +1 -0
  577. package/dist/esm/elements/list/dl/dl.js +26 -0
  578. package/dist/esm/elements/list/dl/dl.js.map +1 -0
  579. package/dist/esm/elements/list/dt/dt.js +26 -0
  580. package/dist/esm/elements/list/dt/dt.js.map +1 -0
  581. package/dist/esm/elements/list/li/li.js +27 -0
  582. package/dist/esm/elements/list/li/li.js.map +1 -0
  583. package/dist/esm/elements/list/list.js +20 -0
  584. package/dist/esm/elements/list/list.js.map +1 -0
  585. package/dist/esm/elements/list/ol/ol.js +27 -0
  586. package/dist/esm/elements/list/ol/ol.js.map +1 -0
  587. package/dist/esm/elements/list/ul/ul.js +26 -0
  588. package/dist/esm/elements/list/ul/ul.js.map +1 -0
  589. package/dist/esm/elements/media/audio/audio.js +27 -0
  590. package/dist/esm/elements/media/audio/audio.js.map +1 -0
  591. package/dist/esm/elements/media/canvas/canvas.js +21 -0
  592. package/dist/esm/elements/media/canvas/canvas.js.map +1 -0
  593. package/dist/esm/elements/media/embed/embed.js +44 -0
  594. package/dist/esm/elements/media/embed/embed.js.map +1 -0
  595. package/dist/esm/elements/media/iframe/iframe.js +27 -0
  596. package/dist/esm/elements/media/iframe/iframe.js.map +1 -0
  597. package/dist/esm/elements/media/img/img.js +25 -0
  598. package/dist/esm/elements/media/img/img.js.map +1 -0
  599. package/dist/esm/elements/media/math/math.js +23 -0
  600. package/dist/esm/elements/media/math/math.js.map +1 -0
  601. package/dist/esm/elements/media/media.js +26 -0
  602. package/dist/esm/elements/media/media.js.map +1 -0
  603. package/dist/esm/elements/media/object/object.js +37 -0
  604. package/dist/esm/elements/media/object/object.js.map +1 -0
  605. package/dist/esm/elements/media/svg/svg.js +27 -0
  606. package/dist/esm/elements/media/svg/svg.js.map +1 -0
  607. package/dist/esm/elements/media/video/video.js +27 -0
  608. package/dist/esm/elements/media/video/video.js.map +1 -0
  609. package/dist/esm/elements/responsive/area/area.js +20 -0
  610. package/dist/esm/elements/responsive/area/area.js.map +1 -0
  611. package/dist/esm/elements/responsive/map/map.js +35 -0
  612. package/dist/esm/elements/responsive/map/map.js.map +1 -0
  613. package/dist/esm/elements/responsive/picture/picture.js +26 -0
  614. package/dist/esm/elements/responsive/picture/picture.js.map +1 -0
  615. package/dist/esm/elements/responsive/responsive.js +18 -0
  616. package/dist/esm/elements/responsive/responsive.js.map +1 -0
  617. package/dist/esm/elements/responsive/source/source.js +29 -0
  618. package/dist/esm/elements/responsive/source/source.js.map +1 -0
  619. package/dist/esm/elements/responsive/track/track.js +27 -0
  620. package/dist/esm/elements/responsive/track/track.js.map +1 -0
  621. package/dist/esm/elements/table/caption/caption.js +26 -0
  622. package/dist/esm/elements/table/caption/caption.js.map +1 -0
  623. package/dist/esm/elements/table/col/col.js +30 -0
  624. package/dist/esm/elements/table/col/col.js.map +1 -0
  625. package/dist/esm/elements/table/colgroup/colgroup.js +33 -0
  626. package/dist/esm/elements/table/colgroup/colgroup.js.map +1 -0
  627. package/dist/esm/elements/table/table/table.js +26 -0
  628. package/dist/esm/elements/table/table/table.js.map +1 -0
  629. package/dist/esm/elements/table/table.js +28 -0
  630. package/dist/esm/elements/table/table.js.map +1 -0
  631. package/dist/esm/elements/table/tbody/tbody.js +26 -0
  632. package/dist/esm/elements/table/tbody/tbody.js.map +1 -0
  633. package/dist/esm/elements/table/td/td.js +39 -0
  634. package/dist/esm/elements/table/td/td.js.map +1 -0
  635. package/dist/esm/elements/table/tfoot/tfoot.js +26 -0
  636. package/dist/esm/elements/table/tfoot/tfoot.js.map +1 -0
  637. package/dist/esm/elements/table/th/th.js +33 -0
  638. package/dist/esm/elements/table/th/th.js.map +1 -0
  639. package/dist/esm/elements/table/thead/thead.js +26 -0
  640. package/dist/esm/elements/table/thead/thead.js.map +1 -0
  641. package/dist/esm/elements/table/tr/tr.js +26 -0
  642. package/dist/esm/elements/table/tr/tr.js.map +1 -0
  643. package/dist/esm/elements/text/address/address.js +26 -0
  644. package/dist/esm/elements/text/address/address.js.map +1 -0
  645. package/dist/esm/elements/text/blockquote/blockquote.js +29 -0
  646. package/dist/esm/elements/text/blockquote/blockquote.js.map +1 -0
  647. package/dist/esm/elements/text/hr/hr.js +26 -0
  648. package/dist/esm/elements/text/hr/hr.js.map +1 -0
  649. package/dist/esm/elements/text/paragraph/paragraph.js +26 -0
  650. package/dist/esm/elements/text/paragraph/paragraph.js.map +1 -0
  651. package/dist/esm/elements/text/pre/pre.js +26 -0
  652. package/dist/esm/elements/text/pre/pre.js.map +1 -0
  653. package/dist/esm/elements/text/text.js +18 -0
  654. package/dist/esm/elements/text/text.js.map +1 -0
  655. package/dist/esm/elements.js +34 -0
  656. package/dist/esm/elements.js.map +1 -0
  657. package/dist/esm/index.js +73 -0
  658. package/dist/esm/index.js.map +1 -0
  659. package/dist/types/elements/break/br/index.d.ts +111 -0
  660. package/dist/types/elements/break/br/index.d.ts.map +1 -0
  661. package/dist/types/elements/break/index.d.ts +32 -0
  662. package/dist/types/elements/break/index.d.ts.map +1 -0
  663. package/dist/types/elements/break/wbr/index.d.ts +112 -0
  664. package/dist/types/elements/break/wbr/index.d.ts.map +1 -0
  665. package/dist/types/elements/container/div/index.d.ts +123 -0
  666. package/dist/types/elements/container/div/index.d.ts.map +1 -0
  667. package/dist/types/elements/container/index.d.ts +32 -0
  668. package/dist/types/elements/container/index.d.ts.map +1 -0
  669. package/dist/types/elements/container/span/index.d.ts +100 -0
  670. package/dist/types/elements/container/span/index.d.ts.map +1 -0
  671. package/dist/types/elements/figure/figcaption/index.d.ts +115 -0
  672. package/dist/types/elements/figure/figcaption/index.d.ts.map +1 -0
  673. package/dist/types/elements/figure/figure/index.d.ts +124 -0
  674. package/dist/types/elements/figure/figure/index.d.ts.map +1 -0
  675. package/dist/types/elements/figure/index.d.ts +38 -0
  676. package/dist/types/elements/figure/index.d.ts.map +1 -0
  677. package/dist/types/elements/form/button/index.d.ts +216 -0
  678. package/dist/types/elements/form/button/index.d.ts.map +1 -0
  679. package/dist/types/elements/form/datalist/index.d.ts +140 -0
  680. package/dist/types/elements/form/datalist/index.d.ts.map +1 -0
  681. package/dist/types/elements/form/fieldset/index.d.ts +147 -0
  682. package/dist/types/elements/form/fieldset/index.d.ts.map +1 -0
  683. package/dist/types/elements/form/form/index.d.ts +210 -0
  684. package/dist/types/elements/form/form/index.d.ts.map +1 -0
  685. package/dist/types/elements/form/index.d.ts +140 -0
  686. package/dist/types/elements/form/index.d.ts.map +1 -0
  687. package/dist/types/elements/form/input/index.d.ts +313 -0
  688. package/dist/types/elements/form/input/index.d.ts.map +1 -0
  689. package/dist/types/elements/form/label/index.d.ts +144 -0
  690. package/dist/types/elements/form/label/index.d.ts.map +1 -0
  691. package/dist/types/elements/form/legend/index.d.ts +126 -0
  692. package/dist/types/elements/form/legend/index.d.ts.map +1 -0
  693. package/dist/types/elements/form/meter/index.d.ts +152 -0
  694. package/dist/types/elements/form/meter/index.d.ts.map +1 -0
  695. package/dist/types/elements/form/optgroup/index.d.ts +127 -0
  696. package/dist/types/elements/form/optgroup/index.d.ts.map +1 -0
  697. package/dist/types/elements/form/option/index.d.ts +160 -0
  698. package/dist/types/elements/form/option/index.d.ts.map +1 -0
  699. package/dist/types/elements/form/output/index.d.ts +146 -0
  700. package/dist/types/elements/form/output/index.d.ts.map +1 -0
  701. package/dist/types/elements/form/progress/index.d.ts +140 -0
  702. package/dist/types/elements/form/progress/index.d.ts.map +1 -0
  703. package/dist/types/elements/form/select/index.d.ts +158 -0
  704. package/dist/types/elements/form/select/index.d.ts.map +1 -0
  705. package/dist/types/elements/form/textarea/index.d.ts +228 -0
  706. package/dist/types/elements/form/textarea/index.d.ts.map +1 -0
  707. package/dist/types/elements/heading/h1/index.d.ts +130 -0
  708. package/dist/types/elements/heading/h1/index.d.ts.map +1 -0
  709. package/dist/types/elements/heading/h2/index.d.ts +128 -0
  710. package/dist/types/elements/heading/h2/index.d.ts.map +1 -0
  711. package/dist/types/elements/heading/h3/index.d.ts +126 -0
  712. package/dist/types/elements/heading/h3/index.d.ts.map +1 -0
  713. package/dist/types/elements/heading/h4/index.d.ts +113 -0
  714. package/dist/types/elements/heading/h4/index.d.ts.map +1 -0
  715. package/dist/types/elements/heading/h5/index.d.ts +126 -0
  716. package/dist/types/elements/heading/h5/index.d.ts.map +1 -0
  717. package/dist/types/elements/heading/h6/index.d.ts +119 -0
  718. package/dist/types/elements/heading/h6/index.d.ts.map +1 -0
  719. package/dist/types/elements/heading/index.d.ts +68 -0
  720. package/dist/types/elements/heading/index.d.ts.map +1 -0
  721. package/dist/types/elements/index.d.ts +106 -0
  722. package/dist/types/elements/index.d.ts.map +1 -0
  723. package/dist/types/elements/inline/a/index.d.ts +203 -0
  724. package/dist/types/elements/inline/a/index.d.ts.map +1 -0
  725. package/dist/types/elements/inline/abbr/index.d.ts +132 -0
  726. package/dist/types/elements/inline/abbr/index.d.ts.map +1 -0
  727. package/dist/types/elements/inline/b/index.d.ts +121 -0
  728. package/dist/types/elements/inline/b/index.d.ts.map +1 -0
  729. package/dist/types/elements/inline/cite/index.d.ts +125 -0
  730. package/dist/types/elements/inline/cite/index.d.ts.map +1 -0
  731. package/dist/types/elements/inline/code/index.d.ts +137 -0
  732. package/dist/types/elements/inline/code/index.d.ts.map +1 -0
  733. package/dist/types/elements/inline/data/index.d.ts +144 -0
  734. package/dist/types/elements/inline/data/index.d.ts.map +1 -0
  735. package/dist/types/elements/inline/dfn/index.d.ts +124 -0
  736. package/dist/types/elements/inline/dfn/index.d.ts.map +1 -0
  737. package/dist/types/elements/inline/em/index.d.ts +124 -0
  738. package/dist/types/elements/inline/em/index.d.ts.map +1 -0
  739. package/dist/types/elements/inline/i/index.d.ts +143 -0
  740. package/dist/types/elements/inline/i/index.d.ts.map +1 -0
  741. package/dist/types/elements/inline/index.d.ts +229 -0
  742. package/dist/types/elements/inline/index.d.ts.map +1 -0
  743. package/dist/types/elements/inline/kbd/index.d.ts +123 -0
  744. package/dist/types/elements/inline/kbd/index.d.ts.map +1 -0
  745. package/dist/types/elements/inline/mark/index.d.ts +125 -0
  746. package/dist/types/elements/inline/mark/index.d.ts.map +1 -0
  747. package/dist/types/elements/inline/q/index.d.ts +138 -0
  748. package/dist/types/elements/inline/q/index.d.ts.map +1 -0
  749. package/dist/types/elements/inline/rb/index.d.ts +143 -0
  750. package/dist/types/elements/inline/rb/index.d.ts.map +1 -0
  751. package/dist/types/elements/inline/rp/index.d.ts +123 -0
  752. package/dist/types/elements/inline/rp/index.d.ts.map +1 -0
  753. package/dist/types/elements/inline/rt/index.d.ts +124 -0
  754. package/dist/types/elements/inline/rt/index.d.ts.map +1 -0
  755. package/dist/types/elements/inline/rtc/index.d.ts +122 -0
  756. package/dist/types/elements/inline/rtc/index.d.ts.map +1 -0
  757. package/dist/types/elements/inline/ruby/index.d.ts +147 -0
  758. package/dist/types/elements/inline/ruby/index.d.ts.map +1 -0
  759. package/dist/types/elements/inline/s/index.d.ts +125 -0
  760. package/dist/types/elements/inline/s/index.d.ts.map +1 -0
  761. package/dist/types/elements/inline/samp/index.d.ts +122 -0
  762. package/dist/types/elements/inline/samp/index.d.ts.map +1 -0
  763. package/dist/types/elements/inline/small/index.d.ts +138 -0
  764. package/dist/types/elements/inline/small/index.d.ts.map +1 -0
  765. package/dist/types/elements/inline/strong/index.d.ts +126 -0
  766. package/dist/types/elements/inline/strong/index.d.ts.map +1 -0
  767. package/dist/types/elements/inline/sub/index.d.ts +130 -0
  768. package/dist/types/elements/inline/sub/index.d.ts.map +1 -0
  769. package/dist/types/elements/inline/sup/index.d.ts +125 -0
  770. package/dist/types/elements/inline/sup/index.d.ts.map +1 -0
  771. package/dist/types/elements/inline/time/index.d.ts +149 -0
  772. package/dist/types/elements/inline/time/index.d.ts.map +1 -0
  773. package/dist/types/elements/inline/u/index.d.ts +122 -0
  774. package/dist/types/elements/inline/u/index.d.ts.map +1 -0
  775. package/dist/types/elements/inline/var/index.d.ts +127 -0
  776. package/dist/types/elements/inline/var/index.d.ts.map +1 -0
  777. package/dist/types/elements/interactive/details/index.d.ts +134 -0
  778. package/dist/types/elements/interactive/details/index.d.ts.map +1 -0
  779. package/dist/types/elements/interactive/dialog/index.d.ts +162 -0
  780. package/dist/types/elements/interactive/dialog/index.d.ts.map +1 -0
  781. package/dist/types/elements/interactive/index.d.ts +48 -0
  782. package/dist/types/elements/interactive/index.d.ts.map +1 -0
  783. package/dist/types/elements/interactive/summary/index.d.ts +122 -0
  784. package/dist/types/elements/interactive/summary/index.d.ts.map +1 -0
  785. package/dist/types/elements/layout/article/index.d.ts +129 -0
  786. package/dist/types/elements/layout/article/index.d.ts.map +1 -0
  787. package/dist/types/elements/layout/aside/index.d.ts +122 -0
  788. package/dist/types/elements/layout/aside/index.d.ts.map +1 -0
  789. package/dist/types/elements/layout/footer/index.d.ts +122 -0
  790. package/dist/types/elements/layout/footer/index.d.ts.map +1 -0
  791. package/dist/types/elements/layout/header/index.d.ts +131 -0
  792. package/dist/types/elements/layout/header/index.d.ts.map +1 -0
  793. package/dist/types/elements/layout/index.d.ts +83 -0
  794. package/dist/types/elements/layout/index.d.ts.map +1 -0
  795. package/dist/types/elements/layout/main/index.d.ts +135 -0
  796. package/dist/types/elements/layout/main/index.d.ts.map +1 -0
  797. package/dist/types/elements/layout/nav/index.d.ts +136 -0
  798. package/dist/types/elements/layout/nav/index.d.ts.map +1 -0
  799. package/dist/types/elements/layout/section/index.d.ts +128 -0
  800. package/dist/types/elements/layout/section/index.d.ts.map +1 -0
  801. package/dist/types/elements/list/dd/index.d.ts +120 -0
  802. package/dist/types/elements/list/dd/index.d.ts.map +1 -0
  803. package/dist/types/elements/list/dl/index.d.ts +131 -0
  804. package/dist/types/elements/list/dl/index.d.ts.map +1 -0
  805. package/dist/types/elements/list/dt/index.d.ts +126 -0
  806. package/dist/types/elements/list/dt/index.d.ts.map +1 -0
  807. package/dist/types/elements/list/index.d.ts +69 -0
  808. package/dist/types/elements/list/index.d.ts.map +1 -0
  809. package/dist/types/elements/list/li/index.d.ts +155 -0
  810. package/dist/types/elements/list/li/index.d.ts.map +1 -0
  811. package/dist/types/elements/list/ol/index.d.ts +155 -0
  812. package/dist/types/elements/list/ol/index.d.ts.map +1 -0
  813. package/dist/types/elements/list/ul/index.d.ts +145 -0
  814. package/dist/types/elements/list/ul/index.d.ts.map +1 -0
  815. package/dist/types/elements/media/audio/index.d.ts +197 -0
  816. package/dist/types/elements/media/audio/index.d.ts.map +1 -0
  817. package/dist/types/elements/media/canvas/index.d.ts +146 -0
  818. package/dist/types/elements/media/canvas/index.d.ts.map +1 -0
  819. package/dist/types/elements/media/embed/index.d.ts +138 -0
  820. package/dist/types/elements/media/embed/index.d.ts.map +1 -0
  821. package/dist/types/elements/media/iframe/index.d.ts +222 -0
  822. package/dist/types/elements/media/iframe/index.d.ts.map +1 -0
  823. package/dist/types/elements/media/img/index.d.ts +83 -0
  824. package/dist/types/elements/media/img/index.d.ts.map +1 -0
  825. package/dist/types/elements/media/index.d.ts +89 -0
  826. package/dist/types/elements/media/index.d.ts.map +1 -0
  827. package/dist/types/elements/media/math/index.d.ts +132 -0
  828. package/dist/types/elements/media/math/index.d.ts.map +1 -0
  829. package/dist/types/elements/media/object/index.d.ts +183 -0
  830. package/dist/types/elements/media/object/index.d.ts.map +1 -0
  831. package/dist/types/elements/media/svg/index.d.ts +44 -0
  832. package/dist/types/elements/media/svg/index.d.ts.map +1 -0
  833. package/dist/types/elements/media/video/index.d.ts +225 -0
  834. package/dist/types/elements/media/video/index.d.ts.map +1 -0
  835. package/dist/types/elements/responsive/area/index.d.ts +158 -0
  836. package/dist/types/elements/responsive/area/index.d.ts.map +1 -0
  837. package/dist/types/elements/responsive/index.d.ts +67 -0
  838. package/dist/types/elements/responsive/index.d.ts.map +1 -0
  839. package/dist/types/elements/responsive/map/index.d.ts +138 -0
  840. package/dist/types/elements/responsive/map/index.d.ts.map +1 -0
  841. package/dist/types/elements/responsive/picture/index.d.ts +120 -0
  842. package/dist/types/elements/responsive/picture/index.d.ts.map +1 -0
  843. package/dist/types/elements/responsive/source/index.d.ts +175 -0
  844. package/dist/types/elements/responsive/source/index.d.ts.map +1 -0
  845. package/dist/types/elements/responsive/track/index.d.ts +183 -0
  846. package/dist/types/elements/responsive/track/index.d.ts.map +1 -0
  847. package/dist/types/elements/table/caption/index.d.ts +132 -0
  848. package/dist/types/elements/table/caption/index.d.ts.map +1 -0
  849. package/dist/types/elements/table/col/index.d.ts +132 -0
  850. package/dist/types/elements/table/col/index.d.ts.map +1 -0
  851. package/dist/types/elements/table/colgroup/index.d.ts +147 -0
  852. package/dist/types/elements/table/colgroup/index.d.ts.map +1 -0
  853. package/dist/types/elements/table/index.d.ts +102 -0
  854. package/dist/types/elements/table/index.d.ts.map +1 -0
  855. package/dist/types/elements/table/table/index.d.ts +143 -0
  856. package/dist/types/elements/table/table/index.d.ts.map +1 -0
  857. package/dist/types/elements/table/tbody/index.d.ts +134 -0
  858. package/dist/types/elements/table/tbody/index.d.ts.map +1 -0
  859. package/dist/types/elements/table/td/index.d.ts +146 -0
  860. package/dist/types/elements/table/td/index.d.ts.map +1 -0
  861. package/dist/types/elements/table/tfoot/index.d.ts +131 -0
  862. package/dist/types/elements/table/tfoot/index.d.ts.map +1 -0
  863. package/dist/types/elements/table/th/index.d.ts +187 -0
  864. package/dist/types/elements/table/th/index.d.ts.map +1 -0
  865. package/dist/types/elements/table/thead/index.d.ts +130 -0
  866. package/dist/types/elements/table/thead/index.d.ts.map +1 -0
  867. package/dist/types/elements/table/tr/index.d.ts +134 -0
  868. package/dist/types/elements/table/tr/index.d.ts.map +1 -0
  869. package/dist/types/elements/text/address/index.d.ts +133 -0
  870. package/dist/types/elements/text/address/index.d.ts.map +1 -0
  871. package/dist/types/elements/text/blockquote/index.d.ts +153 -0
  872. package/dist/types/elements/text/blockquote/index.d.ts.map +1 -0
  873. package/dist/types/elements/text/hr/index.d.ts +121 -0
  874. package/dist/types/elements/text/hr/index.d.ts.map +1 -0
  875. package/dist/types/elements/text/index.d.ts +57 -0
  876. package/dist/types/elements/text/index.d.ts.map +1 -0
  877. package/dist/types/elements/text/paragraph/index.d.ts +139 -0
  878. package/dist/types/elements/text/paragraph/index.d.ts.map +1 -0
  879. package/dist/types/elements/text/pre/index.d.ts +135 -0
  880. package/dist/types/elements/text/pre/index.d.ts.map +1 -0
  881. package/dist/types/index.d.ts +4 -0
  882. package/dist/types/index.d.ts.map +1 -0
  883. package/dist/types/ts/adapters/tailwind/v4/index.d.ts +3 -0
  884. package/dist/types/ts/adapters/tailwind/v4/index.d.ts.map +1 -0
  885. package/dist/types/ts/adapters/tailwind/v4/plugin.d.ts +11 -0
  886. package/dist/types/ts/adapters/tailwind/v4/plugin.d.ts.map +1 -0
  887. package/dist/types/ts/adapters/tailwind/v4/preset.d.ts +12 -0
  888. package/dist/types/ts/adapters/tailwind/v4/preset.d.ts.map +1 -0
  889. package/dist/types/ts/dom.d.ts +247 -0
  890. package/dist/types/ts/dom.d.ts.map +1 -0
  891. package/package.json +705 -0
  892. package/src/elements/break/br/br.scss +26 -0
  893. package/src/elements/break/br/index.ts +150 -0
  894. package/src/elements/break/index.ts +33 -0
  895. package/src/elements/break/wbr/index.ts +151 -0
  896. package/src/elements/break/wbr/wbr.scss +27 -0
  897. package/src/elements/container/div/div.scss +27 -0
  898. package/src/elements/container/div/index.ts +163 -0
  899. package/src/elements/container/index.ts +33 -0
  900. package/src/elements/container/span/index.ts +137 -0
  901. package/src/elements/container/span/span.scss +28 -0
  902. package/src/elements/figure/figcaption/figcaption.scss +53 -0
  903. package/src/elements/figure/figcaption/index.ts +157 -0
  904. package/src/elements/figure/figure/figure.scss +53 -0
  905. package/src/elements/figure/figure/index.ts +164 -0
  906. package/src/elements/figure/index.ts +39 -0
  907. package/src/elements/form/button/button.scss +39 -0
  908. package/src/elements/form/button/index.ts +335 -0
  909. package/src/elements/form/datalist/datalist.scss +40 -0
  910. package/src/elements/form/datalist/index.ts +183 -0
  911. package/src/elements/form/fieldset/fieldset.scss +46 -0
  912. package/src/elements/form/fieldset/index.ts +211 -0
  913. package/src/elements/form/form/form.scss +42 -0
  914. package/src/elements/form/form/index.ts +308 -0
  915. package/src/elements/form/index.ts +153 -0
  916. package/src/elements/form/input/index.ts +528 -0
  917. package/src/elements/form/input/input.scss +39 -0
  918. package/src/elements/form/label/index.ts +194 -0
  919. package/src/elements/form/label/label.scss +41 -0
  920. package/src/elements/form/legend/index.ts +166 -0
  921. package/src/elements/form/legend/legend.scss +40 -0
  922. package/src/elements/form/meter/index.ts +231 -0
  923. package/src/elements/form/meter/meter.scss +36 -0
  924. package/src/elements/form/optgroup/index.ts +187 -0
  925. package/src/elements/form/optgroup/optgroup.scss +37 -0
  926. package/src/elements/form/option/index.ts +218 -0
  927. package/src/elements/form/option/option.scss +38 -0
  928. package/src/elements/form/output/index.ts +205 -0
  929. package/src/elements/form/output/output.scss +42 -0
  930. package/src/elements/form/progress/index.ts +215 -0
  931. package/src/elements/form/progress/progress.scss +38 -0
  932. package/src/elements/form/select/index.ts +250 -0
  933. package/src/elements/form/select/select.scss +38 -0
  934. package/src/elements/form/textarea/index.ts +351 -0
  935. package/src/elements/form/textarea/textarea.scss +39 -0
  936. package/src/elements/heading/h1/h1.scss +59 -0
  937. package/src/elements/heading/h1/index.ts +170 -0
  938. package/src/elements/heading/h2/h2.scss +53 -0
  939. package/src/elements/heading/h2/index.ts +168 -0
  940. package/src/elements/heading/h3/h3.scss +54 -0
  941. package/src/elements/heading/h3/index.ts +166 -0
  942. package/src/elements/heading/h4/h4.scss +48 -0
  943. package/src/elements/heading/h4/index.ts +150 -0
  944. package/src/elements/heading/h5/h5.scss +50 -0
  945. package/src/elements/heading/h5/index.ts +166 -0
  946. package/src/elements/heading/h6/h6.scss +48 -0
  947. package/src/elements/heading/h6/index.ts +158 -0
  948. package/src/elements/heading/index.ts +73 -0
  949. package/src/elements/index.ts +118 -0
  950. package/src/elements/inline/a/a.scss +55 -0
  951. package/src/elements/inline/a/index.ts +291 -0
  952. package/src/elements/inline/abbr/abbr.scss +54 -0
  953. package/src/elements/inline/abbr/index.ts +172 -0
  954. package/src/elements/inline/b/b.scss +38 -0
  955. package/src/elements/inline/b/index.ts +161 -0
  956. package/src/elements/inline/cite/cite.scss +36 -0
  957. package/src/elements/inline/cite/index.ts +165 -0
  958. package/src/elements/inline/code/code.scss +45 -0
  959. package/src/elements/inline/code/index.ts +176 -0
  960. package/src/elements/inline/data/data.scss +36 -0
  961. package/src/elements/inline/data/index.ts +208 -0
  962. package/src/elements/inline/dfn/dfn.scss +36 -0
  963. package/src/elements/inline/dfn/index.ts +164 -0
  964. package/src/elements/inline/em/em.scss +35 -0
  965. package/src/elements/inline/em/index.ts +164 -0
  966. package/src/elements/inline/i/i.scss +38 -0
  967. package/src/elements/inline/i/index.ts +182 -0
  968. package/src/elements/inline/index.ts +254 -0
  969. package/src/elements/inline/kbd/index.ts +163 -0
  970. package/src/elements/inline/kbd/kbd.scss +44 -0
  971. package/src/elements/inline/mark/index.ts +165 -0
  972. package/src/elements/inline/mark/mark.scss +45 -0
  973. package/src/elements/inline/q/index.ts +206 -0
  974. package/src/elements/inline/q/q.scss +44 -0
  975. package/src/elements/inline/rb/index.ts +186 -0
  976. package/src/elements/inline/rb/rb.scss +35 -0
  977. package/src/elements/inline/rp/index.ts +163 -0
  978. package/src/elements/inline/rp/rp.scss +41 -0
  979. package/src/elements/inline/rt/index.ts +164 -0
  980. package/src/elements/inline/rt/rt.scss +36 -0
  981. package/src/elements/inline/rtc/index.ts +168 -0
  982. package/src/elements/inline/rtc/rtc.scss +40 -0
  983. package/src/elements/inline/ruby/index.ts +186 -0
  984. package/src/elements/inline/ruby/ruby.scss +39 -0
  985. package/src/elements/inline/s/index.ts +165 -0
  986. package/src/elements/inline/s/s.scss +37 -0
  987. package/src/elements/inline/samp/index.ts +162 -0
  988. package/src/elements/inline/samp/samp.scss +43 -0
  989. package/src/elements/inline/small/index.ts +177 -0
  990. package/src/elements/inline/small/small.scss +35 -0
  991. package/src/elements/inline/strong/index.ts +166 -0
  992. package/src/elements/inline/strong/strong.scss +35 -0
  993. package/src/elements/inline/sub/index.ts +170 -0
  994. package/src/elements/inline/sub/sub.scss +44 -0
  995. package/src/elements/inline/sup/index.ts +165 -0
  996. package/src/elements/inline/sup/sup.scss +43 -0
  997. package/src/elements/inline/time/index.ts +206 -0
  998. package/src/elements/inline/time/time.scss +38 -0
  999. package/src/elements/inline/u/index.ts +162 -0
  1000. package/src/elements/inline/u/u.scss +42 -0
  1001. package/src/elements/inline/var/index.ts +167 -0
  1002. package/src/elements/inline/var/var.scss +44 -0
  1003. package/src/elements/interactive/details/details.scss +42 -0
  1004. package/src/elements/interactive/details/index.ts +198 -0
  1005. package/src/elements/interactive/dialog/dialog.scss +55 -0
  1006. package/src/elements/interactive/dialog/index.ts +219 -0
  1007. package/src/elements/interactive/index.ts +50 -0
  1008. package/src/elements/interactive/summary/index.ts +161 -0
  1009. package/src/elements/interactive/summary/summary.scss +48 -0
  1010. package/src/elements/layout/article/article.scss +42 -0
  1011. package/src/elements/layout/article/index.ts +169 -0
  1012. package/src/elements/layout/aside/aside.scss +42 -0
  1013. package/src/elements/layout/aside/index.ts +161 -0
  1014. package/src/elements/layout/footer/footer.scss +42 -0
  1015. package/src/elements/layout/footer/index.ts +161 -0
  1016. package/src/elements/layout/header/header.scss +42 -0
  1017. package/src/elements/layout/header/index.ts +171 -0
  1018. package/src/elements/layout/index.ts +89 -0
  1019. package/src/elements/layout/main/index.ts +175 -0
  1020. package/src/elements/layout/main/main.scss +43 -0
  1021. package/src/elements/layout/nav/index.ts +176 -0
  1022. package/src/elements/layout/nav/nav.scss +42 -0
  1023. package/src/elements/layout/section/index.ts +168 -0
  1024. package/src/elements/layout/section/section.scss +42 -0
  1025. package/src/elements/list/dd/dd.scss +49 -0
  1026. package/src/elements/list/dd/index.ts +159 -0
  1027. package/src/elements/list/dl/dl.scss +39 -0
  1028. package/src/elements/list/dl/index.ts +171 -0
  1029. package/src/elements/list/dt/dt.scss +51 -0
  1030. package/src/elements/list/dt/index.ts +166 -0
  1031. package/src/elements/list/index.ts +74 -0
  1032. package/src/elements/list/li/index.ts +213 -0
  1033. package/src/elements/list/li/li.scss +39 -0
  1034. package/src/elements/list/ol/index.ts +205 -0
  1035. package/src/elements/list/ol/ol.scss +39 -0
  1036. package/src/elements/list/ul/index.ts +195 -0
  1037. package/src/elements/list/ul/ul.scss +42 -0
  1038. package/src/elements/media/audio/audio.scss +43 -0
  1039. package/src/elements/media/audio/index.ts +281 -0
  1040. package/src/elements/media/canvas/canvas.scss +46 -0
  1041. package/src/elements/media/canvas/index.ts +194 -0
  1042. package/src/elements/media/embed/embed.scss +37 -0
  1043. package/src/elements/media/embed/index.ts +246 -0
  1044. package/src/elements/media/iframe/iframe.scss +39 -0
  1045. package/src/elements/media/iframe/index.ts +331 -0
  1046. package/src/elements/media/img/img.scss +47 -0
  1047. package/src/elements/media/img/index.ts +146 -0
  1048. package/src/elements/media/index.ts +97 -0
  1049. package/src/elements/media/math/index.ts +200 -0
  1050. package/src/elements/media/math/math.scss +46 -0
  1051. package/src/elements/media/object/index.ts +282 -0
  1052. package/src/elements/media/object/object.scss +42 -0
  1053. package/src/elements/media/svg/index.ts +122 -0
  1054. package/src/elements/media/svg/svg.scss +44 -0
  1055. package/src/elements/media/video/index.ts +376 -0
  1056. package/src/elements/media/video/video.scss +44 -0
  1057. package/src/elements/responsive/area/area.scss +29 -0
  1058. package/src/elements/responsive/area/index.ts +244 -0
  1059. package/src/elements/responsive/index.ts +71 -0
  1060. package/src/elements/responsive/map/index.ts +231 -0
  1061. package/src/elements/responsive/map/map.scss +38 -0
  1062. package/src/elements/responsive/picture/index.ts +159 -0
  1063. package/src/elements/responsive/picture/picture.scss +32 -0
  1064. package/src/elements/responsive/source/index.ts +247 -0
  1065. package/src/elements/responsive/source/source.scss +28 -0
  1066. package/src/elements/responsive/track/index.ts +254 -0
  1067. package/src/elements/responsive/track/track.scss +28 -0
  1068. package/src/elements/table/caption/caption.scss +54 -0
  1069. package/src/elements/table/caption/index.ts +172 -0
  1070. package/src/elements/table/col/col.scss +32 -0
  1071. package/src/elements/table/col/index.ts +189 -0
  1072. package/src/elements/table/colgroup/colgroup.scss +34 -0
  1073. package/src/elements/table/colgroup/index.ts +224 -0
  1074. package/src/elements/table/index.ts +111 -0
  1075. package/src/elements/table/table/index.ts +183 -0
  1076. package/src/elements/table/table/table.scss +56 -0
  1077. package/src/elements/table/tbody/index.ts +174 -0
  1078. package/src/elements/table/tbody/tbody.scss +32 -0
  1079. package/src/elements/table/td/index.ts +220 -0
  1080. package/src/elements/table/td/td.scss +48 -0
  1081. package/src/elements/table/tfoot/index.ts +171 -0
  1082. package/src/elements/table/tfoot/tfoot.scss +30 -0
  1083. package/src/elements/table/th/index.ts +277 -0
  1084. package/src/elements/table/th/th.scss +48 -0
  1085. package/src/elements/table/thead/index.ts +170 -0
  1086. package/src/elements/table/thead/thead.scss +32 -0
  1087. package/src/elements/table/tr/index.ts +174 -0
  1088. package/src/elements/table/tr/tr.scss +30 -0
  1089. package/src/elements/text/address/address.scss +61 -0
  1090. package/src/elements/text/address/index.ts +173 -0
  1091. package/src/elements/text/blockquote/blockquote.scss +50 -0
  1092. package/src/elements/text/blockquote/index.ts +203 -0
  1093. package/src/elements/text/hr/hr.scss +50 -0
  1094. package/src/elements/text/hr/index.ts +161 -0
  1095. package/src/elements/text/index.ts +61 -0
  1096. package/src/elements/text/paragraph/index.ts +179 -0
  1097. package/src/elements/text/paragraph/paragraph.scss +49 -0
  1098. package/src/elements/text/pre/index.ts +175 -0
  1099. package/src/elements/text/pre/pre.scss +59 -0
  1100. package/src/scss/_elements.scss +178 -0
  1101. package/src/scss/_font-face.scss +35 -0
  1102. package/src/scss/_reboot.scss +120 -0
  1103. package/src/scss/_root.scss +112 -0
  1104. package/src/scss/adapters/bootstrap/v5/index.scss +364 -0
  1105. package/src/scss/core.scss +53 -0
  1106. package/src/scss/functions/_colours.scss +340 -0
  1107. package/src/scss/functions/_fonts.scss +454 -0
  1108. package/src/scss/functions/_index.scss +78 -0
  1109. package/src/scss/functions/_options.scss +233 -0
  1110. package/src/scss/functions/_spacing.scss +405 -0
  1111. package/src/scss/functions/_theme.scss +355 -0
  1112. package/src/scss/functions/_typography.scss +403 -0
  1113. package/src/scss/main.scss +47 -0
  1114. package/src/scss/maps/_colours.scss +344 -0
  1115. package/src/scss/maps/_dark-theme.scss +47 -0
  1116. package/src/scss/maps/_fonts.scss +145 -0
  1117. package/src/scss/maps/_index.scss +96 -0
  1118. package/src/scss/maps/_options.scss +53 -0
  1119. package/src/scss/maps/_spacing.scss +63 -0
  1120. package/src/scss/maps/_theme.scss +206 -0
  1121. package/src/scss/maps/_typography.scss +127 -0
  1122. package/src/scss/mixins/_colours.scss +304 -0
  1123. package/src/scss/mixins/_fonts.scss +227 -0
  1124. package/src/scss/mixins/_index.scss +93 -0
  1125. package/src/scss/mixins/_options.scss +297 -0
  1126. package/src/scss/mixins/_spacing.scss +176 -0
  1127. package/src/scss/mixins/_theme.scss +273 -0
  1128. package/src/scss/mixins/_typography.scss +272 -0
  1129. package/src/scss/tokens/_colours.scss +707 -0
  1130. package/src/scss/tokens/_dark-theme.scss +50 -0
  1131. package/src/scss/tokens/_fonts.scss +81 -0
  1132. package/src/scss/tokens/_index.scss +100 -0
  1133. package/src/scss/tokens/_options.scss +77 -0
  1134. package/src/scss/tokens/_spacing.scss +43 -0
  1135. package/src/scss/tokens/_theme.scss +325 -0
  1136. package/src/scss/tokens/_typography.scss +218 -0
  1137. package/src/ts/adapters/tailwind/v4/index.ts +2 -0
  1138. package/src/ts/adapters/tailwind/v4/plugin.ts +47 -0
  1139. package/src/ts/adapters/tailwind/v4/preset.ts +75 -0
  1140. package/src/ts/dom.ts +378 -0
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({DIALOG_SELECTOR:()=>r,DIALOG_TAG:()=>n,createDialog:()=>a,enhanceDialogs:()=>o}),n=`dialog`,r=`dialog`;function i(e){if(!e)return;let{aria:t,open:n,closedBy:r,...i}=e,a={...i},o={...a.attrs??{}};if(n===!0&&(o.open=!0),(r===`any`||r===`closerequest`||r===`none`)&&(o.closedby=r),Object.keys(o).length>0&&(a.attrs=o),!t)return a;let s={};return typeof t.label==`string`&&(s.label=t.label),typeof t.labelledby==`string`&&(s.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(s.hidden=t.hidden),Object.keys(s).length>0?{...a,aria:s}:a}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.DIALOG_SELECTOR=r,exports.DIALOG_TAG=n,exports.createDialog=a,exports.enhanceDialogs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.cjs","names":[],"sources":["../../../../../src/elements/interactive/dialog/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Dialog element helpers.\n *\n * @remarks\n * The dialog element (`<dialog>`) represents a modal or non-modal dialog box\n * (e.g. a confirm prompt, inspector, or subwindow).\n *\n * Best-practice guidance:\n * - Prefer using the platform APIs:\n * - `dialog.showModal()` for modal dialogs\n * - `dialog.show()` for non-modal dialogs\n * - `dialog.close()` to close, optionally supplying a return value\n * - Provide an accessible name for the dialog content (e.g. heading + `aria-labelledby`\n * or `aria-label` when appropriate).\n * - Ensure the dialog contains an obvious close mechanism.\n * - Avoid relying solely on adding/removing `open`; prefer the element's methods\n * for correct focus and modal behavior.\n *\n * Attributes (element-specific):\n * - `open` (boolean): when present, the dialog is active and available for interaction.\n * - `closedBy` (enumerated): maps to the `closedby` content attribute (spec-defined).\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/dialog\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 dialog.\n *\n * @category Constants\n */\nexport const DIALOG_TAG = 'dialog' as const;\n\n/**\n * A CSS selector targeting dialog elements.\n *\n * @category Constants\n */\nexport const DIALOG_SELECTOR = 'dialog';\n\n/**\n * Values supported by the `closedby` content attribute.\n *\n * @remarks\n * This is a newer platform feature that specifies which user actions can close\n * the dialog automatically.\n *\n * - `any`: close requests or clicks outside close the dialog.\n * - `closerequest`: close requests close the dialog.\n * - `none`: no user actions automatically close the dialog.\n *\n * @category Types\n */\nexport type DialogClosedBy = 'any' | 'closerequest' | 'none';\n\n/**\n * Attribute bag for dialog creation/enhancement.\n *\n * @remarks\n * Dialog elements accept standard HTML global attributes plus a small set of\n * dialog-specific content 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 * @category Attributes\n */\nexport type DialogAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Whether the dialog is open (active).\n *\n * @remarks\n * Maps to the `open` boolean attribute.\n *\n * Prefer controlling visibility via the native methods (`showModal`, `show`,\n * `close`) when possible.\n */\n open?: boolean;\n\n /**\n * Control user actions that can close the dialog.\n *\n * @remarks\n * Maps to the `closedby` content attribute.\n */\n closedBy?: DialogClosedBy;\n};\n\n/**\n * Normalize {@link DialogAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The dialog attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DialogAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, open, closedBy, ...rest } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n const extra: NonNullable<GlobalAttrs['attrs']> = { ...(mapped.attrs ?? {}) };\n\n if (open === true) extra.open = true;\n\n if (closedBy === 'any' || closedBy === 'closerequest' || closedBy === 'none') {\n extra.closedby = closedBy;\n }\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 // Only attach `aria` if something was actually defined.\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n return hasMappedAria ? { ...mapped, aria: mappedAria } : mapped;\n}\n\n/**\n * Create a dialog element with optional text content and 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 dialog.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<dialog>` element.\n *\n * @example\n * ```ts\n * import { createDialog } from \"@lnpg/pkgn-sol/elements/interactive/dialog\";\n *\n * const d = createDialog(\"Hello\", { open: true });\n * ```\n *\n * @category DOM\n */\nexport function createDialog(text?: string, attrs?: DialogAttrs): ElementOf<typeof DIALOG_TAG> {\n return createElement(DIALOG_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance dialog 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 enhanceDialogs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for dialog.\n void root;\n}\n"],"mappings":"0MAoEa,EAAa,SAOb,EAAkB,SA+D/B,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,WAAU,GAAG,GAAS,EAEpC,EAAsB,CAAE,GAAG,EAAM,CAEjC,EAA2C,CAAE,GAAI,EAAO,OAAS,EAAE,CAAG,CAY5E,GAVI,IAAS,KAAM,EAAM,KAAO,KAE5B,IAAa,OAAS,IAAa,gBAAkB,IAAa,UACpE,EAAM,SAAW,GAGf,OAAO,KAAK,EAAM,CAAC,OAAS,IAC9B,EAAO,MAAQ,GAGb,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAGzC,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAQ,KAAM,EAAY,CAAG,EAyB3D,SAAgB,EAAa,EAAe,EAAmD,CAC7F,OAAO,EAAA,EAAc,EAAY,EAAc,EAAM,CAAE,EAAK,CAqB9D,SAAgB,EAAe,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../chunks/dom.cjs`),t=require(`./details/details.cjs`),n=require(`./dialog/dialog.cjs`),r=require(`./summary/summary.cjs`);var i=e.i({details:()=>t.t,dialog:()=>n.t,summary:()=>r.t});Object.defineProperty(exports,`details`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`dialog`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`summary`,{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
2
+ //# sourceMappingURL=interactive.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.cjs","names":[],"sources":["../../../../src/elements/interactive/index.ts"],"sourcesContent":["/**\n * Interactive element factories.\n *\n * Provides framework-agnostic factory functions for interactive HTML elements\n * that expose built-in browser behaviors such as disclosure widgets and modal\n * dialogs.\n *\n * These factories:\n * - Create semantic interactive structures using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Preserve correct accessibility semantics and relationships.\n * - Prevent unsafe attribute injection.\n *\n * The elements in this module provide native interactivity that browsers\n * understand without requiring JavaScript frameworks.\n *\n * @module elements/interactive\n * @since 0.1.0\n */\n\n/**\n * `<details>` element factory namespace.\n *\n * Represents a disclosure widget that users can open and close to reveal\n * additional information.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details\n */\nexport * as details from './details';\n\n/**\n * `<dialog>` element factory namespace.\n *\n * Represents a dialog box or interactive component such as a modal window,\n * alert, or confirmation interface.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog\n */\nexport * as dialog from './dialog';\n\n/**\n * `<summary>` element factory namespace.\n *\n * Represents the summary or visible heading for a `<details>` disclosure\n * widget. Clicking the summary toggles the details content.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary\n */\nexport * as summary from './summary';\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({SUMMARY_SELECTOR:()=>r,SUMMARY_TAG:()=>n,createSummary:()=>a,enhanceSummaries:()=>o}),n=`summary`,r=`summary`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.SUMMARY_SELECTOR=r,exports.SUMMARY_TAG=n,exports.createSummary=a,exports.enhanceSummaries=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=summary.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.cjs","names":[],"sources":["../../../../../src/elements/interactive/summary/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Summary element helpers.\n *\n * @remarks\n * The summary element (`<summary>`) provides the visible label for a parent\n * `<details>` disclosure widget. Activating (clicking / pressing Enter) on the\n * `<summary>` toggles the open state of the parent `<details>` element.\n *\n * Best-practice guidance:\n * - Use `<summary>` only as the first child of a `<details>` element.\n * - Use clear, concise text so the disclosure purpose is obvious.\n * - Prefer semantic content inside `<summary>`; avoid overly complex interactive\n * children inside the summary label.\n *\n * pkgn-sol notes:\n * - This module is framework-agnostic and has no side effects.\n * - Global attributes are applied via pkgn-sol's shared DOM helper, which blocks:\n * - inline event handler attributes (e.g. `onclick`)\n * - raw `style` attribute injection (use the `style` object instead)\n * - Text passed to factories is assigned via `textContent` (never `innerHTML`).\n *\n * References:\n * - MDN: `<summary>` element\n * - WHATWG HTML: `<details>` content model and summary semantics\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.\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 summary.\n *\n * @category Constants\n */\nexport const SUMMARY_TAG = 'summary' as const;\n\n/**\n * A CSS selector targeting summary elements.\n *\n * @category Constants\n */\nexport const SUMMARY_SELECTOR = 'summary';\n\n/**\n * Attribute bag for summary creation/enhancement.\n *\n * @remarks\n * `<summary>` supports 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 * @category Attributes\n */\nexport type SummaryAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link SummaryAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The summary attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SummaryAttrs): 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 summary 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 summary.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<summary>` element.\n *\n * @example\n * ```ts\n * import { createSummary } from \"@lnpg/pkgn-sol/elements/interactive/summary\";\n *\n * const s = createSummary(\"More details\");\n * ```\n *\n * @category DOM\n */\nexport function createSummary(text?: string, attrs?: SummaryAttrs): ElementOf<typeof SUMMARY_TAG> {\n return createElement(SUMMARY_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance summary 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 * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceSummaries(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for summary.\n void root;\n}\n"],"mappings":"+MAgEa,EAAc,UAOd,EAAmB,UA4BhC,SAAS,EAAc,EAA+C,CACpE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CAQvD,OANI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EAyBrD,SAAgB,EAAc,EAAe,EAAqD,CAChG,OAAO,EAAA,EAAc,EAAa,EAAc,EAAM,CAAE,EAAK,CAiB/D,SAAgB,EAAiB,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({ARTICLE_SELECTOR:()=>r,ARTICLE_TAG:()=>n,createArticle:()=>a,enhanceArticles:()=>o}),n=`article`,r=`article`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.ARTICLE_SELECTOR=r,exports.ARTICLE_TAG=n,exports.createArticle=a,exports.enhanceArticles=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=article.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article.cjs","names":[],"sources":["../../../../../src/elements/layout/article/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Article element helpers.\n *\n * @remarks\n * The article element (`<article>`) represents a self-contained composition in a\n * document, page, application, or site that is intended to be independently\n * distributable or reusable (e.g. syndication).\n *\n * Best-practice guidance:\n * - Use `<article>` for content that makes sense on its own (blog post, news item,\n * forum post, comment, product card, etc.).\n * - Prefer `<section>` for thematic grouping that is not independently distributable.\n * - Articles commonly include a heading (h1-h6) in their content, but this module\n * does not enforce structure at runtime.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create article sections 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 * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article\n * @see https://html.spec.whatwg.org/multipage/sections.html#the-article-element\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.\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 article.\n *\n * @category Constants\n */\nexport const ARTICLE_TAG = 'article' as const;\n\n/**\n * A CSS selector targeting article elements.\n *\n * @category Constants\n */\nexport const ARTICLE_SELECTOR = 'article';\n\n/**\n * Attribute bag for article creation/enhancement.\n *\n * @remarks\n * Article 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 * @category Attributes\n */\nexport type ArticleAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link ArticleAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The article attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: ArticleAttrs): 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 an article 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 article.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<article>` element.\n *\n * @example\n * ```ts\n * import { createArticle } from \"@lnpg/pkgn-sol/elements/layout/article\";\n *\n * document.body.appendChild(\n * createArticle(undefined, { className: \"post\", aria: { label: \"Blog post\" } })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createArticle(text?: string, attrs?: ArticleAttrs): ElementOf<typeof ARTICLE_TAG> {\n return createElement(ARTICLE_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance article 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 enhanceArticles(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for article.\n void root;\n}\n"],"mappings":"8MAiEa,EAAc,UAOd,EAAmB,UA4BhC,SAAS,EAAc,EAA+C,CACpE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,SAAgB,EAAc,EAAe,EAAqD,CAChG,OAAO,EAAA,EAAc,EAAa,EAAc,EAAM,CAAE,EAAK,CAqB/D,SAAgB,EAAgB,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({ASIDE_SELECTOR:()=>r,ASIDE_TAG:()=>n,createAside:()=>a,enhanceAsides:()=>o}),n=`aside`,r=`aside`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.ASIDE_SELECTOR=r,exports.ASIDE_TAG=n,exports.createAside=a,exports.enhanceAsides=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=aside.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aside.cjs","names":[],"sources":["../../../../../src/elements/layout/aside/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Aside element helpers.\n *\n * @remarks\n * The aside element (`<aside>`) represents content that is tangentially related\n * to the content around it, such as sidebars, callout boxes, pull quotes, or\n * related links.\n *\n * Best-practice guidance:\n * - Use `<aside>` for content related to the surrounding section, but not part of\n * the main narrative flow.\n * - Avoid using `<aside>` purely for visual layout. Use CSS for layout and choose\n * semantic elements for meaning.\n * - Prefer native semantics. Only add ARIA roles when needed.\n *\n * pkgn-sol notes:\n * - This module is framework-agnostic and has no side effects.\n * - Global attributes are applied via pkgn-sol's shared DOM helper, which blocks:\n * - inline event handler attributes (e.g. `onclick`)\n * - raw `style` attribute injection (use the `style` object instead)\n * - Text passed to factories is assigned via `textContent` (never `innerHTML`).\n *\n * References:\n * - MDN: `<aside>` element\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.\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 aside.\n *\n * @category Constants\n */\nexport const ASIDE_TAG = 'aside' as const;\n\n/**\n * A CSS selector targeting aside elements.\n *\n * @category Constants\n */\nexport const ASIDE_SELECTOR = 'aside';\n\n/**\n * Attribute bag for aside creation/enhancement.\n *\n * @remarks\n * Aside 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 * @category Attributes\n */\nexport type AsideAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link AsideAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The aside attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: AsideAttrs): 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 an aside 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 aside.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<aside>` element.\n *\n * @example\n * ```ts\n * import { createAside } from \"@lnpg/pkgn-sol/elements/layout/aside\";\n *\n * const a = createAside(\"Related links\", { className: \"sidebar\" });\n * ```\n *\n * @category DOM\n */\nexport function createAside(text?: string, attrs?: AsideAttrs): ElementOf<typeof ASIDE_TAG> {\n return createElement(ASIDE_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance aside 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 * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceAsides(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for aside.\n void root;\n}\n"],"mappings":"sMAgEa,EAAY,QAOZ,EAAiB,QA4B9B,SAAS,EAAc,EAA6C,CAClE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CAQvD,OANI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EAyBrD,SAAgB,EAAY,EAAe,EAAiD,CAC1F,OAAO,EAAA,EAAc,EAAW,EAAc,EAAM,CAAE,EAAK,CAiB7D,SAAgB,EAAc,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({FOOTER_SELECTOR:()=>r,FOOTER_TAG:()=>n,createFooter:()=>a,enhanceFooters:()=>o}),n=`footer`,r=`footer`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.FOOTER_SELECTOR=r,exports.FOOTER_TAG=n,exports.createFooter=a,exports.enhanceFooters=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=footer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.cjs","names":[],"sources":["../../../../../src/elements/layout/footer/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Footer element helpers.\n *\n * @remarks\n * The footer element (`<footer>`) represents a footer for its nearest ancestor\n * sectioning content or sectioning root. It can be used as a page footer or as\n * a footer within an `<article>`, `<section>`, etc.\n *\n * Best-practice guidance:\n * - Use `<footer>` for information about the section it belongs to (author info,\n * related links, legal text, etc.).\n * - Do not use `<footer>` purely for visual positioning. Layout is CSS; meaning\n * is HTML.\n * - Prefer native semantics. Only add ARIA roles when needed.\n *\n * pkgn-sol notes:\n * - This module is framework-agnostic and has no side effects.\n * - Global attributes are applied via pkgn-sol's shared DOM helper, which blocks:\n * - inline event handler attributes (e.g. `onclick`)\n * - raw `style` attribute injection (use the `style` object instead)\n * - Text passed to factories is assigned via `textContent` (never `innerHTML`).\n *\n * References:\n * - MDN: `<footer>` element\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.\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 footer.\n *\n * @category Constants\n */\nexport const FOOTER_TAG = 'footer' as const;\n\n/**\n * A CSS selector targeting footer elements.\n *\n * @category Constants\n */\nexport const FOOTER_SELECTOR = 'footer';\n\n/**\n * Attribute bag for footer creation/enhancement.\n *\n * @remarks\n * Footer 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 * @category Attributes\n */\nexport type FooterAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link FooterAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The footer attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: FooterAttrs): 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 footer 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 footer.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<footer>` element.\n *\n * @example\n * ```ts\n * import { createFooter } from \"@lnpg/pkgn-sol/elements/layout/footer\";\n *\n * const f = createFooter(\"© 2026\", { className: \"site-footer\" });\n * ```\n *\n * @category DOM\n */\nexport function createFooter(text?: string, attrs?: FooterAttrs): ElementOf<typeof FOOTER_TAG> {\n return createElement(FOOTER_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance footer 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 * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceFooters(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for footer.\n void root;\n}\n"],"mappings":"0MAgEa,EAAa,SAOb,EAAkB,SA4B/B,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CAQvD,OANI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EAyBrD,SAAgB,EAAa,EAAe,EAAmD,CAC7F,OAAO,EAAA,EAAc,EAAY,EAAc,EAAM,CAAE,EAAK,CAiB9D,SAAgB,EAAe,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({HEADER_SELECTOR:()=>r,HEADER_TAG:()=>n,createHeader:()=>a,enhanceHeaders:()=>o}),n=`header`,r=`header`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.HEADER_SELECTOR=r,exports.HEADER_TAG=n,exports.createHeader=a,exports.enhanceHeaders=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=header.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.cjs","names":[],"sources":["../../../../../src/elements/layout/header/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Header (`header`) element helpers.\n *\n * @remarks\n * The header element (`<header>`) represents introductory content for its nearest\n * ancestor sectioning root or sectioning content element. It commonly contains a\n * heading (`<h1>`-`<h6>`), branding, navigation aids, or other introductory UI.\n *\n * Best-practice guidance:\n * - Use `<header>` to group introductory content for a page or section.\n * - Prefer meaningful structure (headings, landmarks) over generic containers.\n * - Avoid using `<header>` purely for styling. Use CSS classes for styling and\n * keep semantics intentional.\n * - A top-level `<header>` (scoped to `<body>` and not inside sectioning content)\n * may be exposed as a landmark; nested headers typically are not.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create header 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 * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header\n * @see https://html.spec.whatwg.org/multipage/sections.html#the-header-element\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 header elements.\n *\n * @category Constants\n */\nexport const HEADER_TAG = 'header' as const;\n\n/**\n * A CSS selector targeting header elements.\n *\n * @category Constants\n */\nexport const HEADER_SELECTOR = 'header';\n\n/**\n * Attribute bag for header creation/enhancement.\n *\n * @remarks\n * `<header>` 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 * @category Attributes\n */\nexport type HeaderAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link HeaderAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The header attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: HeaderAttrs): 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 header 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 header.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<header>` element.\n *\n * @example\n * Create and append a header:\n * ```ts\n * import { createHeader } from \"@lnpg/pkgn-sol/elements/layout/header\";\n *\n * document.body.prepend(\n * createHeader(undefined, { className: \"site-header\" })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createHeader(text?: string, attrs?: HeaderAttrs): ElementOf<typeof HEADER_TAG> {\n return createElement(HEADER_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance header 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 enhanceHeaders(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for header.\n void root;\n}\n"],"mappings":"0MAkEa,EAAa,SAOb,EAAkB,SA4B/B,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA4BrD,SAAgB,EAAa,EAAe,EAAmD,CAC7F,OAAO,EAAA,EAAc,EAAY,EAAc,EAAM,CAAE,EAAK,CAqB9D,SAAgB,EAAe,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../chunks/dom.cjs`),t=require(`./article/article.cjs`),n=require(`./aside/aside.cjs`),r=require(`./footer/footer.cjs`),i=require(`./header/header.cjs`),a=require(`./main/main.cjs`),o=require(`./nav/nav.cjs`),s=require(`./section/section.cjs`);var c=e.i({article:()=>t.t,aside:()=>n.t,footer:()=>r.t,header:()=>i.t,main:()=>a.t,nav:()=>o.t,section:()=>s.t});Object.defineProperty(exports,`article`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`aside`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`footer`,{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,`header`,{enumerable:!0,get:function(){return i.t}}),Object.defineProperty(exports,`main`,{enumerable:!0,get:function(){return a.t}}),Object.defineProperty(exports,`nav`,{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,`section`,{enumerable:!0,get:function(){return s.t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return c}});
2
+ //# sourceMappingURL=layout.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.cjs","names":[],"sources":["../../../../src/elements/layout/index.ts"],"sourcesContent":["/**\n * Layout element factories.\n *\n * Provides framework-agnostic factory functions for HTML elements used to\n * structure the major sections of a document or application.\n *\n * These factories:\n * - Create semantic layout structures using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Preserve correct document outline and accessibility semantics.\n * - Prevent unsafe attribute injection.\n *\n * The elements in this module define the high-level structure of pages,\n * articles, navigation regions, and supporting content.\n *\n * @module elements/layout\n * @since 0.1.0\n */\n\n/**\n * `<article>` element factory namespace.\n *\n * Represents a self-contained composition that can be independently\n * distributed or reused, such as a blog post, news article, or forum entry.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article\n */\nexport * as article from './article';\n\n/**\n * `<aside>` element factory namespace.\n *\n * Represents content indirectly related to the surrounding content, often\n * presented as a sidebar, pull quote, or complementary section.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside\n */\nexport * as aside from './aside';\n\n/**\n * `<footer>` element factory namespace.\n *\n * Represents a footer for its nearest sectioning content or sectioning root,\n * typically containing metadata, copyright information, or related links.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer\n */\nexport * as footer from './footer';\n\n/**\n * `<header>` element factory namespace.\n *\n * Represents introductory content or navigational aids for a page or section,\n * often containing headings, logos, or navigation elements.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header\n */\nexport * as header from './header';\n\n/**\n * `<main>` element factory namespace.\n *\n * Represents the dominant content of the document body. There should only be\n * one `<main>` element per document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main\n */\nexport * as main from './main';\n\n/**\n * `<nav>` element factory namespace.\n *\n * Represents a section of the page containing navigation links to other\n * pages or parts of the current page.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav\n */\nexport * as nav from './nav';\n\n/**\n * `<section>` element factory namespace.\n *\n * Represents a thematic grouping of content, typically with a heading.\n * Sections contribute to the document outline.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section\n */\nexport * as section from './section';\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({MAIN_SELECTOR:()=>r,MAIN_TAG:()=>n,createMain:()=>a,enhanceMains:()=>o}),n=`main`,r=`main`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.MAIN_SELECTOR=r,exports.MAIN_TAG=n,exports.createMain=a,exports.enhanceMains=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=main.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.cjs","names":[],"sources":["../../../../../src/elements/layout/main/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Main element helpers.\n *\n * @remarks\n * The main element (`<main>`) represents the dominant content of the document.\n * It is a landmark element that helps assistive technologies and other tooling\n * identify the primary content area.\n *\n * Best-practice guidance:\n * - Use **only one** `<main>` per document.\n * - The content of `<main>` should be unique to the document (avoid repeated UI\n * like nav, site chrome, copyright, etc.).\n * - Do not place `<main>` as a descendant of `<article>`, `<aside>`, `<footer>`,\n * `<header>`, or `<nav>`.\n *\n * Attributes:\n * - `<main>` supports **global attributes only**.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create main landmarks 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: Main element (`<main>`)\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.\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 main landmarks.\n *\n * @category Constants\n */\nexport const MAIN_TAG = 'main' as const;\n\n/**\n * A CSS selector targeting main elements.\n *\n * @category Constants\n */\nexport const MAIN_SELECTOR = 'main';\n\n/**\n * Attribute bag for main creation/enhancement.\n *\n * @remarks\n * Main 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 * @category Attributes\n */\nexport type MainAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link MainAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The main attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: MainAttrs): 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 main 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 * This helper does not enforce document-level semantics (e.g. \"only one `<main>`\")\n * at runtime. That is a document-authoring responsibility.\n *\n * @param text - Optional text content for the main element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<main>` element.\n *\n * @example\n * ```ts\n * import { createMain } from \"@lnpg/pkgn-sol/elements/layout/main\";\n *\n * document.body.appendChild(\n * createMain(undefined, { id: \"content\", className: \"page-main\" })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createMain(text?: string, attrs?: MainAttrs): ElementOf<typeof MAIN_TAG> {\n return createElement(MAIN_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance main 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 enhanceMains(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for main.\n void root;\n}\n"],"mappings":"kMAoEa,EAAW,OAOX,EAAgB,OA4B7B,SAAS,EAAc,EAA4C,CACjE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA8BrD,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAM,CAAE,EAAK,CAqB5D,SAAgB,EAAa,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({NAV_SELECTOR:()=>`nav`,NAV_TAG:()=>`nav`,createNav:()=>a,enhanceNavs:()=>o}),n=`nav`,r=`nav`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,n){return e.n(`nav`,i(n),t)}function o(e=document){}exports.NAV_SELECTOR=r,exports.NAV_TAG=n,exports.createNav=a,exports.enhanceNavs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=nav.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav.cjs","names":[],"sources":["../../../../../src/elements/layout/nav/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Nav element helpers.\n *\n * @remarks\n * The nav element (`<nav>`) represents a section of a page whose purpose is to\n * provide navigation links.\n *\n * Best-practice guidance:\n * - Use `<nav>` for major navigation blocks (site navigation, table of contents).\n * - If a page has multiple navigation regions, provide an accessible name via\n * `aria-label` or `aria-labelledby` so assistive tech can distinguish them.\n * - Avoid nesting `<nav>` elements.\n * - Prefer semantic grouping of links (e.g. lists) inside the nav.\n *\n * pkgn-sol provides small, framework-agnostic helpers so consumers can:\n * - create navigation regions 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 * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav\n * @see https://html.spec.whatwg.org/multipage/sections.html#the-nav-element\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 * `<nav>` is a landmark with an implicit `navigation` role.\n *\n * pkgn-sol intentionally encourages naming navigation regions when multiple navs\n * exist on the same page (e.g. primary vs footer vs breadcrumb navigation).\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 nav.\n *\n * @category Constants\n */\nexport const NAV_TAG = 'nav' as const;\n\n/**\n * A CSS selector targeting nav elements.\n *\n * @category Constants\n */\nexport const NAV_SELECTOR = 'nav';\n\n/**\n * Attribute bag for nav creation/enhancement.\n *\n * @remarks\n * Nav elements accept standard HTML global attributes.\n *\n * Accessibility note:\n * - `<nav>` has an implicit landmark role.\n * - The ARIA-in-HTML mapping indicates no explicit `role` is permitted for\n * `<nav>` in normal usage. pkgn-sol therefore omits `role` from {@link NavAttrs}.\n * Name navs via `aria-label` / `aria-labelledby` instead.\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 NavAttrs = Omit<GlobalAttrs, 'aria' | 'role'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link NavAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The nav attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: NavAttrs): 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 nav 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 nav.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<nav>` element.\n *\n * @example\n * Create a labelled primary navigation region:\n * ```ts\n * import { createNav } from \"@lnpg/pkgn-sol/elements/layout/nav\";\n *\n * const nav = createNav(undefined, { aria: { label: \"Primary\" }, className: \"site-nav\" });\n * document.body.appendChild(nav);\n * ```\n *\n * @category DOM\n */\nexport function createNav(text?: string, attrs?: NavAttrs): ElementOf<typeof NAV_TAG> {\n return createElement(NAV_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance nav 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 enhanceNavs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for nav.\n void root;\n}\n"],"mappings":"sMAkEa,EAAU,MAOV,EAAe,MAkC5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,SAAgB,EAAU,EAAe,EAA6C,CACpF,OAAO,EAAA,EAAA,MAAuB,EAAc,EAAM,CAAE,EAAK,CAqB3D,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({SECTION_SELECTOR:()=>r,SECTION_TAG:()=>n,createSection:()=>a,enhanceSections:()=>o}),n=`section`,r=`section`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.SECTION_SELECTOR=r,exports.SECTION_TAG=n,exports.createSection=a,exports.enhanceSections=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=section.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section.cjs","names":[],"sources":["../../../../../src/elements/layout/section/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Section element helpers.\n *\n * @remarks\n * The section element (`<section>`) represents a standalone thematic grouping of\n * content, typically with a heading.\n *\n * Best-practice guidance:\n * - Do not treat `<section>` as a \"semantic `<div>`\". Use it when the content is a\n * distinct theme that belongs in the document outline.\n * - Prefer including a heading (`<h1>`-`<h6>`) that describes the section's purpose.\n * - If you just need a generic container with no semantic meaning, use `<div>`.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create sections 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: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section\n * - HTML Standard: https://html.spec.whatwg.org/multipage/sections.html#the-section-element\n * - WHATWG blog (context): https://blog.whatwg.org/is-not-just-a-semantic\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.\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 section elements.\n *\n * @category Constants\n */\nexport const SECTION_TAG = 'section' as const;\n\n/**\n * A CSS selector targeting section elements.\n *\n * @category Constants\n */\nexport const SECTION_SELECTOR = 'section';\n\n/**\n * Attribute bag for section creation/enhancement.\n *\n * @remarks\n * Section 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 * @category Attributes\n */\nexport type SectionAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link SectionAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The section attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SectionAttrs): 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 section 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 section.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<section>` element.\n *\n * @example\n * ```ts\n * import { createSection } from \"@lnpg/pkgn-sol/elements/layout/section\";\n *\n * const s = createSection(undefined, { id: \"features\" });\n * document.body.appendChild(s);\n * ```\n *\n * @category DOM\n */\nexport function createSection(text?: string, attrs?: SectionAttrs): ElementOf<typeof SECTION_TAG> {\n return createElement(SECTION_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance section 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 enhanceSections(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for section.\n void root;\n}\n"],"mappings":"8MAiEa,EAAc,UAOd,EAAmB,UA4BhC,SAAS,EAAc,EAA+C,CACpE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAc,EAAe,EAAqD,CAChG,OAAO,EAAA,EAAc,EAAa,EAAc,EAAM,CAAE,EAAK,CAqB/D,SAAgB,EAAgB,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({DD_SELECTOR:()=>`dd`,DD_TAG:()=>`dd`,createDd:()=>a,enhanceDds:()=>o}),n=`dd`,r=`dd`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,n){return e.n(`dd`,i(n),t)}function o(e=document){}exports.DD_SELECTOR=r,exports.DD_TAG=n,exports.createDd=a,exports.enhanceDds=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=dd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dd.cjs","names":[],"sources":["../../../../../src/elements/list/dd/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Description Details (`<dd>`) element helpers.\n *\n * @remarks\n * The `<dd>` element provides the description, definition, or value for the\n * preceding term (`<dt>`) within a description list (`<dl>`).\n *\n * Best-practice guidance:\n * - Use `<dd>` only within a `<dl>`.\n * - Pair `<dd>` with an appropriate `<dt>` term.\n * - Use semantic lists for terms/values, not for layout.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<dd>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - pass a structured, typed attribute bag\n *\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/Reference/Elements/dd\n * @see https://html.spec.whatwg.org/multipage/grouping-content.html#the-dd-element\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.\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 dd.\n *\n * @category Constants\n */\nexport const DD_TAG = 'dd' as const;\n\n/**\n * A CSS selector targeting dd elements.\n *\n * @category Constants\n */\nexport const DD_SELECTOR = 'dd';\n\n/**\n * Attribute bag for dd creation/enhancement.\n *\n * @remarks\n * `<dd>` only supports 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 * @category Attributes\n */\nexport type DdAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link DdAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The dd attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DdAttrs): 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 dd 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 dd element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<dd>` element.\n *\n * @example\n * ```ts\n * import { createDd } from \"@lnpg/pkgn-sol/elements/list/dd\";\n *\n * const dd = createDd(\"A sea serpent.\", { className: \"desc\" });\n * ```\n *\n * @category DOM\n */\nexport function createDd(text?: string, attrs?: DdAttrs): ElementOf<typeof DD_TAG> {\n return createElement(DD_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance dd 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 * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceDds(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for dd.\n void root;\n}\n"],"mappings":"gMA8Da,EAAS,KAOT,EAAc,KA4B3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CAQvD,OANI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EAyBrD,SAAgB,EAAS,EAAe,EAA2C,CACjF,OAAO,EAAA,EAAA,KAAsB,EAAc,EAAM,CAAE,EAAK,CAiB1D,SAAgB,EAAW,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({DL_SELECTOR:()=>`dl`,DL_TAG:()=>`dl`,createDl:()=>a,enhanceDls:()=>o}),n=`dl`,r=`dl`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,n){return e.n(`dl`,i(n),t)}function o(e=document){}exports.DL_SELECTOR=r,exports.DL_TAG=n,exports.createDl=a,exports.enhanceDls=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=dl.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dl.cjs","names":[],"sources":["../../../../../src/elements/list/dl/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Dl element helpers.\n *\n * @remarks\n * The dl element (`<dl>`) represents a description list (a set of name-value groups).\n * It is commonly used with `<dt>` (term/name) and `<dd>` (description/value).\n *\n * Best-practice guidance:\n * - Prefer `<dl>` when you're expressing name-value pairs (not just \"a list\").\n * - Use `<dt>` / `<dd>` in sensible groupings to keep meaning clear.\n * - Avoid misusing `<dl>` for layout or arbitrary indentation; use CSS instead.\n *\n * Attributes:\n * - `<dl>` has no element-specific attributes in modern HTML.\n * - It accepts standard global attributes (id, class, lang, data-*, aria-*, etc.).\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<dl>` 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 description lists.\n *\n * @category Constants\n */\nexport const DL_TAG = 'dl' as const;\n\n/**\n * A CSS selector targeting dl elements.\n *\n * @category Constants\n */\nexport const DL_SELECTOR = 'dl';\n\n/**\n * Attribute bag for dl creation/enhancement.\n *\n * @remarks\n * Dl 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 * @category Attributes\n */\nexport type DlAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link DlAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The dl attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DlAttrs): 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 dl element with optional text content and global attributes.\n *\n * @remarks\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - In real usage, `<dl>` typically contains `<dt>` / `<dd>` children; pkgn-sol keeps\n * factories small and safe, so this helper supports optional text as a simple\n * convenience, not as a replacement for proper `<dt>` / `<dd>` structure.\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 dl.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<dl>` element.\n *\n * @example\n * Create and append a dl:\n * ```ts\n * import { createDl } from \"@lnpg/pkgn-sol/elements/list/dl\";\n *\n * document.body.appendChild(\n * createDl(undefined, { className: \"meta\", id: \"product-specs\" })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createDl(text?: string, attrs?: DlAttrs): ElementOf<typeof DL_TAG> {\n return createElement(DL_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance dl 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 enhanceDls(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for dl.\n void root;\n}\n"],"mappings":"gMA+Da,EAAS,KAOT,EAAc,KA4B3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA+BrD,SAAgB,EAAS,EAAe,EAA2C,CACjF,OAAO,EAAA,EAAA,KAAsB,EAAc,EAAM,CAAE,EAAK,CAqB1D,SAAgB,EAAW,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({DT_SELECTOR:()=>`dt`,DT_TAG:()=>`dt`,createDt:()=>a,enhanceDts:()=>o}),n=`dt`,r=`dt`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t,n){return e.n(`dt`,i(n),t)}function o(e=document){}exports.DT_SELECTOR=r,exports.DT_TAG=n,exports.createDt=a,exports.enhanceDts=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=dt.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dt.cjs","names":[],"sources":["../../../../../src/elements/list/dt/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Dt element helpers.\n *\n * @remarks\n * The dt element (`<dt>`) represents a definition term in a description list (`<dl>`).\n * It is typically paired with one or more `<dd>` elements (the descriptions/details).\n *\n * Best-practice guidance:\n * - Use `<dl>` + `<dt>` + `<dd>` for name/value groups (terms and descriptions),\n * not for arbitrary layout or \"two-column\" grids.\n * - Keep terms concise; put the detail/content in `<dd>`.\n * - Use CSS for presentation (avoid presentational patterns that change semantics).\n *\n * Attributes:\n * - `<dt>` supports only global attributes (no element-specific attributes).\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create dt 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 * @see MDN `<dt>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt\n * @see WHATWG HTML `<dt>`: https://html.spec.whatwg.org/multipage/grouping-content.html#the-dt-element\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.\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 dt elements.\n *\n * @category Constants\n */\nexport const DT_TAG = 'dt' as const;\n\n/**\n * A CSS selector targeting dt elements.\n *\n * @category Constants\n */\nexport const DT_SELECTOR = 'dt';\n\n/**\n * Attribute bag for dt creation/enhancement.\n *\n * @remarks\n * Dt 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 * @category Attributes\n */\nexport type DtAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link DtAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The dt attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DtAttrs): 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 dt 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 dt.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<dt>` element.\n *\n * @example\n * ```ts\n * import { createDt } from \"@lnpg/pkgn-sol/elements/list/dt\";\n *\n * const dl = document.createElement(\"dl\");\n * dl.appendChild(createDt(\"Size\"));\n * ```\n *\n * @category DOM\n */\nexport function createDt(text?: string, attrs?: DtAttrs): ElementOf<typeof DT_TAG> {\n return createElement(DT_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance dt 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 enhanceDts(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for dt.\n void root;\n}\n"],"mappings":"gMA+Da,EAAS,KAOT,EAAc,KA4B3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAS,EAAe,EAA2C,CACjF,OAAO,EAAA,EAAA,KAAsB,EAAc,EAAM,CAAE,EAAK,CAqB1D,SAAgB,EAAW,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({LI_SELECTOR:()=>`li`,LI_TAG:()=>`li`,createLi:()=>a,enhanceLis:()=>o}),n=`li`,r=`li`;function i(e){if(!e)return;let{aria:t,type:n,attrs:r,value:i,...a}=e,o={...a};if(t){let e={};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&&(o.aria=e)}let s={...r??{}};return typeof n==`string`&&n.length>0&&(s.type=n),Object.keys(s).length>0&&(o.attrs=s),o}function a(t,n){let r=e.n(`li`,i(n),t);return n&&typeof n.value==`number`&&Number.isFinite(n.value)&&(r.value=n.value),r}function o(e=document){}exports.LI_SELECTOR=r,exports.LI_TAG=n,exports.createLi=a,exports.enhanceLis=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=li.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"li.cjs","names":[],"sources":["../../../../../src/elements/list/li/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Li element helpers.\n *\n * @remarks\n * The list item element (`<li>`) represents an item in a list.\n *\n * Best-practice guidance:\n * - Use `<li>` only as a direct child of a list container (`<ul>`, `<ol>`, `<menu>`).\n * - Prefer semantic list structure over styling hacks.\n * - For ordered lists, use the `value` attribute/property to control numbering when needed\n * (e.g. continuing a sequence after inserted items).\n * - Avoid the legacy `type` attribute where possible; prefer list-level semantics and CSS.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<li>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - supply typed element-specific fields like `value`\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.\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 * Legacy marker type options for list items.\n *\n * @remarks\n * The `type` attribute on `<li>` is legacy and should be avoided when possible.\n * It is retained here for compatibility scenarios.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li\n *\n * @category Attributes\n */\nexport type LiMarkerType = '1' | 'a' | 'A' | 'i' | 'I';\n\n/**\n * The semantic tag name for list items.\n *\n * @category Constants\n */\nexport const LI_TAG = 'li' as const;\n\n/**\n * A CSS selector targeting list item elements.\n *\n * @category Constants\n */\nexport const LI_SELECTOR = 'li';\n\n/**\n * Attribute bag for li creation/enhancement.\n *\n * @remarks\n * In addition to global attributes, `<li>` supports:\n * - `value` (primarily for `<ol>` numbering control)\n * - legacy `type` marker hint (deprecated)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li\n *\n * @category Attributes\n */\nexport type LiAttrs = Omit<GlobalAttrs, 'aria' | 'attrs'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Ordinal value for ordered lists.\n *\n * @remarks\n * When used within an `<ol>`, this sets the list item's numbering value.\n * This is modeled as a number and applied via the `HTMLLIElement.value` property.\n */\n value?: number;\n\n /**\n * Legacy marker type hint (deprecated).\n *\n * @remarks\n * Prefer list semantics and CSS. Retained for compatibility.\n */\n type?: LiMarkerType;\n\n /**\n * Additional attributes not modeled above.\n *\n * @remarks\n * This exists as an escape hatch while still allowing pkgn-sol to apply its\n * attribute safety rules via `dom.ts`.\n */\n attrs?: GlobalAttrs['attrs'];\n};\n\n/**\n * Normalize {@link LiAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The li attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: LiAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, type, attrs: extraAttrs, value: _value, ...rest } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n // Map structured aria.\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['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 if (Object.keys(mappedAria).length > 0) mapped.aria = mappedAria;\n }\n\n // Merge extra attrs and map legacy `type` through the hardened attrs path.\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(extraAttrs ?? {}) };\n if (typeof type === 'string' && type.length > 0) mergedAttrs.type = type;\n\n if (Object.keys(mergedAttrs).length > 0) mapped.attrs = mergedAttrs;\n\n return mapped;\n}\n\n/**\n * Create a list item element with optional text content and 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 * - The `value` field is applied via the `HTMLLIElement.value` property for correct behavior.\n *\n * @param text - Optional text content for the list item.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<li>` element.\n *\n * @example\n * ```ts\n * import { createLi } from \"@lnpg/pkgn-sol/elements/list/li\";\n *\n * const li = createLi(\"Item 3\", { value: 3 });\n * ```\n *\n * @category DOM\n */\nexport function createLi(text?: string, attrs?: LiAttrs): ElementOf<typeof LI_TAG> {\n const el = createElement(LI_TAG, toGlobalAttrs(attrs), text);\n\n // Apply ordered-list numbering via the DOM property.\n if (attrs && typeof attrs.value === 'number' && Number.isFinite(attrs.value)) {\n (el as unknown as HTMLLIElement).value = attrs.value;\n }\n\n return el;\n}\n\n/**\n * Enhance list item 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 * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceLis(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for li.\n void root;\n}\n"],"mappings":"gMAyEa,EAAS,KAOT,EAAc,KAuD3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,MAAO,EAAY,MAAO,EAAQ,GAAG,GAAS,EAE5D,EAAsB,CAAE,GAAG,EAAM,CAGvC,GAAI,EAAM,CACR,IAAM,EAA+C,EAAE,CACnD,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE3D,OAAO,KAAK,EAAW,CAAC,OAAS,IAAG,EAAO,KAAO,GAIxD,IAAM,EAAiD,CAAE,GAAI,GAAc,EAAE,CAAG,CAKhF,OAJI,OAAO,GAAS,UAAY,EAAK,OAAS,IAAG,EAAY,KAAO,GAEhE,OAAO,KAAK,EAAY,CAAC,OAAS,IAAG,EAAO,MAAQ,GAEjD,EA0BT,SAAgB,EAAS,EAAe,EAA2C,CACjF,IAAM,EAAK,EAAA,EAAA,KAAsB,EAAc,EAAM,CAAE,EAAK,CAO5D,OAJI,GAAS,OAAO,EAAM,OAAU,UAAY,OAAO,SAAS,EAAM,MAAM,GAC1E,EAAiC,MAAQ,EAAM,OAG1C,EAiBT,SAAgB,EAAW,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../chunks/dom.cjs`),t=require(`./dd/dd.cjs`),n=require(`./dl/dl.cjs`),r=require(`./dt/dt.cjs`),i=require(`./li/li.cjs`),a=require(`./ol/ol.cjs`),o=require(`./ul/ul.cjs`);var s=e.i({dd:()=>t.t,dl:()=>n.t,dt:()=>r.t,li:()=>i.t,ol:()=>a.t,ul:()=>o.t});Object.defineProperty(exports,`dd`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`dl`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`dt`,{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,`li`,{enumerable:!0,get:function(){return i.t}}),Object.defineProperty(exports,`ol`,{enumerable:!0,get:function(){return a.t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`ul`,{enumerable:!0,get:function(){return o.t}});
2
+ //# sourceMappingURL=list.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.cjs","names":[],"sources":["../../../../src/elements/list/index.ts"],"sourcesContent":["/**\n * List element factories.\n *\n * Provides framework-agnostic factory functions for HTML list and list-related\n * elements used to express collections of items and term/description pairs.\n *\n * These factories:\n * - Create list elements using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Encourage accessible, standards-aligned markup.\n * - Prevent unsafe attribute injection.\n *\n * List elements are the backbone of navigations, feature lists, checklists, and\n * definition/description content, while preserving semantic meaning for assistive\n * technologies.\n *\n * @module elements/list\n * @since 0.1.0\n */\n\n/**\n * `<dd>` element factory namespace.\n *\n * Represents the description/details/value for a term in a description list (`<dl>`).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd\n */\nexport * as dd from './dd';\n\n/**\n * `<dl>` element factory namespace.\n *\n * Represents a description list (name-value groups), containing `<dt>` and `<dd>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl\n */\nexport * as dl from './dl';\n\n/**\n * `<dt>` element factory namespace.\n *\n * Represents a term/name in a description list (`<dl>`).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt\n */\nexport * as dt from './dt';\n\n/**\n * `<li>` element factory namespace.\n *\n * Represents a list item inside `<ul>`, `<ol>`, or `<menu>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li\n */\nexport * as li from './li';\n\n/**\n * `<ol>` element factory namespace.\n *\n * Represents an ordered list where item order is meaningful.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol\n */\nexport * as ol from './ol';\n\n/**\n * `<ul>` element factory namespace.\n *\n * Represents an unordered list where item order is not meaningful.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul\n */\nexport * as ul from './ul';\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({OL_SELECTOR:()=>`ol`,OL_TAG:()=>`ol`,createOl:()=>a,enhanceOls:()=>o}),n=`ol`,r=`ol`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t){let n=e.n(`ol`,i(t)),r=n;return t&&(typeof t.reversed==`boolean`&&(r.reversed=t.reversed),typeof t.start==`number`&&Number.isFinite(t.start)&&(r.start=t.start),typeof t.type==`string`&&(r.type=t.type)),n}function o(e=document){}exports.OL_SELECTOR=r,exports.OL_TAG=n,exports.createOl=a,exports.enhanceOls=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=ol.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ol.cjs","names":[],"sources":["../../../../../src/elements/list/ol/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Ordered list element helpers.\n *\n * @remarks\n * The ordered list element (`<ol>`) represents an ordered list of items.\n *\n * Best-practice guidance:\n * - Prefer `<ol>` when the order of items matters (steps, rankings, sequences).\n * - List items should be `<li>` elements (direct children).\n * - Avoid presentational attributes when possible; prefer CSS for styling.\n * - Use `start`/`reversed` only when semantics require non-default numbering.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create ordered lists 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.\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 ordered lists.\n *\n * @category Constants\n */\nexport const OL_TAG = 'ol' as const;\n\n/**\n * A CSS selector targeting ordered list elements.\n *\n * @category Constants\n */\nexport const OL_SELECTOR = 'ol';\n\n/**\n * Allowed values for the `<ol>` `type` attribute.\n *\n * @remarks\n * While `type` is still supported by browsers, it is presentational and CSS is\n * often preferable.\n *\n * - `1` Decimal numbers (default)\n * - `a` Lowercase letters\n * - `A` Uppercase letters\n * - `i` Lowercase Roman numerals\n * - `I` Uppercase Roman numerals\n *\n * @category Attributes\n */\nexport type OlType = '1' | 'a' | 'A' | 'i' | 'I';\n\n/**\n * Attribute bag for ordered list creation/enhancement.\n *\n * @remarks\n * Ordered lists accept HTML global attributes and a small set of specific\n * attributes:\n * - `reversed` for descending numbering\n * - `start` to set the initial counter value\n * - `type` to choose the marker style (often better via CSS)\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 OlAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Whether numbering should be descending.\n */\n reversed?: boolean;\n\n /**\n * Starting value for the list counter.\n */\n start?: number;\n\n /**\n * Marker type for list items.\n */\n type?: OlType;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link OlAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The ordered list attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: OlAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\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 return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create an ordered list element with global and list-specific attributes.\n *\n * @remarks\n * This helper intentionally does not accept raw HTML. Consumers should append\n * `<li>` children using DOM APIs.\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 `<ol>` element.\n *\n * @example\n * ```ts\n * import { createOl } from \"@lnpg/pkgn-sol/elements/list/ol\";\n *\n * const ol = createOl({ start: 3, reversed: true, className: \"steps\" });\n * document.body.appendChild(ol);\n * ```\n *\n * @category DOM\n */\nexport function createOl(attrs?: OlAttrs): ElementOf<typeof OL_TAG> {\n const el = createElement(OL_TAG, toGlobalAttrs(attrs));\n const ol = el as unknown as HTMLOListElement;\n\n if (attrs) {\n if (typeof attrs.reversed === 'boolean') ol.reversed = attrs.reversed;\n if (typeof attrs.start === 'number' && Number.isFinite(attrs.start)) ol.start = attrs.start;\n if (typeof attrs.type === 'string') ol.type = attrs.type;\n }\n\n return el;\n}\n\n/**\n * Enhance ordered list 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 enhanceOls(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for ol.\n void root;\n}\n"],"mappings":"gMA2Da,EAAS,KAOT,EAAc,KAgE3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAC1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CAOvD,OALI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAChC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,SAAgB,EAAS,EAA2C,CAClE,IAAM,EAAK,EAAA,EAAA,KAAsB,EAAc,EAAM,CAAC,CAChD,EAAK,EAQX,OANI,IACE,OAAO,EAAM,UAAa,YAAW,EAAG,SAAW,EAAM,UACzD,OAAO,EAAM,OAAU,UAAY,OAAO,SAAS,EAAM,MAAM,GAAE,EAAG,MAAQ,EAAM,OAClF,OAAO,EAAM,MAAS,WAAU,EAAG,KAAO,EAAM,OAG/C,EAqBT,SAAgB,EAAW,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({UL_SELECTOR:()=>`ul`,UL_TAG:()=>`ul`,createUl:()=>a,enhanceUls:()=>o}),n=`ul`,r=`ul`;function i(e){if(!e)return;let{aria:t,type:n,attrs:r,...i}=e,a={...i};if(t){let e={};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)}let o={...r??{}};return typeof n==`string`&&n.length>0&&(o.type=n),Object.keys(o).length>0&&(a.attrs=o),a}function a(t,n){return e.n(`ul`,i(n),t)}function o(e=document){}exports.UL_SELECTOR=r,exports.UL_TAG=n,exports.createUl=a,exports.enhanceUls=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=ul.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ul.cjs","names":[],"sources":["../../../../../src/elements/list/ul/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Unordered list (ul) element helpers.\n *\n * @remarks\n * The unordered list element (`<ul>`) represents a list of items where the\n * order does not change the meaning.\n *\n * Best-practice guidance:\n * - Use `<ul>` for lists where sequence is not meaningful (use `<ol>` when it is).\n * - Ensure list children are `<li>` elements.\n * - Do not use `<ul>` purely for indentation or spacing; use CSS for layout.\n * - The legacy `type` attribute is obsolete; prefer `list-style-type` in CSS.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<ul>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - optionally set legacy presentation attributes in a controlled way\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.\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 unordered lists.\n *\n * @category Constants\n */\nexport const UL_TAG = 'ul' as const;\n\n/**\n * A CSS selector targeting unordered list elements.\n *\n * @category Constants\n */\nexport const UL_SELECTOR = 'ul';\n\n/**\n * Legacy marker style values for `<ul type=\"...\">`.\n *\n * @remarks\n * The `type` attribute is obsolete in HTML5. Prefer CSS `list-style-type`.\n * This is included as a pragmatic escape hatch for legacy markup needs.\n *\n * @category Attributes\n */\nexport type UlLegacyType = 'disc' | 'circle' | 'square';\n\n/**\n * Attribute bag for ul creation/enhancement.\n *\n * @remarks\n * `<ul>` primarily accepts standard HTML global attributes.\n *\n * pkgn-sol also supports:\n * - structured ARIA input mapped into `aria-*`\n * - optional legacy `type` mapping to the `type` attribute (obsolete)\n * - an `attrs` escape hatch, still guarded by pkgn-sol's attribute safety rules\n *\n * @category Attributes\n */\nexport type UlAttrs = Omit<GlobalAttrs, 'aria' | 'attrs'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Legacy bullet style hint mapped to the `type` attribute (obsolete).\n *\n * @remarks\n * Prefer CSS `list-style-type` instead.\n */\n type?: UlLegacyType;\n\n /**\n * Additional attributes not modeled above.\n *\n * @remarks\n * This exists as an escape hatch while still allowing pkgn-sol to apply its\n * attribute safety rules via `dom.ts`.\n */\n attrs?: GlobalAttrs['attrs'];\n};\n\n/**\n * Normalize {@link UlAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The ul attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: UlAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, type, attrs: extraAttrs, ...rest } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n // Map structured aria.\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['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 if (Object.keys(mappedAria).length > 0) mapped.aria = mappedAria;\n }\n\n // Merge escape-hatch attrs and add legacy `type` if provided.\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(extraAttrs ?? {}) };\n if (typeof type === 'string' && type.length > 0) mergedAttrs.type = type;\n\n if (Object.keys(mergedAttrs).length > 0) mapped.attrs = mergedAttrs;\n\n return mapped;\n}\n\n/**\n * Create an unordered list (`<ul>`) with optional text content and attributes.\n *\n * @remarks\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - In real documents, `<ul>` should contain `<li>` children, not raw text.\n * The optional `text` parameter exists for consistency with pkgn-sol factories and\n * testing convenience.\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 ul.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<ul>` element.\n *\n * @example\n * ```ts\n * import { createUl } from \"@lnpg/pkgn-sol/elements/list/ul\";\n *\n * const ul = createUl(undefined, { id: \"features\" });\n * document.body.appendChild(ul);\n * ```\n *\n * @category DOM\n */\nexport function createUl(text?: string, attrs?: UlAttrs): ElementOf<typeof UL_TAG> {\n return createElement(UL_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance unordered list 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 enhanceUls(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for ul.\n void root;\n}\n"],"mappings":"gMA4Da,EAAS,KAOT,EAAc,KA0D3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,MAAO,EAAY,GAAG,GAAS,EAE7C,EAAsB,CAAE,GAAG,EAAM,CAGvC,GAAI,EAAM,CACR,IAAM,EAA+C,EAAE,CACnD,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE3D,OAAO,KAAK,EAAW,CAAC,OAAS,IAAG,EAAO,KAAO,GAIxD,IAAM,EAAiD,CAAE,GAAI,GAAc,EAAE,CAAG,CAKhF,OAJI,OAAO,GAAS,UAAY,EAAK,OAAS,IAAG,EAAY,KAAO,GAEhE,OAAO,KAAK,EAAY,CAAC,OAAS,IAAG,EAAO,MAAQ,GAEjD,EA6BT,SAAgB,EAAS,EAAe,EAA2C,CACjF,OAAO,EAAA,EAAA,KAAsB,EAAc,EAAM,CAAE,EAAK,CAa1D,SAAgB,EAAW,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({AUDIO_SELECTOR:()=>r,AUDIO_TAG:()=>n,createAudio:()=>a,enhanceAudios:()=>o}),n=`audio`,r=`audio`;function i(e){if(!e)return;let{aria:t,...n}=e;if(!t)return n;let r={};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?{...n,aria:r}:n}function a(t){let r=e.n(n,i(t));return t?(typeof t.src==`string`&&(r.src=t.src),typeof t.controls==`boolean`&&(r.controls=t.controls),typeof t.autoplay==`boolean`&&(r.autoplay=t.autoplay),typeof t.loop==`boolean`&&(r.loop=t.loop),typeof t.muted==`boolean`?r.muted=t.muted:t.autoplay===!0&&(r.muted=!0),typeof t.preload==`string`&&(r.preload=t.preload),typeof t.crossOrigin==`string`&&(r.crossOrigin=t.crossOrigin),Array.isArray(t.controlsList)&&t.controlsList.length>0&&r.setAttribute(`controlslist`,t.controlsList.join(` `)),typeof t.disableRemotePlayback==`boolean`&&(t.disableRemotePlayback?r.setAttribute(`disableremoteplayback`,``):r.removeAttribute(`disableremoteplayback`)),r):r}function o(e=document){}exports.AUDIO_SELECTOR=r,exports.AUDIO_TAG=n,exports.createAudio=a,exports.enhanceAudios=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=audio.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.cjs","names":[],"sources":["../../../../../src/elements/media/audio/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Audio element helpers.\n *\n * @remarks\n * The audio element (`<audio>`) embeds sound content in documents.\n * It can load audio via `src` or nested `<source>` elements, and it can\n * also be a destination for streamed media via MediaStream.\n *\n * Best-practice guidance (MDN + platform norms):\n * - Avoid autoplaying audio unless the user explicitly opts in.\n * - Prefer showing controls (`controls`) when audio playback is user-facing.\n * - Use `preload=\"metadata\"` as a sensible hint if you want duration, etc.\n * - Use CORS (`crossOrigin`) when audio might be reused by `<canvas>` without tainting.\n * - Prefer multiple `<source>` elements for format fallbacks where needed.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create audio 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.\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 `preload` values for media elements.\n *\n * @remarks\n * Per MDN, browsers treat this as a hint and may ignore it; `metadata` is a\n * common best-practice default in specs/guidance.\n *\n * @category Attributes\n */\nexport type AudioPreload = 'none' | 'metadata' | 'auto';\n\n/**\n * Allowed values for the `crossorigin` attribute for media fetches.\n *\n * @category Attributes\n */\nexport type AudioCrossOrigin = 'anonymous' | 'use-credentials';\n\n/**\n * Allowed tokens for the `controlslist` attribute (when `controls` is enabled).\n *\n * @remarks\n * MDN lists allowed values including `nodownload`, `nofullscreen`, `noremoteplayback`.\n * (`nofullscreen` is effectively video-oriented but is still a valid token in the attribute.)\n *\n * @category Attributes\n */\nexport type AudioControlsList = 'nodownload' | 'nofullscreen' | 'noremoteplayback';\n\n/**\n * The semantic tag name for audio elements.\n *\n * @category Constants\n */\nexport const AUDIO_TAG = 'audio' as const;\n\n/**\n * A CSS selector targeting audio elements.\n *\n * @category Constants\n */\nexport const AUDIO_SELECTOR = 'audio';\n\n/**\n * Attribute bag for audio creation/enhancement.\n *\n * @remarks\n * Audio elements accept HTML global attributes plus a media-specific subset.\n * pkgn-sol also supports structured ARIA input for common ARIA fields.\n *\n * @category Attributes\n */\nexport type AudioAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * The URL of the audio resource to embed.\n *\n * @remarks\n * Optional if you instead provide nested `<source>` elements.\n */\n src?: string;\n\n /**\n * Whether browser playback controls should be shown.\n */\n controls?: boolean;\n\n /**\n * Whether playback should begin automatically.\n *\n * @remarks\n * Autoplaying audio is often blocked unless user-initiated. If `autoplay`\n * is enabled and `muted` is not specified, pkgn-sol defaults `muted` to `true`\n * as a pragmatic alignment with autoplay policies.\n */\n autoplay?: boolean;\n\n /**\n * Whether the audio should loop back to the start after ending.\n */\n loop?: boolean;\n\n /**\n * Whether the audio should start out muted.\n */\n muted?: boolean;\n\n /**\n * Hint about how much to preload.\n */\n preload?: AudioPreload;\n\n /**\n * CORS mode for fetching the audio resource.\n */\n crossOrigin?: AudioCrossOrigin;\n\n /**\n * Restrict which built-in controls the user agent exposes (when `controls` is set).\n *\n * @example\n * controlsList: ['nodownload', 'noremoteplayback']\n */\n controlsList?: AudioControlsList[];\n\n /**\n * Disable remote playback (Chromecast/AirPlay/etc).\n */\n disableRemotePlayback?: boolean;\n};\n\n/**\n * Normalize {@link AudioAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The audio attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: AudioAttrs): 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 an audio element with optional attributes.\n *\n * @remarks\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 through escape hatches.\n *\n * Media-specific attributes are applied directly to the element.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<audio>` element.\n *\n * @example\n * ```ts\n * import { createAudio } from \"@lnpg/pkgn-sol/elements/media/audio\";\n *\n * document.body.appendChild(\n * createAudio({ controls: true, src: \"/audio/intro.mp3\", preload: \"metadata\" })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createAudio(attrs?: AudioAttrs): ElementOf<typeof AUDIO_TAG> {\n const el = createElement(AUDIO_TAG, toGlobalAttrs(attrs));\n\n if (!attrs) return el;\n\n if (typeof attrs.src === 'string') el.src = attrs.src;\n\n if (typeof attrs.controls === 'boolean') el.controls = attrs.controls;\n\n if (typeof attrs.autoplay === 'boolean') el.autoplay = attrs.autoplay;\n if (typeof attrs.loop === 'boolean') el.loop = attrs.loop;\n\n // Pragmatic autoplay alignment: if autoplay is enabled and muted is not provided,\n // default to muted to reduce the chance of autoplay being blocked.\n if (typeof attrs.muted === 'boolean') {\n el.muted = attrs.muted;\n } else if (attrs.autoplay === true) {\n el.muted = true;\n }\n\n if (typeof attrs.preload === 'string') el.preload = attrs.preload;\n\n if (typeof attrs.crossOrigin === 'string') el.crossOrigin = attrs.crossOrigin;\n\n if (Array.isArray(attrs.controlsList) && attrs.controlsList.length > 0) {\n // `controlslist` is a token list attribute; set as a space-separated list.\n el.setAttribute('controlslist', attrs.controlsList.join(' '));\n }\n\n if (typeof attrs.disableRemotePlayback === 'boolean') {\n if (attrs.disableRemotePlayback) el.setAttribute('disableremoteplayback', '');\n else el.removeAttribute('disableremoteplayback');\n }\n\n return el;\n}\n\n/**\n * Enhance audio 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 enhanceAudios(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for audio.\n void root;\n}\n"],"mappings":"sMA2Fa,EAAY,QAOZ,EAAiB,QAkF9B,SAAS,EAAc,EAA6C,CAClE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CAQvD,OANI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,SAAgB,EAAY,EAAiD,CAC3E,IAAM,EAAK,EAAA,EAAc,EAAW,EAAc,EAAM,CAAC,CAiCzD,OA/BK,GAED,OAAO,EAAM,KAAQ,WAAU,EAAG,IAAM,EAAM,KAE9C,OAAO,EAAM,UAAa,YAAW,EAAG,SAAW,EAAM,UAEzD,OAAO,EAAM,UAAa,YAAW,EAAG,SAAW,EAAM,UACzD,OAAO,EAAM,MAAS,YAAW,EAAG,KAAO,EAAM,MAIjD,OAAO,EAAM,OAAU,UACzB,EAAG,MAAQ,EAAM,MACR,EAAM,WAAa,KAC5B,EAAG,MAAQ,IAGT,OAAO,EAAM,SAAY,WAAU,EAAG,QAAU,EAAM,SAEtD,OAAO,EAAM,aAAgB,WAAU,EAAG,YAAc,EAAM,aAE9D,MAAM,QAAQ,EAAM,aAAa,EAAI,EAAM,aAAa,OAAS,GAEnE,EAAG,aAAa,eAAgB,EAAM,aAAa,KAAK,IAAI,CAAC,CAG3D,OAAO,EAAM,uBAA0B,YACrC,EAAM,sBAAuB,EAAG,aAAa,wBAAyB,GAAG,CACxE,EAAG,gBAAgB,wBAAwB,EAG3C,GA/BY,EAoDrB,SAAgB,EAAc,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({CANVAS_SELECTOR:()=>r,CANVAS_TAG:()=>n,createCanvas:()=>a,enhanceCanvases:()=>o}),n=`canvas`,r=`canvas`;function i(e){if(!e)return;let{aria:t,width:n,height:r,...i}=e,a={...i},o={};return typeof t?.label==`string`&&(o.label=t.label),typeof t?.labelledby==`string`&&(o.labelledby=t.labelledby),typeof t?.hidden==`boolean`&&(o.hidden=t.hidden),Object.keys(o).length>0&&(a.aria=o),(typeof n==`number`||typeof r==`number`)&&(a.attrs={...a.attrs??{}},typeof n==`number`&&(a.attrs.width=n),typeof r==`number`&&(a.attrs.height=r)),a}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.CANVAS_SELECTOR=r,exports.CANVAS_TAG=n,exports.createCanvas=a,exports.enhanceCanvases=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=canvas.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.cjs","names":[],"sources":["../../../../../src/elements/media/canvas/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Canvas element helpers.\n *\n * @remarks\n * The canvas element (`<canvas>`) provides a scriptable drawing surface.\n *\n * Best-practice guidance:\n * - Prefer setting `width` and `height` attributes (not only CSS sizing) to avoid\n * rendering distortion from bitmap scaling.\n * - Provide meaningful fallback content where appropriate (e.g. a short text\n * alternative) as the canvas element can represent its fallback content in\n * non-visual/unsupported contexts.\n * - If the canvas conveys information, ensure it is labeled accessibly (e.g.\n * via `aria-label` / `aria-labelledby`) and that equivalent information is\n * available outside the canvas where needed.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create canvas 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 canvas.\n *\n * @category Constants\n */\nexport const CANVAS_TAG = 'canvas' as const;\n\n/**\n * A CSS selector targeting canvas elements.\n *\n * @category Constants\n */\nexport const CANVAS_SELECTOR = 'canvas';\n\n/**\n * Attribute bag for canvas creation/enhancement.\n *\n * @remarks\n * Canvas supports:\n * - standard HTML global attributes\n * - `width` and `height` attributes for bitmap sizing\n * - structured ARIA input mapped into `aria-*`\n *\n * @category Attributes\n */\nexport type CanvasAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Bitmap width (in CSS pixels) for the canvas drawing surface.\n *\n * @remarks\n * Prefer this over CSS-only sizing to avoid scaling distortion.\n */\n width?: number;\n\n /**\n * Bitmap height (in CSS pixels) for the canvas drawing surface.\n *\n * @remarks\n * Prefer this over CSS-only sizing to avoid scaling distortion.\n */\n height?: number;\n};\n\n/**\n * Normalize {@link CanvasAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The canvas attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: CanvasAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, width, height, ...rest } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n const mappedAria: NonNullable<GlobalAttrs['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 if (Object.keys(mappedAria).length > 0) mapped.aria = mappedAria;\n\n // Canvas-specific attributes are routed via the safe attrs escape hatch.\n if (typeof width === 'number' || typeof height === 'number') {\n mapped.attrs = { ...(mapped.attrs ?? {}) };\n\n if (typeof width === 'number') mapped.attrs.width = width;\n if (typeof height === 'number') mapped.attrs.height = height;\n }\n\n return mapped;\n}\n\n/**\n * Create a canvas element with optional fallback text content and attributes.\n *\n * @remarks\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - `width` and `height` (if provided) are applied as attributes via the safe\n * attribute path in `dom.ts`.\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 fallback text content for the canvas.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<canvas>` element.\n *\n * @example\n * Create a 300x150 canvas with a label:\n * ```ts\n * import { createCanvas } from \"@lnpg/pkgn-sol/elements/media/canvas\";\n *\n * const el = createCanvas(undefined, {\n * width: 300,\n * height: 150,\n * aria: { label: \"Sparkline chart\" },\n * });\n * ```\n *\n * @category DOM\n */\nexport function createCanvas(text?: string, attrs?: CanvasAttrs): ElementOf<typeof CANVAS_TAG> {\n return createElement(CANVAS_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance canvas 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 enhanceCanvases(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for canvas.\n void root;\n}\n"],"mappings":"2MA+Da,EAAa,SAOb,EAAkB,SA4C/B,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,QAAO,SAAQ,GAAG,GAAS,EAEnC,EAAsB,CAAE,GAAG,EAAM,CAEjC,EAA+C,EAAE,CAevD,OAdI,OAAO,GAAM,OAAU,WAAU,EAAW,MAAQ,EAAK,OACzD,OAAO,GAAM,YAAe,WAAU,EAAW,WAAa,EAAK,YACnE,OAAO,GAAM,QAAW,YAAW,EAAW,OAAS,EAAK,QAE5D,OAAO,KAAK,EAAW,CAAC,OAAS,IAAG,EAAO,KAAO,IAGlD,OAAO,GAAU,UAAY,OAAO,GAAW,YACjD,EAAO,MAAQ,CAAE,GAAI,EAAO,OAAS,EAAE,CAAG,CAEtC,OAAO,GAAU,WAAU,EAAO,MAAM,MAAQ,GAChD,OAAO,GAAW,WAAU,EAAO,MAAM,OAAS,IAGjD,EAgCT,SAAgB,EAAa,EAAe,EAAmD,CAC7F,OAAO,EAAA,EAAc,EAAY,EAAc,EAAM,CAAE,EAAK,CAqB9D,SAAgB,EAAgB,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({EMBED_SELECTOR:()=>r,EMBED_TAG:()=>n,createEmbed:()=>o,enhanceEmbeds:()=>s}),n=`embed`,r=`embed`;function i(e,t){if(e==null)return;if(typeof e==`number`){if(!Number.isFinite(e)||e<0)throw Error(`Invalid ${t}: must be a finite, non-negative number.`);return String(Math.floor(e))}let n=String(e).trim();if(n.length!==0){if(n.includes(`%`))throw Error(`Invalid ${t}: percentages are not allowed for <embed> ${t}.`);if(!/^\d+$/.test(n))throw Error(`Invalid ${t}: must be a non-negative integer (CSS pixels).`);return n}}function a(e){if(!e)return;let{aria:t,src:n,type:r,width:a,height:o,attrs:s,...c}=e,l=t?(()=>{let e={};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})():void 0,u=i(a,`width`),d=i(o,`height`),f=(()=>{let e={...s??{}};return typeof n==`string`&&n.length>0&&(e.src=n),typeof r==`string`&&r.length>0&&(e.type=r),typeof u==`string`&&(e.width=u),typeof d==`string`&&(e.height=d),Object.keys(e).length>0?e:void 0})();return{...c,...l?{aria:l}:null,...f?{attrs:f}:null}}function o(t){return e.r(n,a(t))}function s(e=document){}exports.EMBED_SELECTOR=r,exports.EMBED_TAG=n,exports.createEmbed=o,exports.enhanceEmbeds=s,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=embed.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.cjs","names":[],"sources":["../../../../../src/elements/media/embed/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Embed element helpers.\n *\n * @remarks\n * The embed element (`<embed>`) embeds external content at a point in the\n * document. Historically this was often browser plug-ins; modern browsers have\n * largely removed plug-in support, so relying on `<embed>` is frequently a poor\n * choice for general-purpose sites. Prefer purpose-built elements when possible\n * (e.g. `<img>`, `<video>`, `<audio>`, `<iframe>`, or `<object>` depending on the use case).\n *\n * Best-practice guidance:\n * - Prefer native elements over `<embed>` when there is a semantic alternative.\n * - Use the `title` attribute to label embedded content for assistive technology.\n * - `width`/`height` should be absolute pixel values (no percentages).\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create embed nodes 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 {\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 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 embed.\n *\n * @category Constants\n */\nexport const EMBED_TAG = 'embed' as const;\n\n/**\n * A CSS selector targeting embed elements.\n *\n * @category Constants\n */\nexport const EMBED_SELECTOR = 'embed';\n\n/**\n * Attribute bag for embed creation/enhancement.\n *\n * @remarks\n * `<embed>` supports global attributes plus:\n * - `src` (URL)\n * - `type` (MIME type)\n * - `width` / `height` (absolute pixel values; percentages are invalid)\n *\n * Accessibility:\n * - Provide a `title` (global attribute) to label the embedded content.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, mapped into\n * `aria-*` attributes.\n *\n * @category Attributes\n */\nexport type EmbedAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * URL of the resource being embedded.\n */\n src?: string;\n\n /**\n * MIME type used to select the appropriate handler.\n */\n type?: string;\n\n /**\n * Displayed width in CSS pixels (absolute; percentages are not allowed).\n */\n width?: number | string;\n\n /**\n * Displayed height in CSS pixels (absolute; percentages are not allowed).\n */\n height?: number | string;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize an HTML dimension attribute value.\n *\n * @remarks\n * MDN notes `width`/`height` must be absolute values (percentages are invalid).\n * HTML attribute values for these are effectively numeric pixel counts.\n *\n * @param v - The provided dimension.\n * @param name - Attribute name for error messages.\n * @returns A stringified non-negative integer, or `undefined` if not provided.\n *\n * @category Internal\n */\nfunction normalizeDim(v: EmbedAttrs['width'], name: 'width' | 'height'): string | undefined {\n if (v === undefined || v === null) return undefined;\n\n if (typeof v === 'number') {\n if (!Number.isFinite(v) || v < 0) {\n throw new Error(`Invalid ${name}: must be a finite, non-negative number.`);\n }\n // HTML width/height attributes are integer-like; normalize safely.\n return String(Math.floor(v));\n }\n\n const s = String(v).trim();\n\n if (s.length === 0) return undefined;\n\n if (s.includes('%')) {\n throw new Error(`Invalid ${name}: percentages are not allowed for <embed> ${name}.`);\n }\n\n if (!/^\\d+$/.test(s)) {\n throw new Error(`Invalid ${name}: must be a non-negative integer (CSS pixels).`);\n }\n\n return s;\n}\n\n/**\n * Normalize {@link EmbedAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The embed attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: EmbedAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, src, type, width, height, attrs: extraAttrs, ...rest } = attrs;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> | undefined = aria\n ? (() => {\n const a: NonNullable<GlobalAttrs['aria']> = {};\n if (typeof aria.label === 'string') a.label = aria.label;\n if (typeof aria.labelledby === 'string') a.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') a.hidden = aria.hidden;\n return Object.keys(a).length > 0 ? a : undefined;\n })()\n : undefined;\n\n const w = normalizeDim(width, 'width');\n const h = normalizeDim(height, 'height');\n\n const mergedAttrs: Record<string, AttrValue> | undefined = (() => {\n const a: Record<string, AttrValue> = { ...(extraAttrs ?? {}) };\n\n if (typeof src === 'string' && src.length > 0) a.src = src;\n if (typeof type === 'string' && type.length > 0) a.type = type;\n\n if (typeof w === 'string') a.width = w;\n if (typeof h === 'string') a.height = h;\n\n return Object.keys(a).length > 0 ? a : undefined;\n })();\n\n const mapped: GlobalAttrs = {\n ...rest,\n ...(mappedAria ? { aria: mappedAria } : null),\n ...(mergedAttrs ? { attrs: mergedAttrs } : null),\n };\n\n return mapped;\n}\n\n/**\n * Create an embed element and apply attributes.\n *\n * @remarks\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 `<embed>` element.\n *\n * @example\n * ```ts\n * import { createEmbed } from \"@lnpg/pkgn-sol/elements/media/embed\";\n *\n * document.body.appendChild(\n * createEmbed({ src: \"/files/manual.pdf\", type: \"application/pdf\", title: \"User manual\" })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createEmbed(attrs?: EmbedAttrs): ElementOf<typeof EMBED_TAG> {\n return createVoidElement(EMBED_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance embed 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 enhanceEmbeds(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for embed.\n void root;\n}\n"],"mappings":"sMAmEa,EAAY,QAOZ,EAAiB,QA2D9B,SAAS,EAAa,EAAwB,EAA8C,CAC1F,GAAI,GAAyB,KAAM,OAEnC,GAAI,OAAO,GAAM,SAAU,CACzB,GAAI,CAAC,OAAO,SAAS,EAAE,EAAI,EAAI,EAC7B,MAAU,MAAM,WAAW,EAAK,0CAA0C,CAG5E,OAAO,OAAO,KAAK,MAAM,EAAE,CAAC,CAG9B,IAAM,EAAI,OAAO,EAAE,CAAC,MAAM,CAEtB,KAAE,SAAW,EAEjB,IAAI,EAAE,SAAS,IAAI,CACjB,MAAU,MAAM,WAAW,EAAK,4CAA4C,EAAK,GAAG,CAGtF,GAAI,CAAC,QAAQ,KAAK,EAAE,CAClB,MAAU,MAAM,WAAW,EAAK,gDAAgD,CAGlF,OAAO,GAWT,SAAS,EAAc,EAA6C,CAClE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,MAAK,OAAM,QAAO,SAAQ,MAAO,EAAY,GAAG,GAAS,EAEjE,EAA2D,OACtD,CACL,IAAM,EAAsC,EAAE,CAI9C,OAHI,OAAO,EAAK,OAAU,WAAU,EAAE,MAAQ,EAAK,OAC/C,OAAO,EAAK,YAAe,WAAU,EAAE,WAAa,EAAK,YACzD,OAAO,EAAK,QAAW,YAAW,EAAE,OAAS,EAAK,QAC/C,OAAO,KAAK,EAAE,CAAC,OAAS,EAAI,EAAI,IAAA,MACrC,CACJ,IAAA,GAEE,EAAI,EAAa,EAAO,QAAQ,CAChC,EAAI,EAAa,EAAQ,SAAS,CAElC,OAA4D,CAChE,IAAM,EAA+B,CAAE,GAAI,GAAc,EAAE,CAAG,CAQ9D,OANI,OAAO,GAAQ,UAAY,EAAI,OAAS,IAAG,EAAE,IAAM,GACnD,OAAO,GAAS,UAAY,EAAK,OAAS,IAAG,EAAE,KAAO,GAEtD,OAAO,GAAM,WAAU,EAAE,MAAQ,GACjC,OAAO,GAAM,WAAU,EAAE,OAAS,GAE/B,OAAO,KAAK,EAAE,CAAC,OAAS,EAAI,EAAI,IAAA,MACrC,CAQJ,MAAO,CALL,GAAG,EACH,GAAI,EAAa,CAAE,KAAM,EAAY,CAAG,KACxC,GAAI,EAAc,CAAE,MAAO,EAAa,CAAG,KAGtC,CAyBT,SAAgB,EAAY,EAAiD,CAC3E,OAAO,EAAA,EAAkB,EAAW,EAAc,EAAM,CAAC,CAa3D,SAAgB,EAAc,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({IFRAME_SELECTOR:()=>r,IFRAME_TAG:()=>n,createIFrame:()=>a,enhanceIFrames:()=>o}),n=`iframe`,r=`iframe`;function i(e){if(!e)return;let{aria:t,src:n,srcdoc:r,name:i,sandbox:a,allow:o,allowFullScreen:s,loading:c,referrerPolicy:l,width:u,height:d,fetchPriority:f,csp:p,credentialless:m,...h}=e,g={...h.attrs??{}},_=(e,t)=>{t!==void 0&&(Object.prototype.hasOwnProperty.call(g,e)||(g[e]=t))};_(`src`,n),_(`srcdoc`,r),_(`name`,i),_(`sandbox`,a),_(`allow`,o),_(`loading`,c),_(`referrerpolicy`,l),_(`width`,u),_(`height`,d),_(`fetchpriority`,f),_(`csp`,p),s===!0&&_(`allowfullscreen`,``),m===!0&&_(`credentialless`,``);let v={};t&&(typeof t.label==`string`&&(v.label=t.label),typeof t.labelledby==`string`&&(v.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(v.hidden=t.hidden));let y=Object.keys(v).length>0,b=Object.keys(g).length>0,x={...h};return b&&(x.attrs=g),y&&(x.aria=v),x}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.IFRAME_SELECTOR=r,exports.IFRAME_TAG=n,exports.createIFrame=a,exports.enhanceIFrames=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=iframe.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframe.cjs","names":[],"sources":["../../../../../src/elements/media/iframe/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: IFrame element helpers.\n *\n * @remarks\n * The iframe element (`<iframe>`) embeds another HTML page into the current page.\n *\n * Best-practice guidance:\n * - Prefer `<iframe>` only when you truly need third-party or isolated documents.\n * - Consider `loading=\"lazy\"` for non-critical iframes to reduce initial load cost.\n * - Use `sandbox` with the least permissions possible when embedding untrusted content.\n * - Prefer restrictive `referrerpolicy` when embedding third-party content.\n * - Provide a meaningful `title` for accessibility (screen readers use it to identify the frame).\n * - Avoid obsolete attributes like `frameborder`; use CSS instead.\n *\n * Security notes:\n * - `srcdoc` embeds HTML directly. pkgn-sol does not sanitize or validate it.\n * If you build `srcdoc` from untrusted input, that is on you (and your incident report).\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create iframes 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, type AttrValue } 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 * The semantic tag name for iframe embeds.\n *\n * @category Constants\n */\nexport const IFRAME_TAG = 'iframe' as const;\n\n/**\n * A CSS selector targeting iframe elements.\n *\n * @category Constants\n */\nexport const IFRAME_SELECTOR = 'iframe';\n\n/**\n * Allowed values for the iframe `loading` attribute.\n *\n * @category Types\n */\nexport type IFrameLoading = 'eager' | 'lazy';\n\n/**\n * Allowed values for the iframe `referrerpolicy` attribute.\n *\n * @category Types\n */\nexport type IFrameReferrerPolicy =\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url';\n\n/**\n * Allowed values for the `fetchpriority` attribute.\n *\n * @category Types\n */\nexport type FetchPriority = 'high' | 'low' | 'auto';\n\n/**\n * Attribute bag for iframe creation/enhancement.\n *\n * @remarks\n * Iframes accept standard HTML global attributes plus iframe-specific 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 * @category Attributes\n */\nexport type IFrameAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Address of the document to embed.\n */\n src?: string;\n\n /**\n * Inline HTML to render within the iframe.\n *\n * @remarks\n * pkgn-sol does not sanitize `srcdoc`.\n */\n srcdoc?: string;\n\n /**\n * A name for the browsing context.\n */\n name?: string;\n\n /**\n * A space-separated list of sandbox tokens.\n *\n * @remarks\n * Use the least permissive sandbox you can.\n */\n sandbox?: string;\n\n /**\n * Permissions policy for the iframe (previously \"feature policy\").\n *\n * @remarks\n * Example: `allow=\"fullscreen; geolocation 'none'\"`.\n */\n allow?: string;\n\n /**\n * Whether fullscreen is allowed.\n *\n * @remarks\n * Mirrors the `allowfullscreen` boolean attribute.\n */\n allowFullScreen?: boolean;\n\n /**\n * Whether the iframe should be loaded lazily or eagerly.\n */\n loading?: IFrameLoading;\n\n /**\n * Referrer policy for requests made by the iframe.\n */\n referrerPolicy?: IFrameReferrerPolicy;\n\n /**\n * Display width, in CSS pixels.\n */\n width?: number | string;\n\n /**\n * Display height, in CSS pixels.\n */\n height?: number | string;\n\n /**\n * Fetch priority hint.\n */\n fetchPriority?: FetchPriority;\n\n /**\n * Content Security Policy to apply to the embedded document.\n *\n * @remarks\n * Support varies by browser and context.\n */\n csp?: string;\n\n /**\n * Whether to use a credentialless iframe (privacy-oriented isolation).\n *\n * @remarks\n * Mirrors the `credentialless` boolean attribute where supported.\n */\n credentialless?: boolean;\n};\n\n/**\n * Normalize {@link IFrameAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The iframe attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: IFrameAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const {\n aria,\n src,\n srcdoc,\n name,\n sandbox,\n allow,\n allowFullScreen,\n loading,\n referrerPolicy,\n width,\n height,\n fetchPriority,\n csp,\n credentialless,\n ...rest\n } = attrs;\n\n // Start with any caller-provided attrs escape hatch (it is still validated by dom.ts).\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n // Helper: only set if caller didn't already set the raw attribute explicitly.\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('src', src);\n setIfUnset('srcdoc', srcdoc);\n setIfUnset('name', name);\n setIfUnset('sandbox', sandbox);\n setIfUnset('allow', allow);\n setIfUnset('loading', loading);\n setIfUnset('referrerpolicy', referrerPolicy);\n setIfUnset('width', width);\n setIfUnset('height', height);\n setIfUnset('fetchpriority', fetchPriority);\n setIfUnset('csp', csp);\n\n // Boolean attributes are represented by presence. We set empty-string when true.\n if (allowFullScreen === true) setIfUnset('allowfullscreen', '');\n if (credentialless === true) setIfUnset('credentialless', '');\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 hasMappedAria = Object.keys(mappedAria).length > 0;\n const hasMergedAttrs = Object.keys(mergedAttrs).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 an iframe element with optional fallback text and attributes.\n *\n * @remarks\n * - Fallback text 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 fallback text content for the iframe (rarely used, but valid).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<iframe>` element.\n *\n * @example\n * ```ts\n * import { createIFrame } from \"@lnpg/pkgn-sol/elements/media/iframe\";\n *\n * document.body.appendChild(\n * createIFrame(undefined, {\n * title: \"Embedded map\",\n * src: \"https://example.com/map\",\n * loading: \"lazy\",\n * sandbox: \"allow-scripts allow-same-origin\"\n * })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createIFrame(text?: string, attrs?: IFrameAttrs): ElementOf<typeof IFRAME_TAG> {\n return createElement(IFRAME_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance iframe 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 enhanceIFrames(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for iframe.\n void root;\n}\n"],"mappings":"0MAiEa,EAAa,SAOb,EAAkB,SA4I/B,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAAO,OAEZ,GAAM,CACJ,OACA,MACA,SACA,OACA,UACA,QACA,kBACA,UACA,iBACA,QACA,SACA,gBACA,MACA,iBACA,GAAG,GACD,EAGE,EAAyC,CAAE,GAAI,EAAK,OAAS,EAAE,CAAG,CAGlE,GAAc,EAAa,IAAuC,CAClE,IAAU,IAAA,KACV,OAAO,UAAU,eAAe,KAAK,EAAa,EAAI,GAC1D,EAAY,GAAO,KAGrB,EAAW,MAAO,EAAI,CACtB,EAAW,SAAU,EAAO,CAC5B,EAAW,OAAQ,EAAK,CACxB,EAAW,UAAW,EAAQ,CAC9B,EAAW,QAAS,EAAM,CAC1B,EAAW,UAAW,EAAQ,CAC9B,EAAW,iBAAkB,EAAe,CAC5C,EAAW,QAAS,EAAM,CAC1B,EAAW,SAAU,EAAO,CAC5B,EAAW,gBAAiB,EAAc,CAC1C,EAAW,MAAO,EAAI,CAGlB,IAAoB,IAAM,EAAW,kBAAmB,GAAG,CAC3D,IAAmB,IAAM,EAAW,iBAAkB,GAAG,CAE7D,IAAM,EAA+C,EAAE,CACnD,IACE,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,SAGjE,IAAM,EAAgB,OAAO,KAAK,EAAW,CAAC,OAAS,EACjD,EAAiB,OAAO,KAAK,EAAY,CAAC,OAAS,EAEnD,EAAoB,CAAE,GAAG,EAAM,CAIrC,OAHI,IAAgB,EAAK,MAAQ,GAC7B,IAAe,EAAK,KAAO,GAExB,EAgCT,SAAgB,EAAa,EAAe,EAAmD,CAC7F,OAAO,EAAA,EAAc,EAAY,EAAc,EAAM,CAAE,EAAK,CAqB9D,SAAgB,EAAe,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({IMG_SELECTOR:()=>`img`,IMG_TAG:()=>`img`,createImg:()=>a,enhanceImgs:()=>o}),n=`img`,r=`img`;function i(e){let{aria:t,alt:n,src:r,srcset:i,sizes:a,width:o,height:s,loading:c,decoding:l,referrerPolicy:u,...d}=e??{},f={...d},p={};t&&(typeof t.label==`string`&&(p.label=t.label),typeof t.labelledby==`string`&&(p.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(p.hidden=t.hidden)),Object.keys(p).length>0&&(f.aria=p),f.attrs={...f.attrs??{},alt:typeof n==`string`?n:``};let m=typeof r==`string`&&r.length>0,h=typeof i==`string`&&i.length>0;return m&&(f.attrs.src=r),h&&(f.attrs.srcset=i),a&&(f.attrs.sizes=a),typeof o==`number`&&(f.attrs.width=o),typeof s==`number`&&(f.attrs.height=s),c&&(f.attrs.loading=c),l&&(f.attrs.decoding=l),u&&(f.attrs.referrerpolicy=u),!m&&!h&&(f.attrs.src=`data:,`),f}function a(t){return e.r(`img`,i(t))}function o(e=document){}exports.IMG_SELECTOR=r,exports.IMG_TAG=n,exports.createImg=a,exports.enhanceImgs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=img.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"img.cjs","names":[],"sources":["../../../../../src/elements/media/img/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Img element helpers.\n *\n * @remarks\n * The img element (`<img>`) embeds an image into the document.\n *\n * Best-practice guidance:\n * - The `alt` attribute must always be present.\n * - Use `alt=\"\"` for purely decorative images.\n * - Provide meaningful alternative text for informative images.\n * - Do not rely on images alone to convey critical information.\n *\n * This module enforces:\n * - `alt` always exists (defaults to empty string if not provided)\n * - If neither `src` nor `srcset` is provided, a safe fallback\n * `src=\"data:,\"` is applied to avoid broken network requests\n * - All global attributes are applied via pkgn-sol's hardened DOM helpers\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 { createVoidElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n label?: string;\n labelledby?: string;\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for images.\n *\n * @category Constants\n */\nexport const IMG_TAG = 'img' as const;\n\n/**\n * A CSS selector targeting img elements.\n *\n * @category Constants\n */\nexport const IMG_SELECTOR = 'img';\n\n/**\n * Img-specific attributes.\n *\n * @remarks\n * `alt` is mandatory per HTML specification.\n *\n * @category Attributes\n */\nexport type ImgAttrs = Omit<GlobalAttrs, 'aria'> & {\n alt?: string;\n src?: string;\n srcset?: string;\n sizes?: string;\n width?: number;\n height?: number;\n loading?: 'lazy' | 'eager';\n decoding?: 'sync' | 'async' | 'auto';\n referrerPolicy?: string;\n aria?: StructuredAria;\n};\n\nfunction toGlobalAttrs(attrs?: ImgAttrs): GlobalAttrs {\n const {\n aria,\n alt,\n src,\n srcset,\n sizes,\n width,\n height,\n loading,\n decoding,\n referrerPolicy,\n ...rest\n } = attrs ?? {};\n\n const mapped: GlobalAttrs = { ...rest };\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\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 if (Object.keys(mappedAria).length > 0) {\n mapped.aria = mappedAria;\n }\n\n mapped.attrs = {\n ...(mapped.attrs ?? {}),\n alt: typeof alt === 'string' ? alt : '',\n };\n\n const hasSrc = typeof src === 'string' && src.length > 0;\n const hasSrcset = typeof srcset === 'string' && srcset.length > 0;\n\n if (hasSrc) mapped.attrs.src = src;\n if (hasSrcset) mapped.attrs.srcset = srcset;\n if (sizes) mapped.attrs.sizes = sizes;\n if (typeof width === 'number') mapped.attrs.width = width;\n if (typeof height === 'number') mapped.attrs.height = height;\n if (loading) mapped.attrs.loading = loading;\n if (decoding) mapped.attrs.decoding = decoding;\n if (referrerPolicy) mapped.attrs.referrerpolicy = referrerPolicy;\n\n if (!hasSrc && !hasSrcset) {\n mapped.attrs.src = 'data:,';\n }\n\n return mapped;\n}\n\n/**\n * Create an img element with enforced accessibility safeguards.\n *\n * @category DOM\n */\nexport function createImg(attrs?: ImgAttrs): ElementOf<typeof IMG_TAG> {\n return createVoidElement(IMG_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance img elements within a given root.\n *\n * @remarks\n * No runtime behaviour in v0.1.0.\n *\n * @category Enhancement\n */\nexport function enhanceImgs(root: ParentNode = document): void {\n void root;\n}\n"],"mappings":"sMA2Ca,EAAU,MAOV,EAAe,MAuB5B,SAAS,EAAc,EAA+B,CACpD,GAAM,CACJ,OACA,MACA,MACA,SACA,QACA,QACA,SACA,UACA,WACA,iBACA,GAAG,GACD,GAAS,EAAE,CAET,EAAsB,CAAE,GAAG,EAAM,CAEjC,EAA+C,EAAE,CAEnD,IACE,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,SAG7D,OAAO,KAAK,EAAW,CAAC,OAAS,IACnC,EAAO,KAAO,GAGhB,EAAO,MAAQ,CACb,GAAI,EAAO,OAAS,EAAE,CACtB,IAAK,OAAO,GAAQ,SAAW,EAAM,GACtC,CAED,IAAM,EAAS,OAAO,GAAQ,UAAY,EAAI,OAAS,EACjD,EAAY,OAAO,GAAW,UAAY,EAAO,OAAS,EAehE,OAbI,IAAQ,EAAO,MAAM,IAAM,GAC3B,IAAW,EAAO,MAAM,OAAS,GACjC,IAAO,EAAO,MAAM,MAAQ,GAC5B,OAAO,GAAU,WAAU,EAAO,MAAM,MAAQ,GAChD,OAAO,GAAW,WAAU,EAAO,MAAM,OAAS,GAClD,IAAS,EAAO,MAAM,QAAU,GAChC,IAAU,EAAO,MAAM,SAAW,GAClC,IAAgB,EAAO,MAAM,eAAiB,GAE9C,CAAC,GAAU,CAAC,IACd,EAAO,MAAM,IAAM,UAGd,EAQT,SAAgB,EAAU,EAA6C,CACrE,OAAO,EAAA,EAAA,MAA2B,EAAc,EAAM,CAAC,CAWzD,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({MATH_SELECTOR:()=>r,MATH_TAG:()=>n,createMath:()=>a,enhanceMath:()=>o}),n=`math`,r=`math`;function i(e){let{aria:t,display:n,attrs:r,tabIndex:i,...a}=e??{},o={...a},s={};typeof t?.label==`string`&&(s.label=t.label),typeof t?.labelledby==`string`&&(s.labelledby=t.labelledby),typeof t?.hidden==`boolean`?s.hidden=t.hidden:s.hidden=!0,Object.keys(s).length>0&&(o.aria=s),typeof i==`number`?o.tabIndex=i:o.tabIndex=-1;let c={...r??{}};return n&&(c.display=n),Object.keys(c).length>0&&(o.attrs=c),o}function a(t,r){let a=document.createElement(n);return e.t(a,i(r)),typeof t==`string`&&(a.textContent=t),a}function o(e=document){}exports.MATH_SELECTOR=r,exports.MATH_TAG=n,exports.createMath=a,exports.enhanceMath=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=math.cjs.map