@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":"b.cjs","names":[],"sources":["../../../../../src/elements/inline/b/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: B element helpers.\n *\n * @remarks\n * The b element (`<b>`) represents a span of text to which attention is being\n * drawn for utilitarian purposes, without conveying extra importance.\n *\n * Best-practice guidance:\n * - Use `<b>` to draw attention without implying importance.\n * - Use `<strong>` for strong importance and `<em>` for stress emphasis.\n * - Do not use `<b>` purely for styling. Prefer CSS (e.g. `font-weight`) when the\n * goal is visual bolding rather than semantics.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create inline attention spans 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 * MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b\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 \"bring attention to\" spans.\n *\n * @category Constants\n */\nexport const B_TAG = 'b' as const;\n\n/**\n * A CSS selector targeting b elements.\n *\n * @category Constants\n */\nexport const B_SELECTOR = 'b';\n\n/**\n * Attribute bag for b creation/enhancement.\n *\n * @remarks\n * B elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type BAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link BAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The b attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: BAttrs): 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 b 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 b element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<b>` element.\n *\n * @example\n * ```ts\n * import { createB } from \"@lnpg/pkgn-sol/elements/inline/b\";\n *\n * document.body.appendChild(createB(\"Keyword\", { className: \"keyword\" }));\n * ```\n *\n * @category DOM\n */\nexport function createB(text?: string, attrs?: BAttrs): ElementOf<typeof B_TAG> {\n return createElement(B_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance b 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 enhanceBs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for b.\n void root;\n}\n"],"mappings":"0LA2Da,EAAQ,IAOR,EAAa,IA4B1B,SAAS,EAAc,EAAyC,CAC9D,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,EAyBrD,SAAgB,EAAQ,EAAe,EAAyC,CAC9E,OAAO,EAAA,EAAA,IAAqB,EAAc,EAAM,CAAE,EAAK,CAqBzD,SAAgB,EAAU,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({CITE_SELECTOR:()=>r,CITE_TAG:()=>n,createCite:()=>a,enhanceCites:()=>o}),n=`cite`,r=`cite`;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.CITE_SELECTOR=r,exports.CITE_TAG=n,exports.createCite=a,exports.enhanceCites=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=cite.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cite.cjs","names":[],"sources":["../../../../../src/elements/inline/cite/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Cite element helpers.\n *\n * @remarks\n * The cite element (`<cite>`) represents the title of a creative work (e.g. a book,\n * paper, essay, poem, song, film, TV show, game, sculpture, painting, etc.). :contentReference[oaicite:2]{index=2}\n *\n * Best-practice guidance:\n * - Use `<cite>` for the title of the work being referenced, not the author's name\n * and not purely for styling. :contentReference[oaicite:3]{index=3}\n * - If you want a visible link to a source, use an `<a>` element (and/or surrounding\n * citation patterns) rather than relying on hidden metadata. (pkgn-sol intentionally\n * does not invent citation-specific behaviors here.)\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create cite inline nodes in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { 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 cite.\n *\n * @category Constants\n */\nexport const CITE_TAG = 'cite' as const;\n\n/**\n * A CSS selector targeting cite elements.\n *\n * @category Constants\n */\nexport const CITE_SELECTOR = 'cite';\n\n/**\n * Attribute bag for cite creation/enhancement.\n *\n * @remarks\n * The `<cite>` element uses standard HTML global attributes. :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 * @category Attributes\n */\nexport type CiteAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link CiteAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The cite attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: CiteAttrs): 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 cite 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 cite element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<cite>` element.\n *\n * @example\n * Cite a work title:\n * ```ts\n * import { createCite } from \"@lnpg/pkgn-sol/elements/inline/cite\";\n *\n * const c = createCite(\"The Scream\", { className: \"work-title\" });\n * document.body.appendChild(c);\n * ```\n *\n * @category DOM\n */\nexport function createCite(text?: string, attrs?: CiteAttrs): ElementOf<typeof CITE_TAG> {\n return createElement(CITE_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance cite 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 enhanceCites(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for cite.\n void root;\n}\n"],"mappings":"kMA6Da,EAAW,OAOX,EAAgB,OA4B7B,SAAS,EAAc,EAA4C,CACjE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAM,CAAE,EAAK,CAqB5D,SAAgB,EAAa,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({CODE_SELECTOR:()=>r,CODE_TAG:()=>n,createCode:()=>a,enhanceCodes:()=>o}),n=`code`,r=`code`;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.CODE_SELECTOR=r,exports.CODE_TAG=n,exports.createCode=a,exports.enhanceCodes=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=code.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.cjs","names":[],"sources":["../../../../../src/elements/inline/code/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Code element helpers.\n *\n * @remarks\n * The code element (`<code>`) represents a fragment of computer code.\n *\n * Best-practice guidance:\n * - Use `<code>` for inline code fragments inside text.\n * - For code blocks, pair `<code>` with `<pre>` (e.g. `<pre><code>...</code></pre>`).\n * - Do not use `<code>` purely for visual styling. If the intent is presentational\n * (monospace text), use CSS instead.\n *\n * Attributes:\n * - `<code>` has no element-specific attributes in HTML. It accepts global\n * attributes only.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<code>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/code\n * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-code-element\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for the code element.\n *\n * @category Constants\n */\nexport const CODE_TAG = 'code' as const;\n\n/**\n * A CSS selector targeting code elements.\n *\n * @category Constants\n */\nexport const CODE_SELECTOR = 'code';\n\n/**\n * Attribute bag for code creation/enhancement.\n *\n * @remarks\n * `<code>` 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 * Security note:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style}.\n *\n * @category Attributes\n */\nexport type CodeAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link CodeAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The code attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: CodeAttrs): 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 code 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: `<code>` is phrasing content. This helper supports a simple `text`\n * convenience for cases where plain text is sufficient; consumers can still\n * append richer child nodes afterwards.\n *\n * @param text - Optional text content for the code element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<code>` element.\n *\n * @example\n * ```ts\n * import { createCode } from \"@lnpg/pkgn-sol/elements/inline/code\";\n *\n * const snippet = createCode(\"npm run build\", { className: \"cmd\" });\n * document.body.appendChild(snippet);\n * ```\n *\n * @category DOM\n */\nexport function createCode(text?: string, attrs?: CodeAttrs): ElementOf<typeof CODE_TAG> {\n return createElement(CODE_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance code 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 enhanceCodes(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for code.\n void root;\n}\n"],"mappings":"kMAkEa,EAAW,OAOX,EAAgB,OAgC7B,SAAS,EAAc,EAA4C,CACjE,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,EA8BrD,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAM,CAAE,EAAK,CAqB5D,SAAgB,EAAa,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({DATA_SELECTOR:()=>r,DATA_TAG:()=>n,createData:()=>a,enhanceDatas:()=>o}),n=`data`,r=`data`;function i(e,t){if(!e)return;let{aria:n,value:r,...i}=e,a=i,o={...a.attrs??{}},s=typeof r==`string`||typeof r==`number`?r:typeof t==`string`?t:void 0;if((typeof s==`string`||typeof s==`number`)&&(o.value=s),Object.keys(o).length>0&&(a.attrs=o),!n)return a;let c={};return typeof n.label==`string`&&(c.label=n.label),typeof n.labelledby==`string`&&(c.labelledby=n.labelledby),typeof n.hidden==`boolean`&&(c.hidden=n.hidden),Object.keys(c).length>0?{...a,aria:c}:a}function a(t,r){return e.n(n,i(r,t),t)}function o(e=document){}exports.DATA_SELECTOR=r,exports.DATA_TAG=n,exports.createData=a,exports.enhanceDatas=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=data.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.cjs","names":[],"sources":["../../../../../src/elements/inline/data/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Data (`data`) element helpers.\n *\n * @remarks\n * The data element (`<data>`) links human-readable content to a machine-readable\n * value via the `value` attribute.\n *\n * Best-practice guidance:\n * - Use `value` for canonical/machine-readable values (IDs, codes, normalized forms).\n * - Keep visible text human-friendly.\n * - Prefer explicit `value` when the machine value differs from the displayed text.\n *\n * pkgn-sol applies a sensible fallback:\n * - If `attrs.value` is omitted and `text` is provided, pkgn-sol sets `value` to `text`.\n *\n * Security notes:\n * - pkgn-sol blocks unsafe attribute *names* (e.g. `onclick`, raw `style`).\n * - pkgn-sol does not sanitize attribute *values*. Treat untrusted inputs accordingly.\n *\n * References:\n * - MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data\n * - WHATWG: https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-data-element\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * Allowed value types for the `value` attribute on `<data>`.\n *\n * @remarks\n * HTML treats attributes as strings. pkgn-sol allows string/number and coerces to string.\n *\n * @category Attributes\n */\nexport type DataValue = string | number;\n\n/**\n * The semantic tag name for data elements.\n *\n * @category Constants\n */\nexport const DATA_TAG = 'data' as const;\n\n/**\n * A CSS selector targeting data elements.\n *\n * @category Constants\n */\nexport const DATA_SELECTOR = 'data';\n\n/**\n * Attribute bag for data element creation/enhancement.\n *\n * @remarks\n * Data elements accept standard HTML global attributes, plus:\n * - `value`: machine-readable translation of the element's content.\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 DataAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Machine-readable value for the data.\n *\n * @remarks\n * If omitted and `text` is provided, pkgn-sol falls back to using `text` as `value`.\n */\n value?: DataValue;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link DataAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The data element attributes.\n * @param text - Optional text content used for the `value` fallback.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DataAttrs, text?: string): GlobalAttrs | undefined {\n if (!attrs) {\n // Even when attrs are omitted, we may still want to apply the value fallback.\n // However, without an attrs bag there's nowhere to attach `attrs.value`.\n return undefined;\n }\n\n const { aria, value, ...rest } = attrs;\n\n const out: GlobalAttrs = rest;\n\n const rawAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(out.attrs ?? {}) };\n\n // Prefer explicit `value`. Otherwise, fall back to `text` (if provided).\n const effectiveValue =\n typeof value === 'string' || typeof value === 'number'\n ? value\n : typeof text === 'string'\n ? text\n : undefined;\n\n if (typeof effectiveValue === 'string' || typeof effectiveValue === 'number') {\n rawAttrs.value = effectiveValue;\n }\n\n if (Object.keys(rawAttrs).length > 0) out.attrs = rawAttrs;\n\n if (!aria) return out;\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 ? { ...out, aria: mappedAria } : out;\n}\n\n/**\n * Create a data 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 * - If `attrs.value` is omitted and `text` is provided, pkgn-sol sets `value` to `text`.\n *\n * @param text - Optional human-readable content for the data element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<data>` element.\n *\n * @example\n * ```ts\n * import { createData } from \"@lnpg/pkgn-sol/elements/inline/data\";\n *\n * document.body.appendChild(\n * createData(\"Mini Ketchup\", { value: 398 })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createData(text?: string, attrs?: DataAttrs): ElementOf<typeof DATA_TAG> {\n return createElement(DATA_TAG, toGlobalAttrs(attrs, text), text);\n}\n\n/**\n * Enhance data 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 enhanceDatas(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for data.\n void root;\n}\n"],"mappings":"kMAwEa,EAAW,OAOX,EAAgB,OAsC7B,SAAS,EAAc,EAAmB,EAAwC,CAChF,GAAI,CAAC,EAGH,OAGF,GAAM,CAAE,OAAM,QAAO,GAAG,GAAS,EAE3B,EAAmB,EAEnB,EAA8C,CAAE,GAAI,EAAI,OAAS,EAAE,CAAG,CAGtE,EACJ,OAAO,GAAU,UAAY,OAAO,GAAU,SAC1C,EACA,OAAO,GAAS,SACd,EACA,IAAA,GAQR,IANI,OAAO,GAAmB,UAAY,OAAO,GAAmB,YAClE,EAAS,MAAQ,GAGf,OAAO,KAAK,EAAS,CAAC,OAAS,IAAG,EAAI,MAAQ,GAE9C,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,EAAK,KAAM,EAAY,CAAG,EA4BpD,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAO,EAAK,CAAE,EAAK,CAqBlE,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({DFN_SELECTOR:()=>`dfn`,DFN_TAG:()=>`dfn`,createDfn:()=>a,enhanceDfns:()=>o}),n=`dfn`,r=`dfn`;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(`dfn`,i(n),t)}function o(e=document){}exports.DFN_SELECTOR=r,exports.DFN_TAG=n,exports.createDfn=a,exports.enhanceDfns=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=dfn.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dfn.cjs","names":[],"sources":["../../../../../src/elements/inline/dfn/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Dfn element helpers.\n *\n * @remarks\n * The dfn element (`<dfn>`) indicates the defining instance of a term.\n * The nearest containing phrasing context (often a paragraph, list item, or\n * section) should include the term's definition.\n *\n * Best-practice guidance:\n * - Use `<dfn>` for the defining instance of a term, not for general emphasis.\n * - Avoid nesting `<dfn>` inside another `<dfn>`.\n * - If you use the `title` attribute on `<dfn>`, it should contain only the term\n * being defined (useful when the displayed text differs from the term).\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create definition-term markers 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 * MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn\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 defining instances of terms.\n *\n * @category Constants\n */\nexport const DFN_TAG = 'dfn' as const;\n\n/**\n * A CSS selector targeting dfn elements.\n *\n * @category Constants\n */\nexport const DFN_SELECTOR = 'dfn';\n\n/**\n * Attribute bag for dfn creation/enhancement.\n *\n * @remarks\n * Dfn elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type DfnAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link DfnAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The dfn attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DfnAttrs): 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 dfn 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 dfn element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<dfn>` element.\n *\n * @example\n * ```ts\n * import { createDfn } from \"@lnpg/pkgn-sol/elements/inline/dfn\";\n *\n * document.body.appendChild(\n * createDfn(\"validator\", { id: \"term-validator\" })\n * );\n * ```\n *\n * @category DOM\n */\nexport function createDfn(text?: string, attrs?: DfnAttrs): ElementOf<typeof DFN_TAG> {\n return createElement(DFN_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance dfn 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 enhanceDfns(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for dfn.\n void root;\n}\n"],"mappings":"sMA4Da,EAAU,MAOV,EAAe,MA4B5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,SAAgB,EAAU,EAAe,EAA6C,CACpF,OAAO,EAAA,EAAA,MAAuB,EAAc,EAAM,CAAE,EAAK,CAqB3D,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({EM_SELECTOR:()=>`em`,EM_TAG:()=>`em`,createEm:()=>a,enhanceEms:()=>o}),n=`em`,r=`em`;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(`em`,i(n),t)}function o(e=document){}exports.EM_SELECTOR=r,exports.EM_TAG=n,exports.createEm=a,exports.enhanceEms=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=em.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"em.cjs","names":[],"sources":["../../../../../src/elements/inline/em/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Em element helpers.\n *\n * @remarks\n * The em element (`<em>`) marks text that has stress emphasis. Stress emphasis is\n * semantic: it can change the meaning of a sentence, and nested `<em>` elements\n * indicate a greater degree of emphasis. :contentReference[oaicite:2]{index=2}\n *\n * Best-practice guidance:\n * - Use `<em>` when you would change vocal stress if speaking the sentence.\n * - Avoid using `<em>` purely for visual styling (e.g. italics); use CSS instead.\n * - Nested `<em>` increases emphasis; do not nest for decoration. :contentReference[oaicite:3]{index=3}\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create emphasis nodes in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { 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 stress emphasis.\n *\n * @category Constants\n */\nexport const EM_TAG = 'em' as const;\n\n/**\n * A CSS selector targeting em elements.\n *\n * @category Constants\n */\nexport const EM_SELECTOR = 'em';\n\n/**\n * Attribute bag for em creation/enhancement.\n *\n * @remarks\n * The `<em>` element uses standard HTML global attributes. :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 * @category Attributes\n */\nexport type EmAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link EmAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The em attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: EmAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create an em 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 em element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<em>` element.\n *\n * @example\n * Stress emphasis:\n * ```ts\n * import { createEm } from \"@lnpg/pkgn-sol/elements/inline/em\";\n *\n * const e = createEm(\"really\", { className: \"stress\" });\n * document.body.appendChild(e);\n * ```\n *\n * @category DOM\n */\nexport function createEm(text?: string, attrs?: EmAttrs): ElementOf<typeof EM_TAG> {\n return createElement(EM_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance em 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 enhanceEms(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for em.\n void root;\n}\n"],"mappings":"gMA4Da,EAAS,KAOT,EAAc,KA4B3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,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({I_SELECTOR:()=>`i`,I_TAG:()=>`i`,createI:()=>a,enhanceIs:()=>o}),n=`i`,r=`i`;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(`i`,i(n),t)}function o(e=document){}exports.I_SELECTOR=r,exports.I_TAG=n,exports.createI=a,exports.enhanceIs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=i.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i.cjs","names":[],"sources":["../../../../../src/elements/inline/i/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: i element helpers.\n *\n * @remarks\n * The i element (`<i>`) represents a range of text set off from the normal prose\n * for some reason, such as:\n * - idiomatic text / alternate voice or mood\n * - technical terms\n * - taxonomical designations\n * - transliterations\n *\n * Best-practice guidance:\n * - Do not use `<i>` purely for visual italics. Use CSS when the intent is\n * presentational rather than semantic.\n * - If you mean emphasis (stress), use `<em>`.\n * - If you mean importance, use `<strong>`.\n * - If you mean the title of a work, use `<cite>`.\n *\n * Attributes:\n * - `<i>` has no element-specific attributes in HTML. It accepts global\n * attributes only.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<i>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/i\n * @see https://html.spec.whatwg.org/multipage/text-level-semantics.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.\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 the i element.\n *\n * @category Constants\n */\nexport const I_TAG = 'i' as const;\n\n/**\n * A CSS selector targeting i elements.\n *\n * @category Constants\n */\nexport const I_SELECTOR = 'i';\n\n/**\n * Attribute bag for i creation/enhancement.\n *\n * @remarks\n * `<i>` 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 * Security note:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style}.\n *\n * @category Attributes\n */\nexport type IAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link IAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The i attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: IAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create an i 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: `<i>` is phrasing content. This helper supports a simple `text`\n * convenience for cases where plain text is sufficient; consumers can still\n * append richer child nodes afterwards.\n *\n * @param text - Optional text content for the i element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<i>` element.\n *\n * @example\n * ```ts\n * import { createI } from \"@lnpg/pkgn-sol/elements/inline/i\";\n *\n * const term = createI(\"Homo sapiens\", { className: \"taxonomy\" });\n * document.body.appendChild(term);\n * ```\n *\n * @category DOM\n */\nexport function createI(text?: string, attrs?: IAttrs): ElementOf<typeof I_TAG> {\n return createElement(I_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance i 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 enhanceIs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for i.\n void root;\n}\n"],"mappings":"0LAwEa,EAAQ,IAOR,EAAa,IAgC1B,SAAS,EAAc,EAAyC,CAC9D,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,EA8BrD,SAAgB,EAAQ,EAAe,EAAyC,CAC9E,OAAO,EAAA,EAAA,IAAqB,EAAc,EAAM,CAAE,EAAK,CAqBzD,SAAgB,EAAU,EAAmB,SAAgB"}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./a/a.cjs`),t=require(`./abbr/abbr.cjs`),n=require(`./b/b.cjs`),r=require(`./small/small.cjs`),i=require(`./strong/strong.cjs`),a=require(`./cite/cite.cjs`),o=require(`./code/code.cjs`),s=require(`./data/data.cjs`),c=require(`./dfn/dfn.cjs`),l=require(`./em/em.cjs`),u=require(`./i/i.cjs`),d=require(`./kbd/kbd.cjs`),f=require(`./mark/mark.cjs`),p=require(`./q/q.cjs`),m=require(`./rb/rb.cjs`),h=require(`../../chunks/inline.cjs`),g=require(`./rt/rt.cjs`),_=require(`./rtc/rtc.cjs`),v=require(`./ruby/ruby.cjs`),y=require(`./s/s.cjs`),b=require(`./samp/samp.cjs`),x=require(`./sub/sub.cjs`),S=require(`./sup/sup.cjs`),C=require(`./time/time.cjs`),w=require(`./u/u.cjs`),T=require(`./var/var.cjs`);Object.defineProperty(exports,`abbr`,{enumerable:!0,get:function(){return t.t}}),Object.defineProperty(exports,`anchor`,{enumerable:!0,get:function(){return e.t}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return n.t}}),Object.defineProperty(exports,`cite`,{enumerable:!0,get:function(){return a.t}}),Object.defineProperty(exports,`code`,{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,`data`,{enumerable:!0,get:function(){return s.t}}),Object.defineProperty(exports,`dfn`,{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,`em`,{enumerable:!0,get:function(){return l.t}}),Object.defineProperty(exports,`italic`,{enumerable:!0,get:function(){return u.t}}),Object.defineProperty(exports,`kbd`,{enumerable:!0,get:function(){return d.t}}),Object.defineProperty(exports,`mark`,{enumerable:!0,get:function(){return f.t}}),Object.defineProperty(exports,`q`,{enumerable:!0,get:function(){return p.t}}),Object.defineProperty(exports,`rb`,{enumerable:!0,get:function(){return m.t}}),Object.defineProperty(exports,`rp`,{enumerable:!0,get:function(){return h.n}}),Object.defineProperty(exports,`rt`,{enumerable:!0,get:function(){return g.t}}),Object.defineProperty(exports,`rtc`,{enumerable:!0,get:function(){return _.t}}),Object.defineProperty(exports,`ruby`,{enumerable:!0,get:function(){return v.t}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return y.t}}),Object.defineProperty(exports,`samp`,{enumerable:!0,get:function(){return b.t}}),Object.defineProperty(exports,`small`,{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,`strong`,{enumerable:!0,get:function(){return i.t}}),Object.defineProperty(exports,`sub`,{enumerable:!0,get:function(){return x.t}}),Object.defineProperty(exports,`sup`,{enumerable:!0,get:function(){return S.t}}),Object.defineProperty(exports,`time`,{enumerable:!0,get:function(){return C.t}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return w.t}}),Object.defineProperty(exports,`var`,{enumerable:!0,get:function(){return T.t}});
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({KBD_SELECTOR:()=>`kbd`,KBD_TAG:()=>`kbd`,createKbd:()=>a,enhanceKbds:()=>o}),n=`kbd`,r=`kbd`;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(`kbd`,i(n),t)}function o(e=document){}exports.KBD_SELECTOR=r,exports.KBD_TAG=n,exports.createKbd=a,exports.enhanceKbds=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=kbd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd.cjs","names":[],"sources":["../../../../../src/elements/inline/kbd/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Kbd (`kbd`) element helpers.\n *\n * @remarks\n * The kbd element (`<kbd>`) represents user input, typically keyboard input,\n * but it may also represent input via other mechanisms (e.g. voice commands).\n *\n * Best-practice guidance:\n * - Use `<kbd>` for inline, human-readable input instructions (keys, shortcuts, commands).\n * - For key combinations, it is common to wrap the whole sequence in an outer `<kbd>`\n * and each individual key as inner `<kbd>` elements (e.g. `<kbd><kbd>Ctrl</kbd>+<kbd>S</kbd></kbd>`).\n * - Do not rely on default styling; apply CSS for consistent presentation.\n *\n * Security notes:\n * - pkgn-sol blocks unsafe attribute *names* (e.g. `onclick`, raw `style`) via `dom.ts`.\n * - pkgn-sol does not sanitize attribute *values*. Treat untrusted inputs accordingly.\n *\n * References:\n * - MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd\n * - WHATWG: https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-kbd-element\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs (e.g. `lable`).\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for kbd elements.\n *\n * @category Constants\n */\nexport const KBD_TAG = 'kbd' as const;\n\n/**\n * A CSS selector targeting kbd elements.\n *\n * @category Constants\n */\nexport const KBD_SELECTOR = 'kbd';\n\n/**\n * Attribute bag for kbd creation/enhancement.\n *\n * @remarks\n * Kbd elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type KbdAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link KbdAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The kbd attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: KbdAttrs): 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 kbd 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 kbd element (e.g. \"Ctrl\", \"⌘\", \"F3\").\n * @param attrs - Optional attributes to apply.\n * @returns The created `<kbd>` element.\n *\n * @example\n * ```ts\n * import { createKbd } from \"@lnpg/pkgn-sol/elements/inline/kbd\";\n *\n * const shortcut = createKbd(undefined, { className: \"keys\" });\n * shortcut.append(createKbd(\"Ctrl\"), document.createTextNode(\"+\"), createKbd(\"S\"));\n * ```\n *\n * @category DOM\n */\nexport function createKbd(text?: string, attrs?: KbdAttrs): ElementOf<typeof KBD_TAG> {\n return createElement(KBD_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance kbd 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 enhanceKbds(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for kbd.\n void root;\n}\n"],"mappings":"sMA4Da,EAAU,MAOV,EAAe,MA4B5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAU,EAAe,EAA6C,CACpF,OAAO,EAAA,EAAA,MAAuB,EAAc,EAAM,CAAE,EAAK,CAqB3D,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({MARK_SELECTOR:()=>r,MARK_TAG:()=>n,createMark:()=>a,enhanceMarks:()=>o}),n=`mark`,r=`mark`;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.MARK_SELECTOR=r,exports.MARK_TAG=n,exports.createMark=a,exports.enhanceMarks=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=mark.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark.cjs","names":[],"sources":["../../../../../src/elements/inline/mark/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Mark element helpers.\n *\n * @remarks\n * The mark element (`<mark>`) represents text that is marked or highlighted for\n * reference or notation because it is relevant in the current context.\n *\n * Common, semantic uses:\n * - Highlighting search matches within results or a document.\n * - Marking passages being referenced elsewhere (e.g. annotated excerpts).\n *\n * Best-practice guidance:\n * - Use `<mark>` when the highlight communicates contextual relevance, not merely\n * a visual style.\n * - Prefer CSS for purely presentational highlighting.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create marked text spans 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 * MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark\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 marked/highlighted text.\n *\n * @category Constants\n */\nexport const MARK_TAG = 'mark' as const;\n\n/**\n * A CSS selector targeting mark elements.\n *\n * @category Constants\n */\nexport const MARK_SELECTOR = 'mark';\n\n/**\n * Attribute bag for mark creation/enhancement.\n *\n * @remarks\n * Mark elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type MarkAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link MarkAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The mark attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: MarkAttrs): 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 mark 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 mark element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<mark>` element.\n *\n * @example\n * ```ts\n * import { createMark } from \"@lnpg/pkgn-sol/elements/inline/mark\";\n *\n * // Highlight a search match:\n * document.body.appendChild(createMark(\"kitchen\", { className: \"match\" }));\n * ```\n *\n * @category DOM\n */\nexport function createMark(text?: string, attrs?: MarkAttrs): ElementOf<typeof MARK_TAG> {\n return createElement(MARK_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance mark 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 enhanceMarks(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for mark.\n void root;\n}\n"],"mappings":"kMA8Da,EAAW,OAOX,EAAgB,OA4B7B,SAAS,EAAc,EAA4C,CACjE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAM,CAAE,EAAK,CAqB5D,SAAgB,EAAa,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({Q_SELECTOR:()=>`q`,Q_TAG:()=>`q`,createQ:()=>o,enhanceQs:()=>s}),n=`q`,r=`q`;function i(e,t,n){e[t]===void 0&&(e[t]=n)}function a(e){if(!e)return;let{aria:t,cite:n,...r}=e,a={...r};if(typeof n==`string`&&n.length>0){let e={...a.attrs??{}};i(e,`cite`,n),a.attrs=e}if(!t)return a;let o={};return typeof t.label==`string`&&(o.label=t.label),typeof t.labelledby==`string`&&(o.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(o.hidden=t.hidden),Object.keys(o).length>0?{...a,aria:o}:a}function o(t,n){return e.n(`q`,a(n),t)}function s(e=document){}exports.Q_SELECTOR=r,exports.Q_TAG=n,exports.createQ=o,exports.enhanceQs=s,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=q.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q.cjs","names":[],"sources":["../../../../../src/elements/inline/q/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Q element helpers.\n *\n * @remarks\n * The q element (`<q>`) indicates that the enclosed text is a short inline\n * quotation. Most modern browsers render it with quotation punctuation. This\n * element is intended for quotations that do not require paragraph breaks; for\n * longer quotations, use `<blockquote>`. :contentReference[oaicite:3]{index=3}\n *\n * Best-practice guidance:\n * - Use `<q>` for short inline quotations; use `<blockquote>` for longer quotes.\n * - Do not manually insert quotation punctuation immediately around `<q>`; user\n * agents may insert punctuation as part of rendering. :contentReference[oaicite:4]{index=4}\n * - If you want a visible, user-facing citation link, use an `<a>` element.\n * The optional `cite` attribute on `<q>` is a URL for the quotation source and\n * is often treated as metadata. :contentReference[oaicite:5]{index=5}\n *\n * Security note:\n * - pkgn-sol does not attempt to validate or sanitize URLs. If `cite` is derived from\n * untrusted input, validate it at the application boundary.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create inline quotations 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 inline quotations.\n *\n * @category Constants\n */\nexport const Q_TAG = 'q' as const;\n\n/**\n * A CSS selector targeting q elements.\n *\n * @category Constants\n */\nexport const Q_SELECTOR = 'q';\n\n/**\n * Attribute bag for q creation/enhancement.\n *\n * @remarks\n * The `<q>` element uses standard HTML global attributes and supports an\n * optional `cite` attribute, which provides a URL for the quotation source. :contentReference[oaicite:6]{index=6}\n *\n * pkgn-sol supports structured ARIA for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type QAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * A URL for the source of the quotation.\n *\n * @remarks\n * This reflects the `cite` attribute used by `<q>` (and `<blockquote>`).\n * User agents may expose it, but it is often treated as metadata. :contentReference[oaicite:7]{index=7}\n */\n cite?: string;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Set an attribute value only if that key is currently unset.\n *\n * @remarks\n * This supports pkgn-sol's \"escape hatch\" convention where `attrs.attrs` can override\n * any element-specific mappings.\n *\n * @category Internal\n */\nfunction setIfUnset(\n bag: Record<string, import('../../../ts/dom').AttrValue>,\n key: string,\n value: import('../../../ts/dom').AttrValue,\n): void {\n if (typeof bag[key] === 'undefined') bag[key] = value;\n}\n\n/**\n * Normalize {@link QAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The q attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: QAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, cite, ...rest } = attrs;\n\n // Start with global attrs.\n const out: GlobalAttrs = { ...rest };\n\n // Map element-specific attributes into the escape hatch bag.\n if (typeof cite === 'string' && cite.length > 0) {\n const bag: NonNullable<GlobalAttrs['attrs']> = { ...(out.attrs ?? {}) };\n setIfUnset(bag, 'cite', cite);\n out.attrs = bag;\n }\n\n // Map structured ARIA.\n if (!aria) return out;\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 ? { ...out, aria: mappedAria } : out;\n}\n\n/**\n * Create a q element with optional text content and attributes.\n *\n * @remarks\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n * - The optional `cite` attribute is applied via the `attrs` escape hatch. :contentReference[oaicite:8]{index=8}\n *\n * @param text - Optional text content for the q element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<q>` element.\n *\n * @example\n * Inline quotation with source metadata:\n * ```ts\n * import { createQ } from \"@lnpg/pkgn-sol/elements/inline/q\";\n *\n * const q = createQ(\"We choose to go to the Moon.\", {\n * cite: \"https://example.com/speech\",\n * aria: { label: \"Inline quotation\" }\n * });\n *\n * document.body.appendChild(q);\n * ```\n *\n * @category DOM\n */\nexport function createQ(text?: string, attrs?: QAttrs): ElementOf<typeof Q_TAG> {\n return createElement(Q_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance q 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 enhanceQs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for q.\n void root;\n}\n"],"mappings":"0LAoEa,EAAQ,IAOR,EAAa,IAuC1B,SAAS,EACP,EACA,EACA,EACM,CACK,EAAI,KAAS,SAAa,EAAI,GAAO,GAWlD,SAAS,EAAc,EAAyC,CAC9D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,GAAG,GAAS,EAG1B,EAAmB,CAAE,GAAG,EAAM,CAGpC,GAAI,OAAO,GAAS,UAAY,EAAK,OAAS,EAAG,CAC/C,IAAM,EAAyC,CAAE,GAAI,EAAI,OAAS,EAAE,CAAG,CACvE,EAAW,EAAK,OAAQ,EAAK,CAC7B,EAAI,MAAQ,EAId,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,EAAK,KAAM,EAAY,CAAG,EAgCpD,SAAgB,EAAQ,EAAe,EAAyC,CAC9E,OAAO,EAAA,EAAA,IAAqB,EAAc,EAAM,CAAE,EAAK,CAazD,SAAgB,EAAU,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({RB_SELECTOR:()=>`rb`,RB_TAG:()=>`rb`,createRb:()=>a,enhanceRbs:()=>o}),n=`rb`,r=`rb`;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(`rb`,i(n),t)}function o(e=document){}exports.RB_SELECTOR=r,exports.RB_TAG=n,exports.createRb=a,exports.enhanceRbs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=rb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rb.cjs","names":[],"sources":["../../../../../src/elements/inline/rb/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: rb element helpers.\n *\n * @remarks\n * The rb element (`<rb>`) represents the ruby base text: the text being\n * annotated within a `<ruby>` element.\n *\n * Best-practice guidance:\n * - Use `<rb>` to wrap each atomic segment of base text when authoring complex\n * ruby annotations (e.g. multiple base units with paired `<rt>` annotations).\n * - For simple ruby, the base text can be implicit (`<ruby>base<rt>anno</rt></ruby>`),\n * but using `<rb>` can improve clarity and pairing in complex markup.\n * - `<rb>` is intended to be used within `<ruby>` (or within `<rtc>` in extended\n * ruby models), alongside `<rt>` / `<rp>` / `<rtc>` where applicable.\n *\n * Attributes:\n * - `<rb>` has no element-specific attributes in HTML. It accepts global\n * attributes only.\n *\n * Implementation note:\n * - In HTML source, `</rb>` may be omitted in certain sequences, but pkgn-sol creates\n * DOM nodes, so it always creates a concrete `<rb>` element.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<rb>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/rb\n * @see https://www.w3.org/TR/html-ruby-extensions/\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 * The semantic tag name for ruby base units.\n *\n * @category Constants\n */\nexport const RB_TAG = 'rb' as const;\n\n/**\n * A CSS selector targeting rb elements.\n *\n * @category Constants\n */\nexport const RB_SELECTOR = 'rb';\n\n/**\n * Attribute bag for rb creation/enhancement.\n *\n * @remarks\n * `<rb>` 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 * Security note:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style}.\n *\n * @category Attributes\n */\nexport type RbAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link RbAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The rb attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: RbAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create an rb 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: `<rb>` is phrasing content. This helper supports a simple `text`\n * convenience for cases where plain text is sufficient; consumers can still\n * append richer child nodes afterwards.\n *\n * @param text - Optional text content for the rb element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<rb>` element.\n *\n * @example\n * ```ts\n * import { createRb } from \"@lnpg/pkgn-sol/elements/inline/rb\";\n *\n * const rb = createRb(\"漢\", { className: \"ruby-base\" });\n * ```\n *\n * @category DOM\n */\nexport function createRb(text?: string, attrs?: RbAttrs): HTMLElement {\n return createElement(\n RB_TAG as unknown as keyof HTMLElementTagNameMap,\n toGlobalAttrs(attrs),\n text,\n ) as unknown as HTMLElement;\n}\n\n/**\n * Enhance rb 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 enhanceRbs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for rb.\n void root;\n}\n"],"mappings":"gMAyEa,EAAS,KAOT,EAAc,KAgC3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CAQvD,OANI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA6BrD,SAAgB,EAAS,EAAe,EAA8B,CACpE,OAAO,EAAA,EAAA,KAEL,EAAc,EAAM,CACpB,EACD,CAqBH,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({RT_SELECTOR:()=>`rt`,RT_TAG:()=>`rt`,createRt:()=>a,enhanceRts:()=>o}),n=`rt`,r=`rt`;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(`rt`,i(n),t)}function o(e=document){}exports.RT_SELECTOR=r,exports.RT_TAG=n,exports.createRt=a,exports.enhanceRts=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=rt.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rt.cjs","names":[],"sources":["../../../../../src/elements/inline/rt/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Rt element helpers.\n *\n * @remarks\n * The rt element (`<rt>`) provides the ruby text component of a ruby annotation.\n * Ruby annotations are commonly used to supply pronunciation, translation, or\n * transliteration information (often in East Asian typography).\n *\n * Best-practice guidance:\n * - `<rt>` must be used within a `<ruby>` element.\n * - Use ruby for semantic annotation (pronunciation/reading aids), not for\n * purely presentational styling.\n * - Prefer plain text via `textContent` for annotation content (pkgn-sol enforces\n * this by using `textContent`, never `innerHTML`).\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<rt>` nodes in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt\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 ruby text annotations.\n *\n * @category Constants\n */\nexport const RT_TAG = 'rt' as const;\n\n/**\n * A CSS selector targeting rt elements.\n *\n * @category Constants\n */\nexport const RT_SELECTOR = 'rt';\n\n/**\n * Attribute bag for rt creation/enhancement.\n *\n * @remarks\n * Rt elements include only standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type RtAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link RtAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The rt attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: RtAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create an rt 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 rt element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<rt>` element.\n *\n * @example\n * ```ts\n * import { createRt } from \"@lnpg/pkgn-sol/elements/inline/rt\";\n *\n * // Intended usage: inside <ruby>\n * const rt = createRt(\"kan\");\n * ```\n *\n * @category DOM\n */\nexport function createRt(text?: string, attrs?: RtAttrs): ElementOf<typeof RT_TAG> {\n return createElement(RT_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance rt 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 enhanceRts(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for rt.\n void root;\n}\n"],"mappings":"gMA6Da,EAAS,KAOT,EAAc,KA4B3B,SAAS,EAAc,EAA0C,CAC/D,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAS,EAAe,EAA2C,CACjF,OAAO,EAAA,EAAA,KAAsB,EAAc,EAAM,CAAE,EAAK,CAqB1D,SAAgB,EAAW,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({RTC_SELECTOR:()=>`rtc`,RTC_TAG:()=>`rtc`,createRtc:()=>a,enhanceRtcs:()=>o}),n=`rtc`,r=`rtc`;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){let r=document.createElement(`rtc`);return e.t(r,i(n)),typeof t==`string`&&(r.textContent=t),r}function o(e=document){}exports.RTC_SELECTOR=r,exports.RTC_TAG=n,exports.createRtc=a,exports.enhanceRtcs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=rtc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtc.cjs","names":[],"sources":["../../../../../src/elements/inline/rtc/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Rtc element helpers.\n *\n * @remarks\n * The rtc element (`<rtc>`) is a ruby text container used within `<ruby>` to\n * group ruby annotation text components, typically for semantic annotations.\n *\n * Best-practice guidance:\n * - Use `<rtc>` only as part of `<ruby>` markup.\n * - `<rtc>` has no element-specific attributes; it accepts global attributes.\n *\n * Note on DOM typing:\n * - `<rtc>` is not part of {@link HTMLElementTagNameMap} in TypeScript's DOM\n * typings, so pkgn-sol creates it via `document.createElement(\"rtc\")` and returns\n * an {@link HTMLElement}.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create rtc 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 { 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 ruby text containers.\n *\n * @category Constants\n */\nexport const RTC_TAG = 'rtc' as const;\n\n/**\n * A CSS selector targeting rtc elements.\n *\n * @category Constants\n */\nexport const RTC_SELECTOR = 'rtc';\n\n/**\n * Attribute bag for rtc creation/enhancement.\n *\n * @remarks\n * The `<rtc>` element uses standard HTML global attributes and has no\n * element-specific attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type RtcAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link RtcAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The rtc attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: RtcAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create an rtc 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 * Note: `<rtc>` is not part of {@link HTMLElementTagNameMap}, so pkgn-sol creates it\n * via `document.createElement(\"rtc\")` and returns {@link HTMLElement}.\n *\n * @param text - Optional text content for the rtc element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<rtc>` element.\n *\n * @category DOM\n */\nexport function createRtc(text?: string, attrs?: RtcAttrs): HTMLElement {\n const el = document.createElement(RTC_TAG);\n\n applyGlobalAttrs(el, toGlobalAttrs(attrs));\n\n if (typeof text === 'string') el.textContent = text;\n\n return el;\n}\n\n/**\n * Enhance rtc 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 enhanceRtcs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for rtc.\n void root;\n}\n"],"mappings":"sMA+Da,EAAU,MAOV,EAAe,MA6B5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EAqBrD,SAAgB,EAAU,EAAe,EAA+B,CACtE,IAAM,EAAK,SAAS,cAAA,MAAsB,CAM1C,OAJA,EAAA,EAAiB,EAAI,EAAc,EAAM,CAAC,CAEtC,OAAO,GAAS,WAAU,EAAG,YAAc,GAExC,EAqBT,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({RUBY_SELECTOR:()=>r,RUBY_TAG:()=>n,createRuby:()=>a,enhanceRubies:()=>o}),n=`ruby`,r=`ruby`;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.RUBY_SELECTOR=r,exports.RUBY_TAG=n,exports.createRuby=a,exports.enhanceRubies=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=ruby.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.cjs","names":[],"sources":["../../../../../src/elements/inline/ruby/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: ruby element helpers.\n *\n * @remarks\n * The ruby element (`<ruby>`) represents ruby annotations: small annotation text\n * rendered above, below, or next to base text (commonly used for pronunciation,\n * transliteration, or translation in East Asian typography).\n *\n * Best-practice guidance:\n * - Prefer correct ruby structure: base text followed by `<rt>` for annotation text.\n * - Use `<rp>` to provide fallback parentheses for user agents that do not support\n * ruby rendering. Modern browsers generally ignore `<rp>` when ruby is supported,\n * but it improves graceful degradation.\n * - For complex ruby (multiple base segments / multiple annotations), consider\n * using `<rb>` to delimit base segments and `<rtc>` for semantic annotation groupings.\n * - Avoid using `innerHTML` for untrusted content. pkgn-sol assigns text via `textContent`.\n *\n * Attributes:\n * - `<ruby>` has no element-specific attributes in HTML. It accepts global\n * attributes only.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<ruby>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/ruby\n * @see https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-ruby-element\n * @see https://www.w3.org/TR/ruby-use-cases/\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for ruby annotation containers.\n *\n * @category Constants\n */\nexport const RUBY_TAG = 'ruby' as const;\n\n/**\n * A CSS selector targeting ruby elements.\n *\n * @category Constants\n */\nexport const RUBY_SELECTOR = 'ruby';\n\n/**\n * Attribute bag for ruby creation/enhancement.\n *\n * @remarks\n * `<ruby>` 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 * Security note:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style}.\n *\n * @category Attributes\n */\nexport type RubyAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link RubyAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The ruby attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: RubyAttrs): 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 ruby 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:\n * - `<ruby>` typically contains mixed children (`<rt>`, `<rp>`, `<rb>`, etc.).\n * The `text` argument is a convenience for simple cases; consumers can append\n * richer child nodes afterwards.\n *\n * @param text - Optional text content for the ruby element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<ruby>` element.\n *\n * @example\n * ```ts\n * import { createRuby } from \"@lnpg/pkgn-sol/elements/inline/ruby\";\n *\n * const ruby = createRuby();\n * ruby.append(\n * document.createTextNode(\"漢\"),\n * document.createElement(\"rt\")\n * );\n * ```\n *\n * @category DOM\n */\nexport function createRuby(text?: string, attrs?: RubyAttrs): ElementOf<typeof RUBY_TAG> {\n return createElement(RUBY_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance ruby 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 enhanceRubies(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for ruby.\n void root;\n}\n"],"mappings":"mMAwEa,EAAW,OAOX,EAAgB,OAgC7B,SAAS,EAAc,EAA4C,CACjE,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,EAkCrD,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAM,CAAE,EAAK,CAqB5D,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({S_SELECTOR:()=>`s`,S_TAG:()=>`s`,createS:()=>a,enhanceSs:()=>o}),n=`s`,r=`s`;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(`s`,i(n),t)}function o(e=document){}exports.S_SELECTOR=r,exports.S_TAG=n,exports.createS=a,exports.enhanceSs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=s.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s.cjs","names":[],"sources":["../../../../../src/elements/inline/s/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: S (strikethrough) element helpers.\n *\n * @remarks\n * The s element (`<s>`) represents content that is no longer accurate or no\n * longer relevant. It is a presentational indicator of \"this isn't current\"\n * rather than an edit-tracking semantic.\n *\n * Best-practice guidance:\n * - Use `<s>` for \"no longer relevant/accurate\" text (e.g. outdated pricing).\n * - Use `<del>` when you mean \"this was removed\" (edit history / document diff semantics).\n * - Do not use `<s>` as a substitute for emphasis; use appropriate semantics and CSS.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<s>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for s elements.\n *\n * @category Constants\n */\nexport const S_TAG = 's' as const;\n\n/**\n * A CSS selector targeting s elements.\n *\n * @category Constants\n */\nexport const S_SELECTOR = 's';\n\n/**\n * Attribute bag for s creation/enhancement.\n *\n * @remarks\n * The `<s>` element accepts standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type SAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link SAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The s attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, ...rest } = attrs;\n\n if (!aria) return rest;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMapped = Object.keys(mappedAria).length > 0;\n\n return hasMapped ? { ...rest, aria: mappedAria } : rest;\n}\n\n/**\n * Create an s 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 element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<s>` element.\n *\n * @example\n * ```ts\n * import { createS } from \"@lnpg/pkgn-sol/elements/inline/s\";\n *\n * const el = createS(\"£199\", { className: \"old-price\" });\n * document.body.appendChild(el);\n * ```\n *\n * @category DOM\n */\nexport function createS(text?: string, attrs?: SAttrs): ElementOf<typeof S_TAG> {\n return createElement(S_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance s 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 enhanceSs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for s.\n void root;\n}\n"],"mappings":"0LA8Da,EAAQ,IAOR,EAAa,IA4B1B,SAAS,EAAc,EAAyC,CAC9D,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,EAAQ,EAAe,EAAyC,CAC9E,OAAO,EAAA,EAAA,IAAqB,EAAc,EAAM,CAAE,EAAK,CAqBzD,SAAgB,EAAU,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({SAMP_SELECTOR:()=>r,SAMP_TAG:()=>n,createSamp:()=>a,enhanceSamps:()=>o}),n=`samp`,r=`samp`;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.SAMP_SELECTOR=r,exports.SAMP_TAG=n,exports.createSamp=a,exports.enhanceSamps=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=samp.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"samp.cjs","names":[],"sources":["../../../../../src/elements/inline/samp/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Samp element helpers.\n *\n * @remarks\n * The samp element (`<samp>`) represents sample (or quoted) output from another\n * program or computing system.\n *\n * Best-practice guidance:\n * - Use `<samp>` for *output* (what the computer/system printed).\n * - Use `<kbd>` for user input (what the user typed/pressed).\n * - Use `<code>` for code fragments (source code).\n * - Use CSS for presentation; semantics should match meaning.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create samp nodes in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/samp\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 sample output.\n *\n * @category Constants\n */\nexport const SAMP_TAG = 'samp' as const;\n\n/**\n * A CSS selector targeting samp elements.\n *\n * @category Constants\n */\nexport const SAMP_SELECTOR = 'samp';\n\n/**\n * Attribute bag for samp creation/enhancement.\n *\n * @remarks\n * Samp elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type SampAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link SampAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The samp attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SampAttrs): 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 samp 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 samp element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<samp>` element.\n *\n * @example\n * ```ts\n * import { createSamp } from \"@lnpg/pkgn-sol/elements/inline/samp\";\n *\n * // Sample output:\n * const out = createSamp(\"Everything up-to-date\");\n * ```\n *\n * @category DOM\n */\nexport function createSamp(text?: string, attrs?: SampAttrs): ElementOf<typeof SAMP_TAG> {\n return createElement(SAMP_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance samp 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 enhanceSamps(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for samp.\n void root;\n}\n"],"mappings":"kMA2Da,EAAW,OAOX,EAAgB,OA4B7B,SAAS,EAAc,EAA4C,CACjE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAM,CAAE,EAAK,CAqB5D,SAAgB,EAAa,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({SMALL_SELECTOR:()=>r,SMALL_TAG:()=>n,createSmall:()=>a,enhanceSmalls:()=>o}),n=`small`,r=`small`;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.SMALL_SELECTOR=r,exports.SMALL_TAG=n,exports.createSmall=a,exports.enhanceSmalls=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=small.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"small.cjs","names":[],"sources":["../../../../../src/elements/inline/small/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Small element helpers.\n *\n * @remarks\n * The small element (`<small>`) represents side comments and small print.\n *\n * Best-practice guidance:\n * - Use `<small>` for side notes, disclaimers, legal restrictions, copyright,\n * attribution, or licensing text.\n * - Do not use `<small>` purely to make text visually smaller. Use CSS when the\n * intent is presentational rather than semantic.\n * - Keep accessible meaning intact: if the content is important, it should be\n * readable and not \"hidden\" behind styling choices.\n *\n * Attributes:\n * - `<small>` has no element-specific attributes in HTML. It accepts global\n * attributes only.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<small>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for the small element.\n *\n * @category Constants\n */\nexport const SMALL_TAG = 'small' as const;\n\n/**\n * A CSS selector targeting small elements.\n *\n * @category Constants\n */\nexport const SMALL_SELECTOR = 'small';\n\n/**\n * Attribute bag for small creation/enhancement.\n *\n * @remarks\n * `<small>` 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 * Security note:\n * - Inline event handler attributes (e.g. `onclick`) are blocked by `dom.ts`.\n * - The raw `style` attribute is blocked; use {@link GlobalAttrs.style}.\n *\n * @category Attributes\n */\nexport type SmallAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link SmallAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The small attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SmallAttrs): 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 small 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: `<small>` is phrasing content. This helper supports a simple `text`\n * convenience for cases where plain text is sufficient; consumers can still\n * append richer child nodes afterwards.\n *\n * @param text - Optional text content for the small element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<small>` element.\n *\n * @example\n * ```ts\n * import { createSmall } from \"@lnpg/pkgn-sol/elements/inline/small\";\n *\n * const legal = createSmall(\"Terms apply.\", { className: \"legal\" });\n * document.body.appendChild(legal);\n * ```\n *\n * @category DOM\n */\nexport function createSmall(text?: string, attrs?: SmallAttrs): ElementOf<typeof SMALL_TAG> {\n return createElement(SMALL_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance small 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 enhanceSmalls(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for small.\n void root;\n}\n"],"mappings":"sMAmEa,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,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,EA8BrD,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`);var t=e.i({STRONG_SELECTOR:()=>r,STRONG_TAG:()=>n,createStrong:()=>a,enhanceStrongs:()=>o}),n=`strong`,r=`strong`;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.STRONG_SELECTOR=r,exports.STRONG_TAG=n,exports.createStrong=a,exports.enhanceStrongs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=strong.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strong.cjs","names":[],"sources":["../../../../../src/elements/inline/strong/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Strong element helpers.\n *\n * @remarks\n * The strong element (`<strong>`) indicates that its contents have strong\n * importance, seriousness, or urgency. Browsers typically render it as bold,\n * but the semantic meaning is what matters. :contentReference[oaicite:3]{index=3}\n *\n * Best-practice guidance:\n * - Use `<strong>` for genuinely important text (e.g. warnings, urgent notes).\n * - Do not use `<strong>` purely for visual styling; use CSS for presentation.\n * - Do not confuse `<strong>` with `<b>`:\n * - `<strong>` conveys importance/seriousness/urgency.\n * - `<b>` draws attention without adding semantic importance. :contentReference[oaicite:4]{index=4}\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create strong text nodes in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { 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 strong importance.\n *\n * @category Constants\n */\nexport const STRONG_TAG = 'strong' as const;\n\n/**\n * A CSS selector targeting strong elements.\n *\n * @category Constants\n */\nexport const STRONG_SELECTOR = 'strong';\n\n/**\n * Attribute bag for strong creation/enhancement.\n *\n * @remarks\n * The `<strong>` element uses standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type StrongAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link StrongAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The strong attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: StrongAttrs): 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 strong 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 strong element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<strong>` element.\n *\n * @example\n * Emphasize a warning:\n * ```ts\n * import { createStrong } from \"@lnpg/pkgn-sol/elements/inline/strong\";\n *\n * const warning = createStrong(\"Warning:\", { className: \"warning-label\" });\n * document.body.appendChild(warning);\n * ```\n *\n * @category DOM\n */\nexport function createStrong(text?: string, attrs?: StrongAttrs): ElementOf<typeof STRONG_TAG> {\n return createElement(STRONG_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance strong 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 enhanceStrongs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for strong.\n void root;\n}\n"],"mappings":"0MA8Da,EAAa,SAOb,EAAkB,SA4B/B,SAAS,EAAc,EAA8C,CACnE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA2BrD,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({SUB_SELECTOR:()=>`sub`,SUB_TAG:()=>`sub`,createSub:()=>a,enhanceSubs:()=>o}),n=`sub`,r=`sub`;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(`sub`,i(n),t)}function o(e=document){}exports.SUB_SELECTOR=r,exports.SUB_TAG=n,exports.createSub=a,exports.enhanceSubs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=sub.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sub.cjs","names":[],"sources":["../../../../../src/elements/inline/sub/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Sub element helpers.\n *\n * @remarks\n * The sub element (`<sub>`) represents subscript text.\n *\n * Best-practice guidance:\n * - Use `<sub>` for typographical conventions (e.g. chemical formulas like H₂O,\n * mathematical indices in plain text, footnote markers) where subscript is\n * semantically appropriate.\n * - Do not use `<sub>` purely for presentation. Use CSS for visual styling.\n *\n * The `<sub>` element has no element-specific attributes. It supports standard\n * HTML global attributes.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create sub 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 * MDN:\n * - https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/sub\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 subscript text.\n *\n * @category Constants\n */\nexport const SUB_TAG = 'sub' as const;\n\n/**\n * A CSS selector targeting sub elements.\n *\n * @category Constants\n */\nexport const SUB_SELECTOR = 'sub';\n\n/**\n * Attribute bag for sub creation/enhancement.\n *\n * @remarks\n * The `<sub>` element accepts standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type SubAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link SubAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The sub attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SubAttrs): 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 sub 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 sub element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<sub>` element.\n *\n * @example\n * ```ts\n * import { createSub } from \"@lnpg/pkgn-sol/elements/inline/sub\";\n *\n * const formula = document.createElement(\"span\");\n * formula.append(\"H\");\n * formula.appendChild(createSub(\"2\"));\n * formula.append(\"O\");\n * ```\n *\n * @category DOM\n */\nexport function createSub(text?: string, attrs?: SubAttrs): ElementOf<typeof SUB_TAG> {\n return createElement(SUB_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance sub 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 enhanceSubs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for sub.\n void root;\n}\n"],"mappings":"sMAiEa,EAAU,MAOV,EAAe,MA4B5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA4BrD,SAAgB,EAAU,EAAe,EAA6C,CACpF,OAAO,EAAA,EAAA,MAAuB,EAAc,EAAM,CAAE,EAAK,CAqB3D,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({SUP_SELECTOR:()=>`sup`,SUP_TAG:()=>`sup`,createSup:()=>a,enhanceSups:()=>o}),n=`sup`,r=`sup`;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(`sup`,i(n),t)}function o(e=document){}exports.SUP_SELECTOR=r,exports.SUP_TAG=n,exports.createSup=a,exports.enhanceSups=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=sup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sup.cjs","names":[],"sources":["../../../../../src/elements/inline/sup/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Sup element helpers.\n *\n * @remarks\n * The sup element (`<sup>`) represents superscript text.\n *\n * Best-practice guidance:\n * - Use `<sup>` for semantic superscripts such as footnote markers, ordinal indicators,\n * and mathematical exponents.\n * - Avoid using `<sup>` purely for visual styling; prefer CSS when semantics are not intended.\n * - For footnotes, consider pairing markers with accessible labelling (e.g. via `aria-label`)\n * and appropriate linking patterns.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create superscript nodes in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for superscript elements.\n *\n * @category Constants\n */\nexport const SUP_TAG = 'sup' as const;\n\n/**\n * A CSS selector targeting sup elements.\n *\n * @category Constants\n */\nexport const SUP_SELECTOR = 'sup';\n\n/**\n * Attribute bag for sup creation/enhancement.\n *\n * @remarks\n * Sup elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type SupAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link SupAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The sup attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: SupAttrs): 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 sup 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 sup.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<sup>` element.\n *\n * @example\n * Create a footnote marker:\n * ```ts\n * import { createSup } from \"@lnpg/pkgn-sol/elements/inline/sup\";\n *\n * const marker = createSup(\"1\", { aria: { label: \"Footnote 1\" } });\n * ```\n *\n * @category DOM\n */\nexport function createSup(text?: string, attrs?: SupAttrs): ElementOf<typeof SUP_TAG> {\n return createElement(SUP_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance sup 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 enhanceSups(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for sup.\n void root;\n}\n"],"mappings":"sMA8Da,EAAU,MAOV,EAAe,MA4B5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAU,EAAe,EAA6C,CACpF,OAAO,EAAA,EAAA,MAAuB,EAAc,EAAM,CAAE,EAAK,CAqB3D,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({TIME_SELECTOR:()=>r,TIME_TAG:()=>n,createTime:()=>a,enhanceTimes:()=>o}),n=`time`,r=`time`;function i(e){if(!e)return;let{aria:t,datetime:n,dateTime:r,attrs:i,...a}=e,o={...a};if(t){let e={};typeof t.label==`string`&&(e.label=t.label),typeof t.labelledby==`string`&&(e.labelledby=t.labelledby),typeof t.hidden==`boolean`&&(e.hidden=t.hidden),Object.keys(e).length>0&&(o.aria=e)}let s=n??r,c={...i??{}};return typeof s==`string`?s.length>0&&(c.datetime=s):s instanceof Date&&(c.datetime=s.toISOString()),Object.keys(c).length>0&&(o.attrs=c),o}function a(t,r){return e.n(n,i(r),t)}function o(e=document){}exports.TIME_SELECTOR=r,exports.TIME_TAG=n,exports.createTime=a,exports.enhanceTimes=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=time.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.cjs","names":[],"sources":["../../../../../src/elements/inline/time/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Time element helpers.\n *\n * @remarks\n * The time element (`<time>`) represents a specific period in time.\n *\n * Best-practice guidance (summary):\n * - Provide a machine-readable `datetime` value when possible.\n * - Keep visible text human-friendly (e.g. \"Tomorrow\", \"12 Feb 2026\").\n * - Avoid using `<time>` purely for styling.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<time>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - supply a typed `datetime`/`dateTime` field mapped to the `datetime` attribute\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for time.\n *\n * @category Constants\n */\nexport const TIME_TAG = 'time' as const;\n\n/**\n * A CSS selector targeting time elements.\n *\n * @category Constants\n */\nexport const TIME_SELECTOR = 'time';\n\n/**\n * Attribute bag for time creation/enhancement.\n *\n * @remarks\n * In addition to global attributes, `<time>` commonly uses the `datetime`\n * attribute to provide a machine-readable value.\n *\n * pkgn-sol supports:\n * - `datetime` (preferred, aligns with the HTML attribute name)\n * - `dateTime` (alias for ergonomic camelCase usage)\n *\n * @category Attributes\n */\nexport type TimeAttrs = Omit<GlobalAttrs, 'aria' | 'attrs'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Machine-readable time value, mapped to the `datetime` attribute.\n *\n * @remarks\n * Examples:\n * - `2026-02-25`\n * - `2026-02-25T16:30:00Z`\n * - `PT2H`\n *\n * If a {@link Date} is provided, it is converted via `toISOString()`.\n */\n datetime?: string | Date;\n\n /**\n * Alias of {@link TimeAttrs.datetime}.\n *\n * @remarks\n * Supported for ergonomic camelCase input. If both are provided, `datetime`\n * takes precedence.\n */\n dateTime?: string | Date;\n\n /**\n * Additional attributes not modeled above.\n *\n * @remarks\n * This exists as an escape hatch while still allowing pkgn-sol to apply its\n * attribute safety rules via `dom.ts`.\n */\n attrs?: GlobalAttrs['attrs'];\n};\n\n/**\n * Normalize {@link TimeAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The time attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: TimeAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, datetime, dateTime, attrs: extraAttrs, ...rest } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n // Map structured aria.\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n if (Object.keys(mappedAria).length > 0) mapped.aria = mappedAria;\n }\n\n // Map datetime/dateTime -> datetime attribute, while preserving any provided attrs.\n const v = datetime ?? dateTime;\n\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(extraAttrs ?? {}) };\n\n if (typeof v === 'string') {\n if (v.length > 0) mergedAttrs.datetime = v;\n } else if (v instanceof Date) {\n mergedAttrs.datetime = v.toISOString();\n }\n\n if (Object.keys(mergedAttrs).length > 0) mapped.attrs = mergedAttrs;\n\n return mapped;\n}\n\n/**\n * Create a time 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 time element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<time>` element.\n *\n * @example\n * ```ts\n * import { createTime } from \"@lnpg/pkgn-sol/elements/inline/time\";\n *\n * const t = createTime(\"25 Feb 2026\", { datetime: \"2026-02-25\" });\n * document.body.appendChild(t);\n * ```\n *\n * @example\n * Using the `dateTime` alias:\n * ```ts\n * const t = createTime(\"25 Feb 2026\", { dateTime: \"2026-02-25\" });\n * ```\n *\n * @category DOM\n */\nexport function createTime(text?: string, attrs?: TimeAttrs): ElementOf<typeof TIME_TAG> {\n return createElement(TIME_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance time 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 enhanceTimes(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for time.\n void root;\n}\n"],"mappings":"kMA0Da,EAAW,OAOX,EAAgB,OA6D7B,SAAS,EAAc,EAA4C,CACjE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,WAAU,WAAU,MAAO,EAAY,GAAG,GAAS,EAE3D,EAAsB,CAAE,GAAG,EAAM,CAGvC,GAAI,EAAM,CACR,IAAM,EAA+C,EAAE,CACnD,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE3D,OAAO,KAAK,EAAW,CAAC,OAAS,IAAG,EAAO,KAAO,GAIxD,IAAM,EAAI,GAAY,EAEhB,EAAiD,CAAE,GAAI,GAAc,EAAE,CAAG,CAUhF,OARI,OAAO,GAAM,SACX,EAAE,OAAS,IAAG,EAAY,SAAW,GAChC,aAAa,OACtB,EAAY,SAAW,EAAE,aAAa,EAGpC,OAAO,KAAK,EAAY,CAAC,OAAS,IAAG,EAAO,MAAQ,GAEjD,EAgCT,SAAgB,EAAW,EAAe,EAA+C,CACvF,OAAO,EAAA,EAAc,EAAU,EAAc,EAAM,CAAE,EAAK,CAa5D,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({U_SELECTOR:()=>`u`,U_TAG:()=>`u`,createU:()=>a,enhanceUs:()=>o}),n=`u`,r=`u`;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(`u`,i(n),t)}function o(e=document){}exports.U_SELECTOR=r,exports.U_TAG=n,exports.createU=a,exports.enhanceUs=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=u.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"u.cjs","names":[],"sources":["../../../../../src/elements/inline/u/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: U element helpers.\n *\n * @remarks\n * The u element (`<u>`) represents a span of text with an unarticulated,\n * explicitly rendered non-textual annotation.\n *\n * Best-practice guidance:\n * - Do not use `<u>` purely for underlining text. Use CSS (`text-decoration`) for\n * presentation.\n * - Use `<u>` only when the semantics are appropriate (e.g. marking misspellings\n * or other non-textual annotations).\n * - Avoid usage where it could be confused with a hyperlink.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create u 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 * MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/u\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 unarticulated annotation spans.\n *\n * @category Constants\n */\nexport const U_TAG = 'u' as const;\n\n/**\n * A CSS selector targeting u elements.\n *\n * @category Constants\n */\nexport const U_SELECTOR = 'u';\n\n/**\n * Attribute bag for u creation/enhancement.\n *\n * @remarks\n * U elements accept standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type UAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link UAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The u attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: UAttrs): 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 u 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 u element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<u>` element.\n *\n * @example\n * ```ts\n * import { createU } from \"@lnpg/pkgn-sol/elements/inline/u\";\n *\n * const misspelt = createU(\"teh\", { aria: { label: \"Misspelt word\" } });\n * ```\n *\n * @category DOM\n */\nexport function createU(text?: string, attrs?: UAttrs): ElementOf<typeof U_TAG> {\n return createElement(U_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance u 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 enhanceUs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for u.\n void root;\n}\n"],"mappings":"0LA4Da,EAAQ,IAOR,EAAa,IA4B1B,SAAS,EAAc,EAAyC,CAC9D,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,EAyBrD,SAAgB,EAAQ,EAAe,EAAyC,CAC9E,OAAO,EAAA,EAAA,IAAqB,EAAc,EAAM,CAAE,EAAK,CAqBzD,SAAgB,EAAU,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({VAR_SELECTOR:()=>`var`,VAR_TAG:()=>`var`,createVar:()=>a,enhanceVars:()=>o}),n=`var`,r=`var`;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(`var`,i(n),t)}function o(e=document){}exports.VAR_SELECTOR=r,exports.VAR_TAG=n,exports.createVar=a,exports.enhanceVars=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=var.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"var.cjs","names":[],"sources":["../../../../../src/elements/inline/var/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Var element helpers.\n *\n * @remarks\n * The var element (`<var>`) represents a variable name in a mathematical\n * expression or programming context. Browsers typically render it in italics\n * by default, but presentation should be handled via CSS.\n *\n * Best-practice guidance:\n * - Use `<var>` specifically for variables (e.g. `x`, `y`, `n`, `userId`).\n * - Use `<code>` for code fragments, `<kbd>` for user input, and `<samp>` for\n * sample output, rather than overloading `<var>`.\n * - Keep semantics clean: `<var>` is inline and should not be used as a generic\n * styling hook.\n *\n * pkgn-sol provides small, framework-agnostic helpers so consumers can:\n * - create `<var>` elements in vanilla JS/TS without templates\n * - apply consistent global attributes safely\n * - use a stable \"enhancement\" hook if pkgn-sol ever needs runtime behavior\n *\n * This module has no side effects and does not mutate the DOM unless you call\n * its functions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/var\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for var elements.\n *\n * @category Constants\n */\nexport const VAR_TAG = 'var' as const;\n\n/**\n * A CSS selector targeting var elements.\n *\n * @category Constants\n */\nexport const VAR_SELECTOR = 'var';\n\n/**\n * Attribute bag for var creation/enhancement.\n *\n * @remarks\n * The `<var>` element accepts standard HTML global attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type VarAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link VarAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The var attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: VarAttrs): 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 var 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 var element.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<var>` element.\n *\n * @example\n * ```ts\n * import { createVar } from \"@lnpg/pkgn-sol/elements/inline/var\";\n *\n * const v = createVar(\"n\", { className: \"symbol\" });\n * document.body.appendChild(v);\n * ```\n *\n * @category DOM\n */\nexport function createVar(text?: string, attrs?: VarAttrs): ElementOf<typeof VAR_TAG> {\n return createElement(VAR_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance var 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 enhanceVars(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for var.\n void root;\n}\n"],"mappings":"sMAgEa,EAAU,MAOV,EAAe,MA4B5B,SAAS,EAAc,EAA2C,CAChE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,GAAG,GAAS,EAE1B,GAAI,CAAC,EAAM,OAAO,EAElB,IAAM,EAA+C,EAAE,CASvD,OAPI,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAG7C,OAAO,KAAK,EAAW,CAAC,OAAS,EAEhC,CAAE,GAAG,EAAM,KAAM,EAAY,CAAG,EA0BrD,SAAgB,EAAU,EAAe,EAA6C,CACpF,OAAO,EAAA,EAAA,MAAuB,EAAc,EAAM,CAAE,EAAK,CAqB3D,SAAgB,EAAY,EAAmB,SAAgB"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../../chunks/dom.cjs`);var t=e.i({DETAILS_SELECTOR:()=>r,DETAILS_TAG:()=>n,createDetails:()=>a,enhanceDetails:()=>o}),n=`details`,r=`details`;function i(e){if(!e)return;let{aria:t,open:n,name:r,...i}=e,a={...i.attrs??{}},o=(e,t)=>{t!==void 0&&(Object.prototype.hasOwnProperty.call(a,e)||(a[e]=t))};o(`name`,r),n===!0&&o(`open`,``);let s={...i};if(Object.keys(a).length>0&&(s.attrs=a),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)}return s}function a(t){return e.n(n,i(t))}function o(e=document){}exports.DETAILS_SELECTOR=r,exports.DETAILS_TAG=n,exports.createDetails=a,exports.enhanceDetails=o,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
2
+ //# sourceMappingURL=details.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.cjs","names":[],"sources":["../../../../../src/elements/interactive/details/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Details element helpers.\n *\n * @remarks\n * The details element (`<details>`) creates a disclosure widget where content is\n * shown/hidden by toggling the element open/closed. (MDN) :contentReference[oaicite:3]{index=3}\n *\n * Best-practice guidance:\n * - Provide a visible label using a child `<summary>` element; it acts as the\n * interactive control for toggling the parent `<details>`. (MDN) :contentReference[oaicite:4]{index=4}\n * - Use the `open` attribute to render expanded by default. (MDN) :contentReference[oaicite:5]{index=5}\n * - If using the `name` attribute to create a mutually-exclusive group, authors\n * must avoid markup where more than one element in the same name group has\n * `open` present. User agents may enforce exclusivity by changing `open`.\n * (WHATWG) :contentReference[oaicite:6]{index=6}\n *\n * pkgn-sol-specific conventions:\n * - Applies global attributes via pkgn-sol's hardened DOM helpers (`dom.ts`), which\n * block inline event handler attributes (e.g. `onclick`) and the raw `style`\n * attribute 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 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 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 details disclosure widgets.\n *\n * @category Constants\n */\nexport const DETAILS_TAG = 'details' as const;\n\n/**\n * A CSS selector targeting details elements.\n *\n * @category Constants\n */\nexport const DETAILS_SELECTOR = 'details';\n\n/**\n * Attribute bag for details creation/enhancement.\n *\n * @remarks\n * `<details>` accepts global attributes plus:\n * - `open` (boolean attribute)\n * - `name` (creates a mutually-exclusive details name group, per spec)\n *\n * `name` grouping behavior is specified by HTML; pkgn-sol does not enforce group\n * constraints at runtime. (WHATWG) :contentReference[oaicite:7]{index=7}\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, mapped into\n * {@link GlobalAttrs.aria}.\n *\n * @category Attributes\n */\nexport type DetailsAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Whether the details is open (expanded) by default.\n *\n * @remarks\n * This maps to the boolean `open` attribute. (MDN) :contentReference[oaicite:8]{index=8}\n */\n open?: boolean;\n\n /**\n * Name of a mutually-exclusive details group.\n *\n * @remarks\n * Details with the same `name` may form an exclusive group where at most one\n * is open at a time. (WHATWG) :contentReference[oaicite:9]{index=9}\n */\n name?: string;\n};\n\n/**\n * Normalize {@link DetailsAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @remarks\n * Pattern:\n * - Start with any caller-provided raw attrs escape hatch.\n * - Apply typed attributes without overriding explicit raw attributes.\n * - Map structured ARIA into {@link GlobalAttrs.aria}.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DetailsAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, open, name, ...rest } = attrs;\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 setIfUnset('name', name);\n\n // Boolean attribute by presence when true.\n if (open === true) setIfUnset('open', '');\n\n const mapped: GlobalAttrs = { ...rest };\n\n if (Object.keys(mergedAttrs).length > 0) {\n mapped.attrs = mergedAttrs;\n }\n\n if (aria) {\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n if (Object.keys(mappedAria).length > 0) {\n mapped.aria = mappedAria;\n }\n }\n\n return mapped;\n}\n\n/**\n * Create a details element with optional attributes.\n *\n * @remarks\n * - Provide a child `<summary>` for the visible label/toggle control. (MDN) :contentReference[oaicite:10]{index=10}\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 `<details>` element.\n *\n * @example\n * ```ts\n * import { createDetails } from \"@lnpg/pkgn-sol/elements/interactive/details\";\n *\n * const d = createDetails({ open: true });\n * ```\n *\n * @category DOM\n */\nexport function createDetails(attrs?: DetailsAttrs): ElementOf<typeof DETAILS_TAG> {\n return createElement(DETAILS_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance details 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 enhanceDetails(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for details.\n void root;\n}\n"],"mappings":"6MA6Da,EAAc,UAOd,EAAmB,UAqDhC,SAAS,EAAc,EAA+C,CACpE,GAAI,CAAC,EAAO,OAEZ,GAAM,CAAE,OAAM,OAAM,OAAM,GAAG,GAAS,EAEhC,EAAyC,CAAE,GAAI,EAAK,OAAS,EAAE,CAAG,CAElE,GAAc,EAAa,IAAmC,CAC9D,IAAM,IAAA,KACN,OAAO,UAAU,eAAe,KAAK,EAAa,EAAI,GAC1D,EAAY,GAAO,KAGrB,EAAW,OAAQ,EAAK,CAGpB,IAAS,IAAM,EAAW,OAAQ,GAAG,CAEzC,IAAM,EAAsB,CAAE,GAAG,EAAM,CAMvC,GAJI,OAAO,KAAK,EAAY,CAAC,OAAS,IACpC,EAAO,MAAQ,GAGb,EAAM,CACR,IAAM,EAA+C,EAAE,CACnD,OAAO,EAAK,OAAU,WAAU,EAAW,MAAQ,EAAK,OACxD,OAAO,EAAK,YAAe,WAAU,EAAW,WAAa,EAAK,YAClE,OAAO,EAAK,QAAW,YAAW,EAAW,OAAS,EAAK,QAE3D,OAAO,KAAK,EAAW,CAAC,OAAS,IACnC,EAAO,KAAO,GAIlB,OAAO,EAwBT,SAAgB,EAAc,EAAqD,CACjF,OAAO,EAAA,EAAc,EAAa,EAAc,EAAM,CAAC,CAazD,SAAgB,EAAe,EAAmB,SAAgB"}