@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 @@
1
+ {"version":3,"file":"math.cjs","names":[],"sources":["../../../../../src/elements/media/math/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Math element helpers.\n *\n * @remarks\n * The MathML math element (`<math>`) represents mathematical notation.\n *\n * Best-practice guidance:\n * - Prefer real MathML over images for math content when possible.\n * - Use `display=\"block\"` for standalone equations; inline math remains the default.\n * - Do not rely on raw attribute injection for behavior; keep markup semantic.\n *\n * Accessibility defaults for pkgn-sol v0.1.0:\n * - `<math>` is treated as decorative by default:\n * - `aria-hidden=\"true\"`\n * - `tabIndex = -1`\n * - If consumers provide explicit overrides (e.g. `aria.hidden`, `tabIndex`), pkgn-sol\n * respects them.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create MathML roots 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 { applyGlobalAttrs, 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 MathML roots.\n *\n * @category Constants\n */\nexport const MATH_TAG = 'math' as const;\n\n/**\n * A CSS selector targeting math elements.\n *\n * @category Constants\n */\nexport const MATH_SELECTOR = 'math';\n\n/**\n * Attribute bag for math creation/enhancement.\n *\n * @remarks\n * MathML `<math>` supports the `display` attribute:\n * - `inline` (default)\n * - `block`\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 MathAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * MathML display mode.\n *\n * @remarks\n * `block` renders as a block-level equation, `inline` renders inline.\n */\n display?: 'block' | 'inline';\n};\n\n/**\n * Normalize {@link MathAttrs} into {@link GlobalAttrs} for `dom.ts`,\n * applying pkgn-sol's MathML accessibility defaults.\n *\n * @param attrs - The math attributes.\n * @returns A {@link GlobalAttrs} object (always returned to support defaults).\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: MathAttrs): GlobalAttrs {\n const { aria, display, attrs: rawAttrs, tabIndex, ...rest } = attrs ?? {};\n\n const mapped: GlobalAttrs = { ...rest };\n\n // Decorative by default, unless explicitly overridden.\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\n const explicitAriaHidden = typeof aria?.hidden === 'boolean';\n if (explicitAriaHidden) {\n mappedAria.hidden = aria.hidden!;\n } else {\n mappedAria.hidden = true;\n }\n\n if (Object.keys(mappedAria).length > 0) {\n mapped.aria = mappedAria;\n }\n\n if (typeof tabIndex === 'number') {\n mapped.tabIndex = tabIndex;\n } else {\n mapped.tabIndex = -1;\n }\n\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rawAttrs ?? {}) };\n\n if (display) mergedAttrs.display = display;\n\n if (Object.keys(mergedAttrs).length > 0) {\n mapped.attrs = mergedAttrs;\n }\n\n return mapped;\n}\n\n/**\n * Create a MathML `<math>` 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 * Note: `<math>` is not part of {@link HTMLElementTagNameMap}, so pkgn-sol creates it\n * via `document.createElement(\"math\")` and narrows the type to {@link MathMLElement}.\n *\n * @param text - Optional text content for the math element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<math>` element.\n *\n * @category DOM\n */\nexport function createMath(text?: string, attrs?: MathAttrs): MathMLElement {\n const el = document.createElement(MATH_TAG) as unknown as MathMLElement;\n\n applyGlobalAttrs(el as unknown as HTMLElement, toGlobalAttrs(attrs));\n\n if (typeof text === 'string') (el as unknown as Node).textContent = text;\n\n return el;\n}\n\n/**\n * Enhance math 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 enhanceMath(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for math.\n void root;\n}\n"],"mappings":"iMAiEa,EAAW,OAOX,EAAgB,OAuC7B,SAAS,EAAc,EAAgC,CACrD,GAAM,CAAE,OAAM,UAAS,MAAO,EAAU,WAAU,GAAG,GAAS,GAAS,EAAE,CAEnE,EAAsB,CAAE,GAAG,EAAM,CAGjC,EAA+C,EAAE,CAEnD,OAAO,GAAM,OAAU,WAAU,EAAW,MAAQ,EAAK,OACzD,OAAO,GAAM,YAAe,WAAU,EAAW,WAAa,EAAK,YAE5C,OAAO,GAAM,QAAW,UAEjD,EAAW,OAAS,EAAK,OAEzB,EAAW,OAAS,GAGlB,OAAO,KAAK,EAAW,CAAC,OAAS,IACnC,EAAO,KAAO,GAGZ,OAAO,GAAa,SACtB,EAAO,SAAW,EAElB,EAAO,SAAW,GAGpB,IAAM,EAAiD,CAAE,GAAI,GAAY,EAAE,CAAG,CAQ9E,OANI,IAAS,EAAY,QAAU,GAE/B,OAAO,KAAK,EAAY,CAAC,OAAS,IACpC,EAAO,MAAQ,GAGV,EAqBT,SAAgB,EAAW,EAAe,EAAkC,CAC1E,IAAM,EAAK,SAAS,cAAc,EAAS,CAM3C,OAJA,EAAA,EAAiB,EAA8B,EAAc,EAAM,CAAC,CAEhE,OAAO,GAAS,WAAU,EAAwB,YAAc,GAE7D,EAqBT,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../chunks/dom.cjs`),t=require(`./img/img.cjs`),n=require(`./svg/svg.cjs`),r=require(`./math/math.cjs`),i=require(`./canvas/canvas.cjs`),a=require(`./iframe/iframe.cjs`),o=require(`./embed/embed.cjs`),s=require(`./object/object.cjs`),c=require(`./video/video.cjs`),l=require(`./audio/audio.cjs`);var u=e.i({audio:()=>l.t,canvas:()=>i.t,embed:()=>o.t,iframe:()=>a.t,img:()=>t.t,math:()=>r.t,object:()=>s.t,svg:()=>n.t,video:()=>c.t});Object.defineProperty(exports,`audio`,{enumerable:!0,get:function(){return l.t}}),Object.defineProperty(exports,`canvas`,{enumerable:!0,get:function(){return i.t}}),Object.defineProperty(exports,`embed`,{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,`iframe`,{enumerable:!0,get:function(){return a.t}}),Object.defineProperty(exports,`img`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`math`,{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,`object`,{enumerable:!0,get:function(){return s.t}}),Object.defineProperty(exports,`svg`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`video`,{enumerable:!0,get:function(){return c.t}});
2
+ //# sourceMappingURL=media.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.cjs","names":[],"sources":["../../../../src/elements/media/index.ts"],"sourcesContent":["/**\n * Media element factories.\n *\n * Provides framework-agnostic factory functions for embedded, graphical,\n * and time-based media elements.\n *\n * These factories:\n * - Create semantic HTML media elements using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Apply sensible fallbacks where required by the HTML specification.\n * - Prevent unsafe attribute injection.\n *\n * @module elements/media\n * @since 0.1.0\n */\n\n/**\n * `<img>` element factory namespace.\n *\n * Embeds raster images into the document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img\n */\nexport * as img from './img';\n\n/**\n * `<svg>` element factory namespace.\n *\n * Embeds scalable vector graphics content.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/svg\n */\nexport * as svg from './svg';\n\n/**\n * `<math>` element factory namespace.\n *\n * Embeds MathML content for mathematical notation.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/math\n */\nexport * as math from './math';\n\n/**\n * `<canvas>` element factory namespace.\n *\n * Provides a bitmap rendering surface for scripted drawing.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas\n */\nexport * as canvas from './canvas';\n\n/**\n * `<iframe>` element factory namespace.\n *\n * Embeds another HTML page within the current document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n */\nexport * as iframe from './iframe';\n\n/**\n * `<embed>` element factory namespace.\n *\n * Embeds external content such as plugins or media resources.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed\n */\nexport * as embed from './embed';\n\n/**\n * `<object>` element factory namespace.\n *\n * Embeds external resources such as images, PDFs, or interactive content.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object\n */\nexport * as object from './object';\n\n/**\n * `<video>` element factory namespace.\n *\n * Embeds time-based video media.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video\n */\nexport * as video from './video';\n\n/**\n * `<audio>` element factory namespace.\n *\n * Embeds time-based audio media.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio\n */\nexport * as audio from './audio';\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({OBJECT_SELECTOR:()=>r,OBJECT_TAG:()=>n,createObject:()=>o,enhanceObjects:()=>s}),n=`object`,r=`object`;function i(e,t){if(typeof t==`number`){if(!Number.isFinite(t)||t<0||!Number.isInteger(t))throw Error(`Invalid ${e}: expected a non-negative integer.`);return String(t)}if(!/^\d+$/.test(t))throw Error(`Invalid ${e}: expected a numeric string.`);return t}function a(e){if(!e)return{attrs:{data:`about:blank`}};let{aria:t,data:n,type:r,name:a,form:o,width:s,height:c,attrs:l,...u}=e,d={};t&&(typeof t.label==`string`&&(d.label=t.label),typeof t.labelledby==`string`&&(d.labelledby=t.labelledby),typeof t.describedby==`string`&&(d.describedby=t.describedby),typeof t.hidden==`boolean`&&(d.hidden=t.hidden));let f={...l??{}};typeof n==`string`&&n.length>0&&(f.data=n),typeof r==`string`&&r.length>0&&(f.type=r),f.data===void 0&&f.type===void 0&&(f.data=`about:blank`),typeof a==`string`&&a.length>0&&(f.name=a),typeof o==`string`&&o.length>0&&(f.form=o),s!==void 0&&(f.width=i(`width`,s)),c!==void 0&&(f.height=i(`height`,c));let p=Object.keys(d).length>0,m=Object.keys(f).length>0;return{...u,...p?{aria:d}:null,...m?{attrs:f}:null}}function o(t,r){return e.n(n,a(r),t)}function s(e=document){}exports.OBJECT_SELECTOR=r,exports.OBJECT_TAG=n,exports.createObject=o,exports.enhanceObjects=s,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=object.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.cjs","names":[],"sources":["../../../../../src/elements/media/object/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Object element helpers.\n *\n * @remarks\n * The object element (`<object>`) embeds external resources (HTML, images, PDFs,\n * SVG, etc.) into the document.\n *\n * Best-practice guidance:\n * - Prefer purpose-built elements when available:\n * - `<img>` for images\n * - `<video>` / `<audio>` for media\n * - `<iframe>` for embedded documents/interactive content (with sandboxing)\n * - Always provide a meaningful fallback inside `<object>` for unsupported content.\n * - Avoid obsolete attributes (e.g. `codebase`, `classid`, `declare`, etc.).\n * - For layout, prefer CSS. If using `width`/`height` attributes, keep them numeric.\n *\n * Attribute guidance:\n * - At least one of `data` or `type` should be provided.\n * - If neither is provided, pkgn-sol falls back to `data=\"about:blank\"` to avoid an\n * \"empty\" embed configuration while staying inert.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create object 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 AttrValue, 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 * ID reference to the describing element(s), mapped to `aria-describedby`.\n */\n describedby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for object embeds.\n *\n * @category Constants\n */\nexport const OBJECT_TAG = 'object' as const;\n\n/**\n * A CSS selector targeting object elements.\n *\n * @category Constants\n */\nexport const OBJECT_SELECTOR = 'object';\n\n/**\n * Dimension values allowed for width/height attributes.\n *\n * @remarks\n * Per best practice, keep these numeric (pixels). Prefer CSS for layout.\n *\n * @category Types\n */\nexport type ObjectDimension = number | `${number}`;\n\n/**\n * Attribute bag for object creation/enhancement.\n *\n * @remarks\n * - `data` and `type` are the primary configuration attributes.\n * - Provide fallback content via `text` or by appending children after creation.\n * - Global attributes are supported, including a structured ARIA input.\n *\n * @category Attributes\n */\nexport type ObjectAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Address of the resource to embed (maps to `data`).\n */\n data?: string;\n\n /**\n * MIME type of the embedded resource (maps to `type`).\n *\n * @example\n * \"text/html\", \"image/svg+xml\", \"application/pdf\"\n */\n type?: string;\n\n /**\n * Name of the object (maps to `name`).\n */\n name?: string;\n\n /**\n * Associate the object with a form (maps to `form`).\n */\n form?: string;\n\n /**\n * Width in CSS pixels (maps to `width`).\n *\n * @remarks\n * Prefer CSS for layout.\n */\n width?: ObjectDimension;\n\n /**\n * Height in CSS pixels (maps to `height`).\n *\n * @remarks\n * Prefer CSS for layout.\n */\n height?: ObjectDimension;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Validate and normalize a width/height value.\n *\n * @param name - Attribute name for error messages.\n * @param v - The provided dimension.\n * @returns A normalized string suitable for attributes.\n *\n * @category Internal\n */\nfunction normalizeDimension(name: 'width' | 'height', v: ObjectDimension): string {\n if (typeof v === 'number') {\n if (!Number.isFinite(v) || v < 0 || !Number.isInteger(v)) {\n throw new Error(`Invalid ${name}: expected a non-negative integer.`);\n }\n return String(v);\n }\n\n // String numeric (template literal), but validate anyway.\n if (!/^\\d+$/.test(v)) {\n throw new Error(`Invalid ${name}: expected a numeric string.`);\n }\n\n return v;\n}\n\n/**\n * Normalize {@link ObjectAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The object attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: ObjectAttrs): GlobalAttrs | undefined {\n if (!attrs) {\n // Best-practice: an object should have at least data or type.\n // We still allow `createObject()` with no args, but keep it inert.\n return { attrs: { data: 'about:blank' } };\n }\n\n const { aria, data, type, name, form, width, height, attrs: extraAttrs, ...rest } = attrs;\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.describedby === 'string') mappedAria.describedby = aria.describedby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const mappedAttrs: Record<string, AttrValue> = { ...(extraAttrs ?? {}) };\n\n // Primary embed configuration.\n if (typeof data === 'string' && data.length > 0) mappedAttrs.data = data;\n if (typeof type === 'string' && type.length > 0) mappedAttrs.type = type;\n\n // Per guidance/spec: at least one of data/type should exist.\n // If neither is provided, keep it inert rather than \"empty\".\n if (mappedAttrs.data === undefined && mappedAttrs.type === undefined) {\n mappedAttrs.data = 'about:blank';\n }\n\n if (typeof name === 'string' && name.length > 0) mappedAttrs.name = name;\n if (typeof form === 'string' && form.length > 0) mappedAttrs.form = form;\n\n if (width !== undefined) mappedAttrs.width = normalizeDimension('width', width);\n if (height !== undefined) mappedAttrs.height = normalizeDimension('height', height);\n\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n const hasMappedAttrs = Object.keys(mappedAttrs).length > 0;\n\n return {\n ...rest,\n ...(hasMappedAria ? { aria: mappedAria } : null),\n ...(hasMappedAttrs ? { attrs: mappedAttrs } : null),\n };\n}\n\n/**\n * Create an object element with optional fallback text and attributes.\n *\n * @remarks\n * - Fallback text is assigned via `textContent` (never `innerHTML`).\n * - For richer fallback, append children after creation.\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 object.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<object>` element.\n *\n * @example\n * ```ts\n * import { createObject } from \"@lnpg/pkgn-sol/elements/media/object\";\n *\n * const obj = createObject(\"Your browser can't display this content.\", {\n * data: \"/docs/guide.pdf\",\n * type: \"application/pdf\",\n * width: 640,\n * height: 480,\n * });\n *\n * document.body.appendChild(obj);\n * ```\n *\n * @category DOM\n */\nexport function createObject(text?: string, attrs?: ObjectAttrs): ElementOf<typeof OBJECT_TAG> {\n return createElement(OBJECT_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance object 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 enhanceObjects(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for object.\n void root;\n}\n"],"mappings":"0MAyEa,EAAa,SAOb,EAAkB,SA6E/B,SAAS,EAAmB,EAA0B,EAA4B,CAChF,GAAI,OAAO,GAAM,SAAU,CACzB,GAAI,CAAC,OAAO,SAAS,EAAE,EAAI,EAAI,GAAK,CAAC,OAAO,UAAU,EAAE,CACtD,MAAU,MAAM,WAAW,EAAK,oCAAoC,CAEtE,OAAO,OAAO,EAAE,CAIlB,GAAI,CAAC,QAAQ,KAAK,EAAE,CAClB,MAAU,MAAM,WAAW,EAAK,8BAA8B,CAGhE,OAAO,EAWT,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAGH,MAAO,CAAE,MAAO,CAAE,KAAM,cAAe,CAAE,CAG3C,GAAM,CAAE,OAAM,OAAM,OAAM,OAAM,OAAM,QAAO,SAAQ,MAAO,EAAY,GAAG,GAAS,EAE9E,EAA+C,EAAE,CACnD,IACE,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,aAAgB,WAAU,EAAW,YAAc,EAAK,aACpE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,SAGjE,IAAM,EAAyC,CAAE,GAAI,GAAc,EAAE,CAAG,CAGpE,OAAO,GAAS,UAAY,EAAK,OAAS,IAAG,EAAY,KAAO,GAChE,OAAO,GAAS,UAAY,EAAK,OAAS,IAAG,EAAY,KAAO,GAIhE,EAAY,OAAS,IAAA,IAAa,EAAY,OAAS,IAAA,KACzD,EAAY,KAAO,eAGjB,OAAO,GAAS,UAAY,EAAK,OAAS,IAAG,EAAY,KAAO,GAChE,OAAO,GAAS,UAAY,EAAK,OAAS,IAAG,EAAY,KAAO,GAEhE,IAAU,IAAA,KAAW,EAAY,MAAQ,EAAmB,QAAS,EAAM,EAC3E,IAAW,IAAA,KAAW,EAAY,OAAS,EAAmB,SAAU,EAAO,EAEnF,IAAM,EAAgB,OAAO,KAAK,EAAW,CAAC,OAAS,EACjD,EAAiB,OAAO,KAAK,EAAY,CAAC,OAAS,EAEzD,MAAO,CACL,GAAG,EACH,GAAI,EAAgB,CAAE,KAAM,EAAY,CAAG,KAC3C,GAAI,EAAiB,CAAE,MAAO,EAAa,CAAG,KAC/C,CAiCH,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({SVG_SELECTOR:()=>`svg`,SVG_TAG:()=>`svg`,createSvg:()=>a,enhanceSvgs:()=>o}),n=`svg`,r=`svg`;function i(e){let{aria:t,viewBox:n,width:r,height:i,role:a,tabIndex:o,attrs:s,...c}=e??{},l={...c};a&&(l.role=a);let u={},d=typeof t?.label==`string`,f=typeof t?.labelledby==`string`,p=typeof t?.hidden==`boolean`;d&&(u.label=t.label),f&&(u.labelledby=t.labelledby),p&&(u.hidden=t.hidden);let m=!d&&!f;m&&!p&&(u.hidden=!0),Object.keys(u).length>0&&(l.aria=u),!m&&!a&&(l.role=`img`),typeof o==`number`?l.tabIndex=o:m&&(l.tabIndex=-1);let h={...s??{}};return m&&(h.focusable=`false`),n&&(h.viewBox=n),r!==void 0&&(h.width=r),i!==void 0&&(h.height=i),Object.keys(h).length>0&&(l.attrs=h),l}function a(t,n){let r=document.createElement(`svg`);return e.t(r,i(n)),typeof t==`string`&&(r.textContent=t),r}function o(e=document){}exports.SVG_SELECTOR=r,exports.SVG_TAG=n,exports.createSvg=a,exports.enhanceSvgs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=svg.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.cjs","names":[],"sources":["../../../../../src/elements/media/svg/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Svg element helpers.\n *\n * @remarks\n * The svg element (`<svg>`) defines scalable vector graphics.\n *\n * pkgn-sol enforces:\n * - Default decorative behaviour:\n * - aria-hidden=\"true\"\n * - tabIndex = -1\n * - focusable=\"false\"\n * - If aria.label or aria.labelledby is provided:\n * - role=\"img\" is added (unless explicitly set)\n * - Explicit overrides for role, aria-hidden and tabIndex are respected.\n *\n * @module\n * @category Elements\n */\n\nimport { applyGlobalAttrs, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input.\n */\nexport type StructuredAria = {\n label?: string;\n labelledby?: string;\n hidden?: boolean;\n};\n\nexport const SVG_TAG = 'svg';\nexport const SVG_SELECTOR = 'svg';\n\nexport type SvgAttrs = Omit<GlobalAttrs, 'aria'> & {\n viewBox?: string;\n width?: number | string;\n height?: number | string;\n aria?: StructuredAria;\n};\n\nfunction toGlobalAttrs(attrs?: SvgAttrs): GlobalAttrs {\n const { aria, viewBox, width, height, role, tabIndex, attrs: rawAttrs, ...rest } = attrs ?? {};\n\n const mapped: GlobalAttrs = { ...rest };\n\n // Preserve explicit role\n if (role) {\n mapped.role = role;\n }\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n const hasLabel = typeof aria?.label === 'string';\n const hasLabelledby = typeof aria?.labelledby === 'string';\n const explicitAriaHidden = typeof aria?.hidden === 'boolean';\n\n if (hasLabel) mappedAria.label = aria.label!;\n if (hasLabelledby) mappedAria.labelledby = aria.labelledby!;\n if (explicitAriaHidden) mappedAria.hidden = aria.hidden!;\n\n const isDecorative = !hasLabel && !hasLabelledby;\n\n if (isDecorative && !explicitAriaHidden) {\n mappedAria.hidden = true;\n }\n\n if (Object.keys(mappedAria).length > 0) {\n mapped.aria = mappedAria;\n }\n\n // Only auto-assign role if user did not provide one\n if (!isDecorative && !role) {\n mapped.role = 'img';\n }\n\n if (typeof tabIndex === 'number') {\n mapped.tabIndex = tabIndex;\n } else if (isDecorative) {\n mapped.tabIndex = -1;\n }\n\n // Merge user attrs with internal attrs\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = {\n ...(rawAttrs ?? {}),\n };\n\n if (isDecorative) {\n mergedAttrs.focusable = 'false';\n }\n\n if (viewBox) mergedAttrs.viewBox = viewBox;\n if (width !== undefined) mergedAttrs.width = width;\n if (height !== undefined) mergedAttrs.height = height;\n\n if (Object.keys(mergedAttrs).length > 0) {\n mapped.attrs = mergedAttrs;\n }\n\n return mapped;\n}\n\n/**\n * Create an SVG element with accessibility defaults.\n */\nexport function createSvg(text?: string, attrs?: SvgAttrs): SVGSVGElement {\n const el = document.createElement('svg') as unknown as SVGSVGElement;\n\n applyGlobalAttrs(el as unknown as HTMLElement, toGlobalAttrs(attrs));\n\n if (typeof text === 'string') {\n el.textContent = text;\n }\n\n return el;\n}\n\n/**\n * No-op enhancement hook.\n */\nexport function enhanceSvgs(root: ParentNode = document): void {\n void root;\n}\n"],"mappings":"sMA8Ba,EAAU,MACV,EAAe,MAS5B,SAAS,EAAc,EAA+B,CACpD,GAAM,CAAE,OAAM,UAAS,QAAO,SAAQ,OAAM,WAAU,MAAO,EAAU,GAAG,GAAS,GAAS,EAAE,CAExF,EAAsB,CAAE,GAAG,EAAM,CAGnC,IACF,EAAO,KAAO,GAGhB,IAAM,EAA+C,EAAE,CAEjD,EAAW,OAAO,GAAM,OAAU,SAClC,EAAgB,OAAO,GAAM,YAAe,SAC5C,EAAqB,OAAO,GAAM,QAAW,UAE/C,IAAU,EAAW,MAAQ,EAAK,OAClC,IAAe,EAAW,WAAa,EAAK,YAC5C,IAAoB,EAAW,OAAS,EAAK,QAEjD,IAAM,EAAe,CAAC,GAAY,CAAC,EAE/B,GAAgB,CAAC,IACnB,EAAW,OAAS,IAGlB,OAAO,KAAK,EAAW,CAAC,OAAS,IACnC,EAAO,KAAO,GAIZ,CAAC,GAAgB,CAAC,IACpB,EAAO,KAAO,OAGZ,OAAO,GAAa,SACtB,EAAO,SAAW,EACT,IACT,EAAO,SAAW,IAIpB,IAAM,EAAiD,CACrD,GAAI,GAAY,EAAE,CACnB,CAcD,OAZI,IACF,EAAY,UAAY,SAGtB,IAAS,EAAY,QAAU,GAC/B,IAAU,IAAA,KAAW,EAAY,MAAQ,GACzC,IAAW,IAAA,KAAW,EAAY,OAAS,GAE3C,OAAO,KAAK,EAAY,CAAC,OAAS,IACpC,EAAO,MAAQ,GAGV,EAMT,SAAgB,EAAU,EAAe,EAAiC,CACxE,IAAM,EAAK,SAAS,cAAc,MAAM,CAQxC,OANA,EAAA,EAAiB,EAA8B,EAAc,EAAM,CAAC,CAEhE,OAAO,GAAS,WAClB,EAAG,YAAc,GAGZ,EAMT,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({VIDEO_SELECTOR:()=>r,VIDEO_TAG:()=>n,createVideo:()=>a,enhanceVideos:()=>o}),n=`video`,r=`video`;function i(e){if(!e)return;let{aria:t,src:n,controls:r,autoplay:i,loop:a,muted:o,playsInline:s,preload:c,poster:l,width:u,height:d,crossOrigin:f,controlsList:p,disablePictureInPicture:m,disableRemotePlayback:h,referrerPolicy:g,fetchPriority:_,...v}=e,y={...v};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&&(y.aria=e)}let b={};return typeof p==`string`&&(b.controlslist=p),Array.isArray(p)&&(b.controlslist=p.join(` `)),typeof g==`string`&&(b.referrerpolicy=g),typeof _==`string`&&(b.fetchpriority=_),typeof m==`boolean`&&(b.disablepictureinpicture=m),typeof h==`boolean`&&(b.disableremoteplayback=h),Object.keys(b).length>0&&(y.attrs=b),y}function a(t,r){let a=e.n(n,i(r),t);return r?(typeof r.src==`string`&&(a.src=r.src),typeof r.controls==`boolean`&&(a.controls=r.controls),typeof r.autoplay==`boolean`&&(a.autoplay=r.autoplay),typeof r.loop==`boolean`&&(a.loop=r.loop),r.autoplay===!0&&typeof r.muted!=`boolean`?a.muted=!0:typeof r.muted==`boolean`&&(a.muted=r.muted),typeof r.playsInline==`boolean`&&(a.playsInline=r.playsInline),typeof r.preload==`string`&&(a.preload=r.preload),typeof r.poster==`string`&&(a.poster=r.poster),typeof r.width==`number`&&(a.width=r.width),typeof r.height==`number`&&(a.height=r.height),typeof r.crossOrigin==`string`&&(a.crossOrigin=r.crossOrigin),a):a}function o(e=document){}exports.VIDEO_SELECTOR=r,exports.VIDEO_TAG=n,exports.createVideo=a,exports.enhanceVideos=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=video.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.cjs","names":[],"sources":["../../../../../src/elements/media/video/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Video element helpers.\n *\n * @remarks\n * The video element (`<video>`) embeds media playback.\n *\n * Best-practice guidance:\n * - Provide user controls (`controls`) unless you have a very strong reason not to.\n * - Autoplay is often blocked when audio is present; if `autoplay` is enabled,\n * videos commonly need to be `muted` to actually autoplay in modern browsers.\n * - Prefer captions/subtitles via `<track>` for accessibility when relevant.\n * - Avoid obsolete attributes; use modern properties/attributes and CSS instead.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create video 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 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 * Token values for the `preload` attribute.\n *\n * @category Attributes\n */\nexport type VideoPreload = 'none' | 'metadata' | 'auto';\n\n/**\n * Token values for the `crossorigin` attribute.\n *\n * @category Attributes\n */\nexport type VideoCrossOrigin = 'anonymous' | 'use-credentials';\n\n/**\n * Token values for the `referrerpolicy` attribute.\n *\n * @category Attributes\n */\nexport type VideoReferrerPolicy =\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 * Token values for the `fetchpriority` attribute (where supported).\n *\n * @category Attributes\n */\nexport type VideoFetchPriority = 'high' | 'low' | 'auto';\n\n/**\n * The semantic tag name for video.\n *\n * @category Constants\n */\nexport const VIDEO_TAG = 'video' as const;\n\n/**\n * A CSS selector targeting video elements.\n *\n * @category Constants\n */\nexport const VIDEO_SELECTOR = 'video';\n\n/**\n * Attribute bag for video creation/enhancement.\n *\n * @remarks\n * Video elements accept standard HTML global attributes, plus media-specific\n * attributes and properties.\n *\n * pkgn-sol supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type VideoAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Source URL for the video.\n */\n src?: string;\n\n /**\n * Whether the browser should offer playback controls to the user.\n */\n controls?: boolean;\n\n /**\n * Whether the video should start playing automatically.\n *\n * @remarks\n * Autoplay is frequently blocked unless the video is muted.\n */\n autoplay?: boolean;\n\n /**\n * Whether the video should loop after ending.\n */\n loop?: boolean;\n\n /**\n * Whether the audio should be muted.\n */\n muted?: boolean;\n\n /**\n * Hint that playback should happen inline on mobile browsers (not fullscreen).\n */\n playsInline?: boolean;\n\n /**\n * Preload behavior hint.\n */\n preload?: VideoPreload;\n\n /**\n * Poster image URL shown before playback starts.\n */\n poster?: string;\n\n /**\n * Display width in CSS pixels (attribute-reflected).\n */\n width?: number;\n\n /**\n * Display height in CSS pixels (attribute-reflected).\n */\n height?: number;\n\n /**\n * CORS setting for fetching the media.\n */\n crossOrigin?: VideoCrossOrigin;\n\n /**\n * Feature-control tokens for the video UI.\n *\n * @remarks\n * Maps to the `controlslist` attribute (space-separated tokens).\n */\n controlsList?: string[] | string;\n\n /**\n * Disable Picture-in-Picture where supported.\n */\n disablePictureInPicture?: boolean;\n\n /**\n * Disable remote playback where supported.\n */\n disableRemotePlayback?: boolean;\n\n /**\n * Referrer policy for fetching the media.\n */\n referrerPolicy?: VideoReferrerPolicy;\n\n /**\n * Fetch priority hint (where supported).\n */\n fetchPriority?: VideoFetchPriority;\n};\n\n/**\n * Normalize {@link VideoAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The video attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: VideoAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const {\n aria,\n src,\n controls,\n autoplay,\n loop,\n muted,\n playsInline,\n preload,\n poster,\n width,\n height,\n crossOrigin,\n controlsList,\n disablePictureInPicture,\n disableRemotePlayback,\n referrerPolicy,\n fetchPriority,\n ...rest\n } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n if (Object.keys(mappedAria).length > 0) mapped.aria = mappedAria;\n }\n\n // Only attach attrs if we actually have any element-specific attributes to set\n // via dom.ts (keeps output stable and avoids needless objects).\n const elementAttrs: NonNullable<GlobalAttrs['attrs']> = {};\n\n if (typeof controlsList === 'string') elementAttrs.controlslist = controlsList;\n if (Array.isArray(controlsList)) elementAttrs.controlslist = controlsList.join(' ');\n\n if (typeof referrerPolicy === 'string') elementAttrs.referrerpolicy = referrerPolicy;\n if (typeof fetchPriority === 'string') elementAttrs.fetchpriority = fetchPriority;\n\n // Boolean-ish feature flags that don't have reliable reflected properties everywhere.\n if (typeof disablePictureInPicture === 'boolean') {\n elementAttrs.disablepictureinpicture = disablePictureInPicture;\n }\n if (typeof disableRemotePlayback === 'boolean') {\n elementAttrs.disableremoteplayback = disableRemotePlayback;\n }\n\n if (Object.keys(elementAttrs).length > 0) mapped.attrs = elementAttrs;\n\n // The rest are applied as properties after createElement to preserve proper boolean semantics.\n void src;\n void controls;\n void autoplay;\n void loop;\n void muted;\n void playsInline;\n void preload;\n void poster;\n void width;\n void height;\n void crossOrigin;\n\n return mapped;\n}\n\n/**\n * Create a video 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 * - If `autoplay` is enabled and `muted` is not explicitly provided, pkgn-sol will\n * default `muted` to `true` to align with common browser autoplay policies.\n *\n * @param text - Optional fallback text shown if video is unsupported.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<video>` element.\n *\n * @example\n * ```ts\n * import { createVideo } from \"@lnpg/pkgn-sol/elements/media/video\";\n *\n * document.body.appendChild(\n * createVideo(\"Your browser does not support video.\", {\n * src: \"/media/intro.mp4\",\n * controls: true,\n * preload: \"metadata\",\n * })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createVideo(text?: string, attrs?: VideoAttrs): HTMLVideoElement {\n const el = createElement(VIDEO_TAG, toGlobalAttrs(attrs), text) as unknown as HTMLVideoElement;\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 // Practical default: autoplay usually requires muted.\n if (attrs.autoplay === true && typeof attrs.muted !== 'boolean') {\n el.muted = true;\n } else if (typeof attrs.muted === 'boolean') {\n el.muted = attrs.muted;\n }\n\n if (typeof attrs.playsInline === 'boolean')\n (el as unknown as { playsInline?: boolean }).playsInline = attrs.playsInline;\n\n if (typeof attrs.preload === 'string') el.preload = attrs.preload;\n\n if (typeof attrs.poster === 'string') el.poster = attrs.poster;\n\n if (typeof attrs.width === 'number') el.width = attrs.width;\n if (typeof attrs.height === 'number') el.height = attrs.height;\n\n if (typeof attrs.crossOrigin === 'string') el.crossOrigin = attrs.crossOrigin;\n\n return el;\n}\n\n/**\n * Enhance video 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 enhanceVideos(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for video.\n void root;\n}\n"],"mappings":"sMAgGa,EAAY,QAOZ,EAAiB,QAmH9B,SAAS,EAAc,EAA6C,CAClE,GAAI,CAAC,EAAO,OAEZ,GAAM,CACJ,OACA,MACA,WACA,WACA,OACA,QACA,cACA,UACA,SACA,QACA,SACA,cACA,eACA,0BACA,wBACA,iBACA,gBACA,GAAG,GACD,EAEE,EAAsB,CAAE,GAAG,EAAM,CAEvC,GAAI,EAAM,CACR,IAAM,EAA+C,EAAE,CAEnD,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,GAKxD,IAAM,EAAkD,EAAE,CA+B1D,OA7BI,OAAO,GAAiB,WAAU,EAAa,aAAe,GAC9D,MAAM,QAAQ,EAAa,GAAE,EAAa,aAAe,EAAa,KAAK,IAAI,EAE/E,OAAO,GAAmB,WAAU,EAAa,eAAiB,GAClE,OAAO,GAAkB,WAAU,EAAa,cAAgB,GAGhE,OAAO,GAA4B,YACrC,EAAa,wBAA0B,GAErC,OAAO,GAA0B,YACnC,EAAa,sBAAwB,GAGnC,OAAO,KAAK,EAAa,CAAC,OAAS,IAAG,EAAO,MAAQ,GAelD,EAiCT,SAAgB,EAAY,EAAe,EAAsC,CAC/E,IAAM,EAAK,EAAA,EAAc,EAAW,EAAc,EAAM,CAAE,EAAK,CA8B/D,OA5BK,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,MAGjD,EAAM,WAAa,IAAQ,OAAO,EAAM,OAAU,UACpD,EAAG,MAAQ,GACF,OAAO,EAAM,OAAU,YAChC,EAAG,MAAQ,EAAM,OAGf,OAAO,EAAM,aAAgB,YAC/B,EAA6C,YAAc,EAAM,aAE/D,OAAO,EAAM,SAAY,WAAU,EAAG,QAAU,EAAM,SAEtD,OAAO,EAAM,QAAW,WAAU,EAAG,OAAS,EAAM,QAEpD,OAAO,EAAM,OAAU,WAAU,EAAG,MAAQ,EAAM,OAClD,OAAO,EAAM,QAAW,WAAU,EAAG,OAAS,EAAM,QAEpD,OAAO,EAAM,aAAgB,WAAU,EAAG,YAAc,EAAM,aAE3D,GA5BY,EAiDrB,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({AREA_SELECTOR:()=>r,AREA_TAG:()=>n,createArea:()=>a,enhanceAreas:()=>o}),n=`area`,r=`area`;function i(e){let{aria:t,alt:n,href:r,shape:i,coords:a,target:o,download:s,ping:c,rel:l,referrerPolicy:u,hreflang:d,type:f,...p}=e??{},m={...p},h={};return t&&(typeof t.label==`string`&&(h.label=t.label),typeof t.labelledby==`string`&&(h.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(h.hidden=t.hidden)),Object.keys(h).length>0&&(m.aria=h),m.attrs={...m.attrs??{}},typeof r==`string`&&r.length>0&&(m.attrs.href=r,m.attrs.alt=typeof n==`string`?n:``),i&&(m.attrs.shape=i),a&&(m.attrs.coords=a),o&&(m.attrs.target=o),typeof s==`boolean`&&(m.attrs.download=s),typeof s==`string`&&(m.attrs.download=s),c&&(m.attrs.ping=c),l&&(m.attrs.rel=l),u&&(m.attrs.referrerpolicy=u),d&&(m.attrs.hreflang=d),f&&(m.attrs.type=f),m}function a(t){return e.r(n,i(t))}function o(e=document){}exports.AREA_SELECTOR=r,exports.AREA_TAG=n,exports.createArea=a,exports.enhanceAreas=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=area.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"area.cjs","names":[],"sources":["../../../../../src/elements/responsive/area/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Area element helpers.\n *\n * @remarks\n * The area element (`<area>`) defines a hyperlink or dead region within an image map.\n * It is used inside a `<map>` element to define clickable (or non-clickable) areas.\n *\n * Best-practice guidance:\n * - Use `<area>` only within `<map>` and pair with an `<img usemap=\"...\">`.\n * - Prefer meaningful alternative text for clickable regions (screen readers rely on it).\n * - Keep shapes and coordinates accurate; imprecise maps are a usability disaster.\n *\n * Spec-aware pkgn-sol behavior:\n * - If `href` is provided: `alt` is required, and pkgn-sol will ensure an `alt` attribute\n * exists (defaults to empty string if not provided).\n * - If `href` is not provided: `alt` must be omitted, and pkgn-sol will omit it.\n *\n * Global attributes are applied via pkgn-sol's hardened DOM helpers (`dom.ts`), which block:\n * - inline event handler attributes (e.g. `onclick`)\n * - the raw `style` attribute string (use `style` object instead)\n *\n * This module has no side effects and does not mutate the DOM unless you call 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 /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference(s) to labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for area elements.\n *\n * @category Constants\n */\nexport const AREA_TAG = 'area' as const;\n\n/**\n * A CSS selector targeting area elements.\n *\n * @category Constants\n */\nexport const AREA_SELECTOR = 'area';\n\n/**\n * Enumerated shape values for `<area>`.\n *\n * @remarks\n * The default (when omitted) is effectively `rect` in HTML's image map processing model,\n * but pkgn-sol does not force a default; it passes through what you provide.\n *\n * @category Types\n */\nexport type AreaShape = 'rect' | 'circle' | 'poly' | 'default';\n\n/**\n * Area-specific attributes.\n *\n * @remarks\n * `<area>` largely mirrors hyperlink-related attributes when `href` is present.\n * pkgn-sol enforces the spec rule around `alt`:\n * - `href` present => `alt` must be present (pkgn-sol ensures it exists)\n * - `href` absent => `alt` must be omitted (pkgn-sol omits it)\n *\n * @category Attributes\n */\nexport type AreaAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Alternative text for the area.\n *\n * @remarks\n * Only applied when `href` is present. If `href` is present and `alt` is not\n * provided, pkgn-sol defaults it to `\"\"`. If `href` is absent, pkgn-sol omits `alt`\n * entirely.\n */\n alt?: string;\n\n /**\n * Link target URL. When present, the area represents a hyperlink.\n */\n href?: string;\n\n /**\n * The shape of the area. Common values: `rect`, `circle`, `poly`, `default`.\n */\n shape?: AreaShape;\n\n /**\n * Coordinates defining the area geometry. Interpretation depends on `shape`.\n */\n coords?: string;\n\n /**\n * Where to display the linked URL (e.g. `_blank`).\n */\n target?: string;\n\n /**\n * Whether to download the linked resource instead of navigating.\n *\n * @remarks\n * May be a boolean (attribute presence) or a suggested filename.\n */\n download?: boolean | string;\n\n /**\n * A space-separated list of URLs to ping when the link is followed.\n */\n ping?: string;\n\n /**\n * Relationship of the target object to the linking object.\n */\n rel?: string;\n\n /**\n * Referrer policy for the link.\n */\n referrerPolicy?: string;\n\n /**\n * Language of the linked resource (BCP 47 tag).\n */\n hreflang?: string;\n\n /**\n * MIME type of the linked resource (advisory).\n */\n type?: string;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\nfunction toGlobalAttrs(attrs?: AreaAttrs): GlobalAttrs {\n const {\n aria,\n alt,\n href,\n shape,\n coords,\n target,\n download,\n ping,\n rel,\n referrerPolicy,\n hreflang,\n type,\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 // Apply element-specific attributes via the safe attrs escape hatch.\n mapped.attrs = { ...(mapped.attrs ?? {}) };\n\n const hasHref = typeof href === 'string' && href.length > 0;\n\n if (hasHref) {\n mapped.attrs.href = href;\n\n // Spec: if href is present, alt must be present.\n mapped.attrs.alt = typeof alt === 'string' ? alt : '';\n } else {\n // Spec: if href is absent, alt must be omitted.\n // We intentionally do not set `alt` here even if provided.\n }\n\n if (shape) mapped.attrs.shape = shape;\n if (coords) mapped.attrs.coords = coords;\n if (target) mapped.attrs.target = target;\n\n if (typeof download === 'boolean') mapped.attrs.download = download;\n if (typeof download === 'string') mapped.attrs.download = download;\n\n if (ping) mapped.attrs.ping = ping;\n if (rel) mapped.attrs.rel = rel;\n if (referrerPolicy) mapped.attrs.referrerpolicy = referrerPolicy;\n if (hreflang) mapped.attrs.hreflang = hreflang;\n if (type) mapped.attrs.type = type;\n\n return mapped;\n}\n\n/**\n * Create an area element with spec-aware `alt` handling.\n *\n * @remarks\n * - `<area>` is a void element (no text content).\n * - If `href` is present, pkgn-sol ensures `alt` is present (defaults to `\"\"`).\n * - If `href` is absent, pkgn-sol omits `alt`.\n *\n * @category DOM\n */\nexport function createArea(attrs?: AreaAttrs): ElementOf<typeof AREA_TAG> {\n return createVoidElement(AREA_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance area elements within a given root.\n *\n * @remarks\n * No runtime behaviour in v0.1.0.\n *\n * @category Enhancement\n */\nexport function enhanceAreas(root: ParentNode = document): void {\n void root;\n}\n"],"mappings":"kMAwDa,EAAW,OAOX,EAAgB,OA8F7B,SAAS,EAAc,EAAgC,CACrD,GAAM,CACJ,OACA,MACA,OACA,QACA,SACA,SACA,WACA,OACA,MACA,iBACA,WACA,OACA,GAAG,GACD,GAAS,EAAE,CAET,EAAsB,CAAE,GAAG,EAAM,CAEjC,EAA+C,EAAE,CAwCvD,OAtCI,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,GAIhB,EAAO,MAAQ,CAAE,GAAI,EAAO,OAAS,EAAE,CAAG,CAE1B,OAAO,GAAS,UAAY,EAAK,OAAS,IAGxD,EAAO,MAAM,KAAO,EAGpB,EAAO,MAAM,IAAM,OAAO,GAAQ,SAAW,EAAM,IAMjD,IAAO,EAAO,MAAM,MAAQ,GAC5B,IAAQ,EAAO,MAAM,OAAS,GAC9B,IAAQ,EAAO,MAAM,OAAS,GAE9B,OAAO,GAAa,YAAW,EAAO,MAAM,SAAW,GACvD,OAAO,GAAa,WAAU,EAAO,MAAM,SAAW,GAEtD,IAAM,EAAO,MAAM,KAAO,GAC1B,IAAK,EAAO,MAAM,IAAM,GACxB,IAAgB,EAAO,MAAM,eAAiB,GAC9C,IAAU,EAAO,MAAM,SAAW,GAClC,IAAM,EAAO,MAAM,KAAO,GAEvB,EAaT,SAAgB,EAAW,EAA+C,CACxE,OAAO,EAAA,EAAkB,EAAU,EAAc,EAAM,CAAC,CAW1D,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({MAP_SELECTOR:()=>`map`,MAP_TAG:()=>`map`,createMap:()=>o,enhanceMaps:()=>s}),n=`map`,r=`map`;function i(e){let t=String(e).trim();if(t.length===0)throw Error(`Map "name" must be a non-empty string.`);if(/\s/.test(t))throw Error(`Map "name" must not contain whitespace.`)}function a(e){let{aria:t,name:n,...r}=e??{},a={...r.attrs??{}},o=(e,t)=>{t!==void 0&&(Object.prototype.hasOwnProperty.call(a,e)||(a[e]=t))},s=typeof n==`string`?n:typeof r.id==`string`?r.id:`map`;if(i(s),typeof n==`string`&&typeof r.id==`string`&&n!==r.id)throw Error(`Map "id" must match "name" when both are provided.`);o(`name`,s);let c={};t&&(typeof t.label==`string`&&(c.label=t.label),typeof t.labelledby==`string`&&(c.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(c.hidden=t.hidden));let l={...r,attrs:a};return Object.keys(c).length>0&&(l.aria=c),l}function o(t,n){return e.n(`map`,a(n),t)}function s(e=document){}exports.MAP_SELECTOR=r,exports.MAP_TAG=n,exports.createMap=o,exports.enhanceMaps=s,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=map.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.cjs","names":[],"sources":["../../../../../src/elements/responsive/map/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Map element helpers.\n *\n * @remarks\n * The map element (`<map>`) defines an image map: a set of clickable regions\n * (typically via descendant `<area>` elements) that can be referenced from an\n * `<img>` (or other image-like element) using the `usemap` attribute.\n *\n * Best-practice guidance:\n * - Always provide a meaningful, unique `name` for the map.\n * - Use `<area>` children to define interactive regions.\n * - Keep `name` free of whitespace and ensure it is unique within the document/tree.\n * - If you also set `id`, it should match `name` (spec requirement).\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: `<map>` element\n * - WHATWG HTML: map element and `name` requirements\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type AttrValue, 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 map.\n *\n * @category Constants\n */\nexport const MAP_TAG = 'map' as const;\n\n/**\n * A CSS selector targeting map elements.\n *\n * @category Constants\n */\nexport const MAP_SELECTOR = 'map';\n\n/**\n * Attribute bag for map creation/enhancement.\n *\n * @remarks\n * Element-specific attributes:\n * - `name` (required by spec for referencing via `usemap`)\n *\n * Spec notes:\n * - `name` must be present, non-empty, and contain no ASCII whitespace.\n * - If `id` is also specified, it must match `name`.\n *\n * pkgn-sol behavior:\n * - If `name` is omitted, pkgn-sol provides a deterministic fallback:\n * - uses `id` if provided\n * - otherwise defaults to `\"map\"`\n * Callers should set a unique name in real documents.\n *\n * @category Attributes\n */\nexport type MapAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Name of the image map.\n *\n * @remarks\n * Used by `<img usemap=\"#NAME\">` to reference this `<map>`.\n */\n name?: string;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Validate a map `name` value according to spec constraints.\n *\n * @param name - The name to validate.\n * @throws Error if the name is empty or contains whitespace.\n *\n * @category Internal\n */\nfunction assertValidMapName(name: string): void {\n const raw = String(name);\n const trimmed = raw.trim();\n\n if (trimmed.length === 0) {\n throw new Error('Map \"name\" must be a non-empty string.');\n }\n\n // Spec: no ASCII whitespace. We conservatively reject any whitespace.\n if (/\\s/.test(trimmed)) {\n throw new Error('Map \"name\" must not contain whitespace.');\n }\n}\n\n/**\n * Normalize {@link MapAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @remarks\n * - Preserves caller-provided `attrs` escape hatch (still validated by `dom.ts`).\n * - Applies/validates the required `name` attribute deterministically.\n * - Enforces the spec rule that `id` and `name` must match if both are provided.\n *\n * @param attrs - The map attributes.\n * @returns A {@link GlobalAttrs} object.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: MapAttrs): GlobalAttrs {\n const a: MapAttrs = attrs ?? {};\n\n const { aria, name, ...rest } = a;\n\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n const setIfUnset = (key: string, v: AttrValue | undefined): void => {\n if (v === undefined) return;\n if (Object.prototype.hasOwnProperty.call(mergedAttrs, key)) return;\n mergedAttrs[key] = v;\n };\n\n // Determine name:\n // - explicit `name`\n // - else use `id` if present (and ensure spec match if both were provided)\n // - else deterministic fallback \"map\"\n const resolvedName =\n typeof name === 'string' ? name : typeof rest.id === 'string' ? rest.id : 'map';\n\n assertValidMapName(resolvedName);\n\n if (typeof name === 'string' && typeof rest.id === 'string' && name !== rest.id) {\n throw new Error('Map \"id\" must match \"name\" when both are provided.');\n }\n\n setIfUnset('name', resolvedName);\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 next: GlobalAttrs = { ...rest, attrs: mergedAttrs };\n\n if (Object.keys(mappedAria).length > 0) {\n next.aria = mappedAria;\n }\n\n return next;\n}\n\n/**\n * Create a map element with optional text content and attributes.\n *\n * @remarks\n * While `<map>` typically contains `<area>` elements (not text), pkgn-sol still\n * supports optional `text` for:\n * - fallback content\n * - simple labelling in environments that inspect textContent\n *\n * - 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 text content.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<map>` element.\n *\n * @example\n * ```ts\n * import { createMap } from \"@lnpg/pkgn-sol/elements/responsive/map\";\n *\n * const m = createMap(undefined, { name: \"product-map\" });\n * ```\n *\n * @category DOM\n */\nexport function createMap(text?: string, attrs?: MapAttrs): ElementOf<typeof MAP_TAG> {\n return createElement(MAP_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance map 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 enhanceMaps(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for map.\n void root;\n}\n"],"mappings":"sMAgEa,EAAU,MAOV,EAAe,MA4C5B,SAAS,EAAmB,EAAoB,CAE9C,IAAM,EADM,OAAO,EACH,CAAI,MAAM,CAE1B,GAAI,EAAQ,SAAW,EACrB,MAAU,MAAM,yCAAyC,CAI3D,GAAI,KAAK,KAAK,EAAQ,CACpB,MAAU,MAAM,0CAA0C,CAiB9D,SAAS,EAAc,EAA+B,CAGpD,GAAM,CAAE,OAAM,OAAM,GAAG,GAFH,GAAS,EAAE,CAIzB,EAAyC,CAAE,GAAI,EAAK,OAAS,EAAE,CAAG,CAElE,GAAc,EAAa,IAAmC,CAC9D,IAAM,IAAA,KACN,OAAO,UAAU,eAAe,KAAK,EAAa,EAAI,GAC1D,EAAY,GAAO,KAOf,EACJ,OAAO,GAAS,SAAW,EAAO,OAAO,EAAK,IAAO,SAAW,EAAK,GAAK,MAI5E,GAFA,EAAmB,EAAa,CAE5B,OAAO,GAAS,UAAY,OAAO,EAAK,IAAO,UAAY,IAAS,EAAK,GAC3E,MAAU,MAAM,qDAAqD,CAGvE,EAAW,OAAQ,EAAa,CAEhC,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,EAAoB,CAAE,GAAG,EAAM,MAAO,EAAa,CAMzD,OAJI,OAAO,KAAK,EAAW,CAAC,OAAS,IACnC,EAAK,KAAO,GAGP,EA8BT,SAAgB,EAAU,EAAe,EAA6C,CACpF,OAAO,EAAA,EAAA,MAAuB,EAAc,EAAM,CAAE,EAAK,CAa3D,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({PICTURE_SELECTOR:()=>r,PICTURE_TAG:()=>n,createPicture:()=>a,enhancePictures:()=>o}),n=`picture`,r=`picture`;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){return e.n(n,i(t))}function o(e=document){}exports.PICTURE_SELECTOR=r,exports.PICTURE_TAG=n,exports.createPicture=a,exports.enhancePictures=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=picture.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"picture.cjs","names":[],"sources":["../../../../../src/elements/responsive/picture/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Picture element helpers.\n *\n * @remarks\n * The picture element (`<picture>`) is a container used for responsive images.\n * It allows authors to provide multiple image sources (typically via child\n * `<source>` elements) and a required fallback `<img>` element.\n *\n * Best-practice guidance:\n * - Always include an `<img>` inside `<picture>` as the fallback and for\n * accessibility. The alternative text (`alt`) belongs on the `<img>`, not on\n * `<picture>`.\n * - Use `<source>` elements with `media` and/or `type` to provide format and\n * breakpoint-specific sources.\n * - Prefer modern formats (e.g. AVIF/WebP) with a sensible fallback.\n *\n * pkgn-sol-specific conventions:\n * - `<picture>` has no element-specific attributes; this module applies global\n * attributes via pkgn-sol's hardened DOM helpers (`dom.ts`), which block inline\n * event handler attributes (e.g. `onclick`) and the raw `style` attribute\n * string.\n * - Supports a small structured ARIA input to reduce typo-based ARIA bugs.\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset mapped into {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference(s) to labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for picture containers.\n *\n * @category Constants\n */\nexport const PICTURE_TAG = 'picture' as const;\n\n/**\n * A CSS selector targeting picture elements.\n *\n * @category Constants\n */\nexport const PICTURE_SELECTOR = 'picture';\n\n/**\n * Attribute bag for picture creation/enhancement.\n *\n * @remarks\n * `<picture>` does not define unique attributes; it is a container that affects\n * image source selection in conjunction with child `<source>` and `<img>`.\n *\n *\n * pkgn-sol supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type PictureAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link PictureAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The picture attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: PictureAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a picture element with optional global attributes.\n *\n * @remarks\n * `<picture>` is a container; authors must append a fallback `<img>` and any\n * `<source>` children. The alternative text (`alt`) is provided on the `<img>`.\n *\n *\n * Global attributes are applied via pkgn-sol's shared DOM helper, including security\n * guards that block inline event handler attributes (e.g. `onclick`) and raw\n * `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<picture>` element.\n *\n * @example\n * ```ts\n * import { createPicture } from \"@lnpg/pkgn-sol/elements/responsive/picture\";\n *\n * const p = createPicture({ className: \"hero-media\" });\n * ```\n *\n * @category DOM\n */\nexport function createPicture(attrs?: PictureAttrs): ElementOf<typeof PICTURE_TAG> {\n return createElement(PICTURE_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance picture elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhancePictures(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for picture.\n void root;\n}\n"],"mappings":"8MA8Da,EAAc,UAOd,EAAmB,UA8BhC,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,EA2BrD,SAAgB,EAAc,EAAqD,CACjF,OAAO,EAAA,EAAc,EAAa,EAAc,EAAM,CAAC,CAazD,SAAgB,EAAgB,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../chunks/dom.cjs`),t=require(`./area/area.cjs`),n=require(`./map/map.cjs`),r=require(`./picture/picture.cjs`),i=require(`./source/source.cjs`),a=require(`./track/track.cjs`);var o=e.i({area:()=>t.t,map:()=>n.t,picture:()=>r.t,source:()=>i.t,track:()=>a.t});Object.defineProperty(exports,`area`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`map`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`picture`,{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,`source`,{enumerable:!0,get:function(){return i.t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`track`,{enumerable:!0,get:function(){return a.t}});
2
+ //# sourceMappingURL=responsive.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive.cjs","names":[],"sources":["../../../../src/elements/responsive/index.ts"],"sourcesContent":["/**\n * Responsive media element factories.\n *\n * Provides framework-agnostic factory functions for HTML elements commonly used\n * to deliver responsive, adaptive, and accessible media experiences.\n *\n * These factories:\n * - Create semantic responsive/media structures using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Preserve correct relationships between media resources and their metadata\n * (e.g. `<picture>` + `<source>`, media maps via `<map>` + `<area>`, and timed\n * text via `<track>`).\n * - Prevent unsafe attribute injection.\n *\n * The elements in this module support native browser features for responsive\n * images, image maps, and timed text tracks without framework assumptions.\n *\n * @module elements/responsive\n * @since 0.1.0\n */\n\n/**\n * `<area>` element factory namespace.\n *\n * Represents a clickable hotspot region within an image map, associated with a\n * `<map>` element. Typically paired with an `<img usemap=\"...\">`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area\n */\nexport * as area from './area';\n\n/**\n * `<map>` element factory namespace.\n *\n * Represents an image map container holding `<area>` definitions that describe\n * interactive regions on an associated image.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map\n */\nexport * as map from './map';\n\n/**\n * `<picture>` element factory namespace.\n *\n * Represents a container for responsive images, allowing multiple `<source>`\n * candidates and a fallback `<img>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture\n */\nexport * as picture from './picture';\n\n/**\n * `<source>` element factory namespace.\n *\n * Represents a media resource candidate for `<picture>`, `<audio>`, or\n * `<video>`, selected by the browser based on type/media conditions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source\n */\nexport * as source from './source';\n\n/**\n * `<track>` element factory namespace.\n *\n * Represents an external timed text track (subtitles, captions, descriptions,\n * chapters, or metadata) for `<audio>` or `<video>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track\n */\nexport * as track from './track';\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({SOURCE_SELECTOR:()=>r,SOURCE_TAG:()=>n,createSource:()=>a,enhanceSources:()=>o}),n=`source`,r=`source`;function i(e){if(!e)return;let{aria:t,src:n,srcSet:r,sizes:i,media:a,type:o,...s}=e,c=typeof n==`string`&&n.trim().length>0,l=typeof r==`string`&&r.trim().length>0;if(!c&&!l)throw Error(`source requires at least one of "src" or "srcSet".`);if(typeof i==`string`&&i.trim().length>0&&!l)throw Error(`source "sizes" may only be specified when "srcSet" is provided.`);let u={...s},d={...u.attrs??{}};if(c&&(d.src=n),l&&(d.srcset=r),typeof i==`string`&&i.trim().length>0&&(d.sizes=i),typeof a==`string`&&(d.media=a),typeof o==`string`&&(d.type=o),Object.keys(d).length>0&&(u.attrs=d),!t)return u;let f={};return typeof t.label==`string`&&(f.label=t.label),typeof t.labelledby==`string`&&(f.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(f.hidden=t.hidden),Object.keys(f).length>0?{...u,aria:f}:u}function a(t){return e.r(n,i(t))}function o(e=document){}exports.SOURCE_SELECTOR=r,exports.SOURCE_TAG=n,exports.createSource=a,exports.enhanceSources=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=source.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.cjs","names":[],"sources":["../../../../../src/elements/responsive/source/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Source element helpers.\n *\n * @remarks\n * The source element (`<source>`) provides one or more media resources for:\n * - `<picture>` (responsive images via `srcset`/`sizes`)\n * - `<audio>` / `<video>` (alternate encodings via `src`)\n *\n * Best-practice guidance:\n * - Use `<picture><source srcset ...></picture>` for responsive images and art direction.\n * - Use multiple `<source>` children under `<audio>/<video>` to provide fallback formats.\n * - Prefer providing a `type` when possible to help user agents skip unsupported formats.\n * - Use `media` to gate sources behind media conditions.\n * - Only use `sizes` when `srcset` is present (it is meaningless otherwise).\n *\n * Attributes (element-specific):\n * - `src` (string): media resource URL (primarily for `<audio>/<video>` contexts).\n * - `srcSet` (string): source set candidates (primarily for `<picture>` contexts).\n * - `sizes` (string): sizes list for `srcset` selection.\n * - `type` (string): MIME type hint.\n * - `media` (string): media query condition.\n *\n * Notes:\n * - `<source>` is a void element (no text content).\n *\n * Security:\n * - Global attribute escape hatches are guarded by pkgn-sol's `dom.ts` helpers which\n * block inline event handler attributes (e.g. `onclick`) and raw `style`\n * attribute injection (use the `style` object field instead).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/source\n *\n * @module\n * @category Elements\n */\n\nimport { createVoidElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for source.\n *\n * @category Constants\n */\nexport const SOURCE_TAG = 'source' as const;\n\n/**\n * A CSS selector targeting source elements.\n *\n * @category Constants\n */\nexport const SOURCE_SELECTOR = 'source';\n\n/**\n * Attribute bag for source creation/enhancement.\n *\n * @remarks\n * Source elements accept standard HTML global attributes plus source-specific\n * content attributes used by `<picture>`, `<audio>`, and `<video>`.\n *\n * pkgn-sol supports structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * Validation rules enforced by this module:\n * - `sizes` may only be specified when `srcSet` is provided.\n * - At least one of `src` or `srcSet` must be provided (a `<source>` without a\n * resource is not useful).\n *\n * @category Attributes\n */\nexport type SourceAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Media resource URL.\n *\n * @remarks\n * Primarily used by `<audio>` and `<video>`. It is ignored when the `<source>`\n * is nested inside `<picture>`.\n */\n src?: string;\n\n /**\n * Image candidate source set.\n *\n * @remarks\n * Primarily used by `<picture>` responsive images.\n * Maps to the `srcset` content attribute.\n */\n srcSet?: string;\n\n /**\n * Sizes list describing the intended display size for `srcset` selection.\n *\n * @remarks\n * Only meaningful when `srcset` is present.\n */\n sizes?: string;\n\n /**\n * Media query condition for selecting this source.\n */\n media?: string;\n\n /**\n * MIME type hint for the resource(s).\n */\n type?: string;\n};\n\n/**\n * Normalize {@link SourceAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The source attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @throws Error if `sizes` is provided without `srcSet`.\n * @throws Error if neither `src` nor `srcSet` are provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SourceAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, src, srcSet, sizes, media, type, ...rest } = attrs;\n\n const hasSrc = typeof src === 'string' && src.trim().length > 0;\n const hasSrcSet = typeof srcSet === 'string' && srcSet.trim().length > 0;\n\n if (!hasSrc && !hasSrcSet) {\n throw new Error('source requires at least one of \"src\" or \"srcSet\".');\n }\n\n if (typeof sizes === 'string' && sizes.trim().length > 0 && !hasSrcSet) {\n throw new Error('source \"sizes\" may only be specified when \"srcSet\" is provided.');\n }\n\n const mapped: GlobalAttrs = { ...rest };\n\n const extra: NonNullable<GlobalAttrs['attrs']> = { ...(mapped.attrs ?? {}) };\n\n if (hasSrc) extra.src = src!;\n if (hasSrcSet) extra.srcset = srcSet!;\n if (typeof sizes === 'string' && sizes.trim().length > 0) extra.sizes = sizes;\n if (typeof media === 'string') extra.media = media;\n if (typeof type === 'string') extra.type = type;\n\n if (Object.keys(extra).length > 0) {\n mapped.attrs = extra;\n }\n\n if (!aria) return mapped;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n return hasMappedAria ? { ...mapped, aria: mappedAria } : mapped;\n}\n\n/**\n * Create a source element with attributes.\n *\n * @remarks\n * `<source>` is a void element: it never carries text content.\n *\n * Global attributes and escape-hatch attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes (e.g. `onclick`)\n * and raw `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<source>` element.\n *\n * @example\n * Responsive image source (picture):\n * ```ts\n * import { createSource } from \"@lnpg/pkgn-sol/elements/responsive/source\";\n *\n * const s = createSource({\n * srcSet: \"/img/hero-800.jpg 800w, /img/hero-1600.jpg 1600w\",\n * sizes: \"(max-width: 800px) 100vw, 800px\",\n * type: \"image/jpeg\"\n * });\n * ```\n *\n * @category DOM\n */\nexport function createSource(attrs?: SourceAttrs): ElementOf<typeof SOURCE_TAG> {\n return createVoidElement(SOURCE_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance source elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceSources(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for source.\n void root;\n}\n"],"mappings":"0MAuEa,EAAa,SAOb,EAAkB,SAyE/B,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,MAAK,SAAQ,QAAO,QAAO,OAAM,GAAG,GAAS,EAErD,EAAS,OAAO,GAAQ,UAAY,EAAI,MAAM,CAAC,OAAS,EACxD,EAAY,OAAO,GAAW,UAAY,EAAO,MAAM,CAAC,OAAS,EAEvE,GAAI,CAAC,GAAU,CAAC,EACd,MAAU,MAAM,qDAAqD,CAGvE,GAAI,OAAO,GAAU,UAAY,EAAM,MAAM,CAAC,OAAS,GAAK,CAAC,EAC3D,MAAU,MAAM,kEAAkE,CAGpF,IAAM,EAAsB,CAAE,GAAG,EAAM,CAEjC,EAA2C,CAAE,GAAI,EAAO,OAAS,EAAE,CAAG,CAY5E,GAVI,IAAQ,EAAM,IAAM,GACpB,IAAW,EAAM,OAAS,GAC1B,OAAO,GAAU,UAAY,EAAM,MAAM,CAAC,OAAS,IAAG,EAAM,MAAQ,GACpE,OAAO,GAAU,WAAU,EAAM,MAAQ,GACzC,OAAO,GAAS,WAAU,EAAM,KAAO,GAEvC,OAAO,KAAK,EAAM,CAAC,OAAS,IAC9B,EAAO,MAAQ,GAGb,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,QAEzC,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAQ,KAAM,EAAY,CAAG,EA8B3D,SAAgB,EAAa,EAAmD,CAC9E,OAAO,EAAA,EAAkB,EAAY,EAAc,EAAM,CAAC,CAqB5D,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({TRACK_SELECTOR:()=>r,TRACK_TAG:()=>n,createTrack:()=>a,enhanceTracks:()=>o}),n=`track`,r=`track`;function i(e){if(!e)return;let{aria:t,kind:n,src:r,srclang:i,label:a,default:o,...s}=e,c={...s.attrs??{}},l=(e,t)=>{t!==void 0&&(Object.prototype.hasOwnProperty.call(c,e)||(c[e]=t))};l(`kind`,n),l(`src`,r),l(`srclang`,i),l(`label`,a),o===!0&&l(`default`,``);let u={};t&&(typeof t.label==`string`&&(u.label=t.label),typeof t.labelledby==`string`&&(u.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(u.hidden=t.hidden));let d=Object.keys(c).length>0,f=Object.keys(u).length>0,p={...s};return d&&(p.attrs=c),f&&(p.aria=u),p}function a(t){return e.r(n,i(t))}function o(e=document){}exports.TRACK_SELECTOR=r,exports.TRACK_TAG=n,exports.createTrack=a,exports.enhanceTracks=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=track.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track.cjs","names":[],"sources":["../../../../../src/elements/responsive/track/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Track element helpers.\n *\n * @remarks\n * The track element (`<track>`) provides external timed text tracks for media\n * elements such as `<video>` and `<audio>`. Tracks can represent:\n * - subtitles\n * - captions\n * - descriptions\n * - chapters\n * - metadata\n *\n * Best-practice guidance:\n * - Use `<track>` for WebVTT (and similar timed text) resources that accompany media.\n * - Use `kind` to declare the track purpose (subtitles, captions, etc.).\n * - Use `label` for a user-facing title shown in media track selection UIs.\n * - Use `srclang` to declare the track language (BCP 47 tag).\n * - If `kind=\"subtitles\"`, user agents/spec require `srclang` to be defined.\n *\n * Attribute behavior notes:\n * - `default` is a boolean attribute. When present, it indicates this track\n * should be enabled if user preferences do not indicate a better choice.\n *\n * pkgn-sol keeps the API small and framework-agnostic:\n * - Attributes are routed through pkgn-sol's hardened DOM helpers.\n * - Unsafe attributes (inline event handlers, raw style) are blocked centrally.\n * - This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track\n * @see https://html.spec.whatwg.org/multipage/media.html#the-track-element\n *\n * @module\n * @category Elements\n */\n\nimport {\n createVoidElement,\n type AttrValue,\n type ElementOf,\n type GlobalAttrs,\n} from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * Allowed values for the `kind` attribute on `<track>`.\n *\n * @remarks\n * This follows the HTML living standard's enumerated states.\n *\n * @category Attributes\n */\nexport type TrackKind = 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';\n\n/**\n * The semantic tag name for track.\n *\n * @category Constants\n */\nexport const TRACK_TAG = 'track' as const;\n\n/**\n * A CSS selector targeting track elements.\n *\n * @category Constants\n */\nexport const TRACK_SELECTOR = 'track';\n\n/**\n * Attribute bag for track creation/enhancement.\n *\n * @remarks\n * Track is a void element and must not carry text content or child nodes.\n *\n * Track accepts standard HTML global attributes plus track-specific attributes:\n * - `kind`\n * - `src`\n * - `srclang`\n * - `label`\n * - `default` (boolean attribute)\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type TrackAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * The type of text track.\n */\n kind?: TrackKind;\n\n /**\n * The URL of the timed text track resource (commonly a `.vtt` file).\n */\n src?: string;\n\n /**\n * The language of the text track, as a BCP 47 language tag.\n *\n * @remarks\n * If `kind` is `subtitles`, user agents/spec require `srclang` to be defined.\n */\n srclang?: string;\n\n /**\n * User-visible label for the track (typically shown in media UI menus).\n */\n label?: string;\n\n /**\n * Marks this track as the default if user preferences do not indicate another.\n *\n * @remarks\n * This maps to the `default` boolean attribute (presence-based).\n */\n default?: boolean;\n};\n\n/**\n * Normalize {@link TrackAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The track attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TrackAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, kind, src, srclang, label, default: isDefault, ...rest } = attrs;\n\n // Start with any caller-provided attrs escape hatch (still validated by dom.ts).\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n const setIfUnset = (key: string, value: AttrValue | undefined): void => {\n if (value === undefined) return;\n if (Object.prototype.hasOwnProperty.call(mergedAttrs, key)) return;\n mergedAttrs[key] = value;\n };\n\n setIfUnset('kind', kind);\n setIfUnset('src', src);\n setIfUnset('srclang', srclang);\n setIfUnset('label', label);\n\n // Boolean attribute presence is represented by empty string when true.\n if (isDefault === true) setIfUnset('default', '');\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n const next: GlobalAttrs = { ...rest };\n if (hasMergedAttrs) next.attrs = mergedAttrs;\n if (hasMappedAria) next.aria = mappedAria;\n\n return next;\n}\n\n/**\n * Create a track element and apply attributes.\n *\n * @remarks\n * Track is a void element:\n * - It must not have text content.\n * - It must not have child nodes.\n *\n * Global attributes are applied via pkgn-sol's shared DOM helper, including security\n * guards that block inline event handler attributes (e.g. `onclick`) and raw\n * `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<track>` element.\n *\n * @example\n * ```ts\n * import { createTrack } from \"@lnpg/pkgn-sol/elements/responsive/track\";\n *\n * const t = createTrack({\n * kind: \"subtitles\",\n * src: \"/captions/en.vtt\",\n * srclang: \"en\",\n * label: \"English\",\n * default: true\n * });\n * ```\n *\n * @category DOM\n */\nexport function createTrack(attrs?: TrackAttrs): ElementOf<typeof TRACK_TAG> {\n return createVoidElement(TRACK_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance track elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTracks(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for track.\n void root;\n}\n"],"mappings":"sMAsFa,EAAY,QAOZ,EAAiB,QAkE9B,SAAS,EAAc,EAA6C,CAClE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,MAAK,UAAS,QAAO,QAAS,EAAW,GAAG,GAAS,EAGnE,EAAyC,CAAE,GAAI,EAAK,OAAS,EAAE,CAAG,CAElE,GAAc,EAAa,IAAuC,CAClE,IAAU,IAAA,KACV,OAAO,UAAU,eAAe,KAAK,EAAa,EAAI,GAC1D,EAAY,GAAO,KAGrB,EAAW,OAAQ,EAAK,CACxB,EAAW,MAAO,EAAI,CACtB,EAAW,UAAW,EAAQ,CAC9B,EAAW,QAAS,EAAM,CAGtB,IAAc,IAAM,EAAW,UAAW,GAAG,CAEjD,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,EAAiB,OAAO,KAAK,EAAY,CAAC,OAAS,EACnD,EAAgB,OAAO,KAAK,EAAW,CAAC,OAAS,EAEjD,EAAoB,CAAE,GAAG,EAAM,CAIrC,OAHI,IAAgB,EAAK,MAAQ,GAC7B,IAAe,EAAK,KAAO,GAExB,EAiCT,SAAgB,EAAY,EAAiD,CAC3E,OAAO,EAAA,EAAkB,EAAW,EAAc,EAAM,CAAC,CAqB3D,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({CAPTION_SELECTOR:()=>r,CAPTION_TAG:()=>n,createCaption:()=>a,enhanceCaptions:()=>o}),n=`caption`,r=`caption`;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.CAPTION_SELECTOR=r,exports.CAPTION_TAG=n,exports.createCaption=a,exports.enhanceCaptions=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=caption.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caption.cjs","names":[],"sources":["../../../../../src/elements/table/caption/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Caption element helpers.\n *\n * @remarks\n * The caption element (`<caption>`) provides a title (caption) for its parent\n * `<table>`. It is an important accessibility feature because it gives the table\n * an accessible name or description when authored appropriately. :contentReference[oaicite:1]{index=1}\n *\n * Best-practice guidance:\n * - Use `<caption>` to describe the purpose of the table and help users decide\n * whether to read it. :contentReference[oaicite:2]{index=2}\n * - Place `<caption>` as the first child of the `<table>` in source order. :contentReference[oaicite:3]{index=3}\n * - Keep the caption concise but meaningful. For complex tables, captions can be\n * supplemented with additional explanatory text near the table (outside the\n * caption) when necessary. :contentReference[oaicite:4]{index=4}\n * - Avoid deprecated presentational attributes (e.g. legacy `align`) and use CSS instead. :contentReference[oaicite:5]{index=5}\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<caption>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for caption elements.\n *\n * @category Constants\n */\nexport const CAPTION_TAG = 'caption' as const;\n\n/**\n * A CSS selector targeting caption elements.\n *\n * @category Constants\n */\nexport const CAPTION_SELECTOR = 'caption';\n\n/**\n * Attribute bag for caption creation/enhancement.\n *\n * @remarks\n * Caption elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type CaptionAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link CaptionAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The caption attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: CaptionAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a caption element with optional text content and global attributes.\n *\n * @remarks\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the caption.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<caption>` element.\n *\n * @example\n * Create and prepend a caption to a table:\n * ```ts\n * import { createCaption } from \"@lnpg/pkgn-sol/elements/table/caption\";\n *\n * const table = document.createElement(\"table\");\n * table.prepend(createCaption(\"Quarterly results\"));\n * ```\n *\n * @category DOM\n */\nexport function createCaption(text?: string, attrs?: CaptionAttrs): ElementOf<typeof CAPTION_TAG> {\n return createElement(CAPTION_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance caption elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceCaptions(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for caption.\n void root;\n}\n"],"mappings":"8MAgEa,EAAc,UAOd,EAAmB,UAgChC,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({COL_SELECTOR:()=>`col`,COL_TAG:()=>`col`,createCol:()=>a,enhanceCols:()=>o}),n=`col`,r=`col`;function i(e){if(!e)return;let{aria:t,span: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??{}};if(typeof n==`number`&&!Object.prototype.hasOwnProperty.call(o,`span`)){if(!Number.isInteger(n)||n<=0)throw Error(`Invalid "span" for <col>: expected a positive integer greater than zero.`);o.span=n}return Object.keys(o).length>0&&(a.attrs=o),a}function a(t){return e.r(`col`,i(t))}function o(e=document){}exports.COL_SELECTOR=r,exports.COL_TAG=n,exports.createCol=a,exports.enhanceCols=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=col.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"col.cjs","names":[],"sources":["../../../../../src/elements/table/col/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Col element helpers.\n *\n * @remarks\n * The col element (`<col>`) represents one or more columns in a table, and is\n * used to apply presentation (typically CSS) to columns as a group.\n *\n * Best-practice guidance:\n * - Use `<col>` only inside a `<colgroup>`.\n * - Use `<col>` for column-level styling (widths, background, etc.), not layout hacks.\n * - Don't rely on `<col>` for semantics or accessibility. Use proper table\n * structure (`<caption>`, `<th>`, `scope`/`headers`) for accessible data tables.\n * - Avoid obsolete presentational attributes; prefer CSS.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<col>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<col>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/col\n * - WHATWG HTML: Tables: https://html.spec.whatwg.org/multipage/tables.html\n *\n * @module\n * @category Elements\n */\n\nimport { createVoidElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for table column definitions.\n *\n * @category Constants\n */\nexport const COL_TAG = 'col' as const;\n\n/**\n * A CSS selector targeting col elements.\n *\n * @category Constants\n */\nexport const COL_SELECTOR = 'col';\n\n/**\n * Attribute bag for col creation/enhancement.\n *\n * @remarks\n * `<col>` supports standard HTML global attributes and one primary element\n * attribute: `span`.\n *\n * `span` specifies how many consecutive columns this `<col>` applies to.\n * If omitted, browsers treat it as `1`.\n *\n * pkgn-sol supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type ColAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Number of consecutive columns this `<col>` element applies to.\n *\n * @remarks\n * Must be a positive integer greater than zero. If omitted, the browser default\n * is `1`.\n */\n span?: number;\n};\n\n/**\n * Normalize {@link ColAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The col attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: ColAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, span, attrs: rawAttrs, ...rest } = attrs;\n\n const out: GlobalAttrs = { ...rest };\n\n // Map structured ARIA, only if something is actually defined.\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n if (Object.keys(mappedAria).length > 0) out.aria = mappedAria;\n }\n\n // Preserve caller escape hatch, but allow pkgn-sol-typed fields to fill gaps.\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rawAttrs ?? {}) };\n\n // Only set `span` if provided AND caller didn't already set it via raw attrs.\n if (typeof span === 'number' && !Object.prototype.hasOwnProperty.call(mergedAttrs, 'span')) {\n // Spec constraint: positive integer > 0.\n if (!Number.isInteger(span) || span <= 0) {\n throw new Error('Invalid \"span\" for <col>: expected a positive integer greater than zero.');\n }\n mergedAttrs.span = span;\n }\n\n if (Object.keys(mergedAttrs).length > 0) out.attrs = mergedAttrs;\n\n return out;\n}\n\n/**\n * Create a col element (`<col>`) and apply global attributes.\n *\n * @remarks\n * `<col>` is a void element. It does not accept text content or children.\n *\n * Global attributes are applied via pkgn-sol's shared DOM helper, including security\n * guards that block inline event handler attributes (e.g. `onclick`) and raw\n * `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<col>` element.\n *\n * @example\n * Create a `<col>` that spans 2 columns:\n * ```ts\n * import { createCol } from \"@lnpg/pkgn-sol/elements/table/col\";\n *\n * const col = createCol({ span: 2, className: \"numeric\" });\n * ```\n *\n * @category DOM\n */\nexport function createCol(attrs?: ColAttrs): ElementOf<typeof COL_TAG> {\n return createVoidElement(COL_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance col elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceCols(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for col.\n void root;\n}\n"],"mappings":"sMAiEa,EAAU,MAOV,EAAe,MAyC5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,MAAO,EAAU,GAAG,GAAS,EAE3C,EAAmB,CAAE,GAAG,EAAM,CAGpC,GAAI,EAAM,CACR,IAAM,EAA+C,EAAE,CAEnD,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,EAAI,KAAO,GAIrD,IAAM,EAAiD,CAAE,GAAI,GAAY,EAAE,CAAG,CAG9E,GAAI,OAAO,GAAS,UAAY,CAAC,OAAO,UAAU,eAAe,KAAK,EAAa,OAAO,CAAE,CAE1F,GAAI,CAAC,OAAO,UAAU,EAAK,EAAI,GAAQ,EACrC,MAAU,MAAM,2EAA2E,CAE7F,EAAY,KAAO,EAKrB,OAFI,OAAO,KAAK,EAAY,CAAC,OAAS,IAAG,EAAI,MAAQ,GAE9C,EA0BT,SAAgB,EAAU,EAA6C,CACrE,OAAO,EAAA,EAAA,MAA2B,EAAc,EAAM,CAAC,CAazD,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({COLGROUP_SELECTOR:()=>r,COLGROUP_TAG:()=>n,createColgroup:()=>o,enhanceColgroups:()=>s}),n=`colgroup`,r=`colgroup`;function i(e,t,n){Object.prototype.hasOwnProperty.call(e,t)||(e[t]=n)}function a(e){if(!e)return;let{aria:t,span:n,...r}=e,a=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,o={...r.attrs??{}};typeof n==`number`&&Number.isFinite(n)&&n>0&&i(o,`span`,Math.trunc(n));let s=Object.keys(o).length>0;return{...r,...a?{aria:a}:null,...s?{attrs:o}:null}}function o(t){return e.n(n,a(t))}function s(e=document){}exports.COLGROUP_SELECTOR=r,exports.COLGROUP_TAG=n,exports.createColgroup=o,exports.enhanceColgroups=s,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=colgroup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colgroup.cjs","names":[],"sources":["../../../../../src/elements/table/colgroup/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Colgroup element helpers.\n *\n * @remarks\n * The colgroup element (`<colgroup>`) represents a group of one or more columns\n * in a table and is primarily used to apply presentation (not structure) to\n * entire columns (typically via CSS). :contentReference[oaicite:1]{index=1}\n *\n * Best-practice guidance:\n * - Use `<colgroup>` (and optionally `<col>`) to apply column-level styling\n * without repeating styles across cells.\n * - Place `<colgroup>` inside a `<table>`, after any `<caption>` and before\n * `<thead>`, `<tbody>`, `<tfoot>`, or `<tr>`. :contentReference[oaicite:2]{index=2}\n * - Use the `span` attribute only when the `<colgroup>` contains no `<col>`\n * children; otherwise, define spans via `<col>` elements. :contentReference[oaicite:3]{index=3}\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<colgroup>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for colgroup elements.\n *\n * @category Constants\n */\nexport const COLGROUP_TAG = 'colgroup' as const;\n\n/**\n * A CSS selector targeting colgroup elements.\n *\n * @category Constants\n */\nexport const COLGROUP_SELECTOR = 'colgroup';\n\n/**\n * Attribute bag for colgroup creation/enhancement.\n *\n * @remarks\n * Colgroup elements accept standard HTML global attributes, plus:\n * - `span`: the number of consecutive columns in the group (when no `<col>`\n * children are present). :contentReference[oaicite:4]{index=4}\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type ColgroupAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Number of consecutive columns spanned by this column group.\n *\n * @remarks\n * This should be a positive integer. The HTML spec clamps values above 1000\n * and treats invalid/zero values as `1` in the table model. pkgn-sol does not\n * attempt to emulate the full table model at runtime; it sets the attribute\n * when you provide a valid positive integer. :contentReference[oaicite:5]{index=5}\n *\n * Note: Not permitted when the `<colgroup>` contains one or more `<col>`\n * elements. pkgn-sol does not enforce child-structure rules; consumers control\n * their DOM trees. :contentReference[oaicite:6]{index=6}\n */\n span?: number;\n};\n\n/**\n * Set an attribute only if it is not already present on the attribute bag.\n *\n * @remarks\n * This supports the pkgn-sol convention where explicit raw attributes provided via\n * {@link GlobalAttrs.attrs} are treated as the caller's final intent.\n *\n * @param attrs - The destination attributes object.\n * @param name - Attribute name.\n * @param value - Attribute value.\n *\n * @category Internal\n */\nfunction setIfUnset(\n attrs: NonNullable<GlobalAttrs['attrs']>,\n name: string,\n value: string | number | boolean,\n): void {\n if (Object.prototype.hasOwnProperty.call(attrs, name)) return;\n attrs[name] = value;\n}\n\n/**\n * Normalize {@link ColgroupAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The colgroup attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: ColgroupAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, span, ...rest } = attrs;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> | undefined = aria\n ? (() => {\n const out: NonNullable<GlobalAttrs['aria']> = {};\n if (typeof aria.label === 'string') out.label = aria.label;\n if (typeof aria.labelledby === 'string') out.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') out.hidden = aria.hidden;\n\n return Object.keys(out).length > 0 ? out : undefined;\n })()\n : undefined;\n\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rest.attrs ?? {}) };\n\n // Apply `span` only when it is a valid positive integer.\n if (typeof span === 'number' && Number.isFinite(span) && span > 0) {\n // HTML defines span as an unsigned long; we keep it integer-ish.\n setIfUnset(mergedAttrs, 'span', Math.trunc(span));\n }\n\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n\n return {\n ...rest,\n ...(mappedAria ? { aria: mappedAria } : null),\n ...(hasMergedAttrs ? { attrs: mergedAttrs } : null),\n };\n}\n\n/**\n * Create a colgroup element with global attributes.\n *\n * @remarks\n * - `<colgroup>` should not contain text content; pkgn-sol does not accept a `text`\n * argument for this factory.\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<colgroup>` element.\n *\n * @example\n * Create a colgroup that spans two columns:\n * ```ts\n * import { createColgroup } from \"@lnpg/pkgn-sol/elements/table/colgroup\";\n *\n * const colgroup = createColgroup({ span: 2, className: \"cols\" });\n * table.appendChild(colgroup);\n * ```\n *\n * @category DOM\n */\nexport function createColgroup(attrs?: ColgroupAttrs): ElementOf<typeof COLGROUP_TAG> {\n return createElement(COLGROUP_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance colgroup elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceColgroups(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for colgroup.\n void root;\n}\n"],"mappings":"kNA+Da,EAAe,WAOf,EAAoB,WAsDjC,SAAS,EACP,EACA,EACA,EACM,CACF,OAAO,UAAU,eAAe,KAAK,EAAO,EAAK,GACrD,EAAM,GAAQ,GAWhB,SAAS,EAAc,EAAgD,CACrE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,GAAG,GAAS,EAE1B,EAA2D,OACtD,CACL,IAAM,EAAwC,EAAE,CAKhD,OAJI,OAAO,EAAK,OAAU,WAAU,EAAI,MAAQ,EAAK,OACjD,OAAO,EAAK,YAAe,WAAU,EAAI,WAAa,EAAK,YAC3D,OAAO,EAAK,QAAW,YAAW,EAAI,OAAS,EAAK,QAEjD,OAAO,KAAK,EAAI,CAAC,OAAS,EAAI,EAAM,IAAA,MACzC,CACJ,IAAA,GAEE,EAAiD,CAAE,GAAI,EAAK,OAAS,EAAE,CAAG,CAG5E,OAAO,GAAS,UAAY,OAAO,SAAS,EAAK,EAAI,EAAO,GAE9D,EAAW,EAAa,OAAQ,KAAK,MAAM,EAAK,CAAC,CAGnD,IAAM,EAAiB,OAAO,KAAK,EAAY,CAAC,OAAS,EAEzD,MAAO,CACL,GAAG,EACH,GAAI,EAAa,CAAE,KAAM,EAAY,CAAG,KACxC,GAAI,EAAiB,CAAE,MAAO,EAAa,CAAG,KAC/C,CA2BH,SAAgB,EAAe,EAAuD,CACpF,OAAO,EAAA,EAAc,EAAc,EAAc,EAAM,CAAC,CAqB1D,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({TABLE_SELECTOR:()=>r,TABLE_TAG:()=>n,createTable:()=>a,enhanceTables:()=>o}),n=`table`,r=`table`;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.TABLE_SELECTOR=r,exports.TABLE_TAG=n,exports.createTable=a,exports.enhanceTables=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=table.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.cjs","names":[],"sources":["../../../../../src/elements/table/table/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Table element helpers.\n *\n * @remarks\n * The table element (`<table>`) represents tabular data with more than one\n * dimension (rows and columns).\n *\n * Best-practice guidance:\n * - Use tables for data, not for layout.\n * - Provide a clear `<caption>` describing the table's purpose.\n * - Use `<thead>`, `<tbody>`, and `<tfoot>` to group table content meaningfully.\n * - Mark header cells with `<th>` (not `<td>`), and use `scope`/`headers` where\n * appropriate for accessibility, especially in more complex tables.\n * - Avoid obsolete presentational attributes (e.g. `border`, `cellpadding`,\n * `cellspacing`, `align`, `bgcolor`). Use CSS instead.\n * - If additional long-form description is needed, consider `aria-describedby`\n * pointing to explanatory text outside the table.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create table elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<table>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table\n * - WHATWG: Table model: https://html.spec.whatwg.org/multipage/tables.html\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for HTML tables.\n *\n * @category Constants\n */\nexport const TABLE_TAG = 'table' as const;\n\n/**\n * A CSS selector targeting table elements.\n *\n * @category Constants\n */\nexport const TABLE_SELECTOR = 'table';\n\n/**\n * Attribute bag for table creation/enhancement.\n *\n * @remarks\n * Table elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Note: table-specific presentational attributes historically existed but are\n * obsolete in modern HTML. Consumers can still use {@link GlobalAttrs.attrs}\n * as an escape hatch where necessary, subject to pkgn-sol's security rules in\n * `dom.ts` (blocks inline event handlers and raw `style` attribute strings).\n *\n * @category Attributes\n */\nexport type TableAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link TableAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The table attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TableAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a table element with optional text content and global attributes.\n *\n * @remarks\n * - Table content is typically structured with child elements (`<caption>`,\n * `<thead>`, `<tbody>`, `<tr>`, `<th>`, `<td>`). This helper does not build\n * table structure, it only creates the `<table>` element.\n * - Optional text content is assigned via `textContent` (never `innerHTML`).\n * In real usage, prefer building actual table child elements rather than\n * relying on text content.\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the table (generally discouraged).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<table>` element.\n *\n * @example\n * Create a table and append it:\n * ```ts\n * import { createTable } from \"@lnpg/pkgn-sol/elements/table/table\";\n *\n * const table = createTable(undefined, { className: \"data-table\" });\n * document.body.appendChild(table);\n * ```\n *\n * @category DOM\n */\nexport function createTable(text?: string, attrs?: TableAttrs): ElementOf<typeof TABLE_TAG> {\n return createElement(TABLE_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance table elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTables(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for table.\n void root;\n}\n"],"mappings":"sMAqEa,EAAY,QAOZ,EAAiB,QAiC9B,SAAS,EAAc,EAA6C,CAClE,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,EAgCrD,SAAgB,EAAY,EAAe,EAAiD,CAC1F,OAAO,EAAA,EAAc,EAAW,EAAc,EAAM,CAAE,EAAK,CAqB7D,SAAgB,EAAc,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../chunks/dom.cjs`),t=require(`./table/table.cjs`),n=require(`./colgroup/colgroup.cjs`),r=require(`./col/col.cjs`),i=require(`./thead/thead.cjs`),a=require(`./tbody/tbody.cjs`),o=require(`./tfoot/tfoot.cjs`),s=require(`./tr/tr.cjs`),c=require(`./th/th.cjs`),l=require(`./td/td.cjs`),u=require(`./caption/caption.cjs`);var d=e.i({caption:()=>u.t,col:()=>r.t,colgroup:()=>n.t,table:()=>t.t,tbody:()=>a.t,td:()=>l.t,tfoot:()=>o.t,th:()=>c.t,thead:()=>i.t,tr:()=>s.t});Object.defineProperty(exports,`caption`,{enumerable:!0,get:function(){return u.t}}),Object.defineProperty(exports,`col`,{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,`colgroup`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`table`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`tbody`,{enumerable:!0,get:function(){return a.t}}),Object.defineProperty(exports,`td`,{enumerable:!0,get:function(){return l.t}}),Object.defineProperty(exports,`tfoot`,{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,`th`,{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,`thead`,{enumerable:!0,get:function(){return i.t}}),Object.defineProperty(exports,`tr`,{enumerable:!0,get:function(){return s.t}});
2
+ //# sourceMappingURL=table.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.cjs","names":[],"sources":["../../../../src/elements/table/index.ts"],"sourcesContent":["/**\n * Table element factories.\n *\n * Provides framework-agnostic factory functions for semantic HTML table\n * structures and related elements.\n *\n * These factories:\n * - Create semantic table elements using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Preserve native table semantics and accessibility.\n * - Prevent unsafe attribute injection.\n *\n * Tables in pkgn-sol are intentionally low-level primitives. They do not attempt\n * to manage layout, styling, or data structures. Consumers remain responsible\n * for building meaningful table structures.\n *\n * @module elements/table\n * @since 0.1.0\n */\n\n/**\n * `<table>` element factory namespace.\n *\n * Represents tabular data arranged in rows and columns.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table\n */\nexport * as table from './table';\n\n/**\n * `<colgroup>` element factory namespace.\n *\n * Groups one or more `<col>` elements for shared column styling and\n * structural definition.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup\n */\nexport * as colgroup from './colgroup';\n\n/**\n * `<col>` element factory namespace.\n *\n * Defines column-level properties within a table.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col\n */\nexport * as col from './col';\n\n/**\n * `<thead>` element factory namespace.\n *\n * Groups header rows that label table columns.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead\n */\nexport * as thead from './thead';\n\n/**\n * `<tbody>` element factory namespace.\n *\n * Groups the primary body rows of a table.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody\n */\nexport * as tbody from './tbody';\n\n/**\n * `<tfoot>` element factory namespace.\n *\n * Groups footer rows containing summaries or totals.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot\n */\nexport * as tfoot from './tfoot';\n\n/**\n * `<tr>` element factory namespace.\n *\n * Represents a table row.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr\n */\nexport * as tr from './tr';\n\n/**\n * `<th>` element factory namespace.\n *\n * Represents a header cell that labels a row or column.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th\n */\nexport * as th from './th';\n\n/**\n * `<td>` element factory namespace.\n *\n * Represents a standard table data cell.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td\n */\nexport * as td from './td';\n\n/**\n * `<caption>` element factory namespace.\n *\n * Provides a title or description for a table.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n */\nexport * as caption from './caption';\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({TBODY_SELECTOR:()=>r,TBODY_TAG:()=>n,createTbody:()=>a,enhanceTbodies:()=>o}),n=`tbody`,r=`tbody`;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.TBODY_SELECTOR=r,exports.TBODY_TAG=n,exports.createTbody=a,exports.enhanceTbodies=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=tbody.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tbody.cjs","names":[],"sources":["../../../../../src/elements/table/tbody/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Tbody element helpers.\n *\n * @remarks\n * The tbody element (`<tbody>`) represents a block of rows that make up the main\n * body of a table's data.\n *\n * Best-practice guidance:\n * - Use tables for data, not layout.\n * - Group rows meaningfully with `<thead>`, `<tbody>`, and `<tfoot>`.\n * - Prefer semantic headers via `<th>` (with appropriate `scope`/`headers`)\n * and provide a `<caption>` for accessible tables.\n * - Avoid obsolete presentational attributes (e.g. `align`, `valign`, `char`,\n * `charoff`). Use CSS instead.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<tbody>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<tbody>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/tbody\n * - WHATWG HTML: Tables: https://html.spec.whatwg.org/multipage/tables.html\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for table body sections.\n *\n * @category Constants\n */\nexport const TBODY_TAG = 'tbody' as const;\n\n/**\n * A CSS selector targeting tbody elements.\n *\n * @category Constants\n */\nexport const TBODY_SELECTOR = 'tbody';\n\n/**\n * Attribute bag for tbody creation/enhancement.\n *\n * @remarks\n * `<tbody>` accepts standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Note: some legacy presentational attributes existed historically for table\n * sections, but are obsolete. Consumers can still use {@link GlobalAttrs.attrs}\n * as an escape hatch where necessary, subject to pkgn-sol's security rules in\n * `dom.ts` (blocks inline event handlers and raw `style` attribute strings).\n *\n * @category Attributes\n */\nexport type TbodyAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link TbodyAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The tbody attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TbodyAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a tbody element with optional text content and global attributes.\n *\n * @remarks\n * - In real usage, `<tbody>` should contain `<tr>` rows (not text).\n * - Optional text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the tbody (generally discouraged).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<tbody>` element.\n *\n * @example\n * ```ts\n * import { createTbody } from \"@lnpg/pkgn-sol/elements/table/tbody\";\n *\n * const tbody = createTbody(undefined, { className: \"data-body\" });\n * ```\n *\n * @category DOM\n */\nexport function createTbody(text?: string, attrs?: TbodyAttrs): ElementOf<typeof TBODY_TAG> {\n return createElement(TBODY_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance tbody elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTbodies(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for tbody.\n void root;\n}\n"],"mappings":"uMAkEa,EAAY,QAOZ,EAAiB,QAiC9B,SAAS,EAAc,EAA6C,CAClE,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,EAAY,EAAe,EAAiD,CAC1F,OAAO,EAAA,EAAc,EAAW,EAAc,EAAM,CAAE,EAAK,CAqB7D,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({TD_SELECTOR:()=>`td`,TD_TAG:()=>`td`,createTd:()=>a,enhanceTds:()=>o}),n=`td`,r=`td`;function i(e){if(!e)return;let{aria:t,colspan:n,rowspan:r,headers:i,attrs:a,...o}=e,s={...o};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&&(s.aria=e)}let c={...a??{}},l=e=>Object.prototype.hasOwnProperty.call(c,e);if(typeof n==`number`&&!l(`colspan`)){if(!Number.isInteger(n)||n<=0)throw Error(`Invalid "colspan" for <td>: expected a positive integer greater than zero.`);c.colspan=n}if(typeof r==`number`&&!l(`rowspan`)){if(!Number.isInteger(r)||r<=0)throw Error(`Invalid "rowspan" for <td>: expected a positive integer greater than zero.`);c.rowspan=r}if(typeof i==`string`&&!l(`headers`)){let e=i.trim();if(e.length===0)throw Error(`Invalid "headers" for <td>: expected a non-empty string.`);c.headers=e}return Object.keys(c).length>0&&(s.attrs=c),s}function a(t,n){return e.n(`td`,i(n),t)}function o(e=document){}exports.TD_SELECTOR=r,exports.TD_TAG=n,exports.createTd=a,exports.enhanceTds=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=td.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"td.cjs","names":[],"sources":["../../../../../src/elements/table/td/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Td element helpers.\n *\n * @remarks\n * The td element (`<td>`) represents a data cell in a table row (`<tr>`).\n *\n * Best-practice guidance:\n * - Use `<td>` for data cells and `<th>` for header cells.\n * - Provide a `<caption>` and properly marked header cells for accessible tables.\n * - Prefer simple tables. For complex tables with multi-level headers, use\n * the `headers` attribute to associate a `<td>` with one or more `<th>` IDs.\n * - Avoid obsolete presentational attributes (e.g. `align`, `bgcolor`, `valign`).\n * Use CSS instead.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<td>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * References:\n * - MDN: `<td>`: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/td\n * - WHATWG HTML: Tables: https://html.spec.whatwg.org/multipage/tables.html\n * - W3C WAI: Tables (headers/id technique): https://www.w3.org/WAI/tutorials/tables/multi-level/\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for table data cells.\n *\n * @category Constants\n */\nexport const TD_TAG = 'td' as const;\n\n/**\n * A CSS selector targeting td elements.\n *\n * @category Constants\n */\nexport const TD_SELECTOR = 'td';\n\n/**\n * Attribute bag for td creation/enhancement.\n *\n * @remarks\n * In addition to global attributes, `<td>` participates in the table model via:\n * - `colspan`: number of columns spanned (positive integer)\n * - `rowspan`: number of rows spanned (positive integer)\n * - `headers`: space-separated list of `<th id=\"...\">` references for complex tables\n *\n * pkgn-sol supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type TdAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Number of columns this cell spans.\n *\n * @remarks\n * Must be a positive integer greater than zero.\n */\n colspan?: number;\n\n /**\n * Number of rows this cell spans.\n *\n * @remarks\n * Must be a positive integer greater than zero.\n */\n rowspan?: number;\n\n /**\n * Space-separated list of header cell IDs (`<th id=\"...\">`) that apply to this cell.\n *\n * @remarks\n * This is typically only necessary for complex tables.\n */\n headers?: string;\n};\n\n/**\n * Normalize {@link TdAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The td attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TdAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, colspan, rowspan, headers, attrs: rawAttrs, ...rest } = attrs;\n\n const out: GlobalAttrs = { ...rest };\n\n // Map structured ARIA, only if something is actually defined.\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n if (Object.keys(mappedAria).length > 0) out.aria = mappedAria;\n }\n\n // Preserve caller escape hatch, but allow pkgn-sol-typed fields to fill gaps.\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rawAttrs ?? {}) };\n\n const hasOwn = (k: string) => Object.prototype.hasOwnProperty.call(mergedAttrs, k);\n\n if (typeof colspan === 'number' && !hasOwn('colspan')) {\n if (!Number.isInteger(colspan) || colspan <= 0) {\n throw new Error('Invalid \"colspan\" for <td>: expected a positive integer greater than zero.');\n }\n mergedAttrs.colspan = colspan;\n }\n\n if (typeof rowspan === 'number' && !hasOwn('rowspan')) {\n if (!Number.isInteger(rowspan) || rowspan <= 0) {\n throw new Error('Invalid \"rowspan\" for <td>: expected a positive integer greater than zero.');\n }\n mergedAttrs.rowspan = rowspan;\n }\n\n if (typeof headers === 'string' && !hasOwn('headers')) {\n const trimmed = headers.trim();\n if (trimmed.length === 0) {\n throw new Error('Invalid \"headers\" for <td>: expected a non-empty string.');\n }\n mergedAttrs.headers = trimmed;\n }\n\n if (Object.keys(mergedAttrs).length > 0) out.attrs = mergedAttrs;\n\n return out;\n}\n\n/**\n * Create a td element with optional text content and global attributes.\n *\n * @remarks\n * - In real usage, `<td>` contains text and/or phrasing content, but should never\n * be built via `innerHTML` from untrusted data.\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the td.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<td>` element.\n *\n * @example\n * ```ts\n * import { createTd } from \"@lnpg/pkgn-sol/elements/table/td\";\n *\n * const cell = createTd(\"42\", { colspan: 2 });\n * ```\n *\n * @category DOM\n */\nexport function createTd(text?: string, attrs?: TdAttrs): ElementOf<typeof TD_TAG> {\n return createElement(TD_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance td elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTds(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for td.\n void root;\n}\n"],"mappings":"gMAkEa,EAAS,KAOT,EAAc,KAuD3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,UAAS,UAAS,UAAS,MAAO,EAAU,GAAG,GAAS,EAEhE,EAAmB,CAAE,GAAG,EAAM,CAGpC,GAAI,EAAM,CACR,IAAM,EAA+C,EAAE,CAEnD,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,EAAI,KAAO,GAIrD,IAAM,EAAiD,CAAE,GAAI,GAAY,EAAE,CAAG,CAExE,EAAU,GAAc,OAAO,UAAU,eAAe,KAAK,EAAa,EAAE,CAElF,GAAI,OAAO,GAAY,UAAY,CAAC,EAAO,UAAU,CAAE,CACrD,GAAI,CAAC,OAAO,UAAU,EAAQ,EAAI,GAAW,EAC3C,MAAU,MAAM,6EAA6E,CAE/F,EAAY,QAAU,EAGxB,GAAI,OAAO,GAAY,UAAY,CAAC,EAAO,UAAU,CAAE,CACrD,GAAI,CAAC,OAAO,UAAU,EAAQ,EAAI,GAAW,EAC3C,MAAU,MAAM,6EAA6E,CAE/F,EAAY,QAAU,EAGxB,GAAI,OAAO,GAAY,UAAY,CAAC,EAAO,UAAU,CAAE,CACrD,IAAM,EAAU,EAAQ,MAAM,CAC9B,GAAI,EAAQ,SAAW,EACrB,MAAU,MAAM,2DAA2D,CAE7E,EAAY,QAAU,EAKxB,OAFI,OAAO,KAAK,EAAY,CAAC,OAAS,IAAG,EAAI,MAAQ,GAE9C,EA2BT,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({TFOOT_SELECTOR:()=>r,TFOOT_TAG:()=>n,createTfoot:()=>a,enhanceTfoots:()=>o}),n=`tfoot`,r=`tfoot`;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){return e.n(n,i(t))}function o(e=document){}exports.TFOOT_SELECTOR=r,exports.TFOOT_TAG=n,exports.createTfoot=a,exports.enhanceTfoots=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=tfoot.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tfoot.cjs","names":[],"sources":["../../../../../src/elements/table/tfoot/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Tfoot element helpers.\n *\n * @remarks\n * The tfoot element (`<tfoot>`) encapsulates a set of table rows (`<tr>`) that\n * comprise the footer of a table, typically containing column summaries such as\n * totals or other aggregate values. :contentReference[oaicite:1]{index=1}\n *\n * Best-practice guidance:\n * - Use `<tfoot>` for footer rows (summaries/totals), and keep the table's\n * structure logical with `<thead>` for headers and `<tbody>` for body rows.\n * - Many guides recommend placing `<tfoot>` after `<tbody>` for readability. :contentReference[oaicite:2]{index=2}\n * - Avoid deprecated presentational attributes and use CSS instead.\n * - Prefer native table semantics; only use ARIA when you cannot express the\n * intended structure using proper table markup.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<tfoot>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for tfoot elements.\n *\n * @category Constants\n */\nexport const TFOOT_TAG = 'tfoot' as const;\n\n/**\n * A CSS selector targeting tfoot elements.\n *\n * @category Constants\n */\nexport const TFOOT_SELECTOR = 'tfoot';\n\n/**\n * Attribute bag for tfoot creation/enhancement.\n *\n * @remarks\n * Tfoot elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type TfootAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link TfootAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The tfoot attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TfootAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create a tfoot element with global attributes.\n *\n * @remarks\n * - `<tfoot>` is a structural table element. pkgn-sol does not accept a text argument\n * for this factory. Populate it with `<tr>` (and cells) as needed.\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<tfoot>` element.\n *\n * @example\n * Create and append a tfoot:\n * ```ts\n * import { createTfoot } from \"@lnpg/pkgn-sol/elements/table/tfoot\";\n *\n * const tfoot = createTfoot({ className: \"table-foot\" });\n * table.appendChild(tfoot);\n * ```\n *\n * @category DOM\n */\nexport function createTfoot(attrs?: TfootAttrs): ElementOf<typeof TFOOT_TAG> {\n return createElement(TFOOT_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance tfoot elements within a given root.\n *\n * @remarks\n * This is intentionally a no-op in `0.1.0`.\n *\n * Why does it exist?\n * - It establishes a stable integration pattern for frameworks (Vue/React/etc.)\n * - It allows future progressive enhancements without changing consumer code\n *\n * What it will never do:\n * - It will not inject styles (CSS remains the source of truth)\n * - It will not introduce framework-specific behavior\n *\n * @param root - The node to search within. Defaults to `document`.\n *\n * @category Enhancement\n */\nexport function enhanceTfoots(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for tfoot.\n void root;\n}\n"],"mappings":"sMA+Da,EAAY,QAOZ,EAAiB,QAgC9B,SAAS,EAAc,EAA6C,CAClE,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,EAAY,EAAiD,CAC3E,OAAO,EAAA,EAAc,EAAW,EAAc,EAAM,CAAC,CAqBvD,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({TH_SELECTOR:()=>`th`,TH_TAG:()=>`th`,createTh:()=>o,enhanceThs:()=>s}),n=`th`,r=`th`;function i(e,t,n){Object.prototype.hasOwnProperty.call(e,t)||(e[t]=n)}function a(e){if(!e)return;let{aria:t,abbr:n,colspan:r,rowspan:a,headers:o,scope: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={...c.attrs??{}};typeof n==`string`&&n.length>0&&i(u,`abbr`,n),typeof o==`string`&&o.length>0&&i(u,`headers`,o),typeof s==`string`&&s.length>0&&i(u,`scope`,s),typeof r==`number`&&Number.isFinite(r)&&r>0&&i(u,`colspan`,Math.trunc(r)),typeof a==`number`&&Number.isFinite(a)&&a>0&&i(u,`rowspan`,Math.trunc(a));let d=Object.keys(u).length>0;return{...c,...l?{aria:l}:null,...d?{attrs:u}:null}}function o(t,n){return e.n(`th`,a(n),t)}function s(e=document){}exports.TH_SELECTOR=r,exports.TH_TAG=n,exports.createTh=o,exports.enhanceThs=s,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=th.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"th.cjs","names":[],"sources":["../../../../../src/elements/table/th/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Th element helpers.\n *\n * @remarks\n * The th element (`<th>`) represents a header cell in a table row (`<tr>`).\n * It is used to label a group of related cells, typically via:\n * - `scope` for simple row/column headers\n * - `headers` for complex tables with multi-level or irregular headings\n *\n * Best-practice guidance:\n * - Prefer native table semantics (use `<th>` for headers, not `role=\"columnheader\"`).\n * - Use `scope` for simple tables (`row`, `col`, `rowgroup`, `colgroup`).\n * - For complex tables, use `id` on `<th>` cells and reference them with\n * `headers` from the related data cells (and sometimes header cells).\n * - Avoid deprecated presentational attributes and use CSS instead.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<th>` cells 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 th elements.\n *\n * @category Constants\n */\nexport const TH_TAG = 'th' as const;\n\n/**\n * A CSS selector targeting th elements.\n *\n * @category Constants\n */\nexport const TH_SELECTOR = 'th';\n\n/**\n * Allowed `scope` values for `<th>`.\n *\n * @remarks\n * The HTML spec defines explicit keywords plus an automatic/default state.\n * pkgn-sol exposes the common keyword values and allows an explicit `\"auto\"` value\n * to match the spec's conceptual default state. Consumers control structure;\n * pkgn-sol does not attempt to enforce table-model anchoring constraints.\n *\n * @category Attributes\n */\nexport type ThScope = 'row' | 'col' | 'rowgroup' | 'colgroup' | 'auto';\n\n/**\n * Attribute bag for th creation/enhancement.\n *\n * @remarks\n * Th elements accept standard HTML global attributes, plus:\n * - `abbr`: an alternative label for the header cell (often abbreviated)\n * - `colspan`: number of columns the cell spans\n * - `rowspan`: number of rows the cell spans\n * - `headers`: space-separated IDs of `<th>` elements that apply to this cell\n * - `scope`: indicates the set of cells this header applies to (`row`, `col`, etc.)\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type ThAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Alternative label for the header cell.\n *\n * @remarks\n * Useful when the visible header text is long but needs a shorter label in\n * other contexts (e.g. when referenced as a header).\n */\n abbr?: string;\n\n /**\n * Number of columns the cell spans.\n *\n * @remarks\n * Must be a positive integer to be meaningful. pkgn-sol sets the attribute only\n * when you provide a finite value greater than 0.\n */\n colspan?: number;\n\n /**\n * Number of rows the cell spans.\n *\n * @remarks\n * Must be a positive integer to be meaningful. pkgn-sol sets the attribute only\n * when you provide a finite value greater than 0.\n */\n rowspan?: number;\n\n /**\n * Space-separated IDs of `<th>` elements that apply to this cell.\n *\n * @remarks\n * This is primarily used for complex tables where `scope` is insufficient.\n * pkgn-sol does not validate ID existence; consumers control their DOM trees.\n */\n headers?: string;\n\n /**\n * Indicates which cells the header cell applies to.\n *\n * @remarks\n * Use for simple row/column headers. For complex tables, prefer `headers`.\n */\n scope?: ThScope;\n};\n\n/**\n * Set an attribute only if it is not already present on the attribute bag.\n *\n * @remarks\n * This supports the pkgn-sol convention where explicit raw attributes provided via\n * {@link GlobalAttrs.attrs} are treated as the caller's final intent.\n *\n * @param attrs - The destination attributes object.\n * @param name - Attribute name.\n * @param value - Attribute value.\n *\n * @category Internal\n */\nfunction setIfUnset(\n attrs: NonNullable<GlobalAttrs['attrs']>,\n name: string,\n value: string | number | boolean,\n): void {\n if (Object.prototype.hasOwnProperty.call(attrs, name)) return;\n attrs[name] = value;\n}\n\n/**\n * Normalize {@link ThAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The th attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: ThAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, abbr, colspan, rowspan, headers, scope, ...rest } = attrs;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> | undefined = aria\n ? (() => {\n const out: NonNullable<GlobalAttrs['aria']> = {};\n if (typeof aria.label === 'string') out.label = aria.label;\n if (typeof aria.labelledby === 'string') out.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') out.hidden = aria.hidden;\n\n return Object.keys(out).length > 0 ? out : undefined;\n })()\n : undefined;\n\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rest.attrs ?? {}) };\n\n if (typeof abbr === 'string' && abbr.length > 0) setIfUnset(mergedAttrs, 'abbr', abbr);\n if (typeof headers === 'string' && headers.length > 0)\n setIfUnset(mergedAttrs, 'headers', headers);\n\n if (typeof scope === 'string' && scope.length > 0) setIfUnset(mergedAttrs, 'scope', scope);\n\n if (typeof colspan === 'number' && Number.isFinite(colspan) && colspan > 0) {\n setIfUnset(mergedAttrs, 'colspan', Math.trunc(colspan));\n }\n\n if (typeof rowspan === 'number' && Number.isFinite(rowspan) && rowspan > 0) {\n setIfUnset(mergedAttrs, 'rowspan', Math.trunc(rowspan));\n }\n\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n\n return {\n ...rest,\n ...(mappedAria ? { aria: mappedAria } : null),\n ...(hasMergedAttrs ? { attrs: mergedAttrs } : null),\n };\n}\n\n/**\n * Create a th 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 header cell.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<th>` element.\n *\n * @example\n * Create a column header cell:\n * ```ts\n * import { createTh } from \"@lnpg/pkgn-sol/elements/table/th\";\n *\n * const th = createTh(\"Price\", { scope: \"col\" });\n * row.appendChild(th);\n * ```\n *\n * @category DOM\n */\nexport function createTh(text?: string, attrs?: ThAttrs): ElementOf<typeof TH_TAG> {\n return createElement(TH_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance th 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 enhanceThs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for th.\n void root;\n}\n"],"mappings":"gMA+Da,EAAS,KAOT,EAAc,KAmG3B,SAAS,EACP,EACA,EACA,EACM,CACF,OAAO,UAAU,eAAe,KAAK,EAAO,EAAK,GACrD,EAAM,GAAQ,GAWhB,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,UAAS,UAAS,UAAS,QAAO,GAAG,GAAS,EAE5D,EAA2D,OACtD,CACL,IAAM,EAAwC,EAAE,CAKhD,OAJI,OAAO,EAAK,OAAU,WAAU,EAAI,MAAQ,EAAK,OACjD,OAAO,EAAK,YAAe,WAAU,EAAI,WAAa,EAAK,YAC3D,OAAO,EAAK,QAAW,YAAW,EAAI,OAAS,EAAK,QAEjD,OAAO,KAAK,EAAI,CAAC,OAAS,EAAI,EAAM,IAAA,MACzC,CACJ,IAAA,GAEE,EAAiD,CAAE,GAAI,EAAK,OAAS,EAAE,CAAG,CAE5E,OAAO,GAAS,UAAY,EAAK,OAAS,GAAG,EAAW,EAAa,OAAQ,EAAK,CAClF,OAAO,GAAY,UAAY,EAAQ,OAAS,GAClD,EAAW,EAAa,UAAW,EAAQ,CAEzC,OAAO,GAAU,UAAY,EAAM,OAAS,GAAG,EAAW,EAAa,QAAS,EAAM,CAEtF,OAAO,GAAY,UAAY,OAAO,SAAS,EAAQ,EAAI,EAAU,GACvE,EAAW,EAAa,UAAW,KAAK,MAAM,EAAQ,CAAC,CAGrD,OAAO,GAAY,UAAY,OAAO,SAAS,EAAQ,EAAI,EAAU,GACvE,EAAW,EAAa,UAAW,KAAK,MAAM,EAAQ,CAAC,CAGzD,IAAM,EAAiB,OAAO,KAAK,EAAY,CAAC,OAAS,EAEzD,MAAO,CACL,GAAG,EACH,GAAI,EAAa,CAAE,KAAM,EAAY,CAAG,KACxC,GAAI,EAAiB,CAAE,MAAO,EAAa,CAAG,KAC/C,CA2BH,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({THEAD_SELECTOR:()=>r,THEAD_TAG:()=>n,createThead:()=>a,enhanceTheads:()=>o}),n=`thead`,r=`thead`;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){return e.n(n,i(t))}function o(e=document){}exports.THEAD_SELECTOR=r,exports.THEAD_TAG=n,exports.createThead=a,exports.enhanceTheads=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=thead.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thead.cjs","names":[],"sources":["../../../../../src/elements/table/thead/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Thead element helpers.\n *\n * @remarks\n * The thead element (`<thead>`) represents the block of rows that form the\n * column headers (and related header-area rows) for a table.\n *\n * Best-practice guidance:\n * - Use `<thead>` to group header rows, typically using `<th>` cells for headers.\n * - Keep the table structure logical: `<caption>` (optional), then `<colgroup>`\n * (optional), then `<thead>`, then `<tbody>`/`<tfoot>` as needed.\n * - Avoid deprecated presentational attributes (e.g. `align`) and use CSS instead.\n * - Prefer native table semantics; only use ARIA when you cannot express the\n * intended structure using proper table markup.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<thead>` 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 thead elements.\n *\n * @category Constants\n */\nexport const THEAD_TAG = 'thead' as const;\n\n/**\n * A CSS selector targeting thead elements.\n *\n * @category Constants\n */\nexport const THEAD_SELECTOR = 'thead';\n\n/**\n * Attribute bag for thead creation/enhancement.\n *\n * @remarks\n * Thead elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * Security notes:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style} instead.\n *\n * @category Attributes\n */\nexport type TheadAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link TheadAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The thead attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TheadAttrs): 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 thead element with global attributes.\n *\n * @remarks\n * - `<thead>` is a structural table element. pkgn-sol does not accept a text argument\n * for this factory. Populate it with `<tr>` and header cells (`<th>`) as needed.\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param attrs - Optional attributes to apply.\n * @returns The created `<thead>` element.\n *\n * @example\n * Create and append a thead:\n * ```ts\n * import { createThead } from \"@lnpg/pkgn-sol/elements/table/thead\";\n *\n * const thead = createThead({ className: \"table-head\" });\n * table.appendChild(thead);\n * ```\n *\n * @category DOM\n */\nexport function createThead(attrs?: TheadAttrs): ElementOf<typeof THEAD_TAG> {\n return createElement(THEAD_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance thead 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 enhanceTheads(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for thead.\n void root;\n}\n"],"mappings":"sMA8Da,EAAY,QAOZ,EAAiB,QAgC9B,SAAS,EAAc,EAA6C,CAClE,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,EAAY,EAAiD,CAC3E,OAAO,EAAA,EAAc,EAAW,EAAc,EAAM,CAAC,CAqBvD,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({TR_SELECTOR:()=>`tr`,TR_TAG:()=>`tr`,createTr:()=>a,enhanceTrs:()=>o}),n=`tr`,r=`tr`;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(`tr`,i(n),t)}function o(e=document){}exports.TR_SELECTOR=r,exports.TR_TAG=n,exports.createTr=a,exports.enhanceTrs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=tr.cjs.map