@fluixi/jsx 1.0.0-alpha.53

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.
@@ -0,0 +1,1460 @@
1
+ /**
2
+ * @fileoverview JSX Type Definitions for Fluixi
3
+ * @module @fluixi/core/jsx-runtime
4
+ */
5
+
6
+ import { TemplateResult, SVGTemplateResult } from 'lit';
7
+ import { Accessor } from '@fluixi/reactive/signal';
8
+ import type { DirectiveResult } from 'lit/directive.js';
9
+
10
+ // ============================================================================
11
+ // Helper Types
12
+ // ============================================================================
13
+
14
+ /**
15
+ * A prop value that may be a static value or a reactive accessor. The automatic JSX runtime
16
+ * applies a function-valued prop as a reactive render effect, so any attribute typed with this
17
+ * accepts `() => value` without a cast.
18
+ *
19
+ * The accessor may return `undefined` to omit the attribute reactively — `setAttribute`
20
+ * removes the attr on `undefined`/`null`/`false` — so `() => (cond ? 'true' : undefined)`
21
+ * type-checks without a cast.
22
+ */
23
+ type Reactive<T> = T | undefined | Accessor<T | undefined>;
24
+
25
+ type HTMLDir = 'ltr' | 'rtl' | 'auto';
26
+ type HTMLAutocapitalize = 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
27
+ type HTMLInputMode = 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
28
+ type HTMLFormEncType = 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
29
+ type HTMLFormMethod = 'get' | 'post' | 'dialog';
30
+ type HTMLCrossOrigin = 'anonymous' | 'use-credentials' | '';
31
+ type HTMLReferrerPolicy =
32
+ | ''
33
+ | 'no-referrer'
34
+ | 'no-referrer-when-downgrade'
35
+ | 'origin'
36
+ | 'origin-when-cross-origin'
37
+ | 'same-origin'
38
+ | 'strict-origin'
39
+ | 'strict-origin-when-cross-origin'
40
+ | 'unsafe-url';
41
+
42
+ export namespace JSX {
43
+ // ============================================================================
44
+ // Element
45
+ // ============================================================================
46
+
47
+ export type Element =
48
+ | TemplateResult
49
+ | SVGTemplateResult
50
+ | Node
51
+ | string
52
+ | number
53
+ | boolean
54
+ | null
55
+ | undefined
56
+ | Element[]
57
+ | DirectiveResult<any>
58
+ | HTMLElement | Accessor<any>
59
+ | globalThis.Element;
60
+
61
+ // ============================================================================
62
+ // ARIA Attributes
63
+ // ============================================================================
64
+
65
+ export interface AriaAttributes {
66
+ 'aria-activedescendant'?: Reactive<string>;
67
+ 'aria-atomic'?: Reactive<boolean | 'true' | 'false'>;
68
+ 'aria-autocomplete'?: Reactive<'none' | 'inline' | 'list' | 'both'>;
69
+ 'aria-braillelabel'?: Reactive<string>;
70
+ 'aria-brailleroledescription'?: Reactive<string>;
71
+ 'aria-busy'?: Reactive<boolean | 'true' | 'false'>;
72
+ 'aria-checked'?: Reactive<boolean | 'true' | 'false' | 'mixed'>;
73
+ 'aria-colcount'?: Reactive<number>;
74
+ 'aria-colindex'?: Reactive<number>;
75
+ 'aria-colindextext'?: Reactive<string>;
76
+ 'aria-colspan'?: Reactive<number>;
77
+ 'aria-controls'?: Reactive<string>;
78
+ 'aria-current'?: Reactive<boolean | 'true' | 'false' | 'page' | 'step' | 'location' | 'date' | 'time'>;
79
+ 'aria-describedby'?: Reactive<string>;
80
+ 'aria-description'?: Reactive<string>;
81
+ 'aria-details'?: Reactive<string>;
82
+ 'aria-disabled'?: Reactive<boolean | 'true' | 'false'>;
83
+ /** @deprecated */
84
+ 'aria-dropeffect'?: Reactive<'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup'>;
85
+ 'aria-errormessage'?: Reactive<string>;
86
+ 'aria-expanded'?: Reactive<boolean | 'true' | 'false'>;
87
+ 'aria-flowto'?: Reactive<string>;
88
+ /** @deprecated */
89
+ 'aria-grabbed'?: Reactive<boolean | 'true' | 'false'>;
90
+ 'aria-haspopup'?: Reactive<boolean | 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'>;
91
+ 'aria-hidden'?: Reactive<boolean | 'true' | 'false'>;
92
+ 'aria-invalid'?: Reactive<boolean | 'true' | 'false' | 'grammar' | 'spelling'>;
93
+ 'aria-keyshortcuts'?: Reactive<string>;
94
+ 'aria-label'?: Reactive<string>;
95
+ 'aria-labelledby'?: Reactive<string>;
96
+ 'aria-level'?: Reactive<number>;
97
+ 'aria-live'?: Reactive<'off' | 'assertive' | 'polite'>;
98
+ 'aria-modal'?: Reactive<boolean | 'true' | 'false'>;
99
+ 'aria-multiline'?: Reactive<boolean | 'true' | 'false'>;
100
+ 'aria-multiselectable'?: Reactive<boolean | 'true' | 'false'>;
101
+ 'aria-orientation'?: Reactive<'horizontal' | 'vertical'>;
102
+ 'aria-owns'?: Reactive<string>;
103
+ 'aria-placeholder'?: Reactive<string>;
104
+ 'aria-posinset'?: Reactive<number>;
105
+ 'aria-pressed'?: Reactive<boolean | 'true' | 'false' | 'mixed'>;
106
+ 'aria-readonly'?: Reactive<boolean | 'true' | 'false'>;
107
+ 'aria-relevant'?: Reactive<'additions' | 'additions removals' | 'additions text' | 'all' | 'removals' | 'removals additions' | 'removals text' | 'text' | 'text additions' | 'text removals'>;
108
+ 'aria-required'?: Reactive<boolean | 'true' | 'false'>;
109
+ 'aria-roledescription'?: Reactive<string>;
110
+ 'aria-rowcount'?: Reactive<number>;
111
+ 'aria-rowindex'?: Reactive<number>;
112
+ 'aria-rowindextext'?: Reactive<string>;
113
+ 'aria-rowspan'?: Reactive<number>;
114
+ 'aria-selected'?: Reactive<boolean | 'true' | 'false'>;
115
+ 'aria-setsize'?: Reactive<number>;
116
+ 'aria-sort'?: Reactive<'none' | 'ascending' | 'descending' | 'other'>;
117
+ 'aria-valuemax'?: Reactive<number>;
118
+ 'aria-valuemin'?: Reactive<number>;
119
+ 'aria-valuenow'?: Reactive<number>;
120
+ 'aria-valuetext'?: Reactive<string>;
121
+ role?: Reactive<string>;
122
+ }
123
+
124
+ // ============================================================================
125
+ // DOM Attributes (Events)
126
+ // ============================================================================
127
+
128
+ export interface DOMAttributes<T = Element> extends AriaAttributes {
129
+ // children?: JSX.Element | (()=>any) | ((arg: any) => any);
130
+ // Clipboard Events
131
+ onCopy?: (event: ClipboardEvent) => void;
132
+ onCut?: (event: ClipboardEvent) => void;
133
+ onPaste?: (event: ClipboardEvent) => void;
134
+
135
+ // Composition Events
136
+ onCompositionEnd?: (event: CompositionEvent) => void;
137
+ onCompositionStart?: (event: CompositionEvent) => void;
138
+ onCompositionUpdate?: (event: CompositionEvent) => void;
139
+
140
+ // Focus Events
141
+ onFocus?: (event: FocusEvent) => void;
142
+ onFocusIn?: (event: FocusEvent) => void;
143
+ onFocusOut?: (event: FocusEvent) => void;
144
+ onBlur?: (event: FocusEvent) => void;
145
+
146
+ // Form Events
147
+ onChange?: (event: InputEvent) => void;
148
+ onInput?: (event: InputEvent) => void;
149
+ onBeforeInput?: (event: InputEvent) => void;
150
+ onReset?: (event: Event) => void;
151
+ onSubmit?: (event: SubmitEvent) => void;
152
+ onInvalid?: (event: Event) => void;
153
+ onFormData?: (event: FormDataEvent) => void;
154
+
155
+ // Image Events
156
+ onLoad?: (event: Event) => void;
157
+ onError?: (event: Event) => void;
158
+
159
+ // Keyboard Events
160
+ onKeyDown?: (event: KeyboardEvent) => void;
161
+ /** @deprecated */
162
+ onKeyPress?: (event: KeyboardEvent) => void;
163
+ onKeyUp?: (event: KeyboardEvent) => void;
164
+
165
+ // Media Events
166
+ onAbort?: (event: Event) => void;
167
+ onCanPlay?: (event: Event) => void;
168
+ onCanPlayThrough?: (event: Event) => void;
169
+ onDurationChange?: (event: Event) => void;
170
+ onEmptied?: (event: Event) => void;
171
+ onEncrypted?: (event: Event) => void;
172
+ onEnded?: (event: Event) => void;
173
+ onLoadedData?: (event: Event) => void;
174
+ onLoadedMetadata?: (event: Event) => void;
175
+ onLoadStart?: (event: Event) => void;
176
+ onPause?: (event: Event) => void;
177
+ onPlay?: (event: Event) => void;
178
+ onPlaying?: (event: Event) => void;
179
+ onProgress?: (event: Event) => void;
180
+ onRateChange?: (event: Event) => void;
181
+ onSeeked?: (event: Event) => void;
182
+ onSeeking?: (event: Event) => void;
183
+ onStalled?: (event: Event) => void;
184
+ onSuspend?: (event: Event) => void;
185
+ onTimeUpdate?: (event: Event) => void;
186
+ onVolumeChange?: (event: Event) => void;
187
+ onWaiting?: (event: Event) => void;
188
+ onCueChange?: (event: Event) => void;
189
+
190
+ // Mouse Events
191
+ onClick?: (event: MouseEvent) => void;
192
+ onAuxClick?: (event: MouseEvent) => void;
193
+ onContextMenu?: (event: MouseEvent) => void;
194
+ onDblClick?: (event: MouseEvent) => void;
195
+ /** @deprecated use onDblClick */
196
+ onDoubleClick?: (event: MouseEvent) => void;
197
+ onDrag?: (event: DragEvent) => void;
198
+ onDragEnd?: (event: DragEvent) => void;
199
+ onDragEnter?: (event: DragEvent) => void;
200
+ onDragExit?: (event: DragEvent) => void;
201
+ onDragLeave?: (event: DragEvent) => void;
202
+ onDragOver?: (event: DragEvent) => void;
203
+ onDragStart?: (event: DragEvent) => void;
204
+ onDrop?: (event: DragEvent) => void;
205
+ onMouseDown?: (event: MouseEvent) => void;
206
+ onMouseEnter?: (event: MouseEvent) => void;
207
+ onMouseLeave?: (event: MouseEvent) => void;
208
+ onMouseMove?: (event: MouseEvent) => void;
209
+ onMouseOut?: (event: MouseEvent) => void;
210
+ onMouseOver?: (event: MouseEvent) => void;
211
+ onMouseUp?: (event: MouseEvent) => void;
212
+
213
+ // Pointer Events
214
+ onPointerDown?: (event: PointerEvent) => void;
215
+ onPointerMove?: (event: PointerEvent) => void;
216
+ onPointerUp?: (event: PointerEvent) => void;
217
+ onPointerCancel?: (event: PointerEvent) => void;
218
+ onPointerEnter?: (event: PointerEvent) => void;
219
+ onPointerLeave?: (event: PointerEvent) => void;
220
+ onPointerOver?: (event: PointerEvent) => void;
221
+ onPointerOut?: (event: PointerEvent) => void;
222
+ onGotPointerCapture?: (event: PointerEvent) => void;
223
+ onLostPointerCapture?: (event: PointerEvent) => void;
224
+
225
+ // Selection Events
226
+ onSelect?: (event: Event) => void;
227
+ onSelectionChange?: (event: Event) => void;
228
+ onSelectStart?: (event: Event) => void;
229
+
230
+ // Touch Events
231
+ onTouchCancel?: (event: TouchEvent) => void;
232
+ onTouchEnd?: (event: TouchEvent) => void;
233
+ onTouchMove?: (event: TouchEvent) => void;
234
+ onTouchStart?: (event: TouchEvent) => void;
235
+
236
+ // UI Events
237
+ onScroll?: (event: UIEvent) => void;
238
+ onScrollEnd?: (event: Event) => void;
239
+ onResize?: (event: UIEvent) => void;
240
+
241
+ // Wheel Events
242
+ onWheel?: (event: WheelEvent) => void;
243
+
244
+ // Animation Events
245
+ onAnimationStart?: (event: AnimationEvent) => void;
246
+ onAnimationEnd?: (event: AnimationEvent) => void;
247
+ onAnimationIteration?: (event: AnimationEvent) => void;
248
+ onAnimationCancel?: (event: AnimationEvent) => void;
249
+
250
+ // Transition Events
251
+ onTransitionStart?: (event: TransitionEvent) => void;
252
+ onTransitionRun?: (event: TransitionEvent) => void;
253
+ onTransitionEnd?: (event: TransitionEvent) => void;
254
+ onTransitionCancel?: (event: TransitionEvent) => void;
255
+
256
+ // Toggle/Popover Events
257
+ onToggle?: (event: Event) => void;
258
+ onBeforeToggle?: (event: Event) => void;
259
+
260
+ // Fullscreen Events
261
+ onFullscreenChange?: (event: Event) => void;
262
+ onFullscreenError?: (event: Event) => void;
263
+
264
+ // Slot Events
265
+ onSlotChange?: (event: Event) => void;
266
+
267
+ // Security
268
+ onSecurityPolicyViolation?: (event: SecurityPolicyViolationEvent) => void;
269
+
270
+ // Dialog/Popover
271
+ onClose?: (event: Event) => void;
272
+ onCancel?: (event: Event) => void;
273
+
274
+ // Context Events (WebGL)
275
+ onContextLost?: (event: Event) => void;
276
+ onContextRestored?: (event: Event) => void;
277
+
278
+ // Custom events (arbitrary on* handlers)
279
+ [key: `on${string}`]: ((event: any) => void) | undefined;
280
+ }
281
+
282
+ // ============================================================================
283
+ // HTML Attributes (Base)
284
+ // ============================================================================
285
+
286
+ export interface HTMLAttributes<T = HTMLElement> extends DOMAttributes<T> {
287
+ // Standard HTML attributes
288
+ accessKey?: string;
289
+ accesskey?: string;
290
+ autocapitalize?: HTMLAutocapitalize;
291
+ autoCapitalize?: HTMLAutocapitalize;
292
+ autocorrect?: 'on' | 'off';
293
+ class?: string | Record<string, boolean> | Accessor<string>;
294
+ className?: string | Record<string, boolean> | Accessor<string>;
295
+ classList?: Record<string, boolean>;
296
+ contentEditable?: boolean | 'true' | 'false' | 'inherit' | 'plaintext-only';
297
+ contenteditable?: boolean | 'true' | 'false' | 'inherit' | 'plaintext-only';
298
+ dir?: HTMLDir;
299
+ draggable?: boolean | 'true' | 'false';
300
+ elementtiming?: string;
301
+ enterkeyhint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
302
+ /** @deprecated */
303
+ exportparts?: string;
304
+ exportParts?: string;
305
+ hidden?: Reactive<boolean>;
306
+ id?: string | Accessor<string>;
307
+ inert?: boolean;
308
+ inputmode?: HTMLInputMode;
309
+ inputMode?: HTMLInputMode;
310
+ is?: string;
311
+ lang?: string;
312
+ nonce?: string;
313
+ part?: string;
314
+ popover?: boolean | 'manual' | 'auto';
315
+ slot?: string;
316
+ spellCheck?: boolean;
317
+ spellcheck?: boolean;
318
+ style?: string | Record<string, string | number> | Accessor<string>;
319
+ tabIndex?: Reactive<number>;
320
+ tabindex?: Reactive<number>;
321
+ title?: string | Accessor<string>;
322
+ translate?: 'yes' | 'no';
323
+
324
+ // Microdata (schema.org)
325
+ itemid?: string;
326
+ itemId?: string;
327
+ itemprop?: string;
328
+ itemProp?: string;
329
+ itemref?: string;
330
+ itemRef?: string;
331
+ itemscope?: boolean;
332
+ itemScope?: boolean;
333
+ itemtype?: string;
334
+ itemType?: string;
335
+
336
+ // RDFa
337
+ about?: string;
338
+ datatype?: string;
339
+ inlist?: any;
340
+ prefix?: string;
341
+ property?: string;
342
+ resource?: string;
343
+ typeof?: string;
344
+ vocab?: string;
345
+
346
+ // Lit-specific property/boolean/event bindings
347
+ [key: `.${string}`]: any;
348
+ [key: `?${string}`]: boolean;
349
+ [key: `@${string}`]: EventListener;
350
+
351
+ // Data attributes
352
+ [key: `data-${string}`]: string | number | boolean | undefined;
353
+
354
+ // Ref
355
+ ref?: ((el: T) => void) | { current: T | null };
356
+ key?: string | number;
357
+
358
+ // Children
359
+ children?: Element;
360
+
361
+ // innerHTML / textContent (a static value or a reactive accessor)
362
+ innerHTML?: string | (() => string);
363
+ textContent?: string | number;
364
+ }
365
+
366
+ // ============================================================================
367
+ // Specific Element Attribute Interfaces
368
+ // ============================================================================
369
+
370
+ export interface AnchorHTMLAttributes<T = HTMLAnchorElement> extends HTMLAttributes<T> {
371
+ download?: any;
372
+ href?: string | Accessor<string>;
373
+ hrefLang?: string;
374
+ hreflang?: string;
375
+ media?: string;
376
+ ping?: string;
377
+ rel?: string;
378
+ target?: '_self' | '_blank' | '_parent' | '_top' | (string & {});
379
+ type?: string;
380
+ referrerPolicy?: HTMLReferrerPolicy;
381
+ referrerpolicy?: HTMLReferrerPolicy;
382
+ }
383
+
384
+ export interface AreaHTMLAttributes<T = HTMLAreaElement> extends HTMLAttributes<T> {
385
+ alt?: string;
386
+ coords?: string;
387
+ download?: any;
388
+ href?: string;
389
+ hrefLang?: string;
390
+ hreflang?: string;
391
+ ping?: string;
392
+ referrerpolicy?: HTMLReferrerPolicy;
393
+ referrerPolicy?: HTMLReferrerPolicy;
394
+ rel?: string;
395
+ shape?: string;
396
+ target?: string;
397
+ }
398
+
399
+ export interface BaseHTMLAttributes<T = HTMLBaseElement> extends HTMLAttributes<T> {
400
+ href?: string;
401
+ target?: string;
402
+ }
403
+
404
+ export interface BlockquoteHTMLAttributes<T = HTMLQuoteElement> extends HTMLAttributes<T> {
405
+ cite?: string;
406
+ }
407
+
408
+ export interface ButtonHTMLAttributes<T = HTMLButtonElement> extends HTMLAttributes<T> {
409
+ autofocus?: boolean;
410
+ autoFocus?: boolean;
411
+ command?: string;
412
+ commandfor?: string;
413
+ commandFor?: string;
414
+ disabled?: boolean | Accessor<boolean>;
415
+ form?: string;
416
+ formAction?: string;
417
+ formaction?: string;
418
+ formEncType?: HTMLFormEncType;
419
+ formenctype?: HTMLFormEncType;
420
+ formMethod?: HTMLFormMethod;
421
+ formmethod?: HTMLFormMethod;
422
+ formNoValidate?: boolean;
423
+ formnovalidate?: boolean;
424
+ formTarget?: string;
425
+ formtarget?: string;
426
+ name?: string;
427
+ popoverTarget?: string;
428
+ popovertarget?: string;
429
+ popoverTargetAction?: 'hide' | 'show' | 'toggle';
430
+ popovertargetaction?: 'hide' | 'show' | 'toggle';
431
+ type?: 'submit' | 'reset' | 'button';
432
+ value?: string | ReadonlyArray<string> | number;
433
+ }
434
+
435
+ export interface CanvasHTMLAttributes<T = HTMLCanvasElement> extends HTMLAttributes<T> {
436
+ height?: number | string;
437
+ width?: number | string;
438
+ }
439
+
440
+ export interface ColHTMLAttributes<T = HTMLTableColElement> extends HTMLAttributes<T> {
441
+ span?: number;
442
+ width?: number | string;
443
+ }
444
+
445
+ export interface ColgroupHTMLAttributes<T = HTMLTableColElement> extends HTMLAttributes<T> {
446
+ span?: number;
447
+ }
448
+
449
+ export interface DataHTMLAttributes<T = HTMLDataElement> extends HTMLAttributes<T> {
450
+ value?: string | ReadonlyArray<string> | number;
451
+ }
452
+
453
+ export interface DetailsHTMLAttributes<T = HTMLDetailsElement> extends HTMLAttributes<T> {
454
+ name?: string;
455
+ open?: boolean;
456
+ onToggle?: (event: Event) => void;
457
+ }
458
+
459
+ export interface DialogHTMLAttributes<T = HTMLDialogElement> extends HTMLAttributes<T> {
460
+ open?: boolean;
461
+ onClose?: (event: Event) => void;
462
+ onCancel?: (event: Event) => void;
463
+ }
464
+
465
+ export interface EmbedHTMLAttributes<T = HTMLEmbedElement> extends HTMLAttributes<T> {
466
+ height?: number | string;
467
+ src?: string;
468
+ type?: string;
469
+ width?: number | string;
470
+ }
471
+
472
+ export interface FieldsetHTMLAttributes<T = HTMLFieldSetElement> extends HTMLAttributes<T> {
473
+ disabled?: boolean;
474
+ form?: string;
475
+ name?: string;
476
+ }
477
+
478
+ export interface FormHTMLAttributes<T = HTMLFormElement> extends HTMLAttributes<T> {
479
+ accept?: string;
480
+ 'accept-charset'?: string;
481
+ acceptCharset?: string;
482
+ action?: string;
483
+ autoComplete?: string;
484
+ autocomplete?: string;
485
+ encType?: HTMLFormEncType;
486
+ enctype?: HTMLFormEncType;
487
+ encoding?: HTMLFormEncType;
488
+ method?: HTMLFormMethod;
489
+ name?: string;
490
+ noValidate?: boolean;
491
+ novalidate?: boolean;
492
+ rel?: string;
493
+ target?: string;
494
+ }
495
+
496
+ export interface IframeHTMLAttributes<T = HTMLIFrameElement> extends HTMLAttributes<T> {
497
+ allow?: string;
498
+ allowFullScreen?: boolean;
499
+ allowfullscreen?: boolean;
500
+ allowTransparency?: boolean;
501
+ /** @deprecated */
502
+ frameBorder?: number | string;
503
+ height?: number | string;
504
+ loading?: 'eager' | 'lazy';
505
+ /** @deprecated */
506
+ marginHeight?: number;
507
+ /** @deprecated */
508
+ marginWidth?: number;
509
+ name?: string;
510
+ referrerPolicy?: HTMLReferrerPolicy;
511
+ referrerpolicy?: HTMLReferrerPolicy;
512
+ sandbox?: string;
513
+ /** @deprecated */
514
+ scrolling?: string;
515
+ /** @deprecated */
516
+ seamless?: boolean;
517
+ src?: string;
518
+ srcDoc?: string;
519
+ srcdoc?: string;
520
+ width?: number | string;
521
+ }
522
+
523
+ export interface ImgHTMLAttributes<T = HTMLImageElement> extends HTMLAttributes<T> {
524
+ alt?: string;
525
+ crossOrigin?: HTMLCrossOrigin;
526
+ crossorigin?: HTMLCrossOrigin;
527
+ decoding?: 'async' | 'auto' | 'sync';
528
+ fetchpriority?: 'high' | 'low' | 'auto';
529
+ height?: number | string;
530
+ isMap?: boolean;
531
+ ismap?: boolean;
532
+ loading?: 'eager' | 'lazy';
533
+ referrerPolicy?: HTMLReferrerPolicy;
534
+ referrerpolicy?: HTMLReferrerPolicy;
535
+ sizes?: string;
536
+ src?: string | Accessor<string>;
537
+ srcSet?: string;
538
+ srcset?: string;
539
+ useMap?: string;
540
+ usemap?: string;
541
+ width?: number | string;
542
+ }
543
+
544
+ export interface InputHTMLAttributes<T = HTMLInputElement>
545
+ extends HTMLAttributes<T> {
546
+ accept?: string;
547
+ alt?: string;
548
+ autoComplete?: string;
549
+ autocomplete?: string;
550
+ autoFocus?: boolean;
551
+ autofocus?: boolean;
552
+ capture?: boolean | 'user' | 'environment';
553
+ checked?: boolean | Accessor<boolean>;
554
+ crossOrigin?: HTMLCrossOrigin;
555
+ crossorigin?: HTMLCrossOrigin;
556
+ dirName?: string;
557
+ dirname?: string;
558
+ disabled?: boolean | Accessor<boolean>;
559
+ form?: string;
560
+ formAction?: string;
561
+ formaction?: string;
562
+ formEncType?: HTMLFormEncType;
563
+ formenctype?: HTMLFormEncType;
564
+ formMethod?: HTMLFormMethod;
565
+ formmethod?: HTMLFormMethod;
566
+ formNoValidate?: boolean;
567
+ formnovalidate?: boolean;
568
+ formTarget?: string;
569
+ formtarget?: string;
570
+ height?: number | string;
571
+ incremental?: boolean;
572
+ list?: string;
573
+ max?: Reactive<number | string>;
574
+ maxLength?: Reactive<number>;
575
+ maxlength?: Reactive<number>;
576
+ min?: Reactive<number | string>;
577
+ minLength?: Reactive<number>;
578
+ minlength?: Reactive<number>;
579
+ multiple?: Reactive<boolean>;
580
+ name?: string;
581
+ pattern?: Reactive<string>;
582
+ placeholder?: string | Accessor<string>;
583
+ popoverTarget?: string;
584
+ popovertarget?: string;
585
+ popoverTargetAction?: 'hide' | 'show' | 'toggle';
586
+ popovertargetaction?: 'hide' | 'show' | 'toggle';
587
+ readOnly?: Reactive<boolean>;
588
+ readonly?: Reactive<boolean>;
589
+ required?: Reactive<boolean>;
590
+ results?: number;
591
+ size?: Reactive<number>;
592
+ src?: string;
593
+ step?: Reactive<number | string>;
594
+ indeterminate?: boolean | Accessor<boolean>;
595
+ type?:
596
+ | 'button'
597
+ | 'checkbox'
598
+ | 'color'
599
+ | 'date'
600
+ | 'datetime-local'
601
+ | 'email'
602
+ | 'file'
603
+ | 'hidden'
604
+ | 'image'
605
+ | 'month'
606
+ | 'number'
607
+ | 'password'
608
+ | 'radio'
609
+ | 'range'
610
+ | 'reset'
611
+ | 'search'
612
+ | 'submit'
613
+ | 'tel'
614
+ | 'text'
615
+ | 'time'
616
+ | 'url'
617
+ | 'week'
618
+ | (string & {});
619
+ useMap?: string;
620
+ usemap?: string;
621
+ value?: string | number | ReadonlyArray<string> | Accessor<string | number>;
622
+ width?: number | string;
623
+ }
624
+
625
+ export interface KeygenHTMLAttributes<T = HTMLElement> extends HTMLAttributes<T> {
626
+ /** @deprecated */
627
+ autofocus?: boolean;
628
+ /** @deprecated */
629
+ challenge?: string;
630
+ /** @deprecated */
631
+ disabled?: boolean;
632
+ /** @deprecated */
633
+ form?: string;
634
+ /** @deprecated */
635
+ keytype?: string;
636
+ /** @deprecated */
637
+ keyparams?: string;
638
+ /** @deprecated */
639
+ name?: string;
640
+ }
641
+
642
+ export interface LabelHTMLAttributes<T = HTMLLabelElement> extends HTMLAttributes<T> {
643
+ for?: string;
644
+ htmlFor?: string;
645
+ form?: string;
646
+ }
647
+
648
+ export interface LiHTMLAttributes<T = HTMLLIElement> extends HTMLAttributes<T> {
649
+ value?: number | string;
650
+ }
651
+
652
+ export interface LinkHTMLAttributes<T = HTMLLinkElement> extends HTMLAttributes<T> {
653
+ as?: string;
654
+ crossOrigin?: HTMLCrossOrigin;
655
+ crossorigin?: HTMLCrossOrigin;
656
+ disabled?: boolean;
657
+ fetchpriority?: 'high' | 'low' | 'auto';
658
+ href?: string;
659
+ hrefLang?: string;
660
+ hreflang?: string;
661
+ imageSizes?: string;
662
+ imageSrcSet?: string;
663
+ integrity?: string;
664
+ media?: string;
665
+ referrerPolicy?: HTMLReferrerPolicy;
666
+ referrerpolicy?: HTMLReferrerPolicy;
667
+ rel?: string;
668
+ sizes?: string;
669
+ type?: string;
670
+ }
671
+
672
+ export interface MapHTMLAttributes<T = HTMLMapElement> extends HTMLAttributes<T> {
673
+ name?: string;
674
+ }
675
+
676
+ export interface MediaHTMLAttributes<T = HTMLMediaElement> extends HTMLAttributes<T> {
677
+ autoPlay?: boolean;
678
+ autoplay?: boolean;
679
+ controls?: boolean;
680
+ controlsList?: string;
681
+ crossOrigin?: HTMLCrossOrigin;
682
+ crossorigin?: HTMLCrossOrigin;
683
+ loop?: boolean;
684
+ mediaGroup?: string;
685
+ muted?: boolean;
686
+ playsInline?: boolean;
687
+ playsinline?: boolean;
688
+ preload?: 'none' | 'metadata' | 'auto' | '';
689
+ src?: string;
690
+ }
691
+
692
+ export interface MetaHTMLAttributes<T = HTMLMetaElement> extends HTMLAttributes<T> {
693
+ charSet?: string;
694
+ charset?: string;
695
+ content?: string;
696
+ httpEquiv?: string;
697
+ 'http-equiv'?: string;
698
+ media?: string;
699
+ name?: string;
700
+ }
701
+
702
+ export interface MeterHTMLAttributes<T = HTMLMeterElement> extends HTMLAttributes<T> {
703
+ form?: string;
704
+ high?: number;
705
+ low?: number;
706
+ max?: number | string;
707
+ min?: number | string;
708
+ optimum?: number;
709
+ value?: string | ReadonlyArray<string> | number;
710
+ }
711
+
712
+ export interface ModHTMLAttributes<T = HTMLModElement> extends HTMLAttributes<T> {
713
+ cite?: string;
714
+ dateTime?: string;
715
+ datetime?: string;
716
+ }
717
+
718
+ export interface ObjectHTMLAttributes<T = HTMLObjectElement> extends HTMLAttributes<T> {
719
+ classID?: string;
720
+ data?: string;
721
+ form?: string;
722
+ height?: number | string;
723
+ name?: string;
724
+ type?: string;
725
+ useMap?: string;
726
+ usemap?: string;
727
+ width?: number | string;
728
+ wmode?: string;
729
+ }
730
+
731
+ export interface OlHTMLAttributes<T = HTMLOListElement> extends HTMLAttributes<T> {
732
+ reversed?: boolean;
733
+ start?: number;
734
+ type?: '1' | 'a' | 'A' | 'i' | 'I';
735
+ }
736
+
737
+ export interface OptgroupHTMLAttributes<T = HTMLOptGroupElement> extends HTMLAttributes<T> {
738
+ disabled?: boolean;
739
+ label?: string;
740
+ }
741
+
742
+ export interface OptionHTMLAttributes<T = HTMLOptionElement> extends HTMLAttributes<T> {
743
+ disabled?: boolean;
744
+ label?: string;
745
+ selected?: boolean;
746
+ value?: string | ReadonlyArray<string> | number;
747
+ }
748
+
749
+ export interface OutputHTMLAttributes<T = HTMLOutputElement> extends HTMLAttributes<T> {
750
+ for?: string;
751
+ htmlFor?: string;
752
+ form?: string;
753
+ name?: string;
754
+ }
755
+
756
+ export interface ParamHTMLAttributes<T = HTMLParamElement> extends HTMLAttributes<T> {
757
+ /** @deprecated */
758
+ name?: string;
759
+ /** @deprecated */
760
+ value?: string | ReadonlyArray<string> | number;
761
+ }
762
+
763
+ export interface ProgressHTMLAttributes<T = HTMLProgressElement> extends HTMLAttributes<T> {
764
+ max?: number | string;
765
+ value?: string | ReadonlyArray<string> | number;
766
+ }
767
+
768
+ export interface ScriptHTMLAttributes<T = HTMLScriptElement> extends HTMLAttributes<T> {
769
+ async?: boolean;
770
+ /** @deprecated */
771
+ charSet?: string;
772
+ crossOrigin?: HTMLCrossOrigin;
773
+ crossorigin?: HTMLCrossOrigin;
774
+ defer?: boolean;
775
+ fetchpriority?: 'high' | 'low' | 'auto';
776
+ integrity?: string;
777
+ noModule?: boolean;
778
+ nomodule?: boolean;
779
+ nonce?: string;
780
+ referrerPolicy?: HTMLReferrerPolicy;
781
+ referrerpolicy?: HTMLReferrerPolicy;
782
+ src?: string;
783
+ type?: string;
784
+ }
785
+
786
+ export interface SelectHTMLAttributes<T = HTMLSelectElement> extends HTMLAttributes<T> {
787
+ autoComplete?: string;
788
+ autocomplete?: string;
789
+ autoFocus?: boolean;
790
+ autofocus?: boolean;
791
+ disabled?: boolean | Accessor<boolean>;
792
+ form?: string;
793
+ multiple?: Reactive<boolean>;
794
+ name?: string;
795
+ required?: Reactive<boolean>;
796
+ size?: Reactive<number>;
797
+ value?: string | ReadonlyArray<string> | number | Accessor<string | number>;
798
+ }
799
+
800
+ export interface SlotHTMLAttributes<T = HTMLSlotElement> extends HTMLAttributes<T> {
801
+ name?: string;
802
+ onSlotChange?: (event: Event) => void;
803
+ }
804
+
805
+ export interface SourceHTMLAttributes<T = HTMLSourceElement> extends HTMLAttributes<T> {
806
+ height?: number;
807
+ media?: string;
808
+ sizes?: string;
809
+ src?: string;
810
+ srcSet?: string;
811
+ srcset?: string;
812
+ type?: string;
813
+ width?: number;
814
+ }
815
+
816
+ export interface StyleHTMLAttributes<T = HTMLStyleElement> extends HTMLAttributes<T> {
817
+ media?: string;
818
+ nonce?: string;
819
+ scoped?: boolean;
820
+ type?: string;
821
+ }
822
+
823
+ export interface TableHTMLAttributes<T = HTMLTableElement> extends HTMLAttributes<T> {
824
+ align?: 'left' | 'center' | 'right';
825
+ /** @deprecated */
826
+ bgcolor?: string;
827
+ /** @deprecated */
828
+ border?: number;
829
+ cellPadding?: number | string;
830
+ cellpadding?: number | string;
831
+ cellSpacing?: number | string;
832
+ cellspacing?: number | string;
833
+ summary?: string;
834
+ width?: number | string;
835
+ }
836
+
837
+ export interface TdHTMLAttributes<T = HTMLTableDataCellElement> extends HTMLAttributes<T> {
838
+ align?: 'left' | 'center' | 'right' | 'justify' | 'char';
839
+ colSpan?: number;
840
+ colspan?: number;
841
+ headers?: string;
842
+ rowSpan?: number;
843
+ rowspan?: number;
844
+ scope?: string;
845
+ abbr?: string;
846
+ height?: number | string;
847
+ width?: number | string;
848
+ valign?: 'top' | 'middle' | 'bottom' | 'baseline';
849
+ }
850
+
851
+ export interface TextareaHTMLAttributes<T = HTMLTextAreaElement> extends HTMLAttributes<T> {
852
+ autoComplete?: string;
853
+ autocomplete?: string;
854
+ autoFocus?: boolean;
855
+ autofocus?: boolean;
856
+ cols?: number;
857
+ dirName?: string;
858
+ dirname?: string;
859
+ disabled?: boolean | Accessor<boolean>;
860
+ form?: string;
861
+ maxLength?: Reactive<number>;
862
+ maxlength?: Reactive<number>;
863
+ minLength?: Reactive<number>;
864
+ minlength?: Reactive<number>;
865
+ name?: string;
866
+ placeholder?: string | Accessor<string>;
867
+ readOnly?: Reactive<boolean>;
868
+ readonly?: Reactive<boolean>;
869
+ required?: Reactive<boolean>;
870
+ rows?: number;
871
+ value?: string | ReadonlyArray<string> | Accessor<string>;
872
+ wrap?: 'hard' | 'soft' | 'off';
873
+ }
874
+
875
+ export interface ThHTMLAttributes<T = HTMLTableHeaderCellElement> extends HTMLAttributes<T> {
876
+ align?: 'left' | 'center' | 'right' | 'justify' | 'char';
877
+ abbr?: string;
878
+ colSpan?: number;
879
+ colspan?: number;
880
+ headers?: string;
881
+ rowSpan?: number;
882
+ rowspan?: number;
883
+ scope?: 'col' | 'row' | 'colgroup' | 'rowgroup';
884
+ height?: number | string;
885
+ width?: number | string;
886
+ valign?: 'top' | 'middle' | 'bottom' | 'baseline';
887
+ }
888
+
889
+ export interface TimeHTMLAttributes<T = HTMLTimeElement> extends HTMLAttributes<T> {
890
+ dateTime?: string;
891
+ datetime?: string;
892
+ }
893
+
894
+ export interface TrackHTMLAttributes<T = HTMLTrackElement> extends HTMLAttributes<T> {
895
+ default?: boolean;
896
+ kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
897
+ label?: string;
898
+ src?: string;
899
+ srcLang?: string;
900
+ srclang?: string;
901
+ }
902
+
903
+ export interface VideoHTMLAttributes<T = HTMLVideoElement> extends MediaHTMLAttributes<T> {
904
+ disablePictureInPicture?: boolean;
905
+ disableRemotePlayback?: boolean;
906
+ height?: number | string;
907
+ onEnterPictureInPicture?: (event: Event) => void;
908
+ onLeavePictureInPicture?: (event: Event) => void;
909
+ playsInline?: boolean;
910
+ playsinline?: boolean;
911
+ poster?: string;
912
+ width?: number | string;
913
+ }
914
+
915
+ export interface AudioHTMLAttributes<T = HTMLAudioElement> extends MediaHTMLAttributes<T> {}
916
+
917
+ // ============================================================================
918
+ // SVG Attributes
919
+ // ============================================================================
920
+
921
+ export interface SVGAttributes<T = SVGElement> extends DOMAttributes<T> {
922
+ // Core SVG attributes
923
+ id?: string;
924
+ class?: string | Accessor<string>;
925
+ className?: string;
926
+ style?: string | Record<string, string | number>;
927
+ ref?: ((el: T) => void) | { current: T | null };
928
+ key?: string | number;
929
+ children?: Element | Element[];
930
+ tabIndex?: Reactive<number>;
931
+ tabindex?: Reactive<number>;
932
+ lang?: string;
933
+ xml_lang?: string;
934
+
935
+ // Presentation attributes
936
+ color?: string;
937
+ fill?: string;
938
+ fillOpacity?: number | string;
939
+ 'fill-opacity'?: number | string;
940
+ fillRule?: 'nonzero' | 'evenodd' | 'inherit';
941
+ 'fill-rule'?: 'nonzero' | 'evenodd' | 'inherit';
942
+ opacity?: number | string;
943
+ stroke?: string;
944
+ strokeDasharray?: string | number;
945
+ 'stroke-dasharray'?: string | number;
946
+ strokeDashoffset?: string | number;
947
+ 'stroke-dashoffset'?: string | number;
948
+ strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';
949
+ 'stroke-linecap'?: 'butt' | 'round' | 'square' | 'inherit';
950
+ strokeLinejoin?: 'miter' | 'round' | 'bevel' | 'inherit';
951
+ 'stroke-linejoin'?: 'miter' | 'round' | 'bevel' | 'inherit';
952
+ strokeMiterlimit?: number | string;
953
+ 'stroke-miterlimit'?: number | string;
954
+ strokeOpacity?: number | string;
955
+ 'stroke-opacity'?: number | string;
956
+ strokeWidth?: number | string;
957
+ 'stroke-width'?: number | string;
958
+
959
+ // Geometry
960
+ cx?: number | string;
961
+ cy?: number | string;
962
+ d?: string;
963
+ dx?: number | string;
964
+ dy?: number | string;
965
+ height?: number | string;
966
+ r?: number | string;
967
+ rx?: number | string;
968
+ ry?: number | string;
969
+ width?: number | string;
970
+ x?: number | string;
971
+ x1?: number | string;
972
+ x2?: number | string;
973
+ y?: number | string;
974
+ y1?: number | string;
975
+ y2?: number | string;
976
+
977
+ // Transform
978
+ transform?: string;
979
+ gradientTransform?: string;
980
+ patternTransform?: string;
981
+
982
+ // View
983
+ viewBox?: string;
984
+ preserveAspectRatio?: string;
985
+
986
+ // Text
987
+ dominantBaseline?: string;
988
+ 'dominant-baseline'?: string;
989
+ textAnchor?: string;
990
+ 'text-anchor'?: string;
991
+ fontSize?: number | string;
992
+ 'font-size'?: number | string;
993
+ fontFamily?: string;
994
+ 'font-family'?: string;
995
+ fontStyle?: string;
996
+ 'font-style'?: string;
997
+ fontWeight?: number | string;
998
+ 'font-weight'?: number | string;
999
+ letterSpacing?: number | string;
1000
+ 'letter-spacing'?: number | string;
1001
+ wordSpacing?: number | string;
1002
+ 'word-spacing'?: number | string;
1003
+ textDecoration?: string;
1004
+ 'text-decoration'?: string;
1005
+ writingMode?: string;
1006
+ 'writing-mode'?: string;
1007
+
1008
+ // References
1009
+ href?: string;
1010
+ xlinkHref?: string;
1011
+ 'xlink:href'?: string;
1012
+ xlinkTitle?: string;
1013
+ 'xlink:title'?: string;
1014
+ in?: string;
1015
+ in2?: number | string;
1016
+ result?: string;
1017
+
1018
+ // Filters / effects
1019
+ filter?: string;
1020
+ clipPath?: string;
1021
+ 'clip-path'?: string;
1022
+ clipRule?: number | string;
1023
+ 'clip-rule'?: number | string;
1024
+ mask?: string;
1025
+ cursor?: number | string;
1026
+ display?: number | string;
1027
+ imageRendering?: number | string;
1028
+ 'image-rendering'?: number | string;
1029
+ overflow?: number | string;
1030
+ paintOrder?: number | string;
1031
+ 'paint-order'?: number | string;
1032
+ pointerEvents?: number | string;
1033
+ 'pointer-events'?: number | string;
1034
+ shapeRendering?: number | string;
1035
+ 'shape-rendering'?: number | string;
1036
+ textRendering?: number | string;
1037
+ 'text-rendering'?: number | string;
1038
+ vectorEffect?: number | string;
1039
+ 'vector-effect'?: number | string;
1040
+ visibility?: number | string;
1041
+
1042
+ // Color
1043
+ colorInterpolation?: number | string;
1044
+ 'color-interpolation'?: number | string;
1045
+ colorInterpolationFilters?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit';
1046
+ 'color-interpolation-filters'?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit';
1047
+ colorRendering?: number | string;
1048
+ 'color-rendering'?: number | string;
1049
+ floodColor?: number | string;
1050
+ 'flood-color'?: number | string;
1051
+ floodOpacity?: number | string;
1052
+ 'flood-opacity'?: number | string;
1053
+ lightingColor?: number | string;
1054
+ 'lighting-color'?: number | string;
1055
+ stopColor?: string;
1056
+ 'stop-color'?: string;
1057
+ stopOpacity?: number | string;
1058
+ 'stop-opacity'?: number | string;
1059
+ markerEnd?: string;
1060
+ 'marker-end'?: string;
1061
+ markerMid?: string;
1062
+ 'marker-mid'?: string;
1063
+ markerStart?: string;
1064
+ 'marker-start'?: string;
1065
+
1066
+ // Gradient / Pattern
1067
+ gradientUnits?: string;
1068
+ patternContentUnits?: string;
1069
+ patternUnits?: string;
1070
+ spreadMethod?: 'pad' | 'reflect' | 'repeat';
1071
+ offset?: number | string;
1072
+
1073
+ // Filter primitives
1074
+ baseFrequency?: number | string;
1075
+ bias?: number | string;
1076
+ diffuseConstant?: number | string;
1077
+ divisor?: number | string;
1078
+ edgeMode?: number | string;
1079
+ filterUnits?: number | string;
1080
+ kernelMatrix?: number | string;
1081
+ kernelUnitLength?: number | string;
1082
+ limitingConeAngle?: number | string;
1083
+ mode?: number | string;
1084
+ numOctaves?: number | string;
1085
+ operator?: number | string;
1086
+ order?: number | string;
1087
+ primitiveUnits?: number | string;
1088
+ radius?: number | string;
1089
+ scale?: number | string;
1090
+ seed?: number | string;
1091
+ specularConstant?: number | string;
1092
+ specularExponent?: number | string;
1093
+ stdDeviation?: number | string;
1094
+ surfaceScale?: number | string;
1095
+ tableValues?: number | string;
1096
+ targetX?: number | string;
1097
+ targetY?: number | string;
1098
+ xChannelSelector?: string;
1099
+ yChannelSelector?: string;
1100
+ elevation?: number | string;
1101
+ azimuth?: number | string;
1102
+ diffuseExponent?: number | string;
1103
+
1104
+ // Animation
1105
+ accumulate?: 'none' | 'sum';
1106
+ additive?: 'replace' | 'sum';
1107
+ attributeName?: string;
1108
+ begin?: number | string;
1109
+ by?: number | string;
1110
+ calcMode?: number | string;
1111
+ dur?: number | string;
1112
+ end?: number | string;
1113
+ from?: number | string;
1114
+ keyPoints?: number | string;
1115
+ keySplines?: number | string;
1116
+ keyTimes?: number | string;
1117
+ path?: string;
1118
+ repeatCount?: number | string;
1119
+ repeatDur?: number | string;
1120
+ restart?: number | string;
1121
+ to?: number | string;
1122
+ type?: string;
1123
+ values?: string;
1124
+
1125
+ // Other
1126
+ alignmentBaseline?: string;
1127
+ 'alignment-baseline'?: string;
1128
+ baseline?: string;
1129
+ clipPathUnits?: number | string;
1130
+ contentScriptType?: number | string;
1131
+ contentStyleType?: number | string;
1132
+ decelerate?: number | string;
1133
+ direction?: number | string;
1134
+ exponent?: number | string;
1135
+ externalResourcesRequired?: number | string;
1136
+ filterRes?: number | string;
1137
+ focusable?: number | string;
1138
+ format?: number | string;
1139
+ g1?: number | string;
1140
+ g2?: number | string;
1141
+ glyphName?: number | string;
1142
+ glyphOrientationHorizontal?: number | string;
1143
+ glyphOrientationVertical?: number | string;
1144
+ glyphRef?: number | string;
1145
+ horizAdvX?: number | string;
1146
+ horizOriginX?: number | string;
1147
+ ideographic?: number | string;
1148
+ intercept?: number | string;
1149
+ k?: number | string;
1150
+ k1?: number | string;
1151
+ k2?: number | string;
1152
+ k3?: number | string;
1153
+ k4?: number | string;
1154
+ lengthAdjust?: number | string;
1155
+ local?: number | string;
1156
+ markerHeight?: number | string;
1157
+ markerUnits?: number | string;
1158
+ markerWidth?: number | string;
1159
+ maskContentUnits?: number | string;
1160
+ maskUnits?: number | string;
1161
+ mathematical?: number | string;
1162
+ mediaGroup?: number | string;
1163
+ overlinePosition?: number | string;
1164
+ overlineThickness?: number | string;
1165
+ panose1?: number | string;
1166
+ pathLength?: number | string;
1167
+ points?: string;
1168
+ pointsAtX?: number | string;
1169
+ pointsAtY?: number | string;
1170
+ pointsAtZ?: number | string;
1171
+ refX?: number | string;
1172
+ refY?: number | string;
1173
+ renderingIntent?: number | string;
1174
+ requiredExtensions?: number | string;
1175
+ requiredFeatures?: number | string;
1176
+ rotate?: number | string;
1177
+ slope?: number | string;
1178
+ spacing?: number | string;
1179
+ startOffset?: number | string;
1180
+ stemh?: number | string;
1181
+ stemv?: number | string;
1182
+ stitchTiles?: number | string;
1183
+ strikethroughPosition?: number | string;
1184
+ strikethroughThickness?: number | string;
1185
+ string?: number | string;
1186
+ systemLanguage?: number | string;
1187
+ textLength?: number | string;
1188
+ u1?: number | string;
1189
+ u2?: number | string;
1190
+ underlinePosition?: number | string;
1191
+ underlineThickness?: number | string;
1192
+ unicode?: number | string;
1193
+ unicodeBidi?: number | string;
1194
+ unicodeRange?: number | string;
1195
+ unitsPerEm?: number | string;
1196
+ vAlphabetic?: number | string;
1197
+ vHanging?: number | string;
1198
+ vIdeographic?: number | string;
1199
+ vMathematical?: number | string;
1200
+ version?: string;
1201
+ vertAdvY?: number | string;
1202
+ vertOriginX?: number | string;
1203
+ vertOriginY?: number | string;
1204
+ viewTarget?: number | string;
1205
+ widths?: number | string;
1206
+
1207
+ // Namespace
1208
+ xmlns?: string;
1209
+ 'xmlns:xlink'?: string;
1210
+ xmlnsXlink?: string;
1211
+ xmlBase?: string;
1212
+ xmlLang?: string;
1213
+ xmlSpace?: string;
1214
+ zoomAndPan?: string;
1215
+
1216
+ // SVG specific aria
1217
+ 'aria-label'?: Reactive<string>;
1218
+ 'aria-labelledby'?: Reactive<string>;
1219
+ 'aria-describedby'?: Reactive<string>;
1220
+ 'aria-hidden'?: Reactive<boolean | 'true' | 'false'>;
1221
+ role?: Reactive<string>;
1222
+
1223
+ // Catch-all for vendor/custom SVG attributes
1224
+ [key: string]: any;
1225
+ }
1226
+
1227
+ // ============================================================================
1228
+ // Intrinsic Elements
1229
+ // ============================================================================
1230
+
1231
+ export interface IntrinsicElements {
1232
+ // HTML
1233
+ a: AnchorHTMLAttributes;
1234
+ abbr: HTMLAttributes;
1235
+ address: HTMLAttributes;
1236
+ area: AreaHTMLAttributes;
1237
+ article: HTMLAttributes;
1238
+ aside: HTMLAttributes;
1239
+ audio: AudioHTMLAttributes;
1240
+ b: HTMLAttributes;
1241
+ base: BaseHTMLAttributes;
1242
+ bdi: HTMLAttributes;
1243
+ bdo: HTMLAttributes;
1244
+ big: HTMLAttributes;
1245
+ blockquote: BlockquoteHTMLAttributes;
1246
+ body: HTMLAttributes;
1247
+ br: HTMLAttributes;
1248
+ button: ButtonHTMLAttributes;
1249
+ canvas: CanvasHTMLAttributes;
1250
+ caption: HTMLAttributes;
1251
+ cite: HTMLAttributes;
1252
+ code: HTMLAttributes;
1253
+ col: ColHTMLAttributes;
1254
+ colgroup: ColgroupHTMLAttributes;
1255
+ data: DataHTMLAttributes;
1256
+ datalist: HTMLAttributes;
1257
+ dd: HTMLAttributes;
1258
+ del: ModHTMLAttributes;
1259
+ details: DetailsHTMLAttributes;
1260
+ dfn: HTMLAttributes;
1261
+ dialog: DialogHTMLAttributes;
1262
+ div: HTMLAttributes<HTMLDivElement>;
1263
+ dl: HTMLAttributes;
1264
+ dt: HTMLAttributes;
1265
+ em: HTMLAttributes;
1266
+ embed: EmbedHTMLAttributes;
1267
+ fieldset: FieldsetHTMLAttributes;
1268
+ figcaption: HTMLAttributes;
1269
+ figure: HTMLAttributes;
1270
+ footer: HTMLAttributes;
1271
+ form: FormHTMLAttributes;
1272
+ h1: HTMLAttributes;
1273
+ h2: HTMLAttributes;
1274
+ h3: HTMLAttributes;
1275
+ h4: HTMLAttributes;
1276
+ h5: HTMLAttributes;
1277
+ h6: HTMLAttributes;
1278
+ head: HTMLAttributes;
1279
+ header: HTMLAttributes;
1280
+ hgroup: HTMLAttributes;
1281
+ hr: HTMLAttributes;
1282
+ html: HTMLAttributes;
1283
+ i: HTMLAttributes;
1284
+ iframe: IframeHTMLAttributes;
1285
+ img: ImgHTMLAttributes;
1286
+ input: InputHTMLAttributes;
1287
+ ins: ModHTMLAttributes;
1288
+ kbd: HTMLAttributes;
1289
+ keygen: KeygenHTMLAttributes;
1290
+ label: LabelHTMLAttributes;
1291
+ legend: HTMLAttributes;
1292
+ li: LiHTMLAttributes;
1293
+ link: LinkHTMLAttributes;
1294
+ main: HTMLAttributes;
1295
+ map: MapHTMLAttributes;
1296
+ mark: HTMLAttributes;
1297
+ menu: HTMLAttributes;
1298
+ menuitem: HTMLAttributes;
1299
+ meta: MetaHTMLAttributes;
1300
+ meter: MeterHTMLAttributes;
1301
+ nav: HTMLAttributes;
1302
+ noindex: HTMLAttributes;
1303
+ noscript: HTMLAttributes;
1304
+ object: ObjectHTMLAttributes;
1305
+ ol: OlHTMLAttributes;
1306
+ optgroup: OptgroupHTMLAttributes;
1307
+ option: OptionHTMLAttributes;
1308
+ output: OutputHTMLAttributes;
1309
+ p: HTMLAttributes;
1310
+ param: ParamHTMLAttributes;
1311
+ picture: HTMLAttributes;
1312
+ pre: HTMLAttributes;
1313
+ progress: ProgressHTMLAttributes;
1314
+ q: BlockquoteHTMLAttributes;
1315
+ rp: HTMLAttributes;
1316
+ rt: HTMLAttributes;
1317
+ ruby: HTMLAttributes;
1318
+ s: HTMLAttributes;
1319
+ samp: HTMLAttributes;
1320
+ script: ScriptHTMLAttributes;
1321
+ search: HTMLAttributes;
1322
+ section: HTMLAttributes;
1323
+ select: SelectHTMLAttributes;
1324
+ slot: SlotHTMLAttributes;
1325
+ small: HTMLAttributes;
1326
+ source: SourceHTMLAttributes;
1327
+ span: HTMLAttributes;
1328
+ strong: HTMLAttributes;
1329
+ style: StyleHTMLAttributes;
1330
+ sub: HTMLAttributes;
1331
+ summary: HTMLAttributes;
1332
+ sup: HTMLAttributes;
1333
+ table: TableHTMLAttributes;
1334
+ template: HTMLAttributes;
1335
+ tbody: HTMLAttributes;
1336
+ td: TdHTMLAttributes;
1337
+ textarea: TextareaHTMLAttributes;
1338
+ tfoot: HTMLAttributes;
1339
+ th: ThHTMLAttributes;
1340
+ thead: HTMLAttributes;
1341
+ time: TimeHTMLAttributes;
1342
+ title: HTMLAttributes;
1343
+ tr: HTMLAttributes;
1344
+ track: TrackHTMLAttributes;
1345
+ u: HTMLAttributes;
1346
+ ul: HTMLAttributes;
1347
+ var: HTMLAttributes;
1348
+ video: VideoHTMLAttributes;
1349
+ wbr: HTMLAttributes;
1350
+ webview: HTMLAttributes;
1351
+
1352
+ // SVG
1353
+ svg: SVGAttributes<SVGSVGElement>;
1354
+ animate: SVGAttributes;
1355
+ animateMotion: SVGAttributes;
1356
+ animateTransform: SVGAttributes;
1357
+ circle: SVGAttributes<SVGCircleElement>;
1358
+ clipPath: SVGAttributes<SVGClipPathElement>;
1359
+ defs: SVGAttributes<SVGDefsElement>;
1360
+ desc: SVGAttributes<SVGDescElement>;
1361
+ ellipse: SVGAttributes<SVGEllipseElement>;
1362
+ feBlend: SVGAttributes<SVGFEBlendElement>;
1363
+ feColorMatrix: SVGAttributes<SVGFEColorMatrixElement>;
1364
+ feComponentTransfer: SVGAttributes<SVGFEComponentTransferElement>;
1365
+ feComposite: SVGAttributes<SVGFECompositeElement>;
1366
+ feConvolveMatrix: SVGAttributes<SVGFEConvolveMatrixElement>;
1367
+ feDiffuseLighting: SVGAttributes<SVGFEDiffuseLightingElement>;
1368
+ feDisplacementMap: SVGAttributes<SVGFEDisplacementMapElement>;
1369
+ feDistantLight: SVGAttributes<SVGFEDistantLightElement>;
1370
+ feDropShadow: SVGAttributes;
1371
+ feFlood: SVGAttributes<SVGFEFloodElement>;
1372
+ feFuncA: SVGAttributes<SVGFEFuncAElement>;
1373
+ feFuncB: SVGAttributes<SVGFEFuncBElement>;
1374
+ feFuncG: SVGAttributes<SVGFEFuncGElement>;
1375
+ feFuncR: SVGAttributes<SVGFEFuncRElement>;
1376
+ feGaussianBlur: SVGAttributes<SVGFEGaussianBlurElement>;
1377
+ feImage: SVGAttributes<SVGFEImageElement>;
1378
+ feMerge: SVGAttributes<SVGFEMergeElement>;
1379
+ feMergeNode: SVGAttributes<SVGFEMergeNodeElement>;
1380
+ feMorphology: SVGAttributes<SVGFEMorphologyElement>;
1381
+ feOffset: SVGAttributes<SVGFEOffsetElement>;
1382
+ fePointLight: SVGAttributes<SVGFEPointLightElement>;
1383
+ feSpecularLighting: SVGAttributes<SVGFESpecularLightingElement>;
1384
+ feSpotLight: SVGAttributes<SVGFESpotLightElement>;
1385
+ feTile: SVGAttributes<SVGFETileElement>;
1386
+ feTurbulence: SVGAttributes<SVGFETurbulenceElement>;
1387
+ filter: SVGAttributes<SVGFilterElement>;
1388
+ foreignObject: SVGAttributes<SVGForeignObjectElement>;
1389
+ g: SVGAttributes<SVGGElement>;
1390
+ image: SVGAttributes<SVGImageElement>;
1391
+ line: SVGAttributes<SVGLineElement>;
1392
+ linearGradient: SVGAttributes<SVGLinearGradientElement>;
1393
+ marker: SVGAttributes<SVGMarkerElement>;
1394
+ mask: SVGAttributes<SVGMaskElement>;
1395
+ metadata: SVGAttributes<SVGMetadataElement>;
1396
+ mpath: SVGAttributes;
1397
+ path: SVGAttributes<SVGPathElement>;
1398
+ pattern: SVGAttributes<SVGPatternElement>;
1399
+ polygon: SVGAttributes<SVGPolygonElement>;
1400
+ polyline: SVGAttributes<SVGPolylineElement>;
1401
+ radialGradient: SVGAttributes<SVGRadialGradientElement>;
1402
+ rect: SVGAttributes<SVGRectElement>;
1403
+ stop: SVGAttributes<SVGStopElement>;
1404
+ switch: SVGAttributes<SVGSwitchElement>;
1405
+ symbol: SVGAttributes<SVGSymbolElement>;
1406
+ text: SVGAttributes<SVGTextElement>;
1407
+ textPath: SVGAttributes<SVGTextPathElement>;
1408
+ tspan: SVGAttributes<SVGTSpanElement>;
1409
+ use: SVGAttributes<SVGUseElement>;
1410
+ view: SVGAttributes<SVGViewElement>;
1411
+ [s: string]: any;
1412
+
1413
+ // Custom elements: picks up FluixiElements augmentations automatically
1414
+ [elemName: string]: any;
1415
+ }
1416
+ interface ElementChildrenAttribute {
1417
+ children: {};
1418
+ }
1419
+ }
1420
+
1421
+
1422
+ /**
1423
+ * Global augmentable interface for registering custom element JSX types.
1424
+ * Augment this instead of JSX.IntrinsicElements to avoid eslint namespace errors.
1425
+ *
1426
+ * @example
1427
+ * ```ts
1428
+ * declare global {
1429
+ * interface FluixiElements {
1430
+ * 'my-counter': FluixiElementJSXAttributes<typeof MyCounter>;
1431
+ * }
1432
+ * }
1433
+ * ```
1434
+ */
1435
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
1436
+ interface FluixiElements {}
1437
+
1438
+ // declare global {
1439
+ // // eslint-disable-next-line @typescript-eslint/no-empty-interface
1440
+ // interface FluixiElements {}
1441
+ // }
1442
+ declare global {
1443
+ // Re-export FluixiElements so augmentations merge globally
1444
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
1445
+ interface FluixiElements {}
1446
+
1447
+ namespace JSX {
1448
+ type Element = import('./jsx.d').JSX.Element;
1449
+ type IntrinsicElements = import('./jsx.d').JSX.IntrinsicElements;
1450
+ interface Element extends JSX.Element, FluixiElements {
1451
+ strings?: TemplateStringsArray;
1452
+ values?: readonly unknown[];
1453
+ _$litType$?: number;
1454
+ }
1455
+ interface IntrinsicElements extends JSX.IntrinsicElements, FluixiElements {}
1456
+ interface ElementChildrenAttribute {
1457
+ children: {};
1458
+ }
1459
+ }
1460
+ }