@typesafe-html5/typescript 0.2.61 → 0.2.72

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 (405) hide show
  1. package/build-all.mjs +54 -0
  2. package/dist/block/article/article.js +465 -0
  3. package/dist/block/article/article.js.map +7 -0
  4. package/dist/block/aside/aside.js +476 -0
  5. package/dist/block/aside/aside.js.map +7 -0
  6. package/dist/block/audio/audio.js +454 -0
  7. package/dist/block/audio/audio.js.map +7 -0
  8. package/dist/block/blockquote/blockquote.js +476 -0
  9. package/dist/block/blockquote/blockquote.js.map +7 -0
  10. package/dist/block/body/body.js +378 -0
  11. package/dist/block/body/body.js.map +7 -0
  12. package/dist/block/canvas/canvas.js +487 -0
  13. package/dist/block/canvas/canvas.js.map +7 -0
  14. package/dist/block/caption/caption.js +465 -0
  15. package/dist/block/caption/caption.js.map +7 -0
  16. package/dist/block/colgroup/colgroup.js +190 -0
  17. package/dist/block/colgroup/colgroup.js.map +7 -0
  18. package/dist/block/datalist/datalist.js +465 -0
  19. package/dist/block/datalist/datalist.js.map +7 -0
  20. package/dist/block/dd/dd.js +422 -0
  21. package/dist/block/dd/dd.js.map +7 -0
  22. package/dist/block/del/del.js +487 -0
  23. package/dist/block/del/del.js.map +7 -0
  24. package/dist/block/details/details.js +520 -0
  25. package/dist/block/details/details.js.map +7 -0
  26. package/dist/block/dialog/dialog.js +520 -0
  27. package/dist/block/dialog/dialog.js.map +7 -0
  28. package/dist/block/div/div.js +520 -0
  29. package/dist/block/div/div.js.map +7 -0
  30. package/dist/block/dl/dl.js +465 -0
  31. package/dist/block/dl/dl.js.map +7 -0
  32. package/dist/block/dt/dt.js +422 -0
  33. package/dist/block/dt/dt.js.map +7 -0
  34. package/dist/block/embed/embed.js +333 -0
  35. package/dist/block/embed/embed.js.map +7 -0
  36. package/dist/block/fieldset/fieldset.js +509 -0
  37. package/dist/block/fieldset/fieldset.js.map +7 -0
  38. package/dist/block/figcaption/figcaption.js +465 -0
  39. package/dist/block/figcaption/figcaption.js.map +7 -0
  40. package/dist/block/figure/figure.js +465 -0
  41. package/dist/block/figure/figure.js.map +7 -0
  42. package/dist/block/footer/footer.js +476 -0
  43. package/dist/block/footer/footer.js.map +7 -0
  44. package/dist/block/form/form.js +443 -0
  45. package/dist/block/form/form.js.map +7 -0
  46. package/dist/block/h1/h1.js +454 -0
  47. package/dist/block/h1/h1.js.map +7 -0
  48. package/dist/block/h2/h2.js +454 -0
  49. package/dist/block/h2/h2.js.map +7 -0
  50. package/dist/block/h3/h3.js +454 -0
  51. package/dist/block/h3/h3.js.map +7 -0
  52. package/dist/block/h4/h4.js +454 -0
  53. package/dist/block/h4/h4.js.map +7 -0
  54. package/dist/block/h5/h5.js +454 -0
  55. package/dist/block/h5/h5.js.map +7 -0
  56. package/dist/block/h6/h6.js +454 -0
  57. package/dist/block/h6/h6.js.map +7 -0
  58. package/dist/block/header/header.js +322 -0
  59. package/dist/block/header/header.js.map +7 -0
  60. package/dist/block/hgroup/hgroup.js +465 -0
  61. package/dist/block/hgroup/hgroup.js.map +7 -0
  62. package/dist/block/hr/hr.js +169 -0
  63. package/dist/block/hr/hr.js.map +7 -0
  64. package/dist/block/html/html.js +92 -0
  65. package/dist/block/html/html.js.map +7 -0
  66. package/dist/block/iframe/iframe.js +465 -0
  67. package/dist/block/iframe/iframe.js.map +7 -0
  68. package/dist/block/ins/ins.js +487 -0
  69. package/dist/block/ins/ins.js.map +7 -0
  70. package/dist/block/legend/legend.js +465 -0
  71. package/dist/block/legend/legend.js.map +7 -0
  72. package/dist/block/li/li.js +488 -0
  73. package/dist/block/li/li.js.map +7 -0
  74. package/dist/block/main/main.js +444 -0
  75. package/dist/block/main/main.js.map +7 -0
  76. package/dist/block/map/map.js +476 -0
  77. package/dist/block/map/map.js.map +7 -0
  78. package/dist/block/menu/menu.js +498 -0
  79. package/dist/block/menu/menu.js.map +7 -0
  80. package/dist/block/nav/nav.js +455 -0
  81. package/dist/block/nav/nav.js.map +7 -0
  82. package/dist/block/noscript/noscript.js +311 -0
  83. package/dist/block/noscript/noscript.js.map +7 -0
  84. package/dist/block/object/object.js +542 -0
  85. package/dist/block/object/object.js.map +7 -0
  86. package/dist/block/ol/ol.js +542 -0
  87. package/dist/block/ol/ol.js.map +7 -0
  88. package/dist/block/optgroup/optgroup.js +476 -0
  89. package/dist/block/optgroup/optgroup.js.map +7 -0
  90. package/dist/block/option/option.js +542 -0
  91. package/dist/block/option/option.js.map +7 -0
  92. package/dist/block/p/p.js +465 -0
  93. package/dist/block/p/p.js.map +7 -0
  94. package/dist/block/picture/picture.js +465 -0
  95. package/dist/block/picture/picture.js.map +7 -0
  96. package/dist/block/pre/pre.js +465 -0
  97. package/dist/block/pre/pre.js.map +7 -0
  98. package/dist/block/section/section.js +487 -0
  99. package/dist/block/section/section.js.map +7 -0
  100. package/dist/block/summary/summary.js +466 -0
  101. package/dist/block/summary/summary.js.map +7 -0
  102. package/dist/block/table/table.js +509 -0
  103. package/dist/block/table/table.js.map +7 -0
  104. package/dist/block/tbody/tbody.js +465 -0
  105. package/dist/block/tbody/tbody.js.map +7 -0
  106. package/dist/block/td/td.js +575 -0
  107. package/dist/block/td/td.js.map +7 -0
  108. package/dist/block/template/template.js +465 -0
  109. package/dist/block/template/template.js.map +7 -0
  110. package/dist/block/tfoot/tfoot.js +465 -0
  111. package/dist/block/tfoot/tfoot.js.map +7 -0
  112. package/dist/block/th/th.js +586 -0
  113. package/dist/block/th/th.js.map +7 -0
  114. package/dist/block/thead/thead.js +465 -0
  115. package/dist/block/thead/thead.js.map +7 -0
  116. package/dist/block/tr/tr.js +586 -0
  117. package/dist/block/tr/tr.js.map +7 -0
  118. package/dist/block/ul/ul.js +509 -0
  119. package/dist/block/ul/ul.js.map +7 -0
  120. package/dist/block/video/video.js +575 -0
  121. package/dist/block/video/video.js.map +7 -0
  122. package/dist/index.js +48830 -0
  123. package/dist/index.js.map +7 -0
  124. package/dist/inline/a/a.js +586 -0
  125. package/dist/inline/a/a.js.map +7 -0
  126. package/dist/inline/abbr/abbr.js +454 -0
  127. package/dist/inline/abbr/abbr.js.map +7 -0
  128. package/dist/inline/address/address.js +443 -0
  129. package/dist/inline/address/address.js.map +7 -0
  130. package/dist/inline/b/b.js +465 -0
  131. package/dist/inline/b/b.js.map +7 -0
  132. package/dist/inline/bdi/bdi.js +454 -0
  133. package/dist/inline/bdi/bdi.js.map +7 -0
  134. package/dist/inline/bdo/bdo.js +465 -0
  135. package/dist/inline/bdo/bdo.js.map +7 -0
  136. package/dist/inline/button/button.js +685 -0
  137. package/dist/inline/button/button.js.map +7 -0
  138. package/dist/inline/cite/cite.js +465 -0
  139. package/dist/inline/cite/cite.js.map +7 -0
  140. package/dist/inline/code/code.js +465 -0
  141. package/dist/inline/code/code.js.map +7 -0
  142. package/dist/inline/data/data.js +476 -0
  143. package/dist/inline/data/data.js.map +7 -0
  144. package/dist/inline/dfn/dfn.js +465 -0
  145. package/dist/inline/dfn/dfn.js.map +7 -0
  146. package/dist/inline/em/em.js +465 -0
  147. package/dist/inline/em/em.js.map +7 -0
  148. package/dist/inline/i/i.js +465 -0
  149. package/dist/inline/i/i.js.map +7 -0
  150. package/dist/inline/img/img.js +399 -0
  151. package/dist/inline/img/img.js.map +7 -0
  152. package/dist/inline/input/input.js +938 -0
  153. package/dist/inline/input/input.js.map +7 -0
  154. package/dist/inline/kbd/kbd.js +465 -0
  155. package/dist/inline/kbd/kbd.js.map +7 -0
  156. package/dist/inline/label/label.js +487 -0
  157. package/dist/inline/label/label.js.map +7 -0
  158. package/dist/inline/mark/mark.js +465 -0
  159. package/dist/inline/mark/mark.js.map +7 -0
  160. package/dist/inline/meter/meter.js +498 -0
  161. package/dist/inline/meter/meter.js.map +7 -0
  162. package/dist/inline/output/output.js +410 -0
  163. package/dist/inline/output/output.js.map +7 -0
  164. package/dist/inline/progress/progress.js +454 -0
  165. package/dist/inline/progress/progress.js.map +7 -0
  166. package/dist/inline/q/q.js +476 -0
  167. package/dist/inline/q/q.js.map +7 -0
  168. package/dist/inline/rp/rp.js +465 -0
  169. package/dist/inline/rp/rp.js.map +7 -0
  170. package/dist/inline/rt/rt.js +465 -0
  171. package/dist/inline/rt/rt.js.map +7 -0
  172. package/dist/inline/ruby/ruby.js +465 -0
  173. package/dist/inline/ruby/ruby.js.map +7 -0
  174. package/dist/inline/s/s.js +465 -0
  175. package/dist/inline/s/s.js.map +7 -0
  176. package/dist/inline/samp/samp.js +465 -0
  177. package/dist/inline/samp/samp.js.map +7 -0
  178. package/dist/inline/select/select.js +674 -0
  179. package/dist/inline/select/select.js.map +7 -0
  180. package/dist/inline/slot/slot.js +476 -0
  181. package/dist/inline/slot/slot.js.map +7 -0
  182. package/dist/inline/small/small.js +465 -0
  183. package/dist/inline/small/small.js.map +7 -0
  184. package/dist/inline/span/span.js +465 -0
  185. package/dist/inline/span/span.js.map +7 -0
  186. package/dist/inline/strong/strong.js +465 -0
  187. package/dist/inline/strong/strong.js.map +7 -0
  188. package/dist/inline/sub/sub.js +465 -0
  189. package/dist/inline/sub/sub.js.map +7 -0
  190. package/dist/inline/sup/sup.js +465 -0
  191. package/dist/inline/sup/sup.js.map +7 -0
  192. package/dist/inline/svg/svg.js +542 -0
  193. package/dist/inline/svg/svg.js.map +7 -0
  194. package/dist/inline/textarea/textarea.js +718 -0
  195. package/dist/inline/textarea/textarea.js.map +7 -0
  196. package/dist/inline/time/time.js +476 -0
  197. package/dist/inline/time/time.js.map +7 -0
  198. package/dist/inline/u/u.js +465 -0
  199. package/dist/inline/u/u.js.map +7 -0
  200. package/dist/inline/var/var.js +465 -0
  201. package/dist/inline/var/var.js.map +7 -0
  202. package/dist/void/area/area.js +388 -0
  203. package/dist/void/area/area.js.map +7 -0
  204. package/dist/void/base/base.js +37 -0
  205. package/dist/void/base/base.js.map +7 -0
  206. package/dist/void/br/br.js +135 -0
  207. package/dist/void/br/br.js.map +7 -0
  208. package/dist/void/col/col.js +135 -0
  209. package/dist/void/col/col.js.map +7 -0
  210. package/dist/void/head/head.js +37 -0
  211. package/dist/void/head/head.js.map +7 -0
  212. package/dist/void/link/link.js +213 -0
  213. package/dist/void/link/link.js.map +7 -0
  214. package/dist/void/meta/meta.js +147 -0
  215. package/dist/void/meta/meta.js.map +7 -0
  216. package/dist/void/param/param.js +146 -0
  217. package/dist/void/param/param.js.map +7 -0
  218. package/dist/void/script/script.js +213 -0
  219. package/dist/void/script/script.js.map +7 -0
  220. package/dist/void/source/source.js +168 -0
  221. package/dist/void/source/source.js.map +7 -0
  222. package/dist/void/style/style.js +147 -0
  223. package/dist/void/style/style.js.map +7 -0
  224. package/dist/void/title/title.js +37 -0
  225. package/dist/void/title/title.js.map +7 -0
  226. package/dist/void/track/track.js +190 -0
  227. package/dist/void/track/track.js.map +7 -0
  228. package/dist/void/wbr/wbr.js +124 -0
  229. package/dist/void/wbr/wbr.js.map +7 -0
  230. package/package.json +4 -4
  231. package/src/block/article/article.ts +649 -0
  232. package/{block → src/block}/aside/aside.ts +144 -1
  233. package/{block → src/block}/audio/audio.ts +128 -1
  234. package/src/block/blockquote/blockquote.ts +665 -0
  235. package/{block → src/block}/body/body.ts +91 -1
  236. package/{block → src/block}/canvas/canvas.ts +144 -1
  237. package/src/block/caption/caption.ts +649 -0
  238. package/{block → src/block}/colgroup/colgroup.ts +96 -1
  239. package/src/block/datalist/datalist.ts +649 -0
  240. package/{block/dialog/dialog.ts → src/block/dd/dd.ts} +114 -88
  241. package/{block → src/block}/del/del.ts +144 -1
  242. package/src/block/details/details.ts +729 -0
  243. package/src/block/dialog/dialog.ts +729 -0
  244. package/src/block/div/div.ts +729 -0
  245. package/src/block/dl/dl.ts +649 -0
  246. package/{block/details/details.ts → src/block/dt/dt.ts} +114 -88
  247. package/{block → src/block}/embed/embed.ts +144 -1
  248. package/{block → src/block}/fieldset/fieldset.ts +144 -1
  249. package/src/block/figcaption/figcaption.ts +649 -0
  250. package/src/block/figure/figure.ts +649 -0
  251. package/src/block/footer/footer.ts +665 -0
  252. package/{block → src/block}/form/form.ts +132 -5
  253. package/src/block/h1/h1.ts +633 -0
  254. package/src/block/h2/h2.ts +633 -0
  255. package/src/block/h3/h3.ts +633 -0
  256. package/src/block/h4/h4.ts +633 -0
  257. package/src/block/h5/h5.ts +633 -0
  258. package/src/block/h6/h6.ts +633 -0
  259. package/{block → src/block}/header/header.ts +144 -1
  260. package/src/block/hgroup/hgroup.ts +649 -0
  261. package/{block → src/block}/hr/hr.ts +59 -1
  262. package/{block → src/block}/html/html.ts +27 -1
  263. package/{block → src/block}/iframe/iframe.ts +112 -1
  264. package/{block → src/block}/ins/ins.ts +144 -1
  265. package/src/block/legend/legend.ts +649 -0
  266. package/{block → src/block}/li/li.ts +107 -1
  267. package/{block/div/div.ts → src/block/main/main.ts} +112 -54
  268. package/src/block/map/map.ts +665 -0
  269. package/{block → src/block}/menu/menu.ts +144 -1
  270. package/{block → src/block}/nav/nav.ts +107 -1
  271. package/{block → src/block}/noscript/noscript.ts +144 -1
  272. package/{block → src/block}/object/object.ts +144 -1
  273. package/{block → src/block}/ol/ol.ts +144 -1
  274. package/{block → src/block}/optgroup/optgroup.ts +144 -1
  275. package/{block → src/block}/option/option.ts +144 -1
  276. package/src/block/p/p.ts +649 -0
  277. package/src/block/picture/picture.ts +649 -0
  278. package/src/block/pre/pre.ts +649 -0
  279. package/{block → src/block}/section/section.ts +144 -1
  280. package/{block → src/block}/summary/summary.ts +107 -1
  281. package/{block → src/block}/table/table.ts +144 -1
  282. package/src/block/tbody/tbody.ts +649 -0
  283. package/{block → src/block}/td/td.ts +144 -1
  284. package/src/block/template/template.ts +649 -0
  285. package/src/block/tfoot/tfoot.ts +649 -0
  286. package/{block → src/block}/th/th.ts +144 -1
  287. package/src/block/thead/thead.ts +649 -0
  288. package/{block → src/block}/tr/tr.ts +144 -1
  289. package/{block → src/block}/ul/ul.ts +144 -1
  290. package/{block → src/block}/video/video.ts +144 -1
  291. package/{inline → src/inline}/a/a.ts +144 -1
  292. package/src/inline/abbr/abbr.ts +633 -0
  293. package/src/inline/address/address.ts +617 -0
  294. package/src/inline/b/b.ts +649 -0
  295. package/src/inline/bdi/bdi.ts +633 -0
  296. package/src/inline/bdo/bdo.ts +649 -0
  297. package/{inline → src/inline}/button/button.ts +145 -2
  298. package/src/inline/cite/cite.ts +649 -0
  299. package/src/inline/code/code.ts +649 -0
  300. package/src/inline/data/data.ts +665 -0
  301. package/src/inline/dfn/dfn.ts +649 -0
  302. package/src/inline/em/em.ts +649 -0
  303. package/src/inline/i/i.ts +649 -0
  304. package/{inline → src/inline}/img/img.ts +112 -1
  305. package/{inline → src/inline}/input/input.ts +145 -2
  306. package/src/inline/kbd/kbd.ts +649 -0
  307. package/{inline → src/inline}/label/label.ts +144 -1
  308. package/src/inline/mark/mark.ts +649 -0
  309. package/{inline → src/inline}/meter/meter.ts +144 -1
  310. package/{inline → src/inline}/output/output.ts +144 -1
  311. package/{inline → src/inline}/progress/progress.ts +144 -1
  312. package/src/inline/q/q.ts +665 -0
  313. package/src/inline/rp/rp.ts +649 -0
  314. package/src/inline/rt/rt.ts +649 -0
  315. package/src/inline/ruby/ruby.ts +649 -0
  316. package/src/inline/s/s.ts +649 -0
  317. package/src/inline/samp/samp.ts +649 -0
  318. package/{inline → src/inline}/select/select.ts +144 -1
  319. package/src/inline/slot/slot.ts +665 -0
  320. package/src/inline/small/small.ts +649 -0
  321. package/src/inline/span/span.ts +649 -0
  322. package/src/inline/strong/strong.ts +649 -0
  323. package/src/inline/sub/sub.ts +649 -0
  324. package/src/inline/sup/sup.ts +649 -0
  325. package/{inline → src/inline}/svg/svg.ts +144 -1
  326. package/{inline → src/inline}/textarea/textarea.ts +144 -1
  327. package/src/inline/time/time.ts +665 -0
  328. package/src/inline/u/u.ts +649 -0
  329. package/src/inline/var/var.ts +649 -0
  330. package/{void → src/void}/area/area.ts +144 -1
  331. package/{void → src/void}/base/base.ts +1 -1
  332. package/src/void/br/br.ts +172 -0
  333. package/src/void/col/col.ts +172 -0
  334. package/{void → src/void}/head/head.ts +1 -1
  335. package/{void → src/void}/link/link.ts +59 -1
  336. package/{void → src/void}/meta/meta.ts +59 -1
  337. package/src/void/param/param.ts +188 -0
  338. package/{void → src/void}/script/script.ts +59 -1
  339. package/src/void/source/source.ts +220 -0
  340. package/{void → src/void}/style/style.ts +59 -1
  341. package/{void → src/void}/title/title.ts +1 -1
  342. package/{void → src/void}/track/track.ts +96 -1
  343. package/src/void/wbr/wbr.ts +156 -0
  344. package/block/article/article.ts +0 -506
  345. package/block/blockquote/blockquote.ts +0 -522
  346. package/block/caption/caption.ts +0 -506
  347. package/block/datalist/datalist.ts +0 -506
  348. package/block/dd/dd.ts +0 -506
  349. package/block/dl/dl.ts +0 -506
  350. package/block/dt/dt.ts +0 -506
  351. package/block/figcaption/figcaption.ts +0 -506
  352. package/block/figure/figure.ts +0 -506
  353. package/block/footer/footer.ts +0 -522
  354. package/block/h1/h1.ts +0 -490
  355. package/block/h2/h2.ts +0 -490
  356. package/block/h3/h3.ts +0 -490
  357. package/block/h4/h4.ts +0 -490
  358. package/block/h5/h5.ts +0 -490
  359. package/block/h6/h6.ts +0 -490
  360. package/block/hgroup/hgroup.ts +0 -506
  361. package/block/legend/legend.ts +0 -506
  362. package/block/main/main.ts +0 -538
  363. package/block/map/map.ts +0 -522
  364. package/block/p/p.ts +0 -506
  365. package/block/picture/picture.ts +0 -506
  366. package/block/pre/pre.ts +0 -506
  367. package/block/tbody/tbody.ts +0 -506
  368. package/block/template/template.ts +0 -506
  369. package/block/tfoot/tfoot.ts +0 -506
  370. package/block/thead/thead.ts +0 -506
  371. package/inline/abbr/abbr.ts +0 -490
  372. package/inline/address/address.ts +0 -474
  373. package/inline/b/b.ts +0 -506
  374. package/inline/bdi/bdi.ts +0 -490
  375. package/inline/bdo/bdo.ts +0 -506
  376. package/inline/cite/cite.ts +0 -506
  377. package/inline/code/code.ts +0 -506
  378. package/inline/data/data.ts +0 -522
  379. package/inline/dfn/dfn.ts +0 -506
  380. package/inline/em/em.ts +0 -506
  381. package/inline/i/i.ts +0 -506
  382. package/inline/kbd/kbd.ts +0 -506
  383. package/inline/mark/mark.ts +0 -506
  384. package/inline/q/q.ts +0 -522
  385. package/inline/rp/rp.ts +0 -506
  386. package/inline/rt/rt.ts +0 -506
  387. package/inline/ruby/ruby.ts +0 -506
  388. package/inline/s/s.ts +0 -506
  389. package/inline/samp/samp.ts +0 -506
  390. package/inline/slot/slot.ts +0 -522
  391. package/inline/small/small.ts +0 -506
  392. package/inline/span/span.ts +0 -506
  393. package/inline/strong/strong.ts +0 -506
  394. package/inline/sub/sub.ts +0 -506
  395. package/inline/sup/sup.ts +0 -506
  396. package/inline/time/time.ts +0 -522
  397. package/inline/u/u.ts +0 -506
  398. package/inline/var/var.ts +0 -506
  399. package/void/br/br.ts +0 -77
  400. package/void/col/col.ts +0 -77
  401. package/void/param/param.ts +0 -93
  402. package/void/source/source.ts +0 -125
  403. package/void/wbr/wbr.ts +0 -61
  404. /package/{index.ts → src/index.ts} +0 -0
  405. /package/{tsconfig.json → src/tsconfig.json} +0 -0
@@ -0,0 +1,729 @@
1
+ /**
2
+ * THIS FILE IS AUTOGENERATED. DO NOT EDIT IT.
3
+ *
4
+ * @generated January 2, 2026 15:45:45
5
+ * @component Div
6
+ * @description
7
+ */
8
+
9
+ export interface DivProps {
10
+ /**
11
+ * Child content or elements
12
+ */
13
+ children?: string | HTMLElement | (string | HTMLElement)[];
14
+ /**
15
+ * Keyboard shortcut to activate or focus the element
16
+ */
17
+ accessKey?: string;
18
+ /**
19
+ * specifies a shortcut key (or keys) to activate or focus an element
20
+ */
21
+ accesskey?: string | null | undefined;
22
+ /**
23
+ * Mapping of Alpine.js directives (shorthand or full) to their values (e.g., {@click: "do()"} or {"x-on:click":"do()"})
24
+ */
25
+ 'alpine-attributes'?: Record<string, string> | null | undefined;
26
+ /**
27
+ * Identifies the currently active child element (e.g., for autocomplete suggestions or composite widgets).
28
+ */
29
+ 'aria-activedescendant'?: string | null | undefined;
30
+ /**
31
+ * Indicates whether assistive technologies should present the entire region as a whole when changes occur.
32
+ */
33
+ 'aria-atomic'?: 'false' | 'true' | boolean | null | undefined;
34
+ /**
35
+ * The aria-busy attribute is used to indicate whether an element is currently busy or not.
36
+ */
37
+ 'aria-busy'?: 'true' | 'false' | boolean | null | undefined;
38
+ /**
39
+ * Identifies the element(s) whose contents or presence are controlled by this element. Value is a list of IDs separated by a space
40
+ */
41
+ 'aria-controls'?: string | null | undefined;
42
+ /**
43
+ * Identifies the element(s) that describes the object. Value is a list of IDs separated by a space
44
+ */
45
+ 'aria-describedby'?: string | null | undefined;
46
+ /**
47
+ * References an element that provides additional details about the current element.
48
+ */
49
+ 'aria-details'?: string | null | undefined;
50
+ /**
51
+ * Indicates whether the element is exposed to an accessibility API. Use with caution on interactive elements. Set to true only on decorative elements such as icons, or when nav isnt visible
52
+ */
53
+ 'aria-hidden'?: 'false' | 'true' | boolean | null | undefined;
54
+ /**
55
+ * Defines keyboard shortcuts available for the element.
56
+ */
57
+ 'aria-keyshortcuts'?: string | null | undefined;
58
+ /**
59
+ * Defines a string value that labels the current element for assistive technologies.
60
+ */
61
+ 'aria-label'?: string | null | undefined;
62
+ /**
63
+ * Identifies the element(s) that labels the current element. Value is a list of IDs separated by a space
64
+ */
65
+ 'aria-labelledby'?: string | null | undefined;
66
+ /**
67
+ * Defines how updates to the element should be announced to screen readers.
68
+ */
69
+ 'aria-live'?: 'off' | 'polite' | 'assertive' | null | undefined;
70
+ /**
71
+ * Defines whether multiple items can be selected in a listbox, grid, or tree.
72
+ */
73
+ 'aria-multiselectable'?: 'false' | 'true' | boolean | null | undefined;
74
+ /**
75
+ * Specifies whether an element is horizontal or vertical.
76
+ */
77
+ 'aria-orientation'?: 'horizontal' | 'vertical' | 'undefined' | null | undefined;
78
+ /**
79
+ * Establishes ownership relationships between elements. Value is a space-separated list of IDs.
80
+ */
81
+ 'aria-owns'?: string | null | undefined;
82
+ /**
83
+ * Indicates what content changes should be announced in a live region.
84
+ */
85
+ 'aria-relevant'?: 'additions' | 'removals' | 'text' | 'all' | 'additions text' | null | undefined;
86
+ /**
87
+ * Provides a human-readable custom role description for assistive technologies.
88
+ */
89
+ 'aria-roledescription'?: string | null | undefined;
90
+ /**
91
+ * Represents the autocapitalize behavior of the element
92
+ */
93
+ autocapitalize?: 'none' | 'sentences' | 'words' | 'characters' | null | undefined;
94
+ /**
95
+ * Indicates whether the element is hidden
96
+ */
97
+ autofocus?: boolean | null | undefined;
98
+ /**
99
+ * CSS class names
100
+ */
101
+ className?: string;
102
+ /**
103
+ * Whether the element is editable
104
+ */
105
+ contentEditable?: boolean | "true" | "false" | "inherit";
106
+ /**
107
+ * Indicates whether the element can be edited in place
108
+ */
109
+ contenteditable?: 'true' | 'false' | 'inherit' | boolean | null | undefined;
110
+ /**
111
+ * Mapping of data-* attributes to their values (e.g., {"test":"value"} -> data-test="value")
112
+ */
113
+ 'data-attributes'?: Record<string, string> | null | undefined;
114
+ /**
115
+ * Represents the text direction of the element
116
+ */
117
+ dir?: 'ltr' | 'rtl' | 'auto' | null | undefined;
118
+ /**
119
+ * Indicates whether the element is draggable
120
+ */
121
+ draggable?: boolean | null | undefined;
122
+ /**
123
+ * Indicates whether the element is hidden
124
+ */
125
+ hidden?: boolean | null | undefined;
126
+ /**
127
+ * Unique identifier
128
+ */
129
+ id?: string;
130
+ /**
131
+ * used to specify the data entry mode for an input. It helps guide on-screen keyboards (especially on mobile devices) to show the appropriate layout for the expected input type
132
+ */
133
+ inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'email' | 'tel' | 'url' | 'search' | null | undefined;
134
+ /**
135
+ * Specifies the primary language for the element's content
136
+ */
137
+ lang?: string | null | undefined;
138
+ /**
139
+ *
140
+ */
141
+ popover?: 'auto' | 'hint' | 'manual' | null | undefined;
142
+ /**
143
+ * The role attribute is used to define the purpose of an element.
144
+ */
145
+ role?: 'alert' | 'application' | 'article' | 'banner' | 'button' | 'checkbox' | 'complementary' | 'contentinfo' | 'dialog' | 'form' | 'grid' | 'group' | 'heading' | 'img' | 'link' | 'list' | 'listbox' | 'listitem' | 'main' | 'menu' | 'menubar' | 'menuitem' | 'navigation' | 'none' | 'presentation' | 'radio' | 'region' | 'search' | 'status' | 'tab' | 'tablist' | 'tabpanel' | 'textbox' | 'toolbar' | 'tooltip' | null | undefined;
146
+ /**
147
+ * Represents a slot in a shadow DOM
148
+ */
149
+ slot?: string | null | undefined;
150
+ /**
151
+ * Represents the spellchecking behavior of the element
152
+ */
153
+ spellcheck?: 'true' | 'false' | boolean | null | undefined;
154
+ /**
155
+ * Represents the CSS inline style of the element
156
+ */
157
+ style?: string | null | undefined;
158
+ /**
159
+ * Tab order position
160
+ */
161
+ tabIndex?: number;
162
+ /**
163
+ * Represents a tab order of the element
164
+ */
165
+ tabindex?: number | null | undefined;
166
+ /**
167
+ * Represents a title or tooltip for the element
168
+ */
169
+ title?: string | null | undefined;
170
+ /**
171
+ * used to tell user agents whether the content should be translated.
172
+ */
173
+ translate?: 'yes' | 'no' | null | undefined;
174
+ }
175
+
176
+ /**
177
+ * Div -
178
+ */
179
+ export class Div {
180
+ private element: HTMLElement;
181
+
182
+ constructor(props: DivProps = {}) {
183
+ this.element = document.createElement('div');
184
+ this.applyProps(props);
185
+ }
186
+
187
+ private applyProps(props: DivProps): void {
188
+ if (props.children !== undefined) {
189
+ this.setChildren(props.children);
190
+ }
191
+ if (props.accessKey !== undefined) {
192
+ this.element.setAttribute('accessKey', String(props.accessKey));
193
+ }
194
+ if (props.accesskey !== undefined) {
195
+ this.element.setAttribute('accesskey', String(props.accesskey));
196
+ }
197
+ if (props['alpine-attributes'] !== undefined) {
198
+ const __map = props['alpine-attributes'];
199
+ if (__map !== null && __map !== undefined) {
200
+ for (const __k in __map) {
201
+ const __v = (__map as any)[__k];
202
+ let __attr = __k;
203
+ if (__k.startsWith('@')) { __attr = 'x-on:' + __k.slice(1); }
204
+ else if (__k.startsWith(':')) { __attr = 'x-bind:' + __k.slice(1); }
205
+ else if (__k.startsWith('.')) { __attr = 'x-model' + __k; }
206
+ else if (!__k.startsWith('x-') && ['show','text','html','if','for','cloak','init','data','effect','ignore','ref','transition','teleport'].includes(__k)) { __attr = 'x-' + __k; }
207
+ this.element.setAttribute(__attr, String(__v));
208
+ }
209
+ }
210
+ }
211
+ if (props['aria-activedescendant'] !== undefined) {
212
+ this.element.setAttribute('aria-activedescendant', String(props['aria-activedescendant']));
213
+ }
214
+ if (props['aria-atomic'] !== undefined) {
215
+ this.setAriaAtomic(props['aria-atomic']);
216
+ }
217
+ if (props['aria-busy'] !== undefined) {
218
+ this.setAriaBusy(props['aria-busy']);
219
+ }
220
+ if (props['aria-controls'] !== undefined) {
221
+ this.element.setAttribute('aria-controls', String(props['aria-controls']));
222
+ }
223
+ if (props['aria-describedby'] !== undefined) {
224
+ this.element.setAttribute('aria-describedby', String(props['aria-describedby']));
225
+ }
226
+ if (props['aria-details'] !== undefined) {
227
+ this.element.setAttribute('aria-details', String(props['aria-details']));
228
+ }
229
+ if (props['aria-hidden'] !== undefined) {
230
+ this.setAriaHidden(props['aria-hidden']);
231
+ }
232
+ if (props['aria-keyshortcuts'] !== undefined) {
233
+ this.element.setAttribute('aria-keyshortcuts', String(props['aria-keyshortcuts']));
234
+ }
235
+ if (props['aria-label'] !== undefined) {
236
+ this.element.setAttribute('aria-label', String(props['aria-label']));
237
+ }
238
+ if (props['aria-labelledby'] !== undefined) {
239
+ this.element.setAttribute('aria-labelledby', String(props['aria-labelledby']));
240
+ }
241
+ if (props['aria-live'] !== undefined) {
242
+ this.setAriaLive(props['aria-live']);
243
+ }
244
+ if (props['aria-multiselectable'] !== undefined) {
245
+ this.setAriaMultiselectable(props['aria-multiselectable']);
246
+ }
247
+ if (props['aria-orientation'] !== undefined) {
248
+ this.setAriaOrientation(props['aria-orientation']);
249
+ }
250
+ if (props['aria-owns'] !== undefined) {
251
+ this.element.setAttribute('aria-owns', String(props['aria-owns']));
252
+ }
253
+ if (props['aria-relevant'] !== undefined) {
254
+ this.setAriaRelevant(props['aria-relevant']);
255
+ }
256
+ if (props['aria-roledescription'] !== undefined) {
257
+ this.element.setAttribute('aria-roledescription', String(props['aria-roledescription']));
258
+ }
259
+ if (props.autocapitalize !== undefined) {
260
+ this.setAutocapitalize(props.autocapitalize);
261
+ }
262
+ if (props.autofocus !== undefined) {
263
+ this.element.setAttribute('autofocus', String(props.autofocus));
264
+ }
265
+ if (props.className !== undefined) {
266
+ this.element.setAttribute('className', String(props.className));
267
+ }
268
+ if (props.contentEditable !== undefined) {
269
+ this.element.setAttribute('contentEditable', String(props.contentEditable));
270
+ }
271
+ if (props.contenteditable !== undefined) {
272
+ this.setContenteditable(props.contenteditable);
273
+ }
274
+ if (props['data-attributes'] !== undefined) {
275
+ const __map = props['data-attributes'];
276
+ if (__map !== null && __map !== undefined) {
277
+ for (const __k in __map) {
278
+ this.element.setAttribute(`data-${__k}`, String((__map as any)[__k]));
279
+ }
280
+ }
281
+ }
282
+ if (props.dir !== undefined) {
283
+ this.setDir(props.dir);
284
+ }
285
+ if (props.draggable !== undefined) {
286
+ this.element.setAttribute('draggable', String(props.draggable));
287
+ }
288
+ if (props.hidden !== undefined) {
289
+ this.element.setAttribute('hidden', String(props.hidden));
290
+ }
291
+ if (props.id !== undefined) {
292
+ this.element.setAttribute('id', String(props.id));
293
+ }
294
+ if (props.inputmode !== undefined) {
295
+ this.setInputmode(props.inputmode);
296
+ }
297
+ if (props.lang !== undefined) {
298
+ this.element.setAttribute('lang', String(props.lang));
299
+ }
300
+ if (props.popover !== undefined) {
301
+ this.setPopover(props.popover);
302
+ }
303
+ if (props.role !== undefined) {
304
+ this.setRole(props.role);
305
+ }
306
+ if (props.slot !== undefined) {
307
+ this.element.setAttribute('slot', String(props.slot));
308
+ }
309
+ if (props.spellcheck !== undefined) {
310
+ this.setSpellcheck(props.spellcheck);
311
+ }
312
+ if (props.style !== undefined) {
313
+ this.element.setAttribute('style', String(props.style));
314
+ }
315
+ if (props.tabIndex !== undefined) {
316
+ this.element.setAttribute('tabIndex', String(props.tabIndex));
317
+ }
318
+ if (props.tabindex !== undefined) {
319
+ this.element.setAttribute('tabindex', String(props.tabindex));
320
+ }
321
+ if (props.title !== undefined) {
322
+ this.element.setAttribute('title', String(props.title));
323
+ }
324
+ if (props.translate !== undefined) {
325
+ this.setTranslate(props.translate);
326
+ }
327
+ }
328
+
329
+ setAccessKey(value: string): this {
330
+ if (value === null || value === undefined) {
331
+ this.element.removeAttribute('accessKey');
332
+ } else {
333
+ this.element.setAttribute('accessKey', String(value));
334
+ }
335
+ return this;
336
+ }
337
+
338
+ setAccesskey(value: string | null | undefined): this {
339
+ if (value === null || value === undefined) {
340
+ this.element.removeAttribute('accesskey');
341
+ } else {
342
+ this.element.setAttribute('accesskey', String(value));
343
+ }
344
+ return this;
345
+ }
346
+
347
+ setAlpineAttributes(value: string | null | undefined): this {
348
+ if (value === null || value === undefined) {
349
+ // Remove all x-* Alpine attributes (best-effort)
350
+ for (const __a of Array.from(this.element.attributes)) {
351
+ if ((__a as Attr).name.startsWith('x-')) { (this.element as HTMLElement).removeAttribute((__a as Attr).name); }
352
+ }
353
+ } else {
354
+ for (const __k in value as Record<string, string>) {
355
+ let __attr = __k;
356
+ if (__k.startsWith('@')) { __attr = 'x-on:' + __k.slice(1); }
357
+ else if (__k.startsWith(':')) { __attr = 'x-bind:' + __k.slice(1); }
358
+ else if (__k.startsWith('.')) { __attr = 'x-model' + __k; }
359
+ else if (!__k.startsWith('x-') && ['show','text','html','if','for','cloak','init','data','effect','ignore','ref','transition','teleport'].includes(__k)) { __attr = 'x-' + __k; }
360
+ this.element.setAttribute(__attr, String((value as any)[__k]));
361
+ }
362
+ }
363
+ return this;
364
+ }
365
+
366
+ setAriaActivedescendant(value: string | null | undefined): this {
367
+ if (value === null || value === undefined) {
368
+ this.element.removeAttribute('aria-activedescendant');
369
+ } else {
370
+ this.element.setAttribute('aria-activedescendant', String(value));
371
+ }
372
+ return this;
373
+ }
374
+
375
+ setAriaAtomic(value: 'false' | 'true' | boolean | null | undefined): this {
376
+ if (value === null || value === undefined) {
377
+ this.element.removeAttribute('aria-atomic');
378
+ } else {
379
+ this.element.setAttribute('aria-atomic', String(value));
380
+ }
381
+ return this;
382
+ }
383
+
384
+ setAriaBusy(value: 'true' | 'false' | boolean | null | undefined): this {
385
+ if (value === null || value === undefined) {
386
+ this.element.removeAttribute('aria-busy');
387
+ } else {
388
+ this.element.setAttribute('aria-busy', String(value));
389
+ }
390
+ return this;
391
+ }
392
+
393
+ setAriaControls(value: string | null | undefined): this {
394
+ if (value === null || value === undefined) {
395
+ this.element.removeAttribute('aria-controls');
396
+ } else {
397
+ this.element.setAttribute('aria-controls', String(value));
398
+ }
399
+ return this;
400
+ }
401
+
402
+ setAriaDescribedby(value: string | null | undefined): this {
403
+ if (value === null || value === undefined) {
404
+ this.element.removeAttribute('aria-describedby');
405
+ } else {
406
+ this.element.setAttribute('aria-describedby', String(value));
407
+ }
408
+ return this;
409
+ }
410
+
411
+ setAriaDetails(value: string | null | undefined): this {
412
+ if (value === null || value === undefined) {
413
+ this.element.removeAttribute('aria-details');
414
+ } else {
415
+ this.element.setAttribute('aria-details', String(value));
416
+ }
417
+ return this;
418
+ }
419
+
420
+ setAriaHidden(value: 'false' | 'true' | boolean | null | undefined): this {
421
+ if (value === null || value === undefined) {
422
+ this.element.removeAttribute('aria-hidden');
423
+ } else {
424
+ this.element.setAttribute('aria-hidden', String(value));
425
+ }
426
+ return this;
427
+ }
428
+
429
+ setAriaKeyshortcuts(value: string | null | undefined): this {
430
+ if (value === null || value === undefined) {
431
+ this.element.removeAttribute('aria-keyshortcuts');
432
+ } else {
433
+ this.element.setAttribute('aria-keyshortcuts', String(value));
434
+ }
435
+ return this;
436
+ }
437
+
438
+ setAriaLabel(value: string | null | undefined): this {
439
+ if (value === null || value === undefined) {
440
+ this.element.removeAttribute('aria-label');
441
+ } else {
442
+ this.element.setAttribute('aria-label', String(value));
443
+ }
444
+ return this;
445
+ }
446
+
447
+ setAriaLabelledby(value: string | null | undefined): this {
448
+ if (value === null || value === undefined) {
449
+ this.element.removeAttribute('aria-labelledby');
450
+ } else {
451
+ this.element.setAttribute('aria-labelledby', String(value));
452
+ }
453
+ return this;
454
+ }
455
+
456
+ setAriaLive(value: 'off' | 'polite' | 'assertive' | null | undefined): this {
457
+ if (value === null || value === undefined) {
458
+ this.element.removeAttribute('aria-live');
459
+ } else {
460
+ this.element.setAttribute('aria-live', String(value));
461
+ }
462
+ return this;
463
+ }
464
+
465
+ setAriaMultiselectable(value: 'false' | 'true' | boolean | null | undefined): this {
466
+ if (value === null || value === undefined) {
467
+ this.element.removeAttribute('aria-multiselectable');
468
+ } else {
469
+ this.element.setAttribute('aria-multiselectable', String(value));
470
+ }
471
+ return this;
472
+ }
473
+
474
+ setAriaOrientation(value: 'horizontal' | 'vertical' | 'undefined' | null | undefined): this {
475
+ if (value === null || value === undefined) {
476
+ this.element.removeAttribute('aria-orientation');
477
+ } else {
478
+ this.element.setAttribute('aria-orientation', String(value));
479
+ }
480
+ return this;
481
+ }
482
+
483
+ setAriaOwns(value: string | null | undefined): this {
484
+ if (value === null || value === undefined) {
485
+ this.element.removeAttribute('aria-owns');
486
+ } else {
487
+ this.element.setAttribute('aria-owns', String(value));
488
+ }
489
+ return this;
490
+ }
491
+
492
+ setAriaRelevant(value: 'additions' | 'removals' | 'text' | 'all' | 'additions text' | null | undefined): this {
493
+ if (value === null || value === undefined) {
494
+ this.element.removeAttribute('aria-relevant');
495
+ } else {
496
+ this.element.setAttribute('aria-relevant', String(value));
497
+ }
498
+ return this;
499
+ }
500
+
501
+ setAriaRoledescription(value: string | null | undefined): this {
502
+ if (value === null || value === undefined) {
503
+ this.element.removeAttribute('aria-roledescription');
504
+ } else {
505
+ this.element.setAttribute('aria-roledescription', String(value));
506
+ }
507
+ return this;
508
+ }
509
+
510
+ setAutocapitalize(value: 'none' | 'sentences' | 'words' | 'characters' | null | undefined): this {
511
+ if (value === null || value === undefined) {
512
+ this.element.removeAttribute('autocapitalize');
513
+ } else {
514
+ this.element.setAttribute('autocapitalize', String(value));
515
+ }
516
+ return this;
517
+ }
518
+
519
+ setAutofocus(value: boolean | null | undefined): this {
520
+ if (value === true) {
521
+ this.element.setAttribute('autofocus', '');
522
+ } else {
523
+ this.element.removeAttribute('autofocus');
524
+ }
525
+ return this;
526
+ }
527
+
528
+ setClassName(value: string): this {
529
+ if (value === null || value === undefined) {
530
+ this.element.removeAttribute('className');
531
+ } else {
532
+ this.element.setAttribute('className', String(value));
533
+ }
534
+ return this;
535
+ }
536
+
537
+ setContentEditable(value: boolean | "true" | "false" | "inherit"): this {
538
+ if (value === true) {
539
+ this.element.setAttribute('contentEditable', '');
540
+ } else {
541
+ this.element.removeAttribute('contentEditable');
542
+ }
543
+ return this;
544
+ }
545
+
546
+ setContenteditable(value: 'true' | 'false' | 'inherit' | boolean | null | undefined): this {
547
+ if (value === null || value === undefined) {
548
+ this.element.removeAttribute('contenteditable');
549
+ } else {
550
+ this.element.setAttribute('contenteditable', String(value));
551
+ }
552
+ return this;
553
+ }
554
+
555
+ setDataAttributes(value: Record<string, string>): this {
556
+ if (value === null || value === undefined) {
557
+ // Remove all data-* attributes (best-effort)
558
+ for (const __a of Array.from(this.element.attributes)) {
559
+ if ((__a as Attr).name.startsWith('data-')) { (this.element as HTMLElement).removeAttribute((__a as Attr).name); }
560
+ }
561
+ } else {
562
+ for (const __k in value as Record<string, string>) {
563
+ this.element.setAttribute(`data-${__k}`, String((value as any)[__k]));
564
+ }
565
+ }
566
+ return this;
567
+ }
568
+
569
+ setDir(value: 'ltr' | 'rtl' | 'auto' | null | undefined): this {
570
+ if (value === null || value === undefined) {
571
+ this.element.removeAttribute('dir');
572
+ } else {
573
+ this.element.setAttribute('dir', String(value));
574
+ }
575
+ return this;
576
+ }
577
+
578
+ setDraggable(value: boolean | null | undefined): this {
579
+ if (value === true) {
580
+ this.element.setAttribute('draggable', '');
581
+ } else {
582
+ this.element.removeAttribute('draggable');
583
+ }
584
+ return this;
585
+ }
586
+
587
+ setHidden(value: boolean | null | undefined): this {
588
+ if (value === true) {
589
+ this.element.setAttribute('hidden', '');
590
+ } else {
591
+ this.element.removeAttribute('hidden');
592
+ }
593
+ return this;
594
+ }
595
+
596
+ setId(value: string): this {
597
+ if (value === null || value === undefined) {
598
+ this.element.removeAttribute('id');
599
+ } else {
600
+ this.element.setAttribute('id', String(value));
601
+ }
602
+ return this;
603
+ }
604
+
605
+ setInputmode(value: 'none' | 'text' | 'decimal' | 'numeric' | 'email' | 'tel' | 'url' | 'search' | null | undefined): this {
606
+ if (value === null || value === undefined) {
607
+ this.element.removeAttribute('inputmode');
608
+ } else {
609
+ this.element.setAttribute('inputmode', String(value));
610
+ }
611
+ return this;
612
+ }
613
+
614
+ setLang(value: string | null | undefined): this {
615
+ if (value === null || value === undefined) {
616
+ this.element.removeAttribute('lang');
617
+ } else {
618
+ this.element.setAttribute('lang', String(value));
619
+ }
620
+ return this;
621
+ }
622
+
623
+ setPopover(value: 'auto' | 'hint' | 'manual' | null | undefined): this {
624
+ if (value === null || value === undefined) {
625
+ this.element.removeAttribute('popover');
626
+ } else {
627
+ this.element.setAttribute('popover', String(value));
628
+ }
629
+ return this;
630
+ }
631
+
632
+ setRole(value: 'alert' | 'application' | 'article' | 'banner' | 'button' | 'checkbox' | 'complementary' | 'contentinfo' | 'dialog' | 'form' | 'grid' | 'group' | 'heading' | 'img' | 'link' | 'list' | 'listbox' | 'listitem' | 'main' | 'menu' | 'menubar' | 'menuitem' | 'navigation' | 'none' | 'presentation' | 'radio' | 'region' | 'search' | 'status' | 'tab' | 'tablist' | 'tabpanel' | 'textbox' | 'toolbar' | 'tooltip' | null | undefined): this {
633
+ if (value === null || value === undefined) {
634
+ this.element.removeAttribute('role');
635
+ } else {
636
+ this.element.setAttribute('role', String(value));
637
+ }
638
+ return this;
639
+ }
640
+
641
+ setSlot(value: string | null | undefined): this {
642
+ if (value === null || value === undefined) {
643
+ this.element.removeAttribute('slot');
644
+ } else {
645
+ this.element.setAttribute('slot', String(value));
646
+ }
647
+ return this;
648
+ }
649
+
650
+ setSpellcheck(value: 'true' | 'false' | boolean | null | undefined): this {
651
+ if (value === null || value === undefined) {
652
+ this.element.removeAttribute('spellcheck');
653
+ } else {
654
+ this.element.setAttribute('spellcheck', String(value));
655
+ }
656
+ return this;
657
+ }
658
+
659
+ setStyle(value: string | null | undefined): this {
660
+ if (value === null || value === undefined) {
661
+ this.element.removeAttribute('style');
662
+ } else {
663
+ this.element.setAttribute('style', String(value));
664
+ }
665
+ return this;
666
+ }
667
+
668
+ setTabIndex(value: number): this {
669
+ if (value === null || value === undefined) {
670
+ this.element.removeAttribute('tabIndex');
671
+ } else {
672
+ this.element.setAttribute('tabIndex', String(value));
673
+ }
674
+ return this;
675
+ }
676
+
677
+ setTabindex(value: number | null | undefined): this {
678
+ if (value === null || value === undefined) {
679
+ this.element.removeAttribute('tabindex');
680
+ } else {
681
+ this.element.setAttribute('tabindex', String(value));
682
+ }
683
+ return this;
684
+ }
685
+
686
+ setTitle(value: string | null | undefined): this {
687
+ if (value === null || value === undefined) {
688
+ this.element.removeAttribute('title');
689
+ } else {
690
+ this.element.setAttribute('title', String(value));
691
+ }
692
+ return this;
693
+ }
694
+
695
+ setTranslate(value: 'yes' | 'no' | null | undefined): this {
696
+ if (value === null || value === undefined) {
697
+ this.element.removeAttribute('translate');
698
+ } else {
699
+ this.element.setAttribute('translate', String(value));
700
+ }
701
+ return this;
702
+ }
703
+
704
+ setChildren(children: string | HTMLElement | (string | HTMLElement)[]): this {
705
+ // Clear existing children
706
+ while (this.element.firstChild) {
707
+ this.element.removeChild(this.element.firstChild);
708
+ }
709
+
710
+ if (typeof children === 'string') {
711
+ this.element.textContent = children;
712
+ } else if (Array.isArray(children)) {
713
+ children.forEach(child => {
714
+ if (typeof child === 'string') {
715
+ this.element.appendChild(document.createTextNode(child));
716
+ } else {
717
+ this.element.appendChild(child);
718
+ }
719
+ });
720
+ } else {
721
+ this.element.appendChild(children);
722
+ }
723
+ return this;
724
+ }
725
+
726
+ getElement(): HTMLElement {
727
+ return this.element;
728
+ }
729
+ }