@fictjs/runtime 0.0.2 → 0.0.3

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 fictjs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,671 @@
1
+ /** Fict Virtual Node - represents a component or element in the virtual tree */
2
+ interface FictVNode {
3
+ /** Element type: tag name, Fragment symbol, or component function */
4
+ type: string | symbol | ((props: Record<string, unknown>) => FictNode);
5
+ /** Props passed to the element/component */
6
+ props: Record<string, unknown> | null;
7
+ /** Optional key for list rendering optimization */
8
+ key?: string | undefined;
9
+ }
10
+ /**
11
+ * Fict Node - represents any renderable value
12
+ * This type covers all possible values that can appear in JSX
13
+ */
14
+ type FictNode = FictVNode | FictNode[] | Node | string | number | boolean | null | undefined;
15
+
16
+ declare const Fragment: unique symbol;
17
+ declare function jsx(type: string | typeof Fragment | ((props: Record<string, unknown>) => FictNode), props: Record<string, unknown>, key?: string): FictNode;
18
+ declare const jsxs: typeof jsx;
19
+ declare const jsxDEV: typeof jsx;
20
+ declare namespace JSX {
21
+ type Element = FictNode;
22
+ interface IntrinsicElements {
23
+ html: HTMLAttributes<HTMLHtmlElement>;
24
+ head: HTMLAttributes<HTMLHeadElement>;
25
+ body: HTMLAttributes<HTMLBodyElement>;
26
+ title: HTMLAttributes<HTMLTitleElement>;
27
+ meta: MetaHTMLAttributes<HTMLMetaElement>;
28
+ link: LinkHTMLAttributes<HTMLLinkElement>;
29
+ style: StyleHTMLAttributes<HTMLStyleElement>;
30
+ script: ScriptHTMLAttributes<HTMLScriptElement>;
31
+ noscript: HTMLAttributes<HTMLElement>;
32
+ div: HTMLAttributes<HTMLDivElement>;
33
+ span: HTMLAttributes<HTMLSpanElement>;
34
+ main: HTMLAttributes<HTMLElement>;
35
+ header: HTMLAttributes<HTMLElement>;
36
+ footer: HTMLAttributes<HTMLElement>;
37
+ section: HTMLAttributes<HTMLElement>;
38
+ article: HTMLAttributes<HTMLElement>;
39
+ aside: HTMLAttributes<HTMLElement>;
40
+ nav: HTMLAttributes<HTMLElement>;
41
+ address: HTMLAttributes<HTMLElement>;
42
+ h1: HTMLAttributes<HTMLHeadingElement>;
43
+ h2: HTMLAttributes<HTMLHeadingElement>;
44
+ h3: HTMLAttributes<HTMLHeadingElement>;
45
+ h4: HTMLAttributes<HTMLHeadingElement>;
46
+ h5: HTMLAttributes<HTMLHeadingElement>;
47
+ h6: HTMLAttributes<HTMLHeadingElement>;
48
+ hgroup: HTMLAttributes<HTMLElement>;
49
+ p: HTMLAttributes<HTMLParagraphElement>;
50
+ blockquote: BlockquoteHTMLAttributes<HTMLQuoteElement>;
51
+ pre: HTMLAttributes<HTMLPreElement>;
52
+ figure: HTMLAttributes<HTMLElement>;
53
+ figcaption: HTMLAttributes<HTMLElement>;
54
+ hr: HTMLAttributes<HTMLHRElement>;
55
+ br: HTMLAttributes<HTMLBRElement>;
56
+ wbr: HTMLAttributes<HTMLElement>;
57
+ a: AnchorHTMLAttributes<HTMLAnchorElement>;
58
+ abbr: HTMLAttributes<HTMLElement>;
59
+ b: HTMLAttributes<HTMLElement>;
60
+ bdi: HTMLAttributes<HTMLElement>;
61
+ bdo: HTMLAttributes<HTMLElement>;
62
+ cite: HTMLAttributes<HTMLElement>;
63
+ code: HTMLAttributes<HTMLElement>;
64
+ data: DataHTMLAttributes<HTMLDataElement>;
65
+ dfn: HTMLAttributes<HTMLElement>;
66
+ em: HTMLAttributes<HTMLElement>;
67
+ i: HTMLAttributes<HTMLElement>;
68
+ kbd: HTMLAttributes<HTMLElement>;
69
+ mark: HTMLAttributes<HTMLElement>;
70
+ q: QuoteHTMLAttributes<HTMLQuoteElement>;
71
+ rp: HTMLAttributes<HTMLElement>;
72
+ rt: HTMLAttributes<HTMLElement>;
73
+ ruby: HTMLAttributes<HTMLElement>;
74
+ s: HTMLAttributes<HTMLElement>;
75
+ samp: HTMLAttributes<HTMLElement>;
76
+ small: HTMLAttributes<HTMLElement>;
77
+ strong: HTMLAttributes<HTMLElement>;
78
+ sub: HTMLAttributes<HTMLElement>;
79
+ sup: HTMLAttributes<HTMLElement>;
80
+ time: TimeHTMLAttributes<HTMLTimeElement>;
81
+ u: HTMLAttributes<HTMLElement>;
82
+ var: HTMLAttributes<HTMLElement>;
83
+ ul: HTMLAttributes<HTMLUListElement>;
84
+ ol: OlHTMLAttributes<HTMLOListElement>;
85
+ li: LiHTMLAttributes<HTMLLIElement>;
86
+ dl: HTMLAttributes<HTMLDListElement>;
87
+ dt: HTMLAttributes<HTMLElement>;
88
+ dd: HTMLAttributes<HTMLElement>;
89
+ menu: HTMLAttributes<HTMLMenuElement>;
90
+ table: TableHTMLAttributes<HTMLTableElement>;
91
+ caption: HTMLAttributes<HTMLTableCaptionElement>;
92
+ colgroup: ColgroupHTMLAttributes<HTMLTableColElement>;
93
+ col: ColHTMLAttributes<HTMLTableColElement>;
94
+ thead: HTMLAttributes<HTMLTableSectionElement>;
95
+ tbody: HTMLAttributes<HTMLTableSectionElement>;
96
+ tfoot: HTMLAttributes<HTMLTableSectionElement>;
97
+ tr: HTMLAttributes<HTMLTableRowElement>;
98
+ th: ThHTMLAttributes<HTMLTableCellElement>;
99
+ td: TdHTMLAttributes<HTMLTableCellElement>;
100
+ form: FormHTMLAttributes<HTMLFormElement>;
101
+ fieldset: FieldsetHTMLAttributes<HTMLFieldSetElement>;
102
+ legend: HTMLAttributes<HTMLLegendElement>;
103
+ label: LabelHTMLAttributes<HTMLLabelElement>;
104
+ input: InputHTMLAttributes<HTMLInputElement>;
105
+ button: ButtonHTMLAttributes<HTMLButtonElement>;
106
+ select: SelectHTMLAttributes<HTMLSelectElement>;
107
+ datalist: HTMLAttributes<HTMLDataListElement>;
108
+ optgroup: OptgroupHTMLAttributes<HTMLOptGroupElement>;
109
+ option: OptionHTMLAttributes<HTMLOptionElement>;
110
+ textarea: TextareaHTMLAttributes<HTMLTextAreaElement>;
111
+ output: OutputHTMLAttributes<HTMLOutputElement>;
112
+ progress: ProgressHTMLAttributes<HTMLProgressElement>;
113
+ meter: MeterHTMLAttributes<HTMLMeterElement>;
114
+ details: DetailsHTMLAttributes<HTMLDetailsElement>;
115
+ summary: HTMLAttributes<HTMLElement>;
116
+ dialog: DialogHTMLAttributes<HTMLDialogElement>;
117
+ img: ImgHTMLAttributes<HTMLImageElement>;
118
+ picture: HTMLAttributes<HTMLPictureElement>;
119
+ source: SourceHTMLAttributes<HTMLSourceElement>;
120
+ audio: AudioVideoHTMLAttributes<HTMLAudioElement>;
121
+ video: AudioVideoHTMLAttributes<HTMLVideoElement>;
122
+ track: TrackHTMLAttributes<HTMLTrackElement>;
123
+ map: MapHTMLAttributes<HTMLMapElement>;
124
+ area: AreaHTMLAttributes<HTMLAreaElement>;
125
+ iframe: IframeHTMLAttributes<HTMLIFrameElement>;
126
+ embed: EmbedHTMLAttributes<HTMLEmbedElement>;
127
+ object: ObjectHTMLAttributes<HTMLObjectElement>;
128
+ param: ParamHTMLAttributes<HTMLParamElement>;
129
+ canvas: CanvasHTMLAttributes<HTMLCanvasElement>;
130
+ svg: SVGAttributes<SVGSVGElement>;
131
+ path: SVGAttributes<SVGPathElement>;
132
+ circle: SVGAttributes<SVGCircleElement>;
133
+ rect: SVGAttributes<SVGRectElement>;
134
+ line: SVGAttributes<SVGLineElement>;
135
+ polyline: SVGAttributes<SVGPolylineElement>;
136
+ polygon: SVGAttributes<SVGPolygonElement>;
137
+ ellipse: SVGAttributes<SVGEllipseElement>;
138
+ g: SVGAttributes<SVGGElement>;
139
+ defs: SVGAttributes<SVGDefsElement>;
140
+ use: SVGAttributes<SVGUseElement>;
141
+ text: SVGAttributes<SVGTextElement>;
142
+ tspan: SVGAttributes<SVGTSpanElement>;
143
+ template: HTMLAttributes<HTMLTemplateElement>;
144
+ slot: SlotHTMLAttributes<HTMLSlotElement>;
145
+ portal: HTMLAttributes<HTMLElement>;
146
+ }
147
+ interface ElementChildrenAttribute {
148
+ children: unknown;
149
+ }
150
+ }
151
+ interface HTMLAttributes<T> {
152
+ children?: FictNode | FictNode[];
153
+ key?: string | number;
154
+ id?: string;
155
+ class?: string;
156
+ style?: string | Record<string, string | number>;
157
+ title?: string;
158
+ lang?: string;
159
+ dir?: 'ltr' | 'rtl' | 'auto';
160
+ hidden?: boolean | 'hidden' | 'until-found';
161
+ tabIndex?: number;
162
+ draggable?: boolean | 'true' | 'false';
163
+ contentEditable?: boolean | 'true' | 'false' | 'inherit';
164
+ spellCheck?: boolean | 'true' | 'false';
165
+ translate?: 'yes' | 'no';
166
+ inert?: boolean;
167
+ popover?: 'auto' | 'manual';
168
+ autofocus?: boolean;
169
+ slot?: string;
170
+ accessKey?: string;
171
+ onClick?: (e: MouseEvent) => void;
172
+ onDblClick?: (e: MouseEvent) => void;
173
+ onMouseDown?: (e: MouseEvent) => void;
174
+ onMouseUp?: (e: MouseEvent) => void;
175
+ onMouseMove?: (e: MouseEvent) => void;
176
+ onMouseEnter?: (e: MouseEvent) => void;
177
+ onMouseLeave?: (e: MouseEvent) => void;
178
+ onMouseOver?: (e: MouseEvent) => void;
179
+ onMouseOut?: (e: MouseEvent) => void;
180
+ onContextMenu?: (e: MouseEvent) => void;
181
+ onInput?: (e: InputEvent) => void;
182
+ onChange?: (e: Event) => void;
183
+ onSubmit?: (e: SubmitEvent) => void;
184
+ onReset?: (e: Event) => void;
185
+ onKeyDown?: (e: KeyboardEvent) => void;
186
+ onKeyUp?: (e: KeyboardEvent) => void;
187
+ onKeyPress?: (e: KeyboardEvent) => void;
188
+ onFocus?: (e: FocusEvent) => void;
189
+ onBlur?: (e: FocusEvent) => void;
190
+ onScroll?: (e: Event) => void;
191
+ onWheel?: (e: WheelEvent) => void;
192
+ onLoad?: (e: Event) => void;
193
+ onError?: (e: Event) => void;
194
+ onDrag?: (e: DragEvent) => void;
195
+ onDragStart?: (e: DragEvent) => void;
196
+ onDragEnd?: (e: DragEvent) => void;
197
+ onDragEnter?: (e: DragEvent) => void;
198
+ onDragLeave?: (e: DragEvent) => void;
199
+ onDragOver?: (e: DragEvent) => void;
200
+ onDrop?: (e: DragEvent) => void;
201
+ onTouchStart?: (e: TouchEvent) => void;
202
+ onTouchMove?: (e: TouchEvent) => void;
203
+ onTouchEnd?: (e: TouchEvent) => void;
204
+ onTouchCancel?: (e: TouchEvent) => void;
205
+ onAnimationStart?: (e: AnimationEvent) => void;
206
+ onAnimationEnd?: (e: AnimationEvent) => void;
207
+ onAnimationIteration?: (e: AnimationEvent) => void;
208
+ onTransitionEnd?: (e: TransitionEvent) => void;
209
+ onPointerDown?: (e: PointerEvent) => void;
210
+ onPointerUp?: (e: PointerEvent) => void;
211
+ onPointerMove?: (e: PointerEvent) => void;
212
+ onPointerEnter?: (e: PointerEvent) => void;
213
+ onPointerLeave?: (e: PointerEvent) => void;
214
+ onPointerOver?: (e: PointerEvent) => void;
215
+ onPointerOut?: (e: PointerEvent) => void;
216
+ onPointerCancel?: (e: PointerEvent) => void;
217
+ ref?: ((el: T | null) => void) | {
218
+ current: T | null;
219
+ };
220
+ role?: string;
221
+ 'aria-hidden'?: boolean | 'true' | 'false';
222
+ 'aria-label'?: string;
223
+ 'aria-labelledby'?: string;
224
+ 'aria-describedby'?: string;
225
+ 'aria-live'?: 'off' | 'polite' | 'assertive';
226
+ 'aria-atomic'?: boolean | 'true' | 'false';
227
+ 'aria-busy'?: boolean | 'true' | 'false';
228
+ 'aria-current'?: boolean | 'true' | 'false' | 'page' | 'step' | 'location' | 'date' | 'time';
229
+ 'aria-disabled'?: boolean | 'true' | 'false';
230
+ 'aria-expanded'?: boolean | 'true' | 'false';
231
+ 'aria-haspopup'?: boolean | 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';
232
+ 'aria-pressed'?: boolean | 'true' | 'false' | 'mixed';
233
+ 'aria-selected'?: boolean | 'true' | 'false';
234
+ 'aria-checked'?: boolean | 'true' | 'false' | 'mixed';
235
+ 'aria-controls'?: string;
236
+ 'aria-owns'?: string;
237
+ 'aria-activedescendant'?: string;
238
+ 'aria-valuemin'?: number;
239
+ 'aria-valuemax'?: number;
240
+ 'aria-valuenow'?: number;
241
+ 'aria-valuetext'?: string;
242
+ 'aria-orientation'?: 'horizontal' | 'vertical';
243
+ 'aria-readonly'?: boolean | 'true' | 'false';
244
+ 'aria-required'?: boolean | 'true' | 'false';
245
+ 'aria-invalid'?: boolean | 'true' | 'false' | 'grammar' | 'spelling';
246
+ 'aria-errormessage'?: string;
247
+ 'aria-modal'?: boolean | 'true' | 'false';
248
+ 'aria-placeholder'?: string;
249
+ 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other';
250
+ 'aria-colcount'?: number;
251
+ 'aria-colindex'?: number;
252
+ 'aria-colspan'?: number;
253
+ 'aria-rowcount'?: number;
254
+ 'aria-rowindex'?: number;
255
+ 'aria-rowspan'?: number;
256
+ 'aria-setsize'?: number;
257
+ 'aria-posinset'?: number;
258
+ 'aria-level'?: number;
259
+ 'aria-multiselectable'?: boolean | 'true' | 'false';
260
+ 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both';
261
+ 'aria-details'?: string;
262
+ 'aria-keyshortcuts'?: string;
263
+ 'aria-roledescription'?: string;
264
+ [key: `data-${string}`]: string | number | boolean | undefined;
265
+ }
266
+ interface AnchorHTMLAttributes<T> extends HTMLAttributes<T> {
267
+ href?: string;
268
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
269
+ rel?: string;
270
+ download?: boolean | string;
271
+ hreflang?: string;
272
+ type?: string;
273
+ referrerPolicy?: ReferrerPolicy;
274
+ ping?: string;
275
+ }
276
+ interface ButtonHTMLAttributes<T> extends HTMLAttributes<T> {
277
+ type?: 'button' | 'submit' | 'reset';
278
+ disabled?: boolean;
279
+ name?: string;
280
+ value?: string;
281
+ form?: string;
282
+ formAction?: string;
283
+ formEncType?: string;
284
+ formMethod?: string;
285
+ formNoValidate?: boolean;
286
+ formTarget?: string;
287
+ popovertarget?: string;
288
+ popovertargetaction?: 'show' | 'hide' | 'toggle';
289
+ }
290
+ interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
291
+ type?: string;
292
+ value?: string | number | readonly string[];
293
+ defaultValue?: string | number | readonly string[];
294
+ checked?: boolean;
295
+ defaultChecked?: boolean;
296
+ disabled?: boolean;
297
+ placeholder?: string;
298
+ name?: string;
299
+ form?: string;
300
+ required?: boolean;
301
+ readonly?: boolean;
302
+ multiple?: boolean;
303
+ min?: number | string;
304
+ max?: number | string;
305
+ minLength?: number;
306
+ maxLength?: number;
307
+ step?: number | string;
308
+ pattern?: string;
309
+ size?: number;
310
+ accept?: string;
311
+ capture?: boolean | 'user' | 'environment';
312
+ list?: string;
313
+ autoComplete?: string;
314
+ autoCapitalize?: string;
315
+ inputMode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
316
+ enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
317
+ height?: number | string;
318
+ width?: number | string;
319
+ alt?: string;
320
+ src?: string;
321
+ formAction?: string;
322
+ formEncType?: string;
323
+ formMethod?: string;
324
+ formNoValidate?: boolean;
325
+ formTarget?: string;
326
+ }
327
+ interface FormHTMLAttributes<T> extends HTMLAttributes<T> {
328
+ action?: string;
329
+ method?: 'get' | 'post' | 'dialog';
330
+ encType?: string;
331
+ target?: string;
332
+ name?: string;
333
+ noValidate?: boolean;
334
+ autoComplete?: 'on' | 'off';
335
+ acceptCharset?: string;
336
+ }
337
+ interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {
338
+ src?: string;
339
+ alt?: string;
340
+ width?: number | string;
341
+ height?: number | string;
342
+ srcSet?: string;
343
+ sizes?: string;
344
+ loading?: 'eager' | 'lazy';
345
+ decoding?: 'async' | 'auto' | 'sync';
346
+ crossOrigin?: 'anonymous' | 'use-credentials';
347
+ referrerPolicy?: ReferrerPolicy;
348
+ useMap?: string;
349
+ isMap?: boolean;
350
+ fetchPriority?: 'auto' | 'high' | 'low';
351
+ }
352
+ interface TextareaHTMLAttributes<T> extends HTMLAttributes<T> {
353
+ value?: string | number;
354
+ defaultValue?: string;
355
+ disabled?: boolean;
356
+ placeholder?: string;
357
+ name?: string;
358
+ form?: string;
359
+ required?: boolean;
360
+ readonly?: boolean;
361
+ rows?: number;
362
+ cols?: number;
363
+ minLength?: number;
364
+ maxLength?: number;
365
+ wrap?: 'hard' | 'soft' | 'off';
366
+ autoComplete?: string;
367
+ }
368
+ interface SelectHTMLAttributes<T> extends HTMLAttributes<T> {
369
+ value?: string | number | readonly string[];
370
+ defaultValue?: string | number | readonly string[];
371
+ disabled?: boolean;
372
+ name?: string;
373
+ form?: string;
374
+ required?: boolean;
375
+ multiple?: boolean;
376
+ size?: number;
377
+ autoComplete?: string;
378
+ }
379
+ interface OptionHTMLAttributes<T> extends HTMLAttributes<T> {
380
+ value?: string | number;
381
+ disabled?: boolean;
382
+ selected?: boolean;
383
+ label?: string;
384
+ }
385
+ interface OptgroupHTMLAttributes<T> extends HTMLAttributes<T> {
386
+ disabled?: boolean;
387
+ label?: string;
388
+ }
389
+ interface LabelHTMLAttributes<T> extends HTMLAttributes<T> {
390
+ for?: string;
391
+ htmlFor?: string;
392
+ form?: string;
393
+ }
394
+ interface FieldsetHTMLAttributes<T> extends HTMLAttributes<T> {
395
+ disabled?: boolean;
396
+ name?: string;
397
+ form?: string;
398
+ }
399
+ interface OutputHTMLAttributes<T> extends HTMLAttributes<T> {
400
+ for?: string;
401
+ htmlFor?: string;
402
+ form?: string;
403
+ name?: string;
404
+ }
405
+ interface ProgressHTMLAttributes<T> extends HTMLAttributes<T> {
406
+ value?: number | string;
407
+ max?: number | string;
408
+ }
409
+ interface MeterHTMLAttributes<T> extends HTMLAttributes<T> {
410
+ value?: number | string;
411
+ min?: number | string;
412
+ max?: number | string;
413
+ low?: number | string;
414
+ high?: number | string;
415
+ optimum?: number | string;
416
+ }
417
+ interface TableHTMLAttributes<T> extends HTMLAttributes<T> {
418
+ cellPadding?: number | string;
419
+ cellSpacing?: number | string;
420
+ border?: number | string;
421
+ }
422
+ interface ThHTMLAttributes<T> extends HTMLAttributes<T> {
423
+ colSpan?: number;
424
+ rowSpan?: number;
425
+ scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
426
+ abbr?: string;
427
+ headers?: string;
428
+ }
429
+ interface TdHTMLAttributes<T> extends HTMLAttributes<T> {
430
+ colSpan?: number;
431
+ rowSpan?: number;
432
+ headers?: string;
433
+ }
434
+ interface ColHTMLAttributes<T> extends HTMLAttributes<T> {
435
+ span?: number;
436
+ }
437
+ interface ColgroupHTMLAttributes<T> extends HTMLAttributes<T> {
438
+ span?: number;
439
+ }
440
+ interface OlHTMLAttributes<T> extends HTMLAttributes<T> {
441
+ start?: number;
442
+ reversed?: boolean;
443
+ type?: '1' | 'a' | 'A' | 'i' | 'I';
444
+ }
445
+ interface LiHTMLAttributes<T> extends HTMLAttributes<T> {
446
+ value?: number;
447
+ }
448
+ interface AudioVideoHTMLAttributes<T> extends HTMLAttributes<T> {
449
+ src?: string;
450
+ controls?: boolean;
451
+ autoPlay?: boolean;
452
+ loop?: boolean;
453
+ muted?: boolean;
454
+ preload?: 'none' | 'metadata' | 'auto';
455
+ crossOrigin?: 'anonymous' | 'use-credentials';
456
+ poster?: string;
457
+ width?: number | string;
458
+ height?: number | string;
459
+ playsInline?: boolean;
460
+ disableRemotePlayback?: boolean;
461
+ onPlay?: (e: Event) => void;
462
+ onPause?: (e: Event) => void;
463
+ onEnded?: (e: Event) => void;
464
+ onTimeUpdate?: (e: Event) => void;
465
+ onVolumeChange?: (e: Event) => void;
466
+ onSeeking?: (e: Event) => void;
467
+ onSeeked?: (e: Event) => void;
468
+ onLoadedData?: (e: Event) => void;
469
+ onLoadedMetadata?: (e: Event) => void;
470
+ onCanPlay?: (e: Event) => void;
471
+ onCanPlayThrough?: (e: Event) => void;
472
+ onWaiting?: (e: Event) => void;
473
+ onPlaying?: (e: Event) => void;
474
+ onProgress?: (e: Event) => void;
475
+ onDurationChange?: (e: Event) => void;
476
+ onRateChange?: (e: Event) => void;
477
+ onStalled?: (e: Event) => void;
478
+ onSuspend?: (e: Event) => void;
479
+ onEmptied?: (e: Event) => void;
480
+ }
481
+ interface SourceHTMLAttributes<T> extends HTMLAttributes<T> {
482
+ src?: string;
483
+ srcSet?: string;
484
+ sizes?: string;
485
+ type?: string;
486
+ media?: string;
487
+ width?: number | string;
488
+ height?: number | string;
489
+ }
490
+ interface TrackHTMLAttributes<T> extends HTMLAttributes<T> {
491
+ src?: string;
492
+ srcLang?: string;
493
+ label?: string;
494
+ kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
495
+ default?: boolean;
496
+ }
497
+ interface IframeHTMLAttributes<T> extends HTMLAttributes<T> {
498
+ src?: string;
499
+ srcDoc?: string;
500
+ name?: string;
501
+ width?: number | string;
502
+ height?: number | string;
503
+ allow?: string;
504
+ allowFullScreen?: boolean;
505
+ sandbox?: string;
506
+ loading?: 'eager' | 'lazy';
507
+ referrerPolicy?: ReferrerPolicy;
508
+ }
509
+ interface EmbedHTMLAttributes<T> extends HTMLAttributes<T> {
510
+ src?: string;
511
+ type?: string;
512
+ width?: number | string;
513
+ height?: number | string;
514
+ }
515
+ interface ObjectHTMLAttributes<T> extends HTMLAttributes<T> {
516
+ data?: string;
517
+ type?: string;
518
+ name?: string;
519
+ width?: number | string;
520
+ height?: number | string;
521
+ form?: string;
522
+ useMap?: string;
523
+ }
524
+ interface ParamHTMLAttributes<T> extends HTMLAttributes<T> {
525
+ name?: string;
526
+ value?: string;
527
+ }
528
+ interface CanvasHTMLAttributes<T> extends HTMLAttributes<T> {
529
+ width?: number | string;
530
+ height?: number | string;
531
+ }
532
+ interface MapHTMLAttributes<T> extends HTMLAttributes<T> {
533
+ name?: string;
534
+ }
535
+ interface AreaHTMLAttributes<T> extends HTMLAttributes<T> {
536
+ alt?: string;
537
+ coords?: string;
538
+ href?: string;
539
+ hreflang?: string;
540
+ download?: boolean | string;
541
+ rel?: string;
542
+ shape?: 'rect' | 'circle' | 'poly' | 'default';
543
+ target?: string;
544
+ referrerPolicy?: ReferrerPolicy;
545
+ ping?: string;
546
+ }
547
+ interface DetailsHTMLAttributes<T> extends HTMLAttributes<T> {
548
+ open?: boolean;
549
+ onToggle?: (e: Event) => void;
550
+ }
551
+ interface DialogHTMLAttributes<T> extends HTMLAttributes<T> {
552
+ open?: boolean;
553
+ onClose?: (e: Event) => void;
554
+ onCancel?: (e: Event) => void;
555
+ }
556
+ interface BlockquoteHTMLAttributes<T> extends HTMLAttributes<T> {
557
+ cite?: string;
558
+ }
559
+ interface QuoteHTMLAttributes<T> extends HTMLAttributes<T> {
560
+ cite?: string;
561
+ }
562
+ interface TimeHTMLAttributes<T> extends HTMLAttributes<T> {
563
+ dateTime?: string;
564
+ }
565
+ interface DataHTMLAttributes<T> extends HTMLAttributes<T> {
566
+ value?: string;
567
+ }
568
+ interface MetaHTMLAttributes<T> extends HTMLAttributes<T> {
569
+ name?: string;
570
+ content?: string;
571
+ httpEquiv?: string;
572
+ charSet?: string;
573
+ property?: string;
574
+ }
575
+ interface LinkHTMLAttributes<T> extends HTMLAttributes<T> {
576
+ href?: string;
577
+ rel?: string;
578
+ type?: string;
579
+ media?: string;
580
+ as?: string;
581
+ crossOrigin?: 'anonymous' | 'use-credentials';
582
+ referrerPolicy?: ReferrerPolicy;
583
+ sizes?: string;
584
+ hreflang?: string;
585
+ integrity?: string;
586
+ fetchPriority?: 'auto' | 'high' | 'low';
587
+ disabled?: boolean;
588
+ }
589
+ interface StyleHTMLAttributes<T> extends HTMLAttributes<T> {
590
+ media?: string;
591
+ nonce?: string;
592
+ blocking?: string;
593
+ }
594
+ interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {
595
+ src?: string;
596
+ type?: string;
597
+ async?: boolean;
598
+ defer?: boolean;
599
+ crossOrigin?: 'anonymous' | 'use-credentials';
600
+ integrity?: string;
601
+ noModule?: boolean;
602
+ nonce?: string;
603
+ referrerPolicy?: ReferrerPolicy;
604
+ fetchPriority?: 'auto' | 'high' | 'low';
605
+ blocking?: string;
606
+ }
607
+ interface SlotHTMLAttributes<T> extends HTMLAttributes<T> {
608
+ name?: string;
609
+ onSlotchange?: (e: Event) => void;
610
+ }
611
+ interface SVGAttributes<T> extends HTMLAttributes<T> {
612
+ viewBox?: string;
613
+ xmlns?: string;
614
+ xmlnsXlink?: string;
615
+ fill?: string;
616
+ stroke?: string;
617
+ strokeWidth?: string | number;
618
+ strokeLinecap?: 'butt' | 'round' | 'square';
619
+ strokeLinejoin?: 'miter' | 'round' | 'bevel';
620
+ strokeDasharray?: string;
621
+ strokeDashoffset?: string | number;
622
+ strokeOpacity?: string | number;
623
+ fillOpacity?: string | number;
624
+ opacity?: string | number;
625
+ transform?: string;
626
+ transformOrigin?: string;
627
+ clipPath?: string;
628
+ mask?: string;
629
+ filter?: string;
630
+ d?: string;
631
+ cx?: string | number;
632
+ cy?: string | number;
633
+ r?: string | number;
634
+ rx?: string | number;
635
+ ry?: string | number;
636
+ x?: string | number;
637
+ y?: string | number;
638
+ x1?: string | number;
639
+ y1?: string | number;
640
+ x2?: string | number;
641
+ y2?: string | number;
642
+ width?: string | number;
643
+ height?: string | number;
644
+ points?: string;
645
+ pathLength?: string | number;
646
+ textAnchor?: 'start' | 'middle' | 'end';
647
+ dominantBaseline?: string;
648
+ dx?: string | number;
649
+ dy?: string | number;
650
+ fontSize?: string | number;
651
+ fontFamily?: string;
652
+ fontWeight?: string | number;
653
+ href?: string;
654
+ xlinkHref?: string;
655
+ gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
656
+ gradientTransform?: string;
657
+ spreadMethod?: 'pad' | 'reflect' | 'repeat';
658
+ offset?: string | number;
659
+ stopColor?: string;
660
+ stopOpacity?: string | number;
661
+ clipPathUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
662
+ maskUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
663
+ maskContentUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
664
+ preserveAspectRatio?: string;
665
+ markerStart?: string;
666
+ markerMid?: string;
667
+ markerEnd?: string;
668
+ vectorEffect?: string;
669
+ }
670
+
671
+ export { Fragment, JSX, jsx, jsxDEV, jsxs };
@@ -0,0 +1,671 @@
1
+ /** Fict Virtual Node - represents a component or element in the virtual tree */
2
+ interface FictVNode {
3
+ /** Element type: tag name, Fragment symbol, or component function */
4
+ type: string | symbol | ((props: Record<string, unknown>) => FictNode);
5
+ /** Props passed to the element/component */
6
+ props: Record<string, unknown> | null;
7
+ /** Optional key for list rendering optimization */
8
+ key?: string | undefined;
9
+ }
10
+ /**
11
+ * Fict Node - represents any renderable value
12
+ * This type covers all possible values that can appear in JSX
13
+ */
14
+ type FictNode = FictVNode | FictNode[] | Node | string | number | boolean | null | undefined;
15
+
16
+ declare const Fragment: unique symbol;
17
+ declare function jsx(type: string | typeof Fragment | ((props: Record<string, unknown>) => FictNode), props: Record<string, unknown>, key?: string): FictNode;
18
+ declare const jsxs: typeof jsx;
19
+ declare const jsxDEV: typeof jsx;
20
+ declare namespace JSX {
21
+ type Element = FictNode;
22
+ interface IntrinsicElements {
23
+ html: HTMLAttributes<HTMLHtmlElement>;
24
+ head: HTMLAttributes<HTMLHeadElement>;
25
+ body: HTMLAttributes<HTMLBodyElement>;
26
+ title: HTMLAttributes<HTMLTitleElement>;
27
+ meta: MetaHTMLAttributes<HTMLMetaElement>;
28
+ link: LinkHTMLAttributes<HTMLLinkElement>;
29
+ style: StyleHTMLAttributes<HTMLStyleElement>;
30
+ script: ScriptHTMLAttributes<HTMLScriptElement>;
31
+ noscript: HTMLAttributes<HTMLElement>;
32
+ div: HTMLAttributes<HTMLDivElement>;
33
+ span: HTMLAttributes<HTMLSpanElement>;
34
+ main: HTMLAttributes<HTMLElement>;
35
+ header: HTMLAttributes<HTMLElement>;
36
+ footer: HTMLAttributes<HTMLElement>;
37
+ section: HTMLAttributes<HTMLElement>;
38
+ article: HTMLAttributes<HTMLElement>;
39
+ aside: HTMLAttributes<HTMLElement>;
40
+ nav: HTMLAttributes<HTMLElement>;
41
+ address: HTMLAttributes<HTMLElement>;
42
+ h1: HTMLAttributes<HTMLHeadingElement>;
43
+ h2: HTMLAttributes<HTMLHeadingElement>;
44
+ h3: HTMLAttributes<HTMLHeadingElement>;
45
+ h4: HTMLAttributes<HTMLHeadingElement>;
46
+ h5: HTMLAttributes<HTMLHeadingElement>;
47
+ h6: HTMLAttributes<HTMLHeadingElement>;
48
+ hgroup: HTMLAttributes<HTMLElement>;
49
+ p: HTMLAttributes<HTMLParagraphElement>;
50
+ blockquote: BlockquoteHTMLAttributes<HTMLQuoteElement>;
51
+ pre: HTMLAttributes<HTMLPreElement>;
52
+ figure: HTMLAttributes<HTMLElement>;
53
+ figcaption: HTMLAttributes<HTMLElement>;
54
+ hr: HTMLAttributes<HTMLHRElement>;
55
+ br: HTMLAttributes<HTMLBRElement>;
56
+ wbr: HTMLAttributes<HTMLElement>;
57
+ a: AnchorHTMLAttributes<HTMLAnchorElement>;
58
+ abbr: HTMLAttributes<HTMLElement>;
59
+ b: HTMLAttributes<HTMLElement>;
60
+ bdi: HTMLAttributes<HTMLElement>;
61
+ bdo: HTMLAttributes<HTMLElement>;
62
+ cite: HTMLAttributes<HTMLElement>;
63
+ code: HTMLAttributes<HTMLElement>;
64
+ data: DataHTMLAttributes<HTMLDataElement>;
65
+ dfn: HTMLAttributes<HTMLElement>;
66
+ em: HTMLAttributes<HTMLElement>;
67
+ i: HTMLAttributes<HTMLElement>;
68
+ kbd: HTMLAttributes<HTMLElement>;
69
+ mark: HTMLAttributes<HTMLElement>;
70
+ q: QuoteHTMLAttributes<HTMLQuoteElement>;
71
+ rp: HTMLAttributes<HTMLElement>;
72
+ rt: HTMLAttributes<HTMLElement>;
73
+ ruby: HTMLAttributes<HTMLElement>;
74
+ s: HTMLAttributes<HTMLElement>;
75
+ samp: HTMLAttributes<HTMLElement>;
76
+ small: HTMLAttributes<HTMLElement>;
77
+ strong: HTMLAttributes<HTMLElement>;
78
+ sub: HTMLAttributes<HTMLElement>;
79
+ sup: HTMLAttributes<HTMLElement>;
80
+ time: TimeHTMLAttributes<HTMLTimeElement>;
81
+ u: HTMLAttributes<HTMLElement>;
82
+ var: HTMLAttributes<HTMLElement>;
83
+ ul: HTMLAttributes<HTMLUListElement>;
84
+ ol: OlHTMLAttributes<HTMLOListElement>;
85
+ li: LiHTMLAttributes<HTMLLIElement>;
86
+ dl: HTMLAttributes<HTMLDListElement>;
87
+ dt: HTMLAttributes<HTMLElement>;
88
+ dd: HTMLAttributes<HTMLElement>;
89
+ menu: HTMLAttributes<HTMLMenuElement>;
90
+ table: TableHTMLAttributes<HTMLTableElement>;
91
+ caption: HTMLAttributes<HTMLTableCaptionElement>;
92
+ colgroup: ColgroupHTMLAttributes<HTMLTableColElement>;
93
+ col: ColHTMLAttributes<HTMLTableColElement>;
94
+ thead: HTMLAttributes<HTMLTableSectionElement>;
95
+ tbody: HTMLAttributes<HTMLTableSectionElement>;
96
+ tfoot: HTMLAttributes<HTMLTableSectionElement>;
97
+ tr: HTMLAttributes<HTMLTableRowElement>;
98
+ th: ThHTMLAttributes<HTMLTableCellElement>;
99
+ td: TdHTMLAttributes<HTMLTableCellElement>;
100
+ form: FormHTMLAttributes<HTMLFormElement>;
101
+ fieldset: FieldsetHTMLAttributes<HTMLFieldSetElement>;
102
+ legend: HTMLAttributes<HTMLLegendElement>;
103
+ label: LabelHTMLAttributes<HTMLLabelElement>;
104
+ input: InputHTMLAttributes<HTMLInputElement>;
105
+ button: ButtonHTMLAttributes<HTMLButtonElement>;
106
+ select: SelectHTMLAttributes<HTMLSelectElement>;
107
+ datalist: HTMLAttributes<HTMLDataListElement>;
108
+ optgroup: OptgroupHTMLAttributes<HTMLOptGroupElement>;
109
+ option: OptionHTMLAttributes<HTMLOptionElement>;
110
+ textarea: TextareaHTMLAttributes<HTMLTextAreaElement>;
111
+ output: OutputHTMLAttributes<HTMLOutputElement>;
112
+ progress: ProgressHTMLAttributes<HTMLProgressElement>;
113
+ meter: MeterHTMLAttributes<HTMLMeterElement>;
114
+ details: DetailsHTMLAttributes<HTMLDetailsElement>;
115
+ summary: HTMLAttributes<HTMLElement>;
116
+ dialog: DialogHTMLAttributes<HTMLDialogElement>;
117
+ img: ImgHTMLAttributes<HTMLImageElement>;
118
+ picture: HTMLAttributes<HTMLPictureElement>;
119
+ source: SourceHTMLAttributes<HTMLSourceElement>;
120
+ audio: AudioVideoHTMLAttributes<HTMLAudioElement>;
121
+ video: AudioVideoHTMLAttributes<HTMLVideoElement>;
122
+ track: TrackHTMLAttributes<HTMLTrackElement>;
123
+ map: MapHTMLAttributes<HTMLMapElement>;
124
+ area: AreaHTMLAttributes<HTMLAreaElement>;
125
+ iframe: IframeHTMLAttributes<HTMLIFrameElement>;
126
+ embed: EmbedHTMLAttributes<HTMLEmbedElement>;
127
+ object: ObjectHTMLAttributes<HTMLObjectElement>;
128
+ param: ParamHTMLAttributes<HTMLParamElement>;
129
+ canvas: CanvasHTMLAttributes<HTMLCanvasElement>;
130
+ svg: SVGAttributes<SVGSVGElement>;
131
+ path: SVGAttributes<SVGPathElement>;
132
+ circle: SVGAttributes<SVGCircleElement>;
133
+ rect: SVGAttributes<SVGRectElement>;
134
+ line: SVGAttributes<SVGLineElement>;
135
+ polyline: SVGAttributes<SVGPolylineElement>;
136
+ polygon: SVGAttributes<SVGPolygonElement>;
137
+ ellipse: SVGAttributes<SVGEllipseElement>;
138
+ g: SVGAttributes<SVGGElement>;
139
+ defs: SVGAttributes<SVGDefsElement>;
140
+ use: SVGAttributes<SVGUseElement>;
141
+ text: SVGAttributes<SVGTextElement>;
142
+ tspan: SVGAttributes<SVGTSpanElement>;
143
+ template: HTMLAttributes<HTMLTemplateElement>;
144
+ slot: SlotHTMLAttributes<HTMLSlotElement>;
145
+ portal: HTMLAttributes<HTMLElement>;
146
+ }
147
+ interface ElementChildrenAttribute {
148
+ children: unknown;
149
+ }
150
+ }
151
+ interface HTMLAttributes<T> {
152
+ children?: FictNode | FictNode[];
153
+ key?: string | number;
154
+ id?: string;
155
+ class?: string;
156
+ style?: string | Record<string, string | number>;
157
+ title?: string;
158
+ lang?: string;
159
+ dir?: 'ltr' | 'rtl' | 'auto';
160
+ hidden?: boolean | 'hidden' | 'until-found';
161
+ tabIndex?: number;
162
+ draggable?: boolean | 'true' | 'false';
163
+ contentEditable?: boolean | 'true' | 'false' | 'inherit';
164
+ spellCheck?: boolean | 'true' | 'false';
165
+ translate?: 'yes' | 'no';
166
+ inert?: boolean;
167
+ popover?: 'auto' | 'manual';
168
+ autofocus?: boolean;
169
+ slot?: string;
170
+ accessKey?: string;
171
+ onClick?: (e: MouseEvent) => void;
172
+ onDblClick?: (e: MouseEvent) => void;
173
+ onMouseDown?: (e: MouseEvent) => void;
174
+ onMouseUp?: (e: MouseEvent) => void;
175
+ onMouseMove?: (e: MouseEvent) => void;
176
+ onMouseEnter?: (e: MouseEvent) => void;
177
+ onMouseLeave?: (e: MouseEvent) => void;
178
+ onMouseOver?: (e: MouseEvent) => void;
179
+ onMouseOut?: (e: MouseEvent) => void;
180
+ onContextMenu?: (e: MouseEvent) => void;
181
+ onInput?: (e: InputEvent) => void;
182
+ onChange?: (e: Event) => void;
183
+ onSubmit?: (e: SubmitEvent) => void;
184
+ onReset?: (e: Event) => void;
185
+ onKeyDown?: (e: KeyboardEvent) => void;
186
+ onKeyUp?: (e: KeyboardEvent) => void;
187
+ onKeyPress?: (e: KeyboardEvent) => void;
188
+ onFocus?: (e: FocusEvent) => void;
189
+ onBlur?: (e: FocusEvent) => void;
190
+ onScroll?: (e: Event) => void;
191
+ onWheel?: (e: WheelEvent) => void;
192
+ onLoad?: (e: Event) => void;
193
+ onError?: (e: Event) => void;
194
+ onDrag?: (e: DragEvent) => void;
195
+ onDragStart?: (e: DragEvent) => void;
196
+ onDragEnd?: (e: DragEvent) => void;
197
+ onDragEnter?: (e: DragEvent) => void;
198
+ onDragLeave?: (e: DragEvent) => void;
199
+ onDragOver?: (e: DragEvent) => void;
200
+ onDrop?: (e: DragEvent) => void;
201
+ onTouchStart?: (e: TouchEvent) => void;
202
+ onTouchMove?: (e: TouchEvent) => void;
203
+ onTouchEnd?: (e: TouchEvent) => void;
204
+ onTouchCancel?: (e: TouchEvent) => void;
205
+ onAnimationStart?: (e: AnimationEvent) => void;
206
+ onAnimationEnd?: (e: AnimationEvent) => void;
207
+ onAnimationIteration?: (e: AnimationEvent) => void;
208
+ onTransitionEnd?: (e: TransitionEvent) => void;
209
+ onPointerDown?: (e: PointerEvent) => void;
210
+ onPointerUp?: (e: PointerEvent) => void;
211
+ onPointerMove?: (e: PointerEvent) => void;
212
+ onPointerEnter?: (e: PointerEvent) => void;
213
+ onPointerLeave?: (e: PointerEvent) => void;
214
+ onPointerOver?: (e: PointerEvent) => void;
215
+ onPointerOut?: (e: PointerEvent) => void;
216
+ onPointerCancel?: (e: PointerEvent) => void;
217
+ ref?: ((el: T | null) => void) | {
218
+ current: T | null;
219
+ };
220
+ role?: string;
221
+ 'aria-hidden'?: boolean | 'true' | 'false';
222
+ 'aria-label'?: string;
223
+ 'aria-labelledby'?: string;
224
+ 'aria-describedby'?: string;
225
+ 'aria-live'?: 'off' | 'polite' | 'assertive';
226
+ 'aria-atomic'?: boolean | 'true' | 'false';
227
+ 'aria-busy'?: boolean | 'true' | 'false';
228
+ 'aria-current'?: boolean | 'true' | 'false' | 'page' | 'step' | 'location' | 'date' | 'time';
229
+ 'aria-disabled'?: boolean | 'true' | 'false';
230
+ 'aria-expanded'?: boolean | 'true' | 'false';
231
+ 'aria-haspopup'?: boolean | 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';
232
+ 'aria-pressed'?: boolean | 'true' | 'false' | 'mixed';
233
+ 'aria-selected'?: boolean | 'true' | 'false';
234
+ 'aria-checked'?: boolean | 'true' | 'false' | 'mixed';
235
+ 'aria-controls'?: string;
236
+ 'aria-owns'?: string;
237
+ 'aria-activedescendant'?: string;
238
+ 'aria-valuemin'?: number;
239
+ 'aria-valuemax'?: number;
240
+ 'aria-valuenow'?: number;
241
+ 'aria-valuetext'?: string;
242
+ 'aria-orientation'?: 'horizontal' | 'vertical';
243
+ 'aria-readonly'?: boolean | 'true' | 'false';
244
+ 'aria-required'?: boolean | 'true' | 'false';
245
+ 'aria-invalid'?: boolean | 'true' | 'false' | 'grammar' | 'spelling';
246
+ 'aria-errormessage'?: string;
247
+ 'aria-modal'?: boolean | 'true' | 'false';
248
+ 'aria-placeholder'?: string;
249
+ 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other';
250
+ 'aria-colcount'?: number;
251
+ 'aria-colindex'?: number;
252
+ 'aria-colspan'?: number;
253
+ 'aria-rowcount'?: number;
254
+ 'aria-rowindex'?: number;
255
+ 'aria-rowspan'?: number;
256
+ 'aria-setsize'?: number;
257
+ 'aria-posinset'?: number;
258
+ 'aria-level'?: number;
259
+ 'aria-multiselectable'?: boolean | 'true' | 'false';
260
+ 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both';
261
+ 'aria-details'?: string;
262
+ 'aria-keyshortcuts'?: string;
263
+ 'aria-roledescription'?: string;
264
+ [key: `data-${string}`]: string | number | boolean | undefined;
265
+ }
266
+ interface AnchorHTMLAttributes<T> extends HTMLAttributes<T> {
267
+ href?: string;
268
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
269
+ rel?: string;
270
+ download?: boolean | string;
271
+ hreflang?: string;
272
+ type?: string;
273
+ referrerPolicy?: ReferrerPolicy;
274
+ ping?: string;
275
+ }
276
+ interface ButtonHTMLAttributes<T> extends HTMLAttributes<T> {
277
+ type?: 'button' | 'submit' | 'reset';
278
+ disabled?: boolean;
279
+ name?: string;
280
+ value?: string;
281
+ form?: string;
282
+ formAction?: string;
283
+ formEncType?: string;
284
+ formMethod?: string;
285
+ formNoValidate?: boolean;
286
+ formTarget?: string;
287
+ popovertarget?: string;
288
+ popovertargetaction?: 'show' | 'hide' | 'toggle';
289
+ }
290
+ interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
291
+ type?: string;
292
+ value?: string | number | readonly string[];
293
+ defaultValue?: string | number | readonly string[];
294
+ checked?: boolean;
295
+ defaultChecked?: boolean;
296
+ disabled?: boolean;
297
+ placeholder?: string;
298
+ name?: string;
299
+ form?: string;
300
+ required?: boolean;
301
+ readonly?: boolean;
302
+ multiple?: boolean;
303
+ min?: number | string;
304
+ max?: number | string;
305
+ minLength?: number;
306
+ maxLength?: number;
307
+ step?: number | string;
308
+ pattern?: string;
309
+ size?: number;
310
+ accept?: string;
311
+ capture?: boolean | 'user' | 'environment';
312
+ list?: string;
313
+ autoComplete?: string;
314
+ autoCapitalize?: string;
315
+ inputMode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
316
+ enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
317
+ height?: number | string;
318
+ width?: number | string;
319
+ alt?: string;
320
+ src?: string;
321
+ formAction?: string;
322
+ formEncType?: string;
323
+ formMethod?: string;
324
+ formNoValidate?: boolean;
325
+ formTarget?: string;
326
+ }
327
+ interface FormHTMLAttributes<T> extends HTMLAttributes<T> {
328
+ action?: string;
329
+ method?: 'get' | 'post' | 'dialog';
330
+ encType?: string;
331
+ target?: string;
332
+ name?: string;
333
+ noValidate?: boolean;
334
+ autoComplete?: 'on' | 'off';
335
+ acceptCharset?: string;
336
+ }
337
+ interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {
338
+ src?: string;
339
+ alt?: string;
340
+ width?: number | string;
341
+ height?: number | string;
342
+ srcSet?: string;
343
+ sizes?: string;
344
+ loading?: 'eager' | 'lazy';
345
+ decoding?: 'async' | 'auto' | 'sync';
346
+ crossOrigin?: 'anonymous' | 'use-credentials';
347
+ referrerPolicy?: ReferrerPolicy;
348
+ useMap?: string;
349
+ isMap?: boolean;
350
+ fetchPriority?: 'auto' | 'high' | 'low';
351
+ }
352
+ interface TextareaHTMLAttributes<T> extends HTMLAttributes<T> {
353
+ value?: string | number;
354
+ defaultValue?: string;
355
+ disabled?: boolean;
356
+ placeholder?: string;
357
+ name?: string;
358
+ form?: string;
359
+ required?: boolean;
360
+ readonly?: boolean;
361
+ rows?: number;
362
+ cols?: number;
363
+ minLength?: number;
364
+ maxLength?: number;
365
+ wrap?: 'hard' | 'soft' | 'off';
366
+ autoComplete?: string;
367
+ }
368
+ interface SelectHTMLAttributes<T> extends HTMLAttributes<T> {
369
+ value?: string | number | readonly string[];
370
+ defaultValue?: string | number | readonly string[];
371
+ disabled?: boolean;
372
+ name?: string;
373
+ form?: string;
374
+ required?: boolean;
375
+ multiple?: boolean;
376
+ size?: number;
377
+ autoComplete?: string;
378
+ }
379
+ interface OptionHTMLAttributes<T> extends HTMLAttributes<T> {
380
+ value?: string | number;
381
+ disabled?: boolean;
382
+ selected?: boolean;
383
+ label?: string;
384
+ }
385
+ interface OptgroupHTMLAttributes<T> extends HTMLAttributes<T> {
386
+ disabled?: boolean;
387
+ label?: string;
388
+ }
389
+ interface LabelHTMLAttributes<T> extends HTMLAttributes<T> {
390
+ for?: string;
391
+ htmlFor?: string;
392
+ form?: string;
393
+ }
394
+ interface FieldsetHTMLAttributes<T> extends HTMLAttributes<T> {
395
+ disabled?: boolean;
396
+ name?: string;
397
+ form?: string;
398
+ }
399
+ interface OutputHTMLAttributes<T> extends HTMLAttributes<T> {
400
+ for?: string;
401
+ htmlFor?: string;
402
+ form?: string;
403
+ name?: string;
404
+ }
405
+ interface ProgressHTMLAttributes<T> extends HTMLAttributes<T> {
406
+ value?: number | string;
407
+ max?: number | string;
408
+ }
409
+ interface MeterHTMLAttributes<T> extends HTMLAttributes<T> {
410
+ value?: number | string;
411
+ min?: number | string;
412
+ max?: number | string;
413
+ low?: number | string;
414
+ high?: number | string;
415
+ optimum?: number | string;
416
+ }
417
+ interface TableHTMLAttributes<T> extends HTMLAttributes<T> {
418
+ cellPadding?: number | string;
419
+ cellSpacing?: number | string;
420
+ border?: number | string;
421
+ }
422
+ interface ThHTMLAttributes<T> extends HTMLAttributes<T> {
423
+ colSpan?: number;
424
+ rowSpan?: number;
425
+ scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
426
+ abbr?: string;
427
+ headers?: string;
428
+ }
429
+ interface TdHTMLAttributes<T> extends HTMLAttributes<T> {
430
+ colSpan?: number;
431
+ rowSpan?: number;
432
+ headers?: string;
433
+ }
434
+ interface ColHTMLAttributes<T> extends HTMLAttributes<T> {
435
+ span?: number;
436
+ }
437
+ interface ColgroupHTMLAttributes<T> extends HTMLAttributes<T> {
438
+ span?: number;
439
+ }
440
+ interface OlHTMLAttributes<T> extends HTMLAttributes<T> {
441
+ start?: number;
442
+ reversed?: boolean;
443
+ type?: '1' | 'a' | 'A' | 'i' | 'I';
444
+ }
445
+ interface LiHTMLAttributes<T> extends HTMLAttributes<T> {
446
+ value?: number;
447
+ }
448
+ interface AudioVideoHTMLAttributes<T> extends HTMLAttributes<T> {
449
+ src?: string;
450
+ controls?: boolean;
451
+ autoPlay?: boolean;
452
+ loop?: boolean;
453
+ muted?: boolean;
454
+ preload?: 'none' | 'metadata' | 'auto';
455
+ crossOrigin?: 'anonymous' | 'use-credentials';
456
+ poster?: string;
457
+ width?: number | string;
458
+ height?: number | string;
459
+ playsInline?: boolean;
460
+ disableRemotePlayback?: boolean;
461
+ onPlay?: (e: Event) => void;
462
+ onPause?: (e: Event) => void;
463
+ onEnded?: (e: Event) => void;
464
+ onTimeUpdate?: (e: Event) => void;
465
+ onVolumeChange?: (e: Event) => void;
466
+ onSeeking?: (e: Event) => void;
467
+ onSeeked?: (e: Event) => void;
468
+ onLoadedData?: (e: Event) => void;
469
+ onLoadedMetadata?: (e: Event) => void;
470
+ onCanPlay?: (e: Event) => void;
471
+ onCanPlayThrough?: (e: Event) => void;
472
+ onWaiting?: (e: Event) => void;
473
+ onPlaying?: (e: Event) => void;
474
+ onProgress?: (e: Event) => void;
475
+ onDurationChange?: (e: Event) => void;
476
+ onRateChange?: (e: Event) => void;
477
+ onStalled?: (e: Event) => void;
478
+ onSuspend?: (e: Event) => void;
479
+ onEmptied?: (e: Event) => void;
480
+ }
481
+ interface SourceHTMLAttributes<T> extends HTMLAttributes<T> {
482
+ src?: string;
483
+ srcSet?: string;
484
+ sizes?: string;
485
+ type?: string;
486
+ media?: string;
487
+ width?: number | string;
488
+ height?: number | string;
489
+ }
490
+ interface TrackHTMLAttributes<T> extends HTMLAttributes<T> {
491
+ src?: string;
492
+ srcLang?: string;
493
+ label?: string;
494
+ kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
495
+ default?: boolean;
496
+ }
497
+ interface IframeHTMLAttributes<T> extends HTMLAttributes<T> {
498
+ src?: string;
499
+ srcDoc?: string;
500
+ name?: string;
501
+ width?: number | string;
502
+ height?: number | string;
503
+ allow?: string;
504
+ allowFullScreen?: boolean;
505
+ sandbox?: string;
506
+ loading?: 'eager' | 'lazy';
507
+ referrerPolicy?: ReferrerPolicy;
508
+ }
509
+ interface EmbedHTMLAttributes<T> extends HTMLAttributes<T> {
510
+ src?: string;
511
+ type?: string;
512
+ width?: number | string;
513
+ height?: number | string;
514
+ }
515
+ interface ObjectHTMLAttributes<T> extends HTMLAttributes<T> {
516
+ data?: string;
517
+ type?: string;
518
+ name?: string;
519
+ width?: number | string;
520
+ height?: number | string;
521
+ form?: string;
522
+ useMap?: string;
523
+ }
524
+ interface ParamHTMLAttributes<T> extends HTMLAttributes<T> {
525
+ name?: string;
526
+ value?: string;
527
+ }
528
+ interface CanvasHTMLAttributes<T> extends HTMLAttributes<T> {
529
+ width?: number | string;
530
+ height?: number | string;
531
+ }
532
+ interface MapHTMLAttributes<T> extends HTMLAttributes<T> {
533
+ name?: string;
534
+ }
535
+ interface AreaHTMLAttributes<T> extends HTMLAttributes<T> {
536
+ alt?: string;
537
+ coords?: string;
538
+ href?: string;
539
+ hreflang?: string;
540
+ download?: boolean | string;
541
+ rel?: string;
542
+ shape?: 'rect' | 'circle' | 'poly' | 'default';
543
+ target?: string;
544
+ referrerPolicy?: ReferrerPolicy;
545
+ ping?: string;
546
+ }
547
+ interface DetailsHTMLAttributes<T> extends HTMLAttributes<T> {
548
+ open?: boolean;
549
+ onToggle?: (e: Event) => void;
550
+ }
551
+ interface DialogHTMLAttributes<T> extends HTMLAttributes<T> {
552
+ open?: boolean;
553
+ onClose?: (e: Event) => void;
554
+ onCancel?: (e: Event) => void;
555
+ }
556
+ interface BlockquoteHTMLAttributes<T> extends HTMLAttributes<T> {
557
+ cite?: string;
558
+ }
559
+ interface QuoteHTMLAttributes<T> extends HTMLAttributes<T> {
560
+ cite?: string;
561
+ }
562
+ interface TimeHTMLAttributes<T> extends HTMLAttributes<T> {
563
+ dateTime?: string;
564
+ }
565
+ interface DataHTMLAttributes<T> extends HTMLAttributes<T> {
566
+ value?: string;
567
+ }
568
+ interface MetaHTMLAttributes<T> extends HTMLAttributes<T> {
569
+ name?: string;
570
+ content?: string;
571
+ httpEquiv?: string;
572
+ charSet?: string;
573
+ property?: string;
574
+ }
575
+ interface LinkHTMLAttributes<T> extends HTMLAttributes<T> {
576
+ href?: string;
577
+ rel?: string;
578
+ type?: string;
579
+ media?: string;
580
+ as?: string;
581
+ crossOrigin?: 'anonymous' | 'use-credentials';
582
+ referrerPolicy?: ReferrerPolicy;
583
+ sizes?: string;
584
+ hreflang?: string;
585
+ integrity?: string;
586
+ fetchPriority?: 'auto' | 'high' | 'low';
587
+ disabled?: boolean;
588
+ }
589
+ interface StyleHTMLAttributes<T> extends HTMLAttributes<T> {
590
+ media?: string;
591
+ nonce?: string;
592
+ blocking?: string;
593
+ }
594
+ interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {
595
+ src?: string;
596
+ type?: string;
597
+ async?: boolean;
598
+ defer?: boolean;
599
+ crossOrigin?: 'anonymous' | 'use-credentials';
600
+ integrity?: string;
601
+ noModule?: boolean;
602
+ nonce?: string;
603
+ referrerPolicy?: ReferrerPolicy;
604
+ fetchPriority?: 'auto' | 'high' | 'low';
605
+ blocking?: string;
606
+ }
607
+ interface SlotHTMLAttributes<T> extends HTMLAttributes<T> {
608
+ name?: string;
609
+ onSlotchange?: (e: Event) => void;
610
+ }
611
+ interface SVGAttributes<T> extends HTMLAttributes<T> {
612
+ viewBox?: string;
613
+ xmlns?: string;
614
+ xmlnsXlink?: string;
615
+ fill?: string;
616
+ stroke?: string;
617
+ strokeWidth?: string | number;
618
+ strokeLinecap?: 'butt' | 'round' | 'square';
619
+ strokeLinejoin?: 'miter' | 'round' | 'bevel';
620
+ strokeDasharray?: string;
621
+ strokeDashoffset?: string | number;
622
+ strokeOpacity?: string | number;
623
+ fillOpacity?: string | number;
624
+ opacity?: string | number;
625
+ transform?: string;
626
+ transformOrigin?: string;
627
+ clipPath?: string;
628
+ mask?: string;
629
+ filter?: string;
630
+ d?: string;
631
+ cx?: string | number;
632
+ cy?: string | number;
633
+ r?: string | number;
634
+ rx?: string | number;
635
+ ry?: string | number;
636
+ x?: string | number;
637
+ y?: string | number;
638
+ x1?: string | number;
639
+ y1?: string | number;
640
+ x2?: string | number;
641
+ y2?: string | number;
642
+ width?: string | number;
643
+ height?: string | number;
644
+ points?: string;
645
+ pathLength?: string | number;
646
+ textAnchor?: 'start' | 'middle' | 'end';
647
+ dominantBaseline?: string;
648
+ dx?: string | number;
649
+ dy?: string | number;
650
+ fontSize?: string | number;
651
+ fontFamily?: string;
652
+ fontWeight?: string | number;
653
+ href?: string;
654
+ xlinkHref?: string;
655
+ gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
656
+ gradientTransform?: string;
657
+ spreadMethod?: 'pad' | 'reflect' | 'repeat';
658
+ offset?: string | number;
659
+ stopColor?: string;
660
+ stopOpacity?: string | number;
661
+ clipPathUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
662
+ maskUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
663
+ maskContentUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
664
+ preserveAspectRatio?: string;
665
+ markerStart?: string;
666
+ markerMid?: string;
667
+ markerEnd?: string;
668
+ vectorEffect?: string;
669
+ }
670
+
671
+ export { Fragment, JSX, jsx, jsxDEV, jsxs };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fictjs/runtime",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "Fict reactive runtime",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -49,6 +49,10 @@
49
49
  "dist",
50
50
  "src"
51
51
  ],
52
+ "devDependencies": {
53
+ "jsdom": "^27.2.0",
54
+ "tsup": "^8.5.1"
55
+ },
52
56
  "scripts": {
53
57
  "build": "tsup",
54
58
  "dev": "tsup --watch",
@@ -60,9 +64,5 @@
60
64
  "lint": "eslint src",
61
65
  "typecheck": "tsc -p tsconfig.build.json --noEmit",
62
66
  "clean": "rm -rf dist coverage"
63
- },
64
- "devDependencies": {
65
- "jsdom": "^27.2.0",
66
- "tsup": "^8.5.1"
67
67
  }
68
- }
68
+ }