@typesafe-html5/typescript 0.2.58

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 (117) hide show
  1. package/README.md +166 -0
  2. package/block/article/article.ts +506 -0
  3. package/block/aside/aside.ts +522 -0
  4. package/block/audio/audio.ts +506 -0
  5. package/block/blockquote/blockquote.ts +522 -0
  6. package/block/body/body.ts +458 -0
  7. package/block/canvas/canvas.ts +538 -0
  8. package/block/caption/caption.ts +506 -0
  9. package/block/colgroup/colgroup.ts +154 -0
  10. package/block/datalist/datalist.ts +506 -0
  11. package/block/dd/dd.ts +506 -0
  12. package/block/del/del.ts +538 -0
  13. package/block/details/details.ts +586 -0
  14. package/block/dialog/dialog.ts +586 -0
  15. package/block/div/div.ts +586 -0
  16. package/block/dl/dl.ts +506 -0
  17. package/block/dt/dt.ts +506 -0
  18. package/block/embed/embed.ts +317 -0
  19. package/block/fieldset/fieldset.ts +570 -0
  20. package/block/figcaption/figcaption.ts +506 -0
  21. package/block/figure/figure.ts +506 -0
  22. package/block/footer/footer.ts +522 -0
  23. package/block/form/form.ts +490 -0
  24. package/block/h1/h1.ts +490 -0
  25. package/block/h2/h2.ts +490 -0
  26. package/block/h3/h3.ts +490 -0
  27. package/block/h4/h4.ts +490 -0
  28. package/block/h5/h5.ts +490 -0
  29. package/block/h6/h6.ts +490 -0
  30. package/block/header/header.ts +298 -0
  31. package/block/hgroup/hgroup.ts +506 -0
  32. package/block/hr/hr.ts +189 -0
  33. package/block/html/html.ts +106 -0
  34. package/block/iframe/iframe.ts +538 -0
  35. package/block/ins/ins.ts +538 -0
  36. package/block/legend/legend.ts +506 -0
  37. package/block/li/li.ts +602 -0
  38. package/block/main/main.ts +538 -0
  39. package/block/map/map.ts +522 -0
  40. package/block/menu/menu.ts +554 -0
  41. package/block/nav/nav.ts +554 -0
  42. package/block/noscript/noscript.ts +282 -0
  43. package/block/object/object.ts +618 -0
  44. package/block/ol/ol.ts +618 -0
  45. package/block/optgroup/optgroup.ts +522 -0
  46. package/block/option/option.ts +618 -0
  47. package/block/p/p.ts +506 -0
  48. package/block/picture/picture.ts +506 -0
  49. package/block/pre/pre.ts +506 -0
  50. package/block/section/section.ts +538 -0
  51. package/block/summary/summary.ts +570 -0
  52. package/block/table/table.ts +570 -0
  53. package/block/tbody/tbody.ts +506 -0
  54. package/block/td/td.ts +666 -0
  55. package/block/template/template.ts +506 -0
  56. package/block/tfoot/tfoot.ts +506 -0
  57. package/block/th/th.ts +682 -0
  58. package/block/thead/thead.ts +506 -0
  59. package/block/tr/tr.ts +682 -0
  60. package/block/ul/ul.ts +570 -0
  61. package/block/video/video.ts +666 -0
  62. package/index.ts +126 -0
  63. package/inline/a/a.ts +682 -0
  64. package/inline/abbr/abbr.ts +490 -0
  65. package/inline/address/address.ts +474 -0
  66. package/inline/b/b.ts +506 -0
  67. package/inline/bdi/bdi.ts +490 -0
  68. package/inline/bdo/bdo.ts +506 -0
  69. package/inline/button/button.ts +826 -0
  70. package/inline/cite/cite.ts +506 -0
  71. package/inline/code/code.ts +506 -0
  72. package/inline/data/data.ts +522 -0
  73. package/inline/dfn/dfn.ts +506 -0
  74. package/inline/em/em.ts +506 -0
  75. package/inline/i/i.ts +506 -0
  76. package/inline/img/img.ts +445 -0
  77. package/inline/input/input.ts +1197 -0
  78. package/inline/kbd/kbd.ts +506 -0
  79. package/inline/label/label.ts +538 -0
  80. package/inline/mark/mark.ts +506 -0
  81. package/inline/meter/meter.ts +554 -0
  82. package/inline/output/output.ts +426 -0
  83. package/inline/progress/progress.ts +490 -0
  84. package/inline/q/q.ts +522 -0
  85. package/inline/rp/rp.ts +506 -0
  86. package/inline/rt/rt.ts +506 -0
  87. package/inline/ruby/ruby.ts +506 -0
  88. package/inline/s/s.ts +506 -0
  89. package/inline/samp/samp.ts +506 -0
  90. package/inline/select/select.ts +810 -0
  91. package/inline/slot/slot.ts +522 -0
  92. package/inline/small/small.ts +506 -0
  93. package/inline/span/span.ts +506 -0
  94. package/inline/strong/strong.ts +506 -0
  95. package/inline/sub/sub.ts +506 -0
  96. package/inline/sup/sup.ts +506 -0
  97. package/inline/svg/svg.ts +618 -0
  98. package/inline/textarea/textarea.ts +874 -0
  99. package/inline/time/time.ts +522 -0
  100. package/inline/u/u.ts +506 -0
  101. package/inline/var/var.ts +506 -0
  102. package/package.json +32 -0
  103. package/tsconfig.json +26 -0
  104. package/void/area/area.ts +397 -0
  105. package/void/base/base.ts +61 -0
  106. package/void/br/br.ts +77 -0
  107. package/void/col/col.ts +77 -0
  108. package/void/head/head.ts +58 -0
  109. package/void/link/link.ts +253 -0
  110. package/void/meta/meta.ts +157 -0
  111. package/void/param/param.ts +93 -0
  112. package/void/script/script.ts +250 -0
  113. package/void/source/source.ts +125 -0
  114. package/void/style/style.ts +154 -0
  115. package/void/title/title.ts +58 -0
  116. package/void/track/track.ts +157 -0
  117. package/void/wbr/wbr.ts +61 -0
