@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,26 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/datalist/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ DATALIST_SELECTOR: () => i,
5
+ DATALIST_TAG: () => r,
6
+ createDatalist: () => o,
7
+ enhanceDatalists: () => s
8
+ }), r = "datalist", i = "datalist";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, ...n } = e;
12
+ if (!t) return n;
13
+ let r = {};
14
+ return typeof t.label == "string" && (r.label = t.label), typeof t.labelledby == "string" && (r.labelledby = t.labelledby), typeof t.hidden == "boolean" && (r.hidden = t.hidden), Object.keys(r).length > 0 ? {
15
+ ...n,
16
+ aria: r
17
+ } : n;
18
+ }
19
+ function o(e, n) {
20
+ return t(r, a(n), e);
21
+ }
22
+ function s(e = document) {}
23
+ //#endregion
24
+ export { i as DATALIST_SELECTOR, r as DATALIST_TAG, o as createDatalist, s as enhanceDatalists, n as t };
25
+
26
+ //# sourceMappingURL=datalist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datalist.js","names":[],"sources":["../../../../../src/elements/form/datalist/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Datalist element helpers.\n *\n * @remarks\n * The datalist element (`<datalist>`) contains a set of `<option>` elements that\n * represent permissible or recommended values for an associated form control\n * (most commonly an `<input>`), connected via the input's `list` attribute.\n *\n * Best-practice guidance:\n * - Pair a `<datalist>` with an `<input>` using a stable, unique `id` on the\n * datalist and a matching `list` attribute on the input.\n * - Use `<datalist>` for suggestions, not strict validation. If users must pick\n * from a fixed set, prefer `<select>`.\n * - Populate suggestions using descendant `<option>` elements, typically with\n * `value` attributes.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<datalist>` 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 * Attributes:\n * - `<datalist>` supports global attributes only (no element-specific content\n * attributes).\n *\n * Security:\n * - Global attribute escape hatches are guarded by pkgn-sol's `dom.ts` helpers which\n * block inline event handler attributes (e.g. `onclick`) and raw `style`\n * attribute injection (use the `style` object field instead).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/datalist\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 datalist.\n *\n * @category Constants\n */\nexport const DATALIST_TAG = 'datalist' as const;\n\n/**\n * A CSS selector targeting datalist elements.\n *\n * @category Constants\n */\nexport const DATALIST_SELECTOR = 'datalist';\n\n/**\n * Attribute bag for datalist creation/enhancement.\n *\n * @remarks\n * Datalist 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 DatalistAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link DatalistAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The datalist attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: DatalistAttrs): 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 datalist element with optional text content and global attributes.\n *\n * @remarks\n * While `<datalist>` is typically populated with `<option>` children, this helper\n * follows pkgn-sol's consistent \"optional text\" factory signature for non-void elements.\n *\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 datalist (rare, but supported).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<datalist>` element.\n *\n * @example\n * ```ts\n * import { createDatalist } from \"@lnpg/pkgn-sol/elements/form/datalist\";\n *\n * const dl = createDatalist(undefined, { id: \"city-list\" });\n * document.body.appendChild(dl);\n * ```\n *\n * @category DOM\n */\nexport function createDatalist(\n text?: string,\n attrs?: DatalistAttrs,\n): ElementOf<typeof DATALIST_TAG> {\n return createElement(DATALIST_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance datalist 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 enhanceDatalists(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for datalist.\n void root;\n}\n"],"mappings":";;;;;;;IA0Ea,IAAe,YAOf,IAAoB;AA4BjC,SAAS,EAAc,GAAgD;CACrE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,GAAG,MAAS;CAE1B,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CASvD,OAPI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAG7C,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAM,MAAM;EAAY,GAAG;;AA6BrD,SAAgB,EACd,GACA,GACgC;CAChC,OAAO,EAAc,GAAc,EAAc,EAAM,EAAE,EAAK;;AAqBhE,SAAgB,EAAiB,IAAmB,UAAgB"}
@@ -0,0 +1,27 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/fieldset/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ FIELDSET_SELECTOR: () => i,
5
+ FIELDSET_TAG: () => r,
6
+ createFieldset: () => o,
7
+ enhanceFieldsets: () => s
8
+ }), r = "fieldset", i = "fieldset";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, disabled: n, form: r, name: i, ...a } = e, o = { ...a.attrs ?? {} }, s = (e, t) => {
12
+ t !== void 0 && (Object.prototype.hasOwnProperty.call(o, e) || (o[e] = t));
13
+ };
14
+ s("form", r), s("name", i), n === !0 && s("disabled", "");
15
+ let c = {};
16
+ t && (typeof t.label == "string" && (c.label = t.label), typeof t.labelledby == "string" && (c.labelledby = t.labelledby), typeof t.hidden == "boolean" && (c.hidden = t.hidden));
17
+ let l = Object.keys(c).length > 0, u = Object.keys(o).length > 0, d = { ...a };
18
+ return u && (d.attrs = o), l && (d.aria = c), d;
19
+ }
20
+ function o(e, n) {
21
+ return t(r, a(n), e);
22
+ }
23
+ function s(e = document) {}
24
+ //#endregion
25
+ export { i as FIELDSET_SELECTOR, r as FIELDSET_TAG, o as createFieldset, s as enhanceFieldsets, n as t };
26
+
27
+ //# sourceMappingURL=fieldset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldset.js","names":[],"sources":["../../../../../src/elements/form/fieldset/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Fieldset element helpers.\n *\n * @remarks\n * The fieldset element (`<fieldset>`) groups related form controls, typically\n * with a `<legend>` that provides an accessible label for the group.\n *\n * Best-practice guidance:\n * - Use `<fieldset>` to group related controls (e.g. radio button sets).\n * - Prefer a meaningful `<legend>` as the first child to label the group.\n * - Do not use `<fieldset>` purely for layout; use CSS for visual grouping.\n *\n * Attribute behavior notes:\n * - When `disabled` is set on a `<fieldset>`, user agents disable descendant\n * form controls, except those that are descendants of the fieldset's first\n * `<legend>` child (if any). This is native platform behavior.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create fieldsets 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/fieldset\n * @see https://www.w3.org/WAI/tutorials/forms/grouping/\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type AttrValue, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for fieldset groups.\n *\n * @category Constants\n */\nexport const FIELDSET_TAG = 'fieldset' as const;\n\n/**\n * A CSS selector targeting fieldset elements.\n *\n * @category Constants\n */\nexport const FIELDSET_SELECTOR = 'fieldset';\n\n/**\n * Attribute bag for fieldset creation/enhancement.\n *\n * @remarks\n * Fieldset accepts standard HTML global attributes plus fieldset-specific\n * attributes (`disabled`, `form`, `name`).\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 FieldsetAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Disables descendant form controls (native platform behavior).\n *\n * @remarks\n * When set, controls inside the first `<legend>` (if present) are typically\n * excluded from disabling per spec/user agent behavior.\n */\n disabled?: boolean;\n\n /**\n * Associates the fieldset with a form element by ID, even if not a descendant.\n */\n form?: string;\n\n /**\n * Name of the fieldset (submitted/associated in form processing contexts).\n */\n name?: string;\n};\n\n/**\n * Normalize {@link FieldsetAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The fieldset attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: FieldsetAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, disabled, form, name, ...rest } = attrs;\n\n // Start with any caller-provided attrs escape hatch (still validated by dom.ts).\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n const setIfUnset = (key: string, value: AttrValue | undefined): void => {\n if (value === undefined) return;\n if (Object.prototype.hasOwnProperty.call(mergedAttrs, key)) return;\n mergedAttrs[key] = value;\n };\n\n setIfUnset('form', form);\n setIfUnset('name', name);\n\n // Boolean attributes are represented by presence. We set empty-string when true.\n if (disabled === true) setIfUnset('disabled', '');\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n\n const next: GlobalAttrs = { ...rest };\n if (hasMergedAttrs) next.attrs = mergedAttrs;\n if (hasMappedAria) next.aria = mappedAria;\n\n return next;\n}\n\n/**\n * Create a fieldset 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 fieldset (rare; most fieldsets contain child nodes).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<fieldset>` element.\n *\n * @example\n * ```ts\n * import { createFieldset } from \"@lnpg/pkgn-sol/elements/form/fieldset\";\n *\n * const fs = createFieldset(undefined, { disabled: false });\n * // fs.appendChild(createLegend(\"Shipping address\"));\n * ```\n *\n * @category DOM\n */\nexport function createFieldset(\n text?: string,\n attrs?: FieldsetAttrs,\n): ElementOf<typeof FIELDSET_TAG> {\n return createElement(FIELDSET_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance fieldset 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 enhanceFieldsets(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for fieldset.\n void root;\n}\n"],"mappings":";;;;;;;IAmEa,IAAe,YAOf,IAAoB;AAgDjC,SAAS,EAAc,GAAgD;CACrE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,aAAU,SAAM,SAAM,GAAG,MAAS,GAG1C,IAAyC,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG,EAElE,KAAc,GAAa,MAAuC;EAClE,MAAU,KAAA,MACV,OAAO,UAAU,eAAe,KAAK,GAAa,EAAI,KAC1D,EAAY,KAAO;;CAOrB,AAJA,EAAW,QAAQ,EAAK,EACxB,EAAW,QAAQ,EAAK,EAGpB,MAAa,MAAM,EAAW,YAAY,GAAG;CAEjD,IAAM,IAA+C,EAAE;CACvD,AAAI,MACE,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK;CAGjE,IAAM,IAAgB,OAAO,KAAK,EAAW,CAAC,SAAS,GACjD,IAAiB,OAAO,KAAK,EAAY,CAAC,SAAS,GAEnD,IAAoB,EAAE,GAAG,GAAM;CAIrC,OAHI,MAAgB,EAAK,QAAQ,IAC7B,MAAe,EAAK,OAAO,IAExB;;AA0BT,SAAgB,EACd,GACA,GACgC;CAChC,OAAO,EAAc,GAAc,EAAc,EAAM,EAAE,EAAK;;AAqBhE,SAAgB,EAAiB,IAAmB,UAAgB"}
@@ -0,0 +1,27 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/form/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ FORM_SELECTOR: () => i,
5
+ FORM_TAG: () => r,
6
+ createForm: () => o,
7
+ enhanceForms: () => s
8
+ }), r = "form", i = "form";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, action: n, method: r, enctype: i, acceptCharset: a, autocomplete: o, name: s, noValidate: c, target: l, rel: u, ...d } = e, f = { ...d.attrs ?? {} }, p = (e, t) => {
12
+ t !== void 0 && (Object.prototype.hasOwnProperty.call(f, e) || (f[e] = t));
13
+ };
14
+ p("action", n), p("method", r), p("enctype", i), p("accept-charset", a), p("autocomplete", o), p("name", s), p("target", l), p("rel", u), c === !0 && p("novalidate", "");
15
+ let m = {};
16
+ t && (typeof t.label == "string" && (m.label = t.label), typeof t.labelledby == "string" && (m.labelledby = t.labelledby), typeof t.hidden == "boolean" && (m.hidden = t.hidden));
17
+ let h = Object.keys(m).length > 0, g = Object.keys(f).length > 0, _ = { ...d };
18
+ return g && (_.attrs = f), h && (_.aria = m), _;
19
+ }
20
+ function o(e, n) {
21
+ return t(r, a(n), e);
22
+ }
23
+ function s(e = document) {}
24
+ //#endregion
25
+ export { i as FORM_SELECTOR, r as FORM_TAG, o as createForm, s as enhanceForms, n as t };
26
+
27
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../../../../src/elements/form/form/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Form element helpers.\n *\n * @remarks\n * The form element (`<form>`) groups interactive controls for submitting data.\n *\n * Best-practice guidance:\n * - Prefer HTTPS endpoints for `action` to protect user data in transit.\n * - Use `method=\"post\"` for submissions that change server state or include sensitive data.\n * - Use `enctype=\"multipart/form-data\"` when uploading files.\n * - Provide explicit labels for controls and ensure accessible naming.\n * - Consider `rel=\"noopener\"` when using `target=\"_blank\"` to avoid `window.opener` exposure.\n *\n * pkgn-sol notes:\n * - This module is framework-agnostic and has no side effects.\n * - Global attributes are applied via pkgn-sol's shared DOM helper, which blocks:\n * - inline event handler attributes (e.g. `onclick`)\n * - raw `style` attribute injection (use the `style` object instead)\n * - Text passed to factories is assigned via `textContent` (never `innerHTML`).\n *\n * References:\n * - MDN: `<form>` element :contentReference[oaicite:3]{index=3}\n * - WHATWG HTML: Forms & submission attributes :contentReference[oaicite:4]{index=4}\n * - MDN: `rel` on `<form>` / `noopener` :contentReference[oaicite:5]{index=5}\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type AttrValue, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for forms.\n *\n * @category Constants\n */\nexport const FORM_TAG = 'form' as const;\n\n/**\n * A CSS selector targeting form elements.\n *\n * @category Constants\n */\nexport const FORM_SELECTOR = 'form';\n\n/**\n * Allowed values for the form `method` attribute.\n *\n * @remarks\n * HTML supports `get`, `post`, and `dialog` (for dialog-associated forms).\n *\n * @category Types\n */\nexport type FormMethod = 'get' | 'post' | 'dialog';\n\n/**\n * Allowed values for the form `enctype` attribute.\n *\n * @category Types\n */\nexport type FormEnctype =\n | 'application/x-www-form-urlencoded'\n | 'multipart/form-data'\n | 'text/plain';\n\n/**\n * Allowed values for the form `autocomplete` attribute.\n *\n * @category Types\n */\nexport type FormAutocomplete = 'on' | 'off';\n\n/**\n * Attribute bag for form creation/enhancement.\n *\n * @remarks\n * `<form>` supports standard HTML global attributes plus submission-related\n * attributes (action, method, enctype, target, etc.).\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type FormAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * URL that processes the form submission.\n *\n * @remarks\n * If omitted, the user agent submits to the current document URL.\n */\n action?: string;\n\n /**\n * HTTP method used to submit the form.\n *\n * @remarks\n * Valid values are `get`, `post`, and `dialog`.\n */\n method?: FormMethod;\n\n /**\n * Encoding type for the form submission.\n *\n * @remarks\n * Use `multipart/form-data` when uploading files.\n */\n enctype?: FormEnctype;\n\n /**\n * Character encodings that are acceptable for server processing.\n *\n * @remarks\n * Maps to the `accept-charset` attribute.\n */\n acceptCharset?: string;\n\n /**\n * Whether the browser may autofill this form.\n */\n autocomplete?: FormAutocomplete;\n\n /**\n * Name of the form, used for referencing the form in scripts and documents.\n */\n name?: string;\n\n /**\n * Disable constraint validation when submitting the form.\n *\n * @remarks\n * Maps to the boolean `novalidate` attribute (represented by attribute presence).\n */\n noValidate?: boolean;\n\n /**\n * Where to display the response after submitting the form.\n *\n * @remarks\n * Common values: `_self`, `_blank`, `_parent`, `_top`, or a named browsing context.\n */\n target?: '_self' | '_blank' | '_parent' | '_top' | (string & {});\n\n /**\n * Relationship (link types) for the form submission when `target` creates a new context.\n *\n * @remarks\n * This is a space-separated list of tokens (e.g. `noopener noreferrer`).\n */\n rel?: string;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link FormAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @remarks\n * - Preserves caller-provided `attrs` escape hatch (still validated by `dom.ts`).\n * - Element-specific attributes are merged into `attrs` without overwriting keys\n * explicitly provided by the caller.\n * - Boolean attributes are represented by presence; we set empty-string when true.\n *\n * @param attrs - The form attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: FormAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const {\n aria,\n action,\n method,\n enctype,\n acceptCharset,\n autocomplete,\n name,\n noValidate,\n target,\n rel,\n ...rest\n } = attrs;\n\n // Start with any caller-provided attrs escape hatch (it is still validated by dom.ts).\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n // Helper: only set if caller didn't already set the raw attribute explicitly.\n const setIfUnset = (key: string, value: AttrValue | undefined): void => {\n if (value === undefined) return;\n if (Object.prototype.hasOwnProperty.call(mergedAttrs, key)) return;\n mergedAttrs[key] = value;\n };\n\n setIfUnset('action', action);\n setIfUnset('method', method);\n setIfUnset('enctype', enctype);\n setIfUnset('accept-charset', acceptCharset);\n setIfUnset('autocomplete', autocomplete);\n setIfUnset('name', name);\n setIfUnset('target', target);\n setIfUnset('rel', rel);\n\n // Boolean attributes are represented by presence. We set empty-string when true.\n if (noValidate === true) setIfUnset('novalidate', '');\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n\n const next: GlobalAttrs = { ...rest };\n if (hasMergedAttrs) next.attrs = mergedAttrs;\n if (hasMappedAria) next.aria = mappedAria;\n\n return next;\n}\n\n/**\n * Create a form element with optional fallback text and attributes.\n *\n * @remarks\n * - Fallback text is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the form (rare, but supported for parity).\n * @param attrs - Optional attributes to apply.\n * @returns The created `<form>` element.\n *\n * @example\n * ```ts\n * import { createForm } from \"@lnpg/pkgn-sol/elements/form/form\";\n *\n * const form = createForm(undefined, {\n * action: \"/submit\",\n * method: \"post\",\n * enctype: \"application/x-www-form-urlencoded\",\n * });\n * document.body.appendChild(form);\n * ```\n *\n * @category DOM\n */\nexport function createForm(text?: string, attrs?: FormAttrs): ElementOf<typeof FORM_TAG> {\n return createElement(FORM_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance form 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 enhanceForms(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for form.\n void root;\n}\n"],"mappings":";;;;;;;IAgEa,IAAW,QAOX,IAAgB;AAgI7B,SAAS,EAAc,GAA4C;CACjE,IAAI,CAAC,GAAO;CAEZ,IAAM,EACJ,SACA,WACA,WACA,YACA,kBACA,iBACA,SACA,eACA,WACA,QACA,GAAG,MACD,GAGE,IAAyC,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG,EAGlE,KAAc,GAAa,MAAuC;EAClE,MAAU,KAAA,MACV,OAAO,UAAU,eAAe,KAAK,GAAa,EAAI,KAC1D,EAAY,KAAO;;CAarB,AAVA,EAAW,UAAU,EAAO,EAC5B,EAAW,UAAU,EAAO,EAC5B,EAAW,WAAW,EAAQ,EAC9B,EAAW,kBAAkB,EAAc,EAC3C,EAAW,gBAAgB,EAAa,EACxC,EAAW,QAAQ,EAAK,EACxB,EAAW,UAAU,EAAO,EAC5B,EAAW,OAAO,EAAI,EAGlB,MAAe,MAAM,EAAW,cAAc,GAAG;CAErD,IAAM,IAA+C,EAAE;CACvD,AAAI,MACE,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK;CAGjE,IAAM,IAAgB,OAAO,KAAK,EAAW,CAAC,SAAS,GACjD,IAAiB,OAAO,KAAK,EAAY,CAAC,SAAS,GAEnD,IAAoB,EAAE,GAAG,GAAM;CAIrC,OAHI,MAAgB,EAAK,QAAQ,IAC7B,MAAe,EAAK,OAAO,IAExB;;AA8BT,SAAgB,EAAW,GAAe,GAA+C;CACvF,OAAO,EAAc,GAAU,EAAc,EAAM,EAAE,EAAK;;AAqB5D,SAAgB,EAAa,IAAmB,UAAgB"}
@@ -0,0 +1,36 @@
1
+ import { i as e } from "../../chunks/dom.js";
2
+ import { t } from "./button/button.js";
3
+ import { t as n } from "./datalist/datalist.js";
4
+ import { t as r } from "./fieldset/fieldset.js";
5
+ import { t as i } from "./form/form.js";
6
+ import { t as a } from "./input/input.js";
7
+ import { t as o } from "./label/label.js";
8
+ import { t as s } from "./legend/legend.js";
9
+ import { t as c } from "./meter/meter.js";
10
+ import { t as l } from "./optgroup/optgroup.js";
11
+ import { t as u } from "./option/option.js";
12
+ import { t as d } from "./output/output.js";
13
+ import { t as f } from "./progress/progress.js";
14
+ import { t as p } from "./select/select.js";
15
+ import { t as m } from "./textarea/textarea.js";
16
+ //#region src/elements/form/index.ts
17
+ var h = /* @__PURE__ */ e({
18
+ button: () => t,
19
+ datalist: () => n,
20
+ fieldset: () => r,
21
+ form: () => i,
22
+ input: () => a,
23
+ label: () => o,
24
+ legend: () => s,
25
+ meter: () => c,
26
+ optgroup: () => l,
27
+ option: () => u,
28
+ output: () => d,
29
+ progress: () => f,
30
+ select: () => p,
31
+ textarea: () => m
32
+ });
33
+ //#endregion
34
+ export { t as button, n as datalist, r as fieldset, i as form, a as input, o as label, s as legend, c as meter, l as optgroup, u as option, d as output, f as progress, p as select, h as t, m as textarea };
35
+
36
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../../../src/elements/form/index.ts"],"sourcesContent":["/**\n * Form element factories.\n *\n * Provides framework-agnostic factory functions for common HTML form elements.\n *\n * These factories:\n * - Create semantic form structures using pkgn-sol's hardened DOM helpers.\n * - Forward curated global attributes.\n * - Enforce structured, typed attribute bags.\n * - Preserve correct form semantics and associations (e.g. labels, fieldsets).\n * - Prevent unsafe attribute injection.\n *\n * @module elements/form\n * @since 0.1.0\n */\n\n/**\n * `<button>` element factory namespace.\n *\n * Represents a clickable button used to submit forms, reset forms, or trigger\n * custom actions.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button\n */\nexport * as button from './button';\n\n/**\n * `<datalist>` element factory namespace.\n *\n * Represents a set of `<option>` suggestions for an associated `<input>`,\n * enabling autocomplete-like behavior.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist\n */\nexport * as datalist from './datalist';\n\n/**\n * `<fieldset>` element factory namespace.\n *\n * Represents a grouping container for related form controls, typically paired\n * with a `<legend>` that labels the group.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset\n */\nexport * as fieldset from './fieldset';\n\n/**\n * `<form>` element factory namespace.\n *\n * Represents a document section containing interactive controls for submitting\n * information to a web server or handling via client-side logic.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form\n */\nexport * as form from './form';\n\n/**\n * `<input>` element factory namespace.\n *\n * Represents an interactive control for entering data. The `type` attribute\n * determines the control's behavior and UI.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input\n */\nexport * as input from './input';\n\n/**\n * `<label>` element factory namespace.\n *\n * Represents a caption for a form control, improving usability and\n * accessibility. Typically associated via the `for` attribute or by nesting.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label\n */\nexport * as label from './label';\n\n/**\n * `<legend>` element factory namespace.\n *\n * Represents a caption for the content of its parent `<fieldset>`, providing an\n * accessible label for grouped controls.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend\n */\nexport * as legend from './legend';\n\n/**\n * `<meter>` element factory namespace.\n *\n * Represents a scalar measurement within a known range, or a fractional value.\n * Use `<progress>` instead for progress over time.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter\n */\nexport * as meter from './meter';\n\n/**\n * `<optgroup>` element factory namespace.\n *\n * Represents a grouping of `<option>` elements within a `<select>` or\n * `<datalist>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup\n */\nexport * as optgroup from './optgroup';\n\n/**\n * `<option>` element factory namespace.\n *\n * Represents an item within a `<select>`, `<datalist>`, or `<optgroup>`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option\n */\nexport * as option from './option';\n\n/**\n * `<output>` element factory namespace.\n *\n * Represents the result of a calculation or user action, commonly used in\n * forms to display derived values.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output\n */\nexport * as output from './output';\n\n/**\n * `<progress>` element factory namespace.\n *\n * Represents the completion progress of a task, typically over time.\n * Use `<meter>` instead for a measurement within a known range.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress\n */\nexport * as progress from './progress';\n\n/**\n * `<select>` element factory namespace.\n *\n * Represents a control that provides a menu of options for the user to choose\n * from.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select\n */\nexport * as select from './select';\n\n/**\n * `<textarea>` element factory namespace.\n *\n * Represents a multi-line plain-text editing control.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea\n */\nexport * as textarea from './textarea';\n"],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { i as e, r as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/input/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ INPUT_SELECTOR: () => i,
5
+ INPUT_TAG: () => r,
6
+ createInput: () => o,
7
+ enhanceInputs: () => s
8
+ }), r = "input", i = "input";
9
+ function a(e) {
10
+ let { aria: t, type: n, name: r, value: i, placeholder: a, disabled: o, readOnly: s, required: c, multiple: l, checked: u, min: d, max: f, step: p, minLength: m, maxLength: h, pattern: g, size: _, autoComplete: v, autofocus: y, list: b, form: x, formAction: S, formEnctype: C, formMethod: w, formNoValidate: T, formTarget: E, src: D, alt: O, width: k, height: A, accept: j, capture: M, inputMode: N, enterKeyHint: P, popoverTarget: F, popoverTargetAction: I, ...L } = e ?? {}, R = { ...L.attrs ?? {} }, z = (e, t) => {
11
+ t !== void 0 && (Object.prototype.hasOwnProperty.call(R, e) || (R[e] = t));
12
+ };
13
+ z("type", n ?? "text"), z("name", r), z("value", i), z("placeholder", a), z("min", d), z("max", f), z("step", p), z("minlength", typeof m == "number" ? m : void 0), z("maxlength", typeof h == "number" ? h : void 0), z("pattern", g), z("size", typeof _ == "number" ? _ : void 0), z("autocomplete", v), z("list", b), z("form", x), z("formaction", S), z("formenctype", C), z("formmethod", w), z("formtarget", E), z("src", D), z("alt", O), z("width", typeof k == "number" ? k : void 0), z("height", typeof A == "number" ? A : void 0), z("accept", j), z("inputmode", N), z("enterkeyhint", P), z("popovertarget", F), z("popovertargetaction", I), o === !0 && z("disabled", ""), s === !0 && z("readonly", ""), c === !0 && z("required", ""), l === !0 && z("multiple", ""), u === !0 && z("checked", ""), y === !0 && z("autofocus", ""), T === !0 && z("formnovalidate", ""), M === !0 && z("capture", ""), M === "user" && z("capture", "user"), M === "environment" && z("capture", "environment");
14
+ let B = {
15
+ ...L,
16
+ attrs: R
17
+ }, V = {};
18
+ if (t && (typeof t.label == "string" && (V.label = t.label), typeof t.labelledby == "string" && (V.labelledby = t.labelledby), typeof t.hidden == "boolean" && (V.hidden = t.hidden)), Object.keys(V).length > 0 && (B.aria = V), Object.keys(R).length === 0) {
19
+ let { attrs: e, ...t } = B;
20
+ return t;
21
+ }
22
+ return B;
23
+ }
24
+ function o(e) {
25
+ return t(r, a(e));
26
+ }
27
+ function s(e = document) {}
28
+ //#endregion
29
+ export { i as INPUT_SELECTOR, r as INPUT_TAG, o as createInput, s as enhanceInputs, n as t };
30
+
31
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","names":[],"sources":["../../../../../src/elements/form/input/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Input element helpers.\n *\n * @remarks\n * The input element (`<input>`) represents a typed data field whose behavior is\n * primarily controlled by its `type` attribute. :contentReference[oaicite:5]{index=5}\n *\n * Best-practice guidance:\n * - Prefer the most specific `type` possible (e.g. `email`, `tel`, `number`)\n * to improve UX and validation behavior.\n * - Always provide an accessible name (visible label, `aria-label`, or\n * `aria-labelledby`).\n * - Treat `autocomplete`, `inputmode`, and `enterkeyhint` as UX hints, not\n * security controls. :contentReference[oaicite:6]{index=6}\n * - For `<input type=\"image\">`, include meaningful `alt` text; while it may be\n * technically optional, it should be provided for usability/accessibility. :contentReference[oaicite:7]{index=7}\n *\n * pkgn-sol-specific conventions:\n * - Defaults `type` to `\"text\"` unless explicitly overridden (typed field or raw\n * attrs escape hatch), matching HTML's default behavior. :contentReference[oaicite:8]{index=8}\n * - Applies global attributes via pkgn-sol's hardened DOM helpers (`dom.ts`),\n * which block inline event handler attributes (e.g. `onclick`) and the raw\n * `style` 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 {\n createVoidElement,\n type AttrValue,\n type ElementOf,\n type GlobalAttrs,\n} from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset 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 * Common input `type` values.\n *\n * @remarks\n * The `type` attribute controls which control is rendered and how values are\n * processed. :contentReference[oaicite:9]{index=9}\n *\n * pkgn-sol models the widely used types while still allowing the raw `attrs` escape\n * hatch for unusual/experimental values.\n *\n * @category Attributes\n */\nexport type InputType =\n | 'text'\n | 'password'\n | 'email'\n | 'number'\n | 'search'\n | 'tel'\n | 'url'\n | 'date'\n | 'datetime-local'\n | 'month'\n | 'week'\n | 'time'\n | 'color'\n | 'checkbox'\n | 'radio'\n | 'file'\n | 'hidden'\n | 'image'\n | 'range'\n | 'reset'\n | 'submit'\n | 'button';\n\n/**\n * Values for the `inputmode` hint.\n *\n * @remarks\n * `inputmode` is a hint to user agents about what kind of virtual keyboard to\n * show. :contentReference[oaicite:10]{index=10}\n *\n * @category Attributes\n */\nexport type InputMode =\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search';\n\n/**\n * Values for the `enterkeyhint` hint.\n *\n * @remarks\n * Defines what action label/icon to present for the enter key on virtual\n * keyboards. :contentReference[oaicite:11]{index=11}\n *\n * @category Attributes\n */\nexport type EnterKeyHint = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';\n\n/**\n * Values for the `popovertargetaction` attribute when the input is used as a\n * popover invoker button.\n *\n * @category Attributes\n */\nexport type PopoverTargetAction = 'toggle' | 'show' | 'hide';\n\n/**\n * The semantic tag name for inputs.\n *\n * @category Constants\n */\nexport const INPUT_TAG = 'input' as const;\n\n/**\n * A CSS selector targeting input elements.\n *\n * @category Constants\n */\nexport const INPUT_SELECTOR = 'input';\n\n/**\n * Attribute bag for input creation/enhancement.\n *\n * @remarks\n * `<input>` supports a large surface area of attributes, many of which are\n * type-dependent. pkgn-sol models common attributes explicitly and provides\n * {@link GlobalAttrs.attrs} as an escape hatch (validated by `dom.ts`).\n *\n * Notes:\n * - pkgn-sol defaults `type` to `\"text\"` unless explicitly overridden. :contentReference[oaicite:12]{index=12}\n * - Boolean attributes are applied by presence (empty string) when `true`.\n * - For `type=\"image\"`, `alt` should be provided for accessibility. :contentReference[oaicite:13]{index=13}\n *\n * @category Attributes\n */\nexport type InputAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * The input type. Defaults to `\"text\"` in pkgn-sol.\n */\n type?: InputType;\n\n /**\n * Form field name (used during submission).\n */\n name?: string;\n\n /**\n * Initial/current value (type-dependent semantics).\n */\n value?: string;\n\n /**\n * Placeholder hint (text-like types).\n */\n placeholder?: string;\n\n /**\n * Disables the control when true.\n */\n disabled?: boolean;\n\n /**\n * Marks the control read-only when true (where applicable).\n */\n readOnly?: boolean;\n\n /**\n * Marks the control required for form submission.\n */\n required?: boolean;\n\n /**\n * Enables multiple values (e.g. file inputs).\n */\n multiple?: boolean;\n\n /**\n * Marks a checkbox or radio as checked.\n */\n checked?: boolean;\n\n /**\n * Minimum value (number/date/time/range-like types).\n */\n min?: string | number;\n\n /**\n * Maximum value (number/date/time/range-like types).\n */\n max?: string | number;\n\n /**\n * Step interval (number/date/time/range-like types).\n */\n step?: string | number;\n\n /**\n * Minimum length (text-like types).\n */\n minLength?: number;\n\n /**\n * Maximum length (text-like types).\n */\n maxLength?: number;\n\n /**\n * Validation pattern (text-like types).\n */\n pattern?: string;\n\n /**\n * Size hint (visible character width, where applicable).\n */\n size?: number;\n\n /**\n * Autocomplete hint.\n */\n autoComplete?: string;\n\n /**\n * Autofocus hint.\n */\n autofocus?: boolean;\n\n /**\n * Associates the control with a datalist element by ID.\n */\n list?: string;\n\n /**\n * Associates the control with a form element by ID.\n */\n form?: string;\n\n /**\n * Overrides form submission target for submit/image inputs.\n */\n formAction?: string;\n\n /**\n * Overrides form submission encoding for submit/image inputs.\n */\n formEnctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\n\n /**\n * Overrides form submission method for submit/image inputs.\n */\n formMethod?: 'get' | 'post' | 'dialog';\n\n /**\n * Prevents constraint validation on submission.\n */\n formNoValidate?: boolean;\n\n /**\n * Overrides form submission browsing context target.\n */\n formTarget?: string;\n\n /**\n * Source URL for `type=\"image\"`.\n */\n src?: string;\n\n /**\n * Alternate text for `type=\"image\"`.\n *\n * @remarks\n * This is only meaningful for image inputs and should be provided. :contentReference[oaicite:14]{index=14}\n */\n alt?: string;\n\n /**\n * Width for `type=\"image\"`.\n */\n width?: number;\n\n /**\n * Height for `type=\"image\"`.\n */\n height?: number;\n\n /**\n * Accepted file types (for `type=\"file\"`).\n */\n accept?: string;\n\n /**\n * Media capture hint (primarily file inputs on mobile).\n *\n * @remarks\n * If set to `true`, the boolean attribute is applied by presence.\n */\n capture?: 'user' | 'environment' | true;\n\n /**\n * Hint for the virtual keyboard shown on touch devices.\n */\n inputMode?: InputMode;\n\n /**\n * Hint for the virtual keyboard enter key label/icon.\n */\n enterKeyHint?: EnterKeyHint;\n\n /**\n * ID of the popover element this input controls (typically `type=\"button\"`).\n */\n popoverTarget?: string;\n\n /**\n * Action to perform on the targeted popover.\n */\n popoverTargetAction?: PopoverTargetAction;\n};\n\n/**\n * Normalize {@link InputAttrs} 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?: InputAttrs): GlobalAttrs {\n const {\n aria,\n type,\n name,\n value,\n placeholder,\n disabled,\n readOnly,\n required,\n multiple,\n checked,\n min,\n max,\n step,\n minLength,\n maxLength,\n pattern,\n size,\n autoComplete,\n autofocus,\n list,\n form,\n formAction,\n formEnctype,\n formMethod,\n formNoValidate,\n formTarget,\n src,\n alt,\n width,\n height,\n accept,\n capture,\n inputMode,\n enterKeyHint,\n popoverTarget,\n popoverTargetAction,\n ...rest\n } = 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 // Default type to \"text\" unless explicitly overridden.\n setIfUnset('type', type ?? 'text');\n\n setIfUnset('name', name);\n setIfUnset('value', value);\n setIfUnset('placeholder', placeholder);\n setIfUnset('min', min);\n setIfUnset('max', max);\n setIfUnset('step', step);\n setIfUnset('minlength', typeof minLength === 'number' ? minLength : undefined);\n setIfUnset('maxlength', typeof maxLength === 'number' ? maxLength : undefined);\n setIfUnset('pattern', pattern);\n setIfUnset('size', typeof size === 'number' ? size : undefined);\n setIfUnset('autocomplete', autoComplete);\n setIfUnset('list', list);\n setIfUnset('form', form);\n\n setIfUnset('formaction', formAction);\n setIfUnset('formenctype', formEnctype);\n setIfUnset('formmethod', formMethod);\n setIfUnset('formtarget', formTarget);\n\n setIfUnset('src', src);\n setIfUnset('alt', alt);\n setIfUnset('width', typeof width === 'number' ? width : undefined);\n setIfUnset('height', typeof height === 'number' ? height : undefined);\n\n setIfUnset('accept', accept);\n setIfUnset('inputmode', inputMode);\n setIfUnset('enterkeyhint', enterKeyHint);\n\n setIfUnset('popovertarget', popoverTarget);\n setIfUnset('popovertargetaction', popoverTargetAction);\n\n // Boolean attributes: presence (empty string) when true.\n if (disabled === true) setIfUnset('disabled', '');\n if (readOnly === true) setIfUnset('readonly', '');\n if (required === true) setIfUnset('required', '');\n if (multiple === true) setIfUnset('multiple', '');\n if (checked === true) setIfUnset('checked', '');\n if (autofocus === true) setIfUnset('autofocus', '');\n if (formNoValidate === true) setIfUnset('formnovalidate', '');\n\n if (capture === true) setIfUnset('capture', '');\n if (capture === 'user') setIfUnset('capture', 'user');\n if (capture === 'environment') setIfUnset('capture', 'environment');\n\n const mapped: GlobalAttrs = { ...rest, attrs: mergedAttrs };\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n if (Object.keys(mappedAria).length > 0) {\n mapped.aria = mappedAria;\n }\n\n if (Object.keys(mergedAttrs).length === 0) {\n const { attrs: _unused, ...withoutAttrs } = mapped;\n return withoutAttrs;\n }\n\n return mapped;\n}\n\n/**\n * Create an input element with attributes.\n *\n * @remarks\n * - `<input>` is a void element; it never receives text content. :contentReference[oaicite:15]{index=15}\n * - pkgn-sol defaults `type` to `\"text\"` unless overridden. :contentReference[oaicite:16]{index=16}\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 `<input>` element.\n *\n * @example\n * ```ts\n * import { createInput } from \"@lnpg/pkgn-sol/elements/form/input\";\n *\n * const email = createInput({\n * type: \"email\",\n * name: \"email\",\n * autoComplete: \"email\",\n * inputMode: \"email\",\n * });\n * ```\n *\n * @category DOM\n */\nexport function createInput(attrs?: InputAttrs): ElementOf<typeof INPUT_TAG> {\n return createVoidElement(INPUT_TAG, toGlobalAttrs(attrs));\n}\n\n/**\n * Enhance input 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 enhanceInputs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for input.\n void root;\n}\n"],"mappings":";;;;;;;IA+Ia,IAAY,SAOZ,IAAiB;AAwN9B,SAAS,EAAc,GAAiC;CACtD,IAAM,EACJ,SACA,SACA,SACA,UACA,gBACA,aACA,aACA,aACA,aACA,YACA,QACA,QACA,SACA,cACA,cACA,YACA,SACA,iBACA,cACA,SACA,SACA,eACA,gBACA,eACA,mBACA,eACA,QACA,QACA,UACA,WACA,WACA,YACA,cACA,iBACA,kBACA,wBACA,GAAG,MACD,KAAS,EAAE,EAET,IAAyC,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG,EAElE,KAAc,GAAa,MAAmC;EAC9D,MAAM,KAAA,MACN,OAAO,UAAU,eAAe,KAAK,GAAa,EAAI,KAC1D,EAAY,KAAO;;CAgDrB,AA5CA,EAAW,QAAQ,KAAQ,OAAO,EAElC,EAAW,QAAQ,EAAK,EACxB,EAAW,SAAS,EAAM,EAC1B,EAAW,eAAe,EAAY,EACtC,EAAW,OAAO,EAAI,EACtB,EAAW,OAAO,EAAI,EACtB,EAAW,QAAQ,EAAK,EACxB,EAAW,aAAa,OAAO,KAAc,WAAW,IAAY,KAAA,EAAU,EAC9E,EAAW,aAAa,OAAO,KAAc,WAAW,IAAY,KAAA,EAAU,EAC9E,EAAW,WAAW,EAAQ,EAC9B,EAAW,QAAQ,OAAO,KAAS,WAAW,IAAO,KAAA,EAAU,EAC/D,EAAW,gBAAgB,EAAa,EACxC,EAAW,QAAQ,EAAK,EACxB,EAAW,QAAQ,EAAK,EAExB,EAAW,cAAc,EAAW,EACpC,EAAW,eAAe,EAAY,EACtC,EAAW,cAAc,EAAW,EACpC,EAAW,cAAc,EAAW,EAEpC,EAAW,OAAO,EAAI,EACtB,EAAW,OAAO,EAAI,EACtB,EAAW,SAAS,OAAO,KAAU,WAAW,IAAQ,KAAA,EAAU,EAClE,EAAW,UAAU,OAAO,KAAW,WAAW,IAAS,KAAA,EAAU,EAErE,EAAW,UAAU,EAAO,EAC5B,EAAW,aAAa,EAAU,EAClC,EAAW,gBAAgB,EAAa,EAExC,EAAW,iBAAiB,EAAc,EAC1C,EAAW,uBAAuB,EAAoB,EAGlD,MAAa,MAAM,EAAW,YAAY,GAAG,EAC7C,MAAa,MAAM,EAAW,YAAY,GAAG,EAC7C,MAAa,MAAM,EAAW,YAAY,GAAG,EAC7C,MAAa,MAAM,EAAW,YAAY,GAAG,EAC7C,MAAY,MAAM,EAAW,WAAW,GAAG,EAC3C,MAAc,MAAM,EAAW,aAAa,GAAG,EAC/C,MAAmB,MAAM,EAAW,kBAAkB,GAAG,EAEzD,MAAY,MAAM,EAAW,WAAW,GAAG,EAC3C,MAAY,UAAQ,EAAW,WAAW,OAAO,EACjD,MAAY,iBAAe,EAAW,WAAW,cAAc;CAEnE,IAAM,IAAsB;EAAE,GAAG;EAAM,OAAO;EAAa,EAErD,IAA+C,EAAE;CAWvD,IAVI,MACE,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,UAG7D,OAAO,KAAK,EAAW,CAAC,SAAS,MACnC,EAAO,OAAO,IAGZ,OAAO,KAAK,EAAY,CAAC,WAAW,GAAG;EACzC,IAAM,EAAE,OAAO,GAAS,GAAG,MAAiB;EAC5C,OAAO;;CAGT,OAAO;;AA8BT,SAAgB,EAAY,GAAiD;CAC3E,OAAO,EAAkB,GAAW,EAAc,EAAM,CAAC;;AAa3D,SAAgB,EAAc,IAAmB,UAAgB"}
@@ -0,0 +1,29 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/label/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ LABEL_SELECTOR: () => i,
5
+ LABEL_TAG: () => r,
6
+ createLabel: () => o,
7
+ enhanceLabels: () => s
8
+ }), r = "label", i = "label";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, htmlFor: n, ...r } = e, i = { ...r };
12
+ if (typeof n == "string" && n.length > 0 && (i.attrs = {
13
+ ...i.attrs ?? {},
14
+ for: n
15
+ }), !t) return i;
16
+ let a = {};
17
+ return typeof t.label == "string" && (a.label = t.label), typeof t.labelledby == "string" && (a.labelledby = t.labelledby), typeof t.hidden == "boolean" && (a.hidden = t.hidden), Object.keys(a).length > 0 ? {
18
+ ...i,
19
+ aria: a
20
+ } : i;
21
+ }
22
+ function o(e, n) {
23
+ return t(r, a(n), e);
24
+ }
25
+ function s(e = document) {}
26
+ //#endregion
27
+ export { i as LABEL_SELECTOR, r as LABEL_TAG, o as createLabel, s as enhanceLabels, n as t };
28
+
29
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","names":[],"sources":["../../../../../src/elements/form/label/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Label element helpers.\n *\n * @remarks\n * The label element (`<label>`) represents a caption in a user interface and is\n * primarily used to provide an accessible name for a form control.\n *\n * Best-practice guidance:\n * - Always associate labels with their control:\n * - Prefer an explicit association using `for` (pkgn-sol: {@link LabelAttrs.htmlFor})\n * that matches the control's `id`.\n * - Alternatively, wrap the control inside the `<label>` element.\n * - Do not rely on placeholder text as a replacement for a visible label.\n * - Keep label text concise and descriptive.\n *\n * Attributes:\n * - `<label>` supports global attributes.\n * - The only relevant label-specific content attribute is `for`, reflected in\n * JavaScript as `htmlFor`. (The `label` element does not have a `form` content\n * attribute; it has a `form` *IDL attribute* derived from the associated control.)\n *\n * Security:\n * - Global attribute escape hatches are guarded by pkgn-sol's `dom.ts` helpers which\n * block inline event handler attributes (e.g. `onclick`) and raw `style`\n * attribute injection (use the `style` object field instead).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/label\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/for\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 label.\n *\n * @category Constants\n */\nexport const LABEL_TAG = 'label' as const;\n\n/**\n * A CSS selector targeting label elements.\n *\n * @category Constants\n */\nexport const LABEL_SELECTOR = 'label';\n\n/**\n * Attribute bag for label creation/enhancement.\n *\n * @remarks\n * Labels accept standard HTML global attributes.\n *\n * Label-specific:\n * - {@link LabelAttrs.htmlFor} maps to the `for` attribute, associating the label\n * with the control whose `id` matches.\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 LabelAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Associate the label with a labelable form control by ID.\n *\n * @remarks\n * This maps to the `for` content attribute.\n *\n * The value should match the `id` of a labelable element in the same document\n * tree (e.g. `<input id=\"email\">` pairs with `<label for=\"email\">`).\n */\n htmlFor?: string;\n};\n\n/**\n * Normalize {@link LabelAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The label attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: LabelAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, htmlFor, ...rest } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n if (typeof htmlFor === 'string' && htmlFor.length > 0) {\n mapped.attrs = {\n ...(mapped.attrs ?? {}),\n for: htmlFor,\n };\n }\n\n if (!aria) return mapped;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n // Only attach `aria` if something was actually defined.\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n return hasMappedAria ? { ...mapped, aria: mappedAria } : mapped;\n}\n\n/**\n * Create a label 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 label.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<label>` element.\n *\n * @example\n * ```ts\n * import { createLabel } from \"@lnpg/pkgn-sol/elements/form/label\";\n *\n * const label = createLabel(\"Email address\", { htmlFor: \"email\" });\n * ```\n *\n * @category DOM\n */\nexport function createLabel(text?: string, attrs?: LabelAttrs): ElementOf<typeof LABEL_TAG> {\n return createElement(LABEL_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance label 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 enhanceLabels(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for label.\n void root;\n}\n"],"mappings":";;;;;;;IAoEa,IAAY,SAOZ,IAAiB;AA2C9B,SAAS,EAAc,GAA6C;CAClE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,YAAS,GAAG,MAAS,GAE7B,IAAsB,EAAE,GAAG,GAAM;CASvC,IAPI,OAAO,KAAY,YAAY,EAAQ,SAAS,MAClD,EAAO,QAAQ;EACb,GAAI,EAAO,SAAS,EAAE;EACtB,KAAK;EACN,GAGC,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CASvD,OAPI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAGzC,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAQ,MAAM;EAAY,GAAG;;AAyB3D,SAAgB,EAAY,GAAe,GAAiD;CAC1F,OAAO,EAAc,GAAW,EAAc,EAAM,EAAE,EAAK;;AAqB7D,SAAgB,EAAc,IAAmB,UAAgB"}
@@ -0,0 +1,26 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/legend/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ LEGEND_SELECTOR: () => i,
5
+ LEGEND_TAG: () => r,
6
+ createLegend: () => o,
7
+ enhanceLegends: () => s
8
+ }), r = "legend", i = "legend";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, ...n } = e;
12
+ if (!t) return n;
13
+ let r = {};
14
+ return typeof t.label == "string" && (r.label = t.label), typeof t.labelledby == "string" && (r.labelledby = t.labelledby), typeof t.hidden == "boolean" && (r.hidden = t.hidden), Object.keys(r).length > 0 ? {
15
+ ...n,
16
+ aria: r
17
+ } : n;
18
+ }
19
+ function o(e, n) {
20
+ return t(r, a(n), e);
21
+ }
22
+ function s(e = document) {}
23
+ //#endregion
24
+ export { i as LEGEND_SELECTOR, r as LEGEND_TAG, o as createLegend, s as enhanceLegends, n as t };
25
+
26
+ //# sourceMappingURL=legend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend.js","names":[],"sources":["../../../../../src/elements/form/legend/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Legend element helpers.\n *\n * @remarks\n * The legend element (`<legend>`) represents a caption for the content of its\n * parent `<fieldset>`. It is commonly used to label groups of related form\n * controls (e.g. radio-button groups), improving clarity and accessibility.\n *\n * Best-practice guidance:\n * - Use `<legend>` as the first child of a `<fieldset>` to label the group.\n * - Keep legend text concise and meaningful (it is typically announced with\n * grouped controls by assistive technologies).\n * - Avoid using `<legend>` purely for layout; use CSS for styling/spacing.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create `<legend>` 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/legend\n * @see https://www.w3.org/WAI/tutorials/forms/grouping/\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 legend.\n *\n * @category Constants\n */\nexport const LEGEND_TAG = 'legend' as const;\n\n/**\n * A CSS selector targeting legend elements.\n *\n * @category Constants\n */\nexport const LEGEND_SELECTOR = 'legend';\n\n/**\n * Attribute bag for legend creation/enhancement.\n *\n * @remarks\n * Legend 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 LegendAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link LegendAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The legend attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: LegendAttrs): 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 legend 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 legend.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<legend>` element.\n *\n * @example\n * ```ts\n * import { createLegend } from \"@lnpg/pkgn-sol/elements/form/legend\";\n *\n * const legend = createLegend(\"Delivery address\");\n * ```\n *\n * @category DOM\n */\nexport function createLegend(text?: string, attrs?: LegendAttrs): ElementOf<typeof LEGEND_TAG> {\n return createElement(LEGEND_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance legend 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 enhanceLegends(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for legend.\n void root;\n}\n"],"mappings":";;;;;;;IAgEa,IAAa,UAOb,IAAkB;AA4B/B,SAAS,EAAc,GAA8C;CACnE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,GAAG,MAAS;CAE1B,IAAI,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CASvD,OAPI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAG7C,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAM,MAAM;EAAY,GAAG;;AAyBrD,SAAgB,EAAa,GAAe,GAAmD;CAC7F,OAAO,EAAc,GAAY,EAAc,EAAM,EAAE,EAAK;;AAqB9D,SAAgB,EAAe,IAAmB,UAAgB"}
@@ -0,0 +1,29 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/meter/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ METER_SELECTOR: () => i,
5
+ METER_TAG: () => r,
6
+ createMeter: () => o,
7
+ enhanceMeters: () => s
8
+ }), r = "meter", i = "meter";
9
+ function a(e) {
10
+ let { aria: t, value: n, min: r, max: i, low: a, high: o, optimum: s, form: c, ...l } = e ?? {}, u = { ...l.attrs ?? {} }, d = (e, t) => {
11
+ t !== void 0 && (Object.prototype.hasOwnProperty.call(u, e) || (u[e] = t));
12
+ };
13
+ d("min", typeof r == "number" ? r : 0), d("max", typeof i == "number" ? i : 1), d("value", typeof n == "number" ? n : 0), d("low", typeof a == "number" ? a : void 0), d("high", typeof o == "number" ? o : void 0), d("optimum", typeof s == "number" ? s : void 0), d("form", typeof c == "string" ? c : void 0);
14
+ let f = {};
15
+ t && (typeof t.label == "string" && (f.label = t.label), typeof t.labelledby == "string" && (f.labelledby = t.labelledby), typeof t.hidden == "boolean" && (f.hidden = t.hidden));
16
+ let p = {
17
+ ...l,
18
+ attrs: u
19
+ };
20
+ return Object.keys(f).length > 0 && (p.aria = f), p;
21
+ }
22
+ function o(e, n) {
23
+ return t(r, a(n), e);
24
+ }
25
+ function s(e = document) {}
26
+ //#endregion
27
+ export { i as METER_SELECTOR, r as METER_TAG, o as createMeter, s as enhanceMeters, n as t };
28
+
29
+ //# sourceMappingURL=meter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter.js","names":[],"sources":["../../../../../src/elements/form/meter/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Meter element helpers.\n *\n * @remarks\n * The meter element (`<meter>`) represents a scalar measurement within a known range,\n * or a fractional value.\n *\n * Best-practice guidance:\n * - Use `<meter>` for a known-range measurement (e.g. disk usage, score, relevance).\n * - Do NOT use `<meter>` for task progress. Use `<progress>` for progress indication.\n * - Provide fallback text content for user agents that don't render `<meter>`.\n * - Define `min`/`max` if your `value` is not in the default 0..1 range.\n * - Use `low`/`high`/`optimum` only when you actually want \"good/bad\" semantics.\n *\n * pkgn-sol notes:\n * - This module is framework-agnostic and has no side effects.\n * - Global attributes are applied via pkgn-sol's shared DOM helper, which blocks:\n * - inline event handler attributes (e.g. `onclick`)\n * - raw `style` attribute injection (use the `style` object instead)\n * - Text passed to factories is assigned via `textContent` (never `innerHTML`).\n *\n * References:\n * - MDN: `<meter>` element\n * - WHATWG HTML: meter attributes and behavior\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type AttrValue, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for meter.\n *\n * @category Constants\n */\nexport const METER_TAG = 'meter' as const;\n\n/**\n * A CSS selector targeting meter elements.\n *\n * @category Constants\n */\nexport const METER_SELECTOR = 'meter';\n\n/**\n * Attribute bag for meter creation/enhancement.\n *\n * @remarks\n * Supported element-specific attributes:\n * - `value`, `min`, `max`, `low`, `high`, `optimum`\n * - `form` (associates the meter with a form owner by ID)\n *\n * Defaults (documented platform behavior):\n * - `min` defaults to `0` when omitted\n * - `max` defaults to `1` when omitted\n * - `value` defaults to `0` when omitted or malformed\n *\n * pkgn-sol applies these defaults as explicit attributes to keep output predictable\n * and testable even in node-based DOM shims.\n *\n * @category Attributes\n */\nexport type MeterAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Current numeric value.\n *\n * @remarks\n * Should be within `[min, max]` when those are defined.\n */\n value?: number;\n\n /**\n * Lower numeric bound of the range. Defaults to `0`.\n */\n min?: number;\n\n /**\n * Upper numeric bound of the range. Defaults to `1`.\n */\n max?: number;\n\n /**\n * Upper numeric bound of the low end of the range.\n */\n low?: number;\n\n /**\n * Lower numeric bound of the high end of the range.\n */\n high?: number;\n\n /**\n * The optimal value within the range.\n */\n optimum?: number;\n\n /**\n * Associates the meter with a form element by ID.\n *\n * @remarks\n * Mirrors the HTML `form` attribute used by form-associated elements.\n */\n form?: string;\n\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n};\n\n/**\n * Normalize {@link MeterAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @remarks\n * - Preserves caller-provided `attrs` escape hatch (still validated by `dom.ts`).\n * - Element-specific attributes are merged into `attrs` without overwriting keys\n * explicitly provided by the caller.\n * - Applies predictable defaults for `min`, `max`, and `value` even if callers\n * omit the `attrs` bag entirely.\n *\n * @param attrs - The meter attributes.\n * @returns A {@link GlobalAttrs} object.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: MeterAttrs): GlobalAttrs {\n const a: MeterAttrs = attrs ?? {};\n\n const { aria, value, min, max, low, high, optimum, form, ...rest } = a;\n\n // Start with any caller-provided attrs escape hatch (it is still validated by dom.ts).\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n // Helper: only set if caller didn't already set the raw attribute explicitly.\n const setIfUnset = (key: string, 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 // Defaults: make output deterministic even when attrs is omitted.\n setIfUnset('min', typeof min === 'number' ? min : 0);\n setIfUnset('max', typeof max === 'number' ? max : 1);\n setIfUnset('value', typeof value === 'number' ? value : 0);\n\n // Optional meter semantics.\n setIfUnset('low', typeof low === 'number' ? low : undefined);\n setIfUnset('high', typeof high === 'number' ? high : undefined);\n setIfUnset('optimum', typeof optimum === 'number' ? optimum : undefined);\n\n // Form association.\n setIfUnset('form', typeof form === 'string' ? form : undefined);\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const next: GlobalAttrs = { ...rest, attrs: mergedAttrs };\n\n if (Object.keys(mappedAria).length > 0) {\n next.aria = mappedAria;\n }\n\n return next;\n}\n\n/**\n * Create a meter element with optional fallback text and attributes.\n *\n * @remarks\n * - Fallback text is assigned via `textContent` (never `innerHTML`).\n * - Global attributes are applied via pkgn-sol's shared DOM helper,\n * including security guards that block inline event handler attributes\n * (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional fallback text for user agents that don't render `<meter>`.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<meter>` element.\n *\n * @category DOM\n */\nexport function createMeter(text?: string, attrs?: MeterAttrs): ElementOf<typeof METER_TAG> {\n return createElement(METER_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance meter 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 enhanceMeters(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for meter.\n void root;\n}\n"],"mappings":";;;;;;;IAgEa,IAAY,SAOZ,IAAiB;AAmF9B,SAAS,EAAc,GAAiC;CAGtD,IAAM,EAAE,SAAM,UAAO,QAAK,QAAK,QAAK,SAAM,YAAS,SAAM,GAAG,MAFtC,KAAS,EAAE,EAK3B,IAAyC,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG,EAGlE,KAAc,GAAa,MAAmC;EAC9D,MAAM,KAAA,MACN,OAAO,UAAU,eAAe,KAAK,GAAa,EAAI,KAC1D,EAAY,KAAO;;CAcrB,AAVA,EAAW,OAAO,OAAO,KAAQ,WAAW,IAAM,EAAE,EACpD,EAAW,OAAO,OAAO,KAAQ,WAAW,IAAM,EAAE,EACpD,EAAW,SAAS,OAAO,KAAU,WAAW,IAAQ,EAAE,EAG1D,EAAW,OAAO,OAAO,KAAQ,WAAW,IAAM,KAAA,EAAU,EAC5D,EAAW,QAAQ,OAAO,KAAS,WAAW,IAAO,KAAA,EAAU,EAC/D,EAAW,WAAW,OAAO,KAAY,WAAW,IAAU,KAAA,EAAU,EAGxE,EAAW,QAAQ,OAAO,KAAS,WAAW,IAAO,KAAA,EAAU;CAE/D,IAAM,IAA+C,EAAE;CACvD,AAAI,MACE,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK;CAGjE,IAAM,IAAoB;EAAE,GAAG;EAAM,OAAO;EAAa;CAMzD,OAJI,OAAO,KAAK,EAAW,CAAC,SAAS,MACnC,EAAK,OAAO,IAGP;;AAkBT,SAAgB,EAAY,GAAe,GAAiD;CAC1F,OAAO,EAAc,GAAW,EAAc,EAAM,EAAE,EAAK;;AAa7D,SAAgB,EAAc,IAAmB,UAAgB"}
@@ -0,0 +1,24 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/optgroup/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ OPTGROUP_SELECTOR: () => i,
5
+ OPTGROUP_TAG: () => r,
6
+ createOptgroup: () => o,
7
+ enhanceOptgroups: () => s
8
+ }), r = "optgroup", i = "optgroup";
9
+ function a(e, t) {
10
+ let { aria: n, disabled: r, ...i } = t ?? {}, a = {};
11
+ n && (typeof n.label == "string" && (a.label = n.label), typeof n.labelledby == "string" && (a.labelledby = n.labelledby), typeof n.hidden == "boolean" && (a.hidden = n.hidden));
12
+ let o = { ...i.attrs ?? {} };
13
+ Object.prototype.hasOwnProperty.call(o, "label") || (o.label = e), r === !0 && !Object.prototype.hasOwnProperty.call(o, "disabled") && (o.disabled = "");
14
+ let s = { ...i };
15
+ return Object.keys(o).length > 0 && (s.attrs = o), Object.keys(a).length > 0 && (s.aria = a), s;
16
+ }
17
+ function o(e, n) {
18
+ return t(r, a(e, n));
19
+ }
20
+ function s(e = document) {}
21
+ //#endregion
22
+ export { i as OPTGROUP_SELECTOR, r as OPTGROUP_TAG, o as createOptgroup, s as enhanceOptgroups, n as t };
23
+
24
+ //# sourceMappingURL=optgroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optgroup.js","names":[],"sources":["../../../../../src/elements/form/optgroup/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Optgroup element helpers.\n *\n * @remarks\n * The optgroup element (`<optgroup>`) groups related `<option>` elements within\n * a `<select>`, allowing user agents to present grouped choices with a label.\n * :contentReference[oaicite:3]{index=3}\n *\n * Best-practice guidance:\n * - Always provide a meaningful `label`. MDN notes this attribute is mandatory\n * when the element is used. pkgn-sol enforces this by requiring `label` when\n * creating an optgroup. :contentReference[oaicite:4]{index=4}\n * - Use `disabled` to disable all options within the group when appropriate.\n * :contentReference[oaicite:5]{index=5}\n * - Prefer native semantics; avoid ARIA where native semantics already apply.\n *\n * pkgn-sol-specific conventions:\n * - Requires `label` at creation time to avoid invalid/anonymous optgroups.\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 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 option groups.\n *\n * @category Constants\n */\nexport const OPTGROUP_TAG = 'optgroup' as const;\n\n/**\n * A CSS selector targeting optgroup elements.\n *\n * @category Constants\n */\nexport const OPTGROUP_SELECTOR = 'optgroup';\n\n/**\n * Attribute bag for optgroup creation/enhancement.\n *\n * @remarks\n * `<optgroup>` accepts global attributes plus:\n * - `disabled` (boolean attribute)\n *\n * The `label` attribute is mandatory for meaningful use. pkgn-sol requires the label\n * as a separate argument in {@link createOptgroup}. :contentReference[oaicite:6]{index=6}\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 OptgroupAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Disables the option group when true.\n *\n * @remarks\n * When disabled, none of the options in the group are selectable. :contentReference[oaicite:7]{index=7}\n */\n disabled?: boolean;\n};\n\n/**\n * Normalize {@link OptgroupAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param label - The required optgroup label, mapped to the `label` attribute.\n * @param attrs - The optgroup attributes.\n * @returns A {@link GlobalAttrs} object containing mapped attributes.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(label: string, attrs?: OptgroupAttrs): GlobalAttrs {\n const { aria, disabled, ...rest } = attrs ?? {};\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const mergedAttrs: NonNullable<GlobalAttrs['attrs']> = { ...(rest.attrs ?? {}) };\n\n // Always set the mandatory label attribute unless explicitly overridden via raw attrs.\n if (!Object.prototype.hasOwnProperty.call(mergedAttrs, 'label')) {\n mergedAttrs.label = label;\n }\n\n // Boolean attribute by presence when true.\n if (disabled === true && !Object.prototype.hasOwnProperty.call(mergedAttrs, 'disabled')) {\n mergedAttrs.disabled = '';\n }\n\n const mapped: GlobalAttrs = { ...rest };\n\n if (Object.keys(mergedAttrs).length > 0) mapped.attrs = mergedAttrs;\n\n if (Object.keys(mappedAria).length > 0) {\n mapped.aria = mappedAria;\n }\n\n return mapped;\n}\n\n/**\n * Create an optgroup element with a required label and optional attributes.\n *\n * @remarks\n * - The label is mapped to the `label` attribute (required for meaningful use). :contentReference[oaicite:8]{index=8}\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 label - The optgroup label shown by the user agent.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<optgroup>` element.\n *\n * @example\n * ```ts\n * import { createOptgroup } from \"@lnpg/pkgn-sol/elements/form/optgroup\";\n *\n * const g = createOptgroup(\"Fruits\", { disabled: false });\n * ```\n *\n * @category DOM\n */\nexport function createOptgroup(\n label: string,\n attrs?: OptgroupAttrs,\n): ElementOf<typeof OPTGROUP_TAG> {\n return createElement(OPTGROUP_TAG, toGlobalAttrs(label, attrs));\n}\n\n/**\n * Enhance optgroup 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 enhanceOptgroups(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for optgroup.\n void root;\n}\n"],"mappings":";;;;;;;IA8Da,IAAe,YAOf,IAAoB;AAyCjC,SAAS,EAAc,GAAe,GAAoC;CACxE,IAAM,EAAE,SAAM,aAAU,GAAG,MAAS,KAAS,EAAE,EAEzC,IAA+C,EAAE;CAEvD,AAAI,MACE,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK;CAGjE,IAAM,IAAiD,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG;CAQhF,AALK,OAAO,UAAU,eAAe,KAAK,GAAa,QAAQ,KAC7D,EAAY,QAAQ,IAIlB,MAAa,MAAQ,CAAC,OAAO,UAAU,eAAe,KAAK,GAAa,WAAW,KACrF,EAAY,WAAW;CAGzB,IAAM,IAAsB,EAAE,GAAG,GAAM;CAQvC,OANI,OAAO,KAAK,EAAY,CAAC,SAAS,MAAG,EAAO,QAAQ,IAEpD,OAAO,KAAK,EAAW,CAAC,SAAS,MACnC,EAAO,OAAO,IAGT;;AAyBT,SAAgB,EACd,GACA,GACgC;CAChC,OAAO,EAAc,GAAc,EAAc,GAAO,EAAM,CAAC;;AAajE,SAAgB,EAAiB,IAAmB,UAAgB"}
@@ -0,0 +1,26 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/option/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ OPTION_SELECTOR: () => i,
5
+ OPTION_TAG: () => r,
6
+ createOption: () => o,
7
+ enhanceOptions: () => s
8
+ }), r = "option", i = "option";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, value: n, label: r, disabled: i, selected: a, ...o } = e, s = { ...o }, c = { ...s.attrs ?? {} };
12
+ if (typeof n == "string" && (c.value = n), typeof r == "string" && (c.label = r), i === !0 && (c.disabled = !0), a === !0 && (c.selected = !0), Object.keys(c).length > 0 && (s.attrs = c), !t) return s;
13
+ let l = {};
14
+ return typeof t.label == "string" && (l.label = t.label), typeof t.labelledby == "string" && (l.labelledby = t.labelledby), typeof t.hidden == "boolean" && (l.hidden = t.hidden), Object.keys(l).length > 0 ? {
15
+ ...s,
16
+ aria: l
17
+ } : s;
18
+ }
19
+ function o(e, n) {
20
+ return t(r, a(n), e);
21
+ }
22
+ function s(e = document) {}
23
+ //#endregion
24
+ export { i as OPTION_SELECTOR, r as OPTION_TAG, o as createOption, s as enhanceOptions, n as t };
25
+
26
+ //# sourceMappingURL=option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option.js","names":[],"sources":["../../../../../src/elements/form/option/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Option element helpers.\n *\n * @remarks\n * The option element (`<option>`) defines an item within a `<select>`, `<optgroup>`,\n * or `<datalist>` element.\n *\n * Best-practice guidance:\n * - Prefer providing a `value` for form submission semantics. If `value` is omitted,\n * the option's value typically falls back to its text content.\n * - Use `label` when you need a shorter label for UI display or accessibility hints,\n * but keep the option text clear and readable.\n * - Use `disabled` to prevent selection of an option (or to mark placeholders as\n * unavailable).\n * - Use `selected` to mark the default selection in a `<select>` (usually one\n * option should be selected by default).\n *\n * Attributes:\n * - `value` (string): the value submitted/used when selected.\n * - `label` (string): a label for the option.\n * - `disabled` (boolean): whether the option is unavailable.\n * - `selected` (boolean): whether the option is selected by default.\n *\n * Security:\n * - Global attribute escape hatches are guarded by pkgn-sol's `dom.ts` helpers which\n * block inline event handler attributes (e.g. `onclick`) and raw `style`\n * attribute injection (use the `style` object field instead).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/option\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 option.\n *\n * @category Constants\n */\nexport const OPTION_TAG = 'option' as const;\n\n/**\n * A CSS selector targeting option elements.\n *\n * @category Constants\n */\nexport const OPTION_SELECTOR = 'option';\n\n/**\n * Attribute bag for option creation/enhancement.\n *\n * @remarks\n * Options accept standard HTML global attributes plus a small set of option-specific\n * content attributes.\n *\n * pkgn-sol also supports a structured ARIA input for common ARIA fields, which is\n * mapped into {@link GlobalAttrs.aria} without changing pkgn-sol's core DOM helpers.\n *\n * @category Attributes\n */\nexport type OptionAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * The option value.\n *\n * @remarks\n * If omitted, user agents commonly derive a value from the option's text.\n */\n value?: string;\n\n /**\n * A label for the option.\n *\n * @remarks\n * When present, this may be used by user agents as the option's label instead\n * of the text content in certain contexts.\n */\n label?: string;\n\n /**\n * Whether the option is disabled.\n */\n disabled?: boolean;\n\n /**\n * Whether the option is selected by default.\n *\n * @remarks\n * For `<select>`, `selected` commonly indicates the default selected option on\n * initial load. If multiple options are marked selected, browser behavior varies;\n * prefer a single default selection unless using a multi-select.\n */\n selected?: boolean;\n};\n\n/**\n * Normalize {@link OptionAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The option attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: OptionAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, value, label, disabled, selected, ...rest } = attrs;\n\n const mapped: GlobalAttrs = { ...rest };\n\n const extra: NonNullable<GlobalAttrs['attrs']> = { ...(mapped.attrs ?? {}) };\n\n if (typeof value === 'string') extra.value = value;\n if (typeof label === 'string') extra.label = label;\n\n if (disabled === true) extra.disabled = true;\n if (selected === true) extra.selected = true;\n\n // Only attach `attrs` if something was actually defined/added.\n if (Object.keys(extra).length > 0) {\n mapped.attrs = extra;\n }\n\n if (!aria) return mapped;\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n return hasMappedAria ? { ...mapped, aria: mappedAria } : mapped;\n}\n\n/**\n * Create an option element with optional text content and attributes.\n *\n * @remarks\n * - Text content is assigned via `textContent` (never `innerHTML`).\n * - Global attributes and escape-hatch attributes are applied via pkgn-sol's shared\n * DOM helper, including security guards that block inline event handler\n * attributes (e.g. `onclick`) and raw `style` attribute strings.\n *\n * @param text - Optional text content for the option.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<option>` element.\n *\n * @example\n * ```ts\n * import { createOption } from \"@lnpg/pkgn-sol/elements/form/option\";\n *\n * const opt = createOption(\"United Kingdom\", { value: \"UK\" });\n * ```\n *\n * @category DOM\n */\nexport function createOption(text?: string, attrs?: OptionAttrs): ElementOf<typeof OPTION_TAG> {\n return createElement(OPTION_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance option 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 enhanceOptions(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for option.\n void root;\n}\n"],"mappings":";;;;;;;IAqEa,IAAa,UAOb,IAAkB;AA6D/B,SAAS,EAAc,GAA8C;CACnE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,UAAO,UAAO,aAAU,aAAU,GAAG,MAAS,GAEtD,IAAsB,EAAE,GAAG,GAAM,EAEjC,IAA2C,EAAE,GAAI,EAAO,SAAS,EAAE,EAAG;CAa5E,IAXI,OAAO,KAAU,aAAU,EAAM,QAAQ,IACzC,OAAO,KAAU,aAAU,EAAM,QAAQ,IAEzC,MAAa,OAAM,EAAM,WAAW,KACpC,MAAa,OAAM,EAAM,WAAW,KAGpC,OAAO,KAAK,EAAM,CAAC,SAAS,MAC9B,EAAO,QAAQ,IAGb,CAAC,GAAM,OAAO;CAElB,IAAM,IAA+C,EAAE;CAQvD,OANI,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK,SAEzC,OAAO,KAAK,EAAW,CAAC,SAAS,IAEhC;EAAE,GAAG;EAAQ,MAAM;EAAY,GAAG;;AAyB3D,SAAgB,EAAa,GAAe,GAAmD;CAC7F,OAAO,EAAc,GAAY,EAAc,EAAM,EAAE,EAAK;;AAqB9D,SAAgB,EAAe,IAAmB,UAAgB"}
@@ -0,0 +1,27 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/output/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ OUTPUT_SELECTOR: () => i,
5
+ OUTPUT_TAG: () => r,
6
+ createOutput: () => o,
7
+ enhanceOutputs: () => s
8
+ }), r = "output", i = "output";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, for: n, form: r, name: i, ...a } = e, o = { ...a.attrs ?? {} }, s = (e, t) => {
12
+ t !== void 0 && (Object.prototype.hasOwnProperty.call(o, e) || (o[e] = t));
13
+ };
14
+ s("for", n), s("form", r), s("name", i);
15
+ let c = {};
16
+ t && (typeof t.label == "string" && (c.label = t.label), typeof t.labelledby == "string" && (c.labelledby = t.labelledby), typeof t.hidden == "boolean" && (c.hidden = t.hidden));
17
+ let l = Object.keys(o).length > 0, u = Object.keys(c).length > 0, d = { ...a };
18
+ return l && (d.attrs = o), u && (d.aria = c), d;
19
+ }
20
+ function o(e, n) {
21
+ return t(r, a(n), e);
22
+ }
23
+ function s(e = document) {}
24
+ //#endregion
25
+ export { i as OUTPUT_SELECTOR, r as OUTPUT_TAG, o as createOutput, s as enhanceOutputs, n as t };
26
+
27
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","names":[],"sources":["../../../../../src/elements/form/output/index.ts"],"sourcesContent":["/**\n * pkgn-sol Design Foundation: Output element helpers.\n *\n * @remarks\n * The output element (`<output>`) represents the result of a calculation or a\n * user action, commonly used in forms to display derived values without\n * requiring focus changes.\n *\n * Best-practice guidance:\n * - Use `<output>` for computed results derived from form controls.\n * - Use the `for` attribute to associate the output with the control(s) whose\n * values it reflects (space-separated list of element IDs).\n * - Prefer semantic HTML and native behavior over ARIA. Many browsers treat\n * `<output>` as an ARIA live region, so updating its text may be announced by\n * assistive technologies without moving focus.\n *\n * This module provides small, framework-agnostic helpers so consumers can:\n * - create outputs 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/output\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/for\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/form\n *\n * @module\n * @category Elements\n */\n\nimport { createElement, type AttrValue, type ElementOf, type GlobalAttrs } from '../../../ts/dom';\n\n/**\n * Structured ARIA input supported by pkgn-sol element factories.\n *\n * @remarks\n * This is intentionally a small, typed subset that covers common cases and\n * prevents typo-based ARIA bugs.\n *\n * It is mapped into {@link GlobalAttrs.aria} for application by `dom.ts`.\n *\n * @category Attributes\n */\nexport type StructuredAria = {\n /**\n * Accessible label, mapped to `aria-label`.\n */\n label?: string;\n\n /**\n * ID reference to the labelling element(s), mapped to `aria-labelledby`.\n */\n labelledby?: string;\n\n /**\n * Decorative/hidden hint, mapped to `aria-hidden`.\n */\n hidden?: boolean;\n};\n\n/**\n * The semantic tag name for output.\n *\n * @category Constants\n */\nexport const OUTPUT_TAG = 'output' as const;\n\n/**\n * A CSS selector targeting output elements.\n *\n * @category Constants\n */\nexport const OUTPUT_SELECTOR = 'output';\n\n/**\n * Attribute bag for output creation/enhancement.\n *\n * @remarks\n * Output accepts standard HTML global attributes plus output-specific\n * attributes (`for`, `form`, `name`).\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 OutputAttrs = Omit<GlobalAttrs, 'aria'> & {\n /**\n * Structured ARIA fields mapped into `aria-*` attributes.\n */\n aria?: StructuredAria;\n\n /**\n * Space-separated list of element IDs whose values contributed to the output.\n *\n * @remarks\n * This maps to the `for` attribute (yes, the HTML attribute is literally\n * called `for`).\n */\n for?: string;\n\n /**\n * Associates the output with a form element by ID, even if not a descendant.\n */\n form?: string;\n\n /**\n * Name of the output (useful in form-associated contexts).\n */\n name?: string;\n};\n\n/**\n * Normalize {@link OutputAttrs} into {@link GlobalAttrs} for `dom.ts`.\n *\n * @param attrs - The output attributes.\n * @returns A {@link GlobalAttrs} object, or `undefined` if no attrs were provided.\n *\n * @category Internal\n */\nfunction toGlobalAttrs(attrs?: OutputAttrs): GlobalAttrs | undefined {\n if (!attrs) return undefined;\n\n const { aria, for: htmlFor, form, name, ...rest } = attrs;\n\n // Start with any caller-provided attrs escape hatch (still validated by dom.ts).\n const mergedAttrs: Record<string, AttrValue> = { ...(rest.attrs ?? {}) };\n\n const setIfUnset = (key: string, value: AttrValue | undefined): void => {\n if (value === undefined) return;\n if (Object.prototype.hasOwnProperty.call(mergedAttrs, key)) return;\n mergedAttrs[key] = value;\n };\n\n setIfUnset('for', htmlFor);\n setIfUnset('form', form);\n setIfUnset('name', name);\n\n const mappedAria: NonNullable<GlobalAttrs['aria']> = {};\n if (aria) {\n if (typeof aria.label === 'string') mappedAria.label = aria.label;\n if (typeof aria.labelledby === 'string') mappedAria.labelledby = aria.labelledby;\n if (typeof aria.hidden === 'boolean') mappedAria.hidden = aria.hidden;\n }\n\n const hasMergedAttrs = Object.keys(mergedAttrs).length > 0;\n const hasMappedAria = Object.keys(mappedAria).length > 0;\n\n const next: GlobalAttrs = { ...rest };\n if (hasMergedAttrs) next.attrs = mergedAttrs;\n if (hasMappedAria) next.aria = mappedAria;\n\n return next;\n}\n\n/**\n * Create an output 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 output.\n * @param attrs - Optional attributes to apply.\n * @returns The created `<output>` element.\n *\n * @example\n * ```ts\n * import { createOutput } from \"@lnpg/pkgn-sol/elements/form/output\";\n *\n * const out = createOutput(\"0\", { name: \"result\", for: \"a b\" });\n * ```\n *\n * @category DOM\n */\nexport function createOutput(text?: string, attrs?: OutputAttrs): ElementOf<typeof OUTPUT_TAG> {\n return createElement(OUTPUT_TAG, toGlobalAttrs(attrs), text);\n}\n\n/**\n * Enhance output 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 enhanceOutputs(root: ParentNode = document): void {\n // v0.1.0: no runtime behavior for output.\n void root;\n}\n"],"mappings":";;;;;;;IAmEa,IAAa,UAOb,IAAkB;AAgD/B,SAAS,EAAc,GAA8C;CACnE,IAAI,CAAC,GAAO;CAEZ,IAAM,EAAE,SAAM,KAAK,GAAS,SAAM,SAAM,GAAG,MAAS,GAG9C,IAAyC,EAAE,GAAI,EAAK,SAAS,EAAE,EAAG,EAElE,KAAc,GAAa,MAAuC;EAClE,MAAU,KAAA,MACV,OAAO,UAAU,eAAe,KAAK,GAAa,EAAI,KAC1D,EAAY,KAAO;;CAKrB,AAFA,EAAW,OAAO,EAAQ,EAC1B,EAAW,QAAQ,EAAK,EACxB,EAAW,QAAQ,EAAK;CAExB,IAAM,IAA+C,EAAE;CACvD,AAAI,MACE,OAAO,EAAK,SAAU,aAAU,EAAW,QAAQ,EAAK,QACxD,OAAO,EAAK,cAAe,aAAU,EAAW,aAAa,EAAK,aAClE,OAAO,EAAK,UAAW,cAAW,EAAW,SAAS,EAAK;CAGjE,IAAM,IAAiB,OAAO,KAAK,EAAY,CAAC,SAAS,GACnD,IAAgB,OAAO,KAAK,EAAW,CAAC,SAAS,GAEjD,IAAoB,EAAE,GAAG,GAAM;CAIrC,OAHI,MAAgB,EAAK,QAAQ,IAC7B,MAAe,EAAK,OAAO,IAExB;;AAyBT,SAAgB,EAAa,GAAe,GAAmD;CAC7F,OAAO,EAAc,GAAY,EAAc,EAAM,EAAE,EAAK;;AAqB9D,SAAgB,EAAe,IAAmB,UAAgB"}
@@ -0,0 +1,27 @@
1
+ import { i as e, n as t } from "../../../chunks/dom.js";
2
+ //#region src/elements/form/progress/index.ts
3
+ var n = /* @__PURE__ */ e({
4
+ PROGRESS_SELECTOR: () => i,
5
+ PROGRESS_TAG: () => r,
6
+ createProgress: () => o,
7
+ enhanceProgresses: () => s
8
+ }), r = "progress", i = "progress";
9
+ function a(e) {
10
+ if (!e) return;
11
+ let { aria: t, value: n, max: r, ...i } = e, a = { ...i.attrs ?? {} }, o = (e, t) => {
12
+ t !== void 0 && (Object.prototype.hasOwnProperty.call(a, e) || (a[e] = t));
13
+ }, s = typeof n == "number";
14
+ s && o("value", n), s ? o("max", typeof r == "number" ? r : 1) : o("max", typeof r == "number" ? r : void 0);
15
+ let c = {};
16
+ t && (typeof t.label == "string" && (c.label = t.label), typeof t.labelledby == "string" && (c.labelledby = t.labelledby), typeof t.hidden == "boolean" && (c.hidden = t.hidden));
17
+ let l = Object.keys(a).length > 0, u = Object.keys(c).length > 0, d = { ...i };
18
+ return l && (d.attrs = a), u && (d.aria = c), d;
19
+ }
20
+ function o(e, n) {
21
+ return t(r, a(n), e);
22
+ }
23
+ function s(e = document) {}
24
+ //#endregion
25
+ export { i as PROGRESS_SELECTOR, r as PROGRESS_TAG, o as createProgress, s as enhanceProgresses, n as t };
26
+
27
+ //# sourceMappingURL=progress.js.map