package/block/ol/ol.ts ADDED
@@ -0,0 +1,618 @@
1
+ /**
2
+ * THIS FILE IS AUTOGENERATED. DO NOT EDIT IT.
3
+ *
4
+ * @generated December 28, 2025 12:26:31
5
+ * @component Ol
6
+ * @description
7
+ */
8
+
9
+ export interface OlProps {
10
+ /**
11
+ * Child content or elements
12
+ */
13
+ children?: string | HTMLElement | (string | HTMLElement)[];
14
+ /**
15
+ * specifies a shortcut key (or keys) to activate or focus an element
16
+ */
17
+ accesskey?: string | null | undefined;
18
+ /**
19
+ * Identifies the currently active child element (e.g., for autocomplete suggestions or composite widgets).
20
+ */
21
+ 'aria-activedescendant'?: string | null | undefined;
22
+ /**
23
+ * Indicates whether assistive technologies should present the entire region as a whole when changes occur.
24
+ */
25
+ 'aria-atomic'?: 'false' | 'true' | boolean | null | undefined;
26
+ /**
27
+ * The aria-busy attribute is used to indicate whether an element is currently busy or not.
28
+ */
29
+ 'aria-busy'?: 'true' | 'false' | boolean | null | undefined;
30
+ /**
31
+ * Identifies the element(s) whose contents or presence are controlled by this element. Value is a list of IDs separated by a space
32
+ */
33
+ 'aria-controls'?: string | null | undefined;
34
+ /**
35
+ * Identifies the element(s) that describes the object. Value is a list of IDs separated by a space
36
+ */
37
+ 'aria-describedby'?: string | null | undefined;
38
+ /**
39
+ * References an element that provides additional details about the current element.
40
+ */
41
+ 'aria-details'?: string | null | undefined;
42
+ /**
43
+ * 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
44
+ */
45
+ 'aria-hidden'?: 'false' | 'true' | boolean | null | undefined;
46
+ /**
47
+ * Defines keyboard shortcuts available for the element.
48
+ */
49
+ 'aria-keyshortcuts'?: string | null | undefined;
50
+ /**
51
+ * Identifies the element(s) that labels the current element. Value is a list of IDs separated by a space
52
+ */
53
+ 'aria-labelledby'?: string | null | undefined;
54
+ /**
55
+ * Defines how updates to the element should be announced to screen readers.
56
+ */
57
+ 'aria-live'?: 'off' | 'polite' | 'assertive' | null | undefined;
58
+ /**
59
+ * Defines whether multiple items can be selected in a listbox, grid, or tree.
60
+ */
61
+ 'aria-multiselectable'?: 'false' | 'true' | boolean | null | undefined;
62
+ /**
63
+ * Specifies whether an element is horizontal or vertical.
64
+ */
65
+ 'aria-orientation'?: 'horizontal' | 'vertical' | 'undefined' | null | undefined;
66
+ /**
67
+ * Establishes ownership relationships between elements. Value is a space-separated list of IDs.
68
+ */
69
+ 'aria-owns'?: string | null | undefined;
70
+ /**
71
+ * Indicates what content changes should be announced in a live region.
72
+ */
73
+ 'aria-relevant'?: 'additions' | 'removals' | 'text' | 'all' | 'additions text' | null | undefined;
74
+ /**
75
+ * Provides a human-readable custom role description for assistive technologies.
76
+ */
77
+ 'aria-roledescription'?: string | null | undefined;
78
+ /**
79
+ * Represents the autocapitalize behavior of the element
80
+ */
81
+ autocapitalize?: 'none' | 'sentences' | 'words' | 'characters' | null | undefined;
82
+ /**
83
+ * Indicates whether the element is hidden
84
+ */
85
+ autofocus?: boolean | null | undefined;
86
+ /**
87
+ * Indicates whether the element can be edited in place
88
+ */
89
+ contenteditable?: 'true' | 'false' | 'inherit' | boolean | null | undefined;
90
+ /**
91
+ * Represents the text direction of the element
92
+ */
93
+ dir?: 'ltr' | 'rtl' | 'auto' | null | undefined;
94
+ /**
95
+ * Indicates whether the element is draggable
96
+ */
97
+ draggable?: boolean | null | undefined;
98
+ /**
99
+ * Indicates whether the element is hidden
100
+ */
101
+ hidden?: boolean | null | undefined;
102
+ /**
103
+ * 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
104
+ */
105
+ inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'email' | 'tel' | 'url' | 'search' | null | undefined;
106
+ /**
107
+ * Specifies the primary language for the element's content
108
+ */
109
+ lang?: string | null | undefined;
110
+ /**
111
+ *
112
+ */
113
+ popover?: 'auto' | 'hint' | 'manual' | null | undefined;
114
+ /**
115
+ * When present, it specifies that the list order should be descending (9,8,7...).
116
+ */
117
+ reversed?: boolean | null | undefined;
118
+ /**
119
+ * Defines the semantic purpose of an element for assistive technologies.
120
+ */
121
+ 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;
122
+ /**
123
+ * Represents a slot in a shadow DOM
124
+ */
125
+ slot?: string | null | undefined;
126
+ /**
127
+ * Represents the spellchecking behavior of the element
128
+ */
129
+ spellcheck?: 'true' | 'false' | boolean | null | undefined;
130
+ /**
131
+ * Specifies the starting value of an ordered list.
132
+ */
133
+ start?: number | null | undefined;
134
+ /**
135
+ * Represents the CSS inline style of the element
136
+ */
137
+ style?: string | null | undefined;
138
+ /**
139
+ * Represents a tab order of the element
140
+ */
141
+ tabindex?: number | null | undefined;
142
+ /**
143
+ * Represents a title or tooltip for the element
144
+ */
145
+ title?: string | null | undefined;
146
+ /**
147
+ * used to tell user agents whether the content should be translated.
148
+ */
149
+ translate?: 'yes' | 'no' | null | undefined;
150
+ /**
151
+ * Specifies the numbering type of the ordered list.
152
+ */
153
+ type?: 'a' | 'A' | 'i' | 'I' | '1' | null | undefined;
154
+ }
155
+
156
+ /**
157
+ * Ol -
158
+ */
159
+ export class Ol {
160
+ private element: HTMLElement;
161
+
162
+ constructor(props: OlProps = {}) {
163
+ this.element = document.createElement('ol');
164
+ this.applyProps(props);
165
+ }
166
+
167
+ private applyProps(props: OlProps): void {
168
+ if (props.children !== undefined) {
169
+ this.setChildren(props.children);
170
+ }
171
+ if (props.accesskey !== undefined) {
172
+ this.element.setAttribute('accesskey', String(props.accesskey));
173
+ }
174
+ if (props['aria-activedescendant'] !== undefined) {
175
+ this.element.setAttribute('aria-activedescendant', String(props['aria-activedescendant']));
176
+ }
177
+ if (props['aria-atomic'] !== undefined) {
178
+ this.setAriaAtomic(props['aria-atomic']);
179
+ }
180
+ if (props['aria-busy'] !== undefined) {
181
+ this.setAriaBusy(props['aria-busy']);
182
+ }
183
+ if (props['aria-controls'] !== undefined) {
184
+ this.element.setAttribute('aria-controls', String(props['aria-controls']));
185
+ }
186
+ if (props['aria-describedby'] !== undefined) {
187
+ this.element.setAttribute('aria-describedby', String(props['aria-describedby']));
188
+ }
189
+ if (props['aria-details'] !== undefined) {
190
+ this.element.setAttribute('aria-details', String(props['aria-details']));
191
+ }
192
+ if (props['aria-hidden'] !== undefined) {
193
+ this.setAriaHidden(props['aria-hidden']);
194
+ }
195
+ if (props['aria-keyshortcuts'] !== undefined) {
196
+ this.element.setAttribute('aria-keyshortcuts', String(props['aria-keyshortcuts']));
197
+ }
198
+ if (props['aria-labelledby'] !== undefined) {
199
+ this.element.setAttribute('aria-labelledby', String(props['aria-labelledby']));
200
+ }
201
+ if (props['aria-live'] !== undefined) {
202
+ this.setAriaLive(props['aria-live']);
203
+ }
204
+ if (props['aria-multiselectable'] !== undefined) {
205
+ this.setAriaMultiselectable(props['aria-multiselectable']);
206
+ }
207
+ if (props['aria-orientation'] !== undefined) {
208
+ this.setAriaOrientation(props['aria-orientation']);
209
+ }
210
+ if (props['aria-owns'] !== undefined) {
211
+ this.element.setAttribute('aria-owns', String(props['aria-owns']));
212
+ }
213
+ if (props['aria-relevant'] !== undefined) {
214
+ this.setAriaRelevant(props['aria-relevant']);
215
+ }
216
+ if (props['aria-roledescription'] !== undefined) {
217
+ this.element.setAttribute('aria-roledescription', String(props['aria-roledescription']));
218
+ }
219
+ if (props.autocapitalize !== undefined) {
220
+ this.setAutocapitalize(props.autocapitalize);
221
+ }
222
+ if (props.autofocus !== undefined) {
223
+ this.element.setAttribute('autofocus', String(props.autofocus));
224
+ }
225
+ if (props.contenteditable !== undefined) {
226
+ this.setContenteditable(props.contenteditable);
227
+ }
228
+ if (props.dir !== undefined) {
229
+ this.setDir(props.dir);
230
+ }
231
+ if (props.draggable !== undefined) {
232
+ this.element.setAttribute('draggable', String(props.draggable));
233
+ }
234
+ if (props.hidden !== undefined) {
235
+ this.element.setAttribute('hidden', String(props.hidden));
236
+ }
237
+ if (props.inputmode !== undefined) {
238
+ this.setInputmode(props.inputmode);
239
+ }
240
+ if (props.lang !== undefined) {
241
+ this.element.setAttribute('lang', String(props.lang));
242
+ }
243
+ if (props.popover !== undefined) {
244
+ this.setPopover(props.popover);
245
+ }
246
+ if (props.reversed !== undefined) {
247
+ this.element.setAttribute('reversed', String(props.reversed));
248
+ }
249
+ if (props.role !== undefined) {
250
+ this.setRole(props.role);
251
+ }
252
+ if (props.slot !== undefined) {
253
+ this.element.setAttribute('slot', String(props.slot));
254
+ }
255
+ if (props.spellcheck !== undefined) {
256
+ this.setSpellcheck(props.spellcheck);
257
+ }
258
+ if (props.start !== undefined) {
259
+ this.element.setAttribute('start', String(props.start));
260
+ }
261
+ if (props.style !== undefined) {
262
+ this.element.setAttribute('style', String(props.style));
263
+ }
264
+ if (props.tabindex !== undefined) {
265
+ this.element.setAttribute('tabindex', String(props.tabindex));
266
+ }
267
+ if (props.title !== undefined) {
268
+ this.element.setAttribute('title', String(props.title));
269
+ }
270
+ if (props.translate !== undefined) {
271
+ this.setTranslate(props.translate);
272
+ }
273
+ if (props.type !== undefined) {
274
+ this.setType(props.type);
275
+ }
276
+ }
277
+
278
+ setAccesskey(value: string | null | undefined): this {
279
+ if (value === null || value === undefined) {
280
+ this.element.removeAttribute('accesskey');
281
+ } else {
282
+ this.element.setAttribute('accesskey', String(value));
283
+ }
284
+ return this;
285
+ }
286
+
287
+ setAriaActivedescendant(value: string | null | undefined): this {
288
+ if (value === null || value === undefined) {
289
+ this.element.removeAttribute('aria-activedescendant');
290
+ } else {
291
+ this.element.setAttribute('aria-activedescendant', String(value));
292
+ }
293
+ return this;
294
+ }
295
+
296
+ setAriaAtomic(value: 'false' | 'true' | boolean | null | undefined): this {
297
+ if (value === null || value === undefined) {
298
+ this.element.removeAttribute('aria-atomic');
299
+ } else {
300
+ this.element.setAttribute('aria-atomic', String(value));
301
+ }
302
+ return this;
303
+ }
304
+
305
+ setAriaBusy(value: 'true' | 'false' | boolean | null | undefined): this {
306
+ if (value === null || value === undefined) {
307
+ this.element.removeAttribute('aria-busy');
308
+ } else {
309
+ this.element.setAttribute('aria-busy', String(value));
310
+ }
311
+ return this;
312
+ }
313
+
314
+ setAriaControls(value: string | null | undefined): this {
315
+ if (value === null || value === undefined) {
316
+ this.element.removeAttribute('aria-controls');
317
+ } else {
318
+ this.element.setAttribute('aria-controls', String(value));
319
+ }
320
+ return this;
321
+ }
322
+
323
+ setAriaDescribedby(value: string | null | undefined): this {
324
+ if (value === null || value === undefined) {
325
+ this.element.removeAttribute('aria-describedby');
326
+ } else {
327
+ this.element.setAttribute('aria-describedby', String(value));
328
+ }
329
+ return this;
330
+ }
331
+
332
+ setAriaDetails(value: string | null | undefined): this {
333
+ if (value === null || value === undefined) {
334
+ this.element.removeAttribute('aria-details');
335
+ } else {
336
+ this.element.setAttribute('aria-details', String(value));
337
+ }
338
+ return this;
339
+ }
340
+
341
+ setAriaHidden(value: 'false' | 'true' | boolean | null | undefined): this {
342
+ if (value === null || value === undefined) {
343
+ this.element.removeAttribute('aria-hidden');
344
+ } else {
345
+ this.element.setAttribute('aria-hidden', String(value));
346
+ }
347
+ return this;
348
+ }
349
+
350
+ setAriaKeyshortcuts(value: string | null | undefined): this {
351
+ if (value === null || value === undefined) {
352
+ this.element.removeAttribute('aria-keyshortcuts');
353
+ } else {
354
+ this.element.setAttribute('aria-keyshortcuts', String(value));
355
+ }
356
+ return this;
357
+ }
358
+
359
+ setAriaLabelledby(value: string | null | undefined): this {
360
+ if (value === null || value === undefined) {
361
+ this.element.removeAttribute('aria-labelledby');
362
+ } else {
363
+ this.element.setAttribute('aria-labelledby', String(value));
364
+ }
365
+ return this;
366
+ }
367
+
368
+ setAriaLive(value: 'off' | 'polite' | 'assertive' | null | undefined): this {
369
+ if (value === null || value === undefined) {
370
+ this.element.removeAttribute('aria-live');
371
+ } else {
372
+ this.element.setAttribute('aria-live', String(value));
373
+ }
374
+ return this;
375
+ }
376
+
377
+ setAriaMultiselectable(value: 'false' | 'true' | boolean | null | undefined): this {
378
+ if (value === null || value === undefined) {
379
+ this.element.removeAttribute('aria-multiselectable');
380
+ } else {
381
+ this.element.setAttribute('aria-multiselectable', String(value));
382
+ }
383
+ return this;
384
+ }
385
+
386
+ setAriaOrientation(value: 'horizontal' | 'vertical' | 'undefined' | null | undefined): this {
387
+ if (value === null || value === undefined) {
388
+ this.element.removeAttribute('aria-orientation');
389
+ } else {
390
+ this.element.setAttribute('aria-orientation', String(value));
391
+ }
392
+ return this;
393
+ }
394
+
395
+ setAriaOwns(value: string | null | undefined): this {
396
+ if (value === null || value === undefined) {
397
+ this.element.removeAttribute('aria-owns');
398
+ } else {
399
+ this.element.setAttribute('aria-owns', String(value));
400
+ }
401
+ return this;
402
+ }
403
+
404
+ setAriaRelevant(value: 'additions' | 'removals' | 'text' | 'all' | 'additions text' | null | undefined): this {
405
+ if (value === null || value === undefined) {
406
+ this.element.removeAttribute('aria-relevant');
407
+ } else {
408
+ this.element.setAttribute('aria-relevant', String(value));
409
+ }
410
+ return this;
411
+ }
412
+
413
+ setAriaRoledescription(value: string | null | undefined): this {
414
+ if (value === null || value === undefined) {
415
+ this.element.removeAttribute('aria-roledescription');
416
+ } else {
417
+ this.element.setAttribute('aria-roledescription', String(value));
418
+ }
419
+ return this;
420
+ }
421
+
422
+ setAutocapitalize(value: 'none' | 'sentences' | 'words' | 'characters' | null | undefined): this {
423
+ if (value === null || value === undefined) {
424
+ this.element.removeAttribute('autocapitalize');
425
+ } else {
426
+ this.element.setAttribute('autocapitalize', String(value));
427
+ }
428
+ return this;
429
+ }
430
+
431
+ setAutofocus(value: boolean | null | undefined): this {
432
+ if (value === true) {
433
+ this.element.setAttribute('autofocus', '');
434
+ } else {
435
+ this.element.removeAttribute('autofocus');
436
+ }
437
+ return this;
438
+ }
439
+
440
+ setContenteditable(value: 'true' | 'false' | 'inherit' | boolean | null | undefined): this {
441
+ if (value === null || value === undefined) {
442
+ this.element.removeAttribute('contenteditable');
443
+ } else {
444
+ this.element.setAttribute('contenteditable', String(value));
445
+ }
446
+ return this;
447
+ }
448
+
449
+ setDir(value: 'ltr' | 'rtl' | 'auto' | null | undefined): this {
450
+ if (value === null || value === undefined) {
451
+ this.element.removeAttribute('dir');
452
+ } else {
453
+ this.element.setAttribute('dir', String(value));
454
+ }
455
+ return this;
456
+ }
457
+
458
+ setDraggable(value: boolean | null | undefined): this {
459
+ if (value === true) {
460
+ this.element.setAttribute('draggable', '');
461
+ } else {
462
+ this.element.removeAttribute('draggable');
463
+ }
464
+ return this;
465
+ }
466
+
467
+ setHidden(value: boolean | null | undefined): this {
468
+ if (value === true) {
469
+ this.element.setAttribute('hidden', '');
470
+ } else {
471
+ this.element.removeAttribute('hidden');
472
+ }
473
+ return this;
474
+ }
475
+
476
+ setInputmode(value: 'none' | 'text' | 'decimal' | 'numeric' | 'email' | 'tel' | 'url' | 'search' | null | undefined): this {
477
+ if (value === null || value === undefined) {
478
+ this.element.removeAttribute('inputmode');
479
+ } else {
480
+ this.element.setAttribute('inputmode', String(value));
481
+ }
482
+ return this;
483
+ }
484
+
485
+ setLang(value: string | null | undefined): this {
486
+ if (value === null || value === undefined) {
487
+ this.element.removeAttribute('lang');
488
+ } else {
489
+ this.element.setAttribute('lang', String(value));
490
+ }
491
+ return this;
492
+ }
493
+
494
+ setPopover(value: 'auto' | 'hint' | 'manual' | null | undefined): this {
495
+ if (value === null || value === undefined) {
496
+ this.element.removeAttribute('popover');
497
+ } else {
498
+ this.element.setAttribute('popover', String(value));
499
+ }
500
+ return this;
501
+ }
502
+
503
+ setReversed(value: boolean | null | undefined): this {
504
+ if (value === true) {
505
+ this.element.setAttribute('reversed', '');
506
+ } else {
507
+ this.element.removeAttribute('reversed');
508
+ }
509
+ return this;
510
+ }
511
+
512
+ 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 {
513
+ if (value === null || value === undefined) {
514
+ this.element.removeAttribute('role');
515
+ } else {
516
+ this.element.setAttribute('role', String(value));
517
+ }
518
+ return this;
519
+ }
520
+
521
+ setSlot(value: string | null | undefined): this {
522
+ if (value === null || value === undefined) {
523
+ this.element.removeAttribute('slot');
524
+ } else {
525
+ this.element.setAttribute('slot', String(value));
526
+ }
527
+ return this;
528
+ }
529
+
530
+ setSpellcheck(value: 'true' | 'false' | boolean | null | undefined): this {
531
+ if (value === null || value === undefined) {
532
+ this.element.removeAttribute('spellcheck');
533
+ } else {
534
+ this.element.setAttribute('spellcheck', String(value));
535
+ }
536
+ return this;
537
+ }
538
+
539
+ setStart(value: number | null | undefined): this {
540
+ if (value === null || value === undefined) {
541
+ this.element.removeAttribute('start');
542
+ } else {
543
+ this.element.setAttribute('start', String(value));
544
+ }
545
+ return this;
546
+ }
547
+
548
+ setStyle(value: string | null | undefined): this {
549
+ if (value === null || value === undefined) {
550
+ this.element.removeAttribute('style');
551
+ } else {
552
+ this.element.setAttribute('style', String(value));
553
+ }
554
+ return this;
555
+ }
556
+
557
+ setTabindex(value: number | null | undefined): this {
558
+ if (value === null || value === undefined) {
559
+ this.element.removeAttribute('tabindex');
560
+ } else {
561
+ this.element.setAttribute('tabindex', String(value));
562
+ }
563
+ return this;
564
+ }
565
+
566
+ setTitle(value: string | null | undefined): this {
567
+ if (value === null || value === undefined) {
568
+ this.element.removeAttribute('title');
569
+ } else {
570
+ this.element.setAttribute('title', String(value));
571
+ }
572
+ return this;
573
+ }
574
+
575
+ setTranslate(value: 'yes' | 'no' | null | undefined): this {
576
+ if (value === null || value === undefined) {
577
+ this.element.removeAttribute('translate');
578
+ } else {
579
+ this.element.setAttribute('translate', String(value));
580
+ }
581
+ return this;
582
+ }
583
+
584
+ setType(value: 'a' | 'A' | 'i' | 'I' | '1' | null | undefined): this {
585
+ if (value === null || value === undefined) {
586
+ this.element.removeAttribute('type');
587
+ } else {
588
+ this.element.setAttribute('type', String(value));
589
+ }
590
+ return this;
591
+ }
592
+
593
+ setChildren(children: string | HTMLElement | (string | HTMLElement)[]): this {
594
+ // Clear existing children
595
+ while (this.element.firstChild) {
596
+ this.element.removeChild(this.element.firstChild);
597
+ }
598
+
599
+ if (typeof children === 'string') {
600
+ this.element.textContent = children;
601
+ } else if (Array.isArray(children)) {
602
+ children.forEach(child => {
603
+ if (typeof child === 'string') {
604
+ this.element.appendChild(document.createTextNode(child));
605
+ } else {
606
+ this.element.appendChild(child);
607
+ }
608
+ });
609
+ } else {
610
+ this.element.appendChild(children);
611
+ }
612
+ return this;
613
+ }
614
+
615
+ getElement(): HTMLElement {
616
+ return this.element;
617
+ }
618
+ }