@ktjs/core 0.24.4 → 0.26.1

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/dist/index.d.ts CHANGED
@@ -40,8 +40,26 @@ declare class KTComputed<T> {
40
40
  */
41
41
  declare function computed<T = JSX.Element>(computeFn: () => T, reactives: Array<KTReactive<any>>): KTComputed<T>;
42
42
 
43
+ interface KTEffectOptions {
44
+ lazy: boolean;
45
+ onCleanup: () => void;
46
+ debugName: string;
47
+ }
48
+ /**
49
+ * Register a reactive effect with options.
50
+ * @param effectFn The effect function to run when dependencies change
51
+ * @param reactives The reactive dependencies
52
+ * @param options Effect options: lazy, onCleanup, debugName
53
+ * @returns stop function to remove all listeners
54
+ */
55
+ declare function effect(effectFn: () => void, reactives: Array<KTReactive<any>>, options?: Partial<KTEffectOptions>): () => void;
56
+
43
57
  type KTReactive<T> = KTRef<T> | KTComputed<T>;
44
58
  declare const toReactive: <T>(value: T | KTReactive<T>, onChange?: ReactiveChangeHandler<T>) => KTReactive<T>;
59
+ type KTReactify<T> = T extends any ? KTReactive<T> | T : never;
60
+ type KTReactifyObject<T extends object> = {
61
+ [K in keyof T]: KTReactify<T[K]>;
62
+ };
45
63
 
46
64
  declare const enum KTReactiveType {
47
65
  REF = 1,
@@ -228,7 +246,7 @@ type KTComponent = (
228
246
  * ## About
229
247
  * @package @ktjs/core
230
248
  * @author Kasukabe Tsumugi <futami16237@gmail.com>
231
- * @version 0.24.4 (Last Update: 2026.02.05 13:57:50.861)
249
+ * @version 0.26.1 (Last Update: 2026.02.05 17:35:29.547)
232
250
  * @license MIT
233
251
  * @link https://github.com/baendlorel/kt.js
234
252
  * @link https://baendlorel.github.io/ Welcome to my site!
@@ -279,593 +297,638 @@ declare function createRedrawable<T>(creator: () => T): KTRef<T> & {
279
297
  };
280
298
 
281
299
  // Base events available to all HTML elements
282
- type BaseAttr = KTPrefixedEventAttribute & {
283
- [k: string]: any;
300
+ type BaseAttr = KTPrefixedEventAttribute &
301
+ KTReactifyObject<{
302
+ [k: string]: any;
284
303
 
285
- // # base attributes
286
- class?: string;
287
- className?: string;
288
- style?: string | Partial<CSSStyleDeclaration>;
289
- };
304
+ // # base attributes
305
+ class?: string;
306
+ className?: string;
307
+ style?: string | Partial<CSSStyleDeclaration>;
308
+ }>;
290
309
 
291
310
  interface AttributesMap {
292
311
  // Anchor element
293
- a: BaseAttr & {
294
- download?: string;
295
- href?: string;
296
- hreflang?: string;
297
- ping?: string;
298
- referrerpolicy?:
299
- | 'no-referrer'
300
- | 'no-referrer-when-downgrade'
301
- | 'origin'
302
- | 'origin-when-cross-origin'
303
- | 'same-origin'
304
- | 'strict-origin'
305
- | 'strict-origin-when-cross-origin'
306
- | 'unsafe-url';
307
- rel?: string;
308
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
309
- type?: string;
310
- };
312
+ a: BaseAttr &
313
+ KTReactifyObject<{
314
+ download?: string;
315
+ href?: string;
316
+ hreflang?: string;
317
+ ping?: string;
318
+ referrerpolicy?:
319
+ | 'no-referrer'
320
+ | 'no-referrer-when-downgrade'
321
+ | 'origin'
322
+ | 'origin-when-cross-origin'
323
+ | 'same-origin'
324
+ | 'strict-origin'
325
+ | 'strict-origin-when-cross-origin'
326
+ | 'unsafe-url';
327
+ rel?: string;
328
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
329
+ type?: string;
330
+ }>;
311
331
 
312
332
  // Area element
313
- area: BaseAttr & {
314
- alt?: string;
315
- coords?: string;
316
- download?: string;
317
- href?: string;
318
- ping?: string;
319
- referrerpolicy?:
320
- | 'no-referrer'
321
- | 'no-referrer-when-downgrade'
322
- | 'origin'
323
- | 'origin-when-cross-origin'
324
- | 'same-origin'
325
- | 'strict-origin'
326
- | 'strict-origin-when-cross-origin'
327
- | 'unsafe-url';
328
- rel?: string;
329
- shape?: 'rect' | 'circle' | 'poly' | 'default';
330
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
331
- };
333
+ area: BaseAttr &
334
+ KTReactifyObject<{
335
+ alt?: string;
336
+ coords?: string;
337
+ download?: string;
338
+ href?: string;
339
+ ping?: string;
340
+ referrerpolicy?:
341
+ | 'no-referrer'
342
+ | 'no-referrer-when-downgrade'
343
+ | 'origin'
344
+ | 'origin-when-cross-origin'
345
+ | 'same-origin'
346
+ | 'strict-origin'
347
+ | 'strict-origin-when-cross-origin'
348
+ | 'unsafe-url';
349
+ rel?: string;
350
+ shape?: 'rect' | 'circle' | 'poly' | 'default';
351
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
352
+ }>;
332
353
 
333
354
  // Audio element
334
- audio: BaseAttr & {
335
- autoplay?: boolean;
336
- controls?: boolean;
337
- crossorigin?: 'anonymous' | 'use-credentials' | '';
338
- loop?: boolean;
339
- muted?: boolean;
340
- preload?: 'none' | 'metadata' | 'auto' | '';
341
- src?: string;
342
- };
355
+ audio: BaseAttr &
356
+ KTReactifyObject<{
357
+ autoplay?: boolean;
358
+ controls?: boolean;
359
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
360
+ loop?: boolean;
361
+ muted?: boolean;
362
+ preload?: 'none' | 'metadata' | 'auto' | '';
363
+ src?: string;
364
+ }>;
343
365
 
344
366
  // Base element
345
- base: BaseAttr & {
346
- href?: string;
347
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
348
- };
367
+ base: BaseAttr &
368
+ KTReactifyObject<{
369
+ href?: string;
370
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
371
+ }>;
349
372
 
350
373
  // Body element
351
- body: BaseAttr & {};
374
+ body: BaseAttr & KTReactifyObject<{}>;
352
375
 
353
376
  // BR element
354
- br: BaseAttr & {};
377
+ br: BaseAttr & KTReactifyObject<{}>;
355
378
 
356
379
  // Button element
357
- button: BaseAttr & {
358
- disabled?: boolean;
359
- form?: string;
360
- formaction?: string;
361
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
362
- formmethod?: 'get' | 'post' | 'dialog';
363
- formnovalidate?: boolean;
364
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
365
- name?: string;
366
- type?: 'submit' | 'reset' | 'button';
367
- value?: string;
368
- };
380
+ button: BaseAttr &
381
+ KTReactifyObject<{
382
+ disabled?: boolean;
383
+ form?: string;
384
+ formaction?: string;
385
+ formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
386
+ formmethod?: 'get' | 'post' | 'dialog';
387
+ formnovalidate?: boolean;
388
+ formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
389
+ name?: string;
390
+ type?: 'submit' | 'reset' | 'button';
391
+ value?: string;
392
+ }>;
369
393
 
370
394
  // Canvas element
371
- canvas: BaseAttr & {
372
- height?: number | string;
373
- width?: number | string;
374
- };
395
+ canvas: BaseAttr &
396
+ KTReactifyObject<{
397
+ height?: number | string;
398
+ width?: number | string;
399
+ }>;
375
400
 
376
401
  // Table caption element
377
- caption: BaseAttr & {};
402
+ caption: BaseAttr & KTReactifyObject<{}>;
378
403
 
379
404
  // Col element
380
- col: BaseAttr & {
381
- span?: number | string;
382
- };
405
+ col: BaseAttr &
406
+ KTReactifyObject<{
407
+ span?: number | string;
408
+ }>;
383
409
 
384
410
  // Colgroup element
385
- colgroup: BaseAttr & {
386
- span?: number | string;
387
- };
411
+ colgroup: BaseAttr &
412
+ KTReactifyObject<{
413
+ span?: number | string;
414
+ }>;
388
415
 
389
416
  // Data element
390
- data: BaseAttr & {
391
- value?: string;
392
- };
417
+ data: BaseAttr &
418
+ KTReactifyObject<{
419
+ value?: string;
420
+ }>;
393
421
 
394
422
  // Datalist element
395
- datalist: BaseAttr & {};
423
+ datalist: BaseAttr & KTReactifyObject<{}>;
396
424
 
397
425
  // Del element
398
- del: BaseAttr & {
399
- cite?: string;
400
- datetime?: string;
401
- };
426
+ del: BaseAttr &
427
+ KTReactifyObject<{
428
+ cite?: string;
429
+ datetime?: string;
430
+ }>;
402
431
 
403
432
  // Details element
404
- details: BaseAttr & {
405
- open?: boolean;
406
- };
433
+ details: BaseAttr &
434
+ KTReactifyObject<{
435
+ open?: boolean;
436
+ }>;
407
437
 
408
438
  // Dialog element
409
- dialog: BaseAttr & {
410
- open?: boolean;
411
- };
439
+ dialog: BaseAttr &
440
+ KTReactifyObject<{
441
+ open?: boolean;
442
+ }>;
412
443
 
413
444
  // Embed element
414
- embed: BaseAttr & {
415
- height?: number | string;
416
- src?: string;
417
- type?: string;
418
- width?: number | string;
419
- };
445
+ embed: BaseAttr &
446
+ KTReactifyObject<{
447
+ height?: number | string;
448
+ src?: string;
449
+ type?: string;
450
+ width?: number | string;
451
+ }>;
420
452
 
421
453
  // Fieldset element
422
- fieldset: BaseAttr & {
423
- disabled?: boolean;
424
- form?: string;
425
- name?: string;
426
- };
454
+ fieldset: BaseAttr &
455
+ KTReactifyObject<{
456
+ disabled?: boolean;
457
+ form?: string;
458
+ name?: string;
459
+ }>;
427
460
 
428
461
  // Form element
429
- form: BaseAttr & {
430
- 'accept-charset'?: string;
431
- action?: string;
432
- autocomplete?: 'on' | 'off';
433
- enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
434
- method?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE' | otherstring;
435
-
436
- name?: string;
437
- novalidate?: boolean;
438
- target?: '_self' | '_blank' | '_parent' | '_top' | string;
439
- };
462
+ form: BaseAttr &
463
+ KTReactifyObject<{
464
+ 'accept-charset'?: string;
465
+ action?: string;
466
+ autocomplete?: 'on' | 'off';
467
+ enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
468
+ method?: 'POST' | 'GET' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE' | otherstring;
469
+
470
+ name?: string;
471
+ novalidate?: boolean;
472
+ target?: '_self' | '_blank' | '_parent' | '_top' | string;
473
+ }>;
440
474
 
441
475
  // Head element
442
- head: BaseAttr & {};
476
+ head: BaseAttr & KTReactifyObject<{}>;
443
477
 
444
478
  // HR element
445
- hr: BaseAttr & {};
479
+ hr: BaseAttr & KTReactifyObject<{}>;
446
480
 
447
481
  // HTML element
448
- html: BaseAttr & {};
482
+ html: BaseAttr & KTReactifyObject<{}>;
449
483
 
450
484
  // IFrame element
451
- iframe: BaseAttr & {
452
- allow?: string;
453
- allowfullscreen?: boolean;
454
- allowpaymentrequest?: boolean;
455
- height?: number | string;
456
- loading?: 'eager' | 'lazy';
457
- name?: string;
458
- referrerpolicy?:
459
- | 'no-referrer'
460
- | 'no-referrer-when-downgrade'
461
- | 'origin'
462
- | 'origin-when-cross-origin'
463
- | 'same-origin'
464
- | 'strict-origin'
465
- | 'strict-origin-when-cross-origin'
466
- | 'unsafe-url';
467
- sandbox?: string;
468
- src?: string;
469
- srcdoc?: string;
470
- width?: number | string;
471
- };
485
+ iframe: BaseAttr &
486
+ KTReactifyObject<{
487
+ allow?: string;
488
+ allowfullscreen?: boolean;
489
+ allowpaymentrequest?: boolean;
490
+ height?: number | string;
491
+ loading?: 'eager' | 'lazy';
492
+ name?: string;
493
+ referrerpolicy?:
494
+ | 'no-referrer'
495
+ | 'no-referrer-when-downgrade'
496
+ | 'origin'
497
+ | 'origin-when-cross-origin'
498
+ | 'same-origin'
499
+ | 'strict-origin'
500
+ | 'strict-origin-when-cross-origin'
501
+ | 'unsafe-url';
502
+ sandbox?: string;
503
+ src?: string;
504
+ srcdoc?: string;
505
+ width?: number | string;
506
+ }>;
472
507
 
473
508
  // Image element
474
- img: BaseAttr & {
475
- alt?: string;
476
- crossorigin?: 'anonymous' | 'use-credentials' | '';
477
- decoding?: 'sync' | 'async' | 'auto';
478
- height?: number | string;
479
- ismap?: boolean;
480
- loading?: 'eager' | 'lazy';
481
- referrerpolicy?:
482
- | 'no-referrer'
483
- | 'no-referrer-when-downgrade'
484
- | 'origin'
485
- | 'origin-when-cross-origin'
486
- | 'same-origin'
487
- | 'strict-origin'
488
- | 'strict-origin-when-cross-origin'
489
- | 'unsafe-url';
490
- sizes?: string;
491
- src?: string;
492
- srcset?: string;
493
- usemap?: string;
494
- width?: number | string;
495
- };
509
+ img: BaseAttr &
510
+ KTReactifyObject<{
511
+ alt?: string;
512
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
513
+ decoding?: 'sync' | 'async' | 'auto';
514
+ height?: number | string;
515
+ ismap?: boolean;
516
+ loading?: 'eager' | 'lazy';
517
+ referrerpolicy?:
518
+ | 'no-referrer'
519
+ | 'no-referrer-when-downgrade'
520
+ | 'origin'
521
+ | 'origin-when-cross-origin'
522
+ | 'same-origin'
523
+ | 'strict-origin'
524
+ | 'strict-origin-when-cross-origin'
525
+ | 'unsafe-url';
526
+ sizes?: string;
527
+ src?: string;
528
+ srcset?: string;
529
+ usemap?: string;
530
+ width?: number | string;
531
+ }>;
496
532
 
497
533
  // Input element
498
- input: BaseAttr & {
499
- accept?: string;
500
- alt?: string;
501
- autocomplete?: string;
502
- checked?: boolean;
503
- dirname?: string;
504
- disabled?: boolean;
505
- form?: string;
506
- formaction?: string;
507
- formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
508
- formmethod?: 'get' | 'post';
509
- formnovalidate?: boolean;
510
- formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
511
- height?: number | string;
512
- list?: string;
513
- max?: number | string;
514
- maxlength?: number | string;
515
- min?: number | string;
516
- minlength?: number | string;
517
- multiple?: boolean;
518
- name?: string;
519
- pattern?: string;
520
- placeholder?: string;
521
- readonly?: boolean;
522
- required?: boolean;
523
- size?: number | string;
524
- src?: string;
525
- step?: number | string;
526
- type?:
527
- | 'button'
528
- | 'checkbox'
529
- | 'color'
530
- | 'date'
531
- | 'datetime-local'
532
- | 'email'
533
- | 'file'
534
- | 'hidden'
535
- | 'image'
536
- | 'month'
537
- | 'number'
538
- | 'password'
539
- | 'radio'
540
- | 'range'
541
- | 'reset'
542
- | 'search'
543
- | 'submit'
544
- | 'tel'
545
- | 'text'
546
- | 'time'
547
- | 'url'
548
- | 'week';
549
- value?: string;
550
- width?: number | string;
551
- };
534
+ input: BaseAttr &
535
+ KTReactifyObject<{
536
+ accept?: string;
537
+ alt?: string;
538
+ autocomplete?: string;
539
+ checked?: boolean;
540
+ dirname?: string;
541
+ disabled?: boolean;
542
+ form?: string;
543
+ formaction?: string;
544
+ formenctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
545
+ formmethod?: 'get' | 'post';
546
+ formnovalidate?: boolean;
547
+ formtarget?: '_self' | '_blank' | '_parent' | '_top' | string;
548
+ height?: number | string;
549
+ list?: string;
550
+ max?: number | string;
551
+ maxlength?: number | string;
552
+ min?: number | string;
553
+ minlength?: number | string;
554
+ multiple?: boolean;
555
+ name?: string;
556
+ pattern?: string;
557
+ placeholder?: string;
558
+ readonly?: boolean;
559
+ required?: boolean;
560
+ size?: number | string;
561
+ src?: string;
562
+ step?: number | string;
563
+ type?:
564
+ | 'button'
565
+ | 'checkbox'
566
+ | 'color'
567
+ | 'date'
568
+ | 'datetime-local'
569
+ | 'email'
570
+ | 'file'
571
+ | 'hidden'
572
+ | 'image'
573
+ | 'month'
574
+ | 'number'
575
+ | 'password'
576
+ | 'radio'
577
+ | 'range'
578
+ | 'reset'
579
+ | 'search'
580
+ | 'submit'
581
+ | 'tel'
582
+ | 'text'
583
+ | 'time'
584
+ | 'url'
585
+ | 'week';
586
+ value?: string;
587
+ width?: number | string;
588
+ }>;
552
589
 
553
590
  // Ins element
554
- ins: BaseAttr & {
555
- cite?: string;
556
- datetime?: string;
557
- };
591
+ ins: BaseAttr &
592
+ KTReactifyObject<{
593
+ cite?: string;
594
+ datetime?: string;
595
+ }>;
558
596
 
559
597
  // Label element
560
- label: BaseAttr & {
561
- for?: string;
562
- };
598
+ label: BaseAttr &
599
+ KTReactifyObject<{
600
+ for?: string;
601
+ }>;
563
602
 
564
603
  // Legend element
565
- legend: BaseAttr & {};
604
+ legend: BaseAttr & KTReactifyObject<{}>;
566
605
 
567
606
  // LI element
568
- li: BaseAttr & {
569
- value?: number | string;
570
- };
607
+ li: BaseAttr &
608
+ KTReactifyObject<{
609
+ value?: number | string;
610
+ }>;
571
611
 
572
612
  // Link element
573
- link: BaseAttr & {
574
- as?: string;
575
- crossorigin?: 'anonymous' | 'use-credentials' | '';
576
- disabled?: boolean;
577
- href?: string;
578
- hreflang?: string;
579
- imagesizes?: string;
580
- imagesrcset?: string;
581
- integrity?: string;
582
- media?: string;
583
- referrerpolicy?:
584
- | 'no-referrer'
585
- | 'no-referrer-when-downgrade'
586
- | 'origin'
587
- | 'origin-when-cross-origin'
588
- | 'same-origin'
589
- | 'strict-origin'
590
- | 'strict-origin-when-cross-origin'
591
- | 'unsafe-url';
592
- rel?: string;
593
- sizes?: string;
594
- type?: string;
595
- };
613
+ link: BaseAttr &
614
+ KTReactifyObject<{
615
+ as?: string;
616
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
617
+ disabled?: boolean;
618
+ href?: string;
619
+ hreflang?: string;
620
+ imagesizes?: string;
621
+ imagesrcset?: string;
622
+ integrity?: string;
623
+ media?: string;
624
+ referrerpolicy?:
625
+ | 'no-referrer'
626
+ | 'no-referrer-when-downgrade'
627
+ | 'origin'
628
+ | 'origin-when-cross-origin'
629
+ | 'same-origin'
630
+ | 'strict-origin'
631
+ | 'strict-origin-when-cross-origin'
632
+ | 'unsafe-url';
633
+ rel?: string;
634
+ sizes?: string;
635
+ type?: string;
636
+ }>;
596
637
 
597
638
  // Map element
598
- map: BaseAttr & {
599
- name?: string;
600
- };
639
+ map: BaseAttr &
640
+ KTReactifyObject<{
641
+ name?: string;
642
+ }>;
601
643
 
602
644
  // Menu element
603
- menu: BaseAttr & {};
645
+ menu: BaseAttr & KTReactifyObject<{}>;
604
646
 
605
647
  // Meta element
606
- meta: BaseAttr & {
607
- charset?: string;
608
- content?: string;
609
- 'http-equiv'?: 'content-security-policy' | 'content-type' | 'default-style' | 'refresh' | string;
610
- name?: string;
611
- };
648
+ meta: BaseAttr &
649
+ KTReactifyObject<{
650
+ charset?: string;
651
+ content?: string;
652
+ 'http-equiv'?: 'content-security-policy' | 'content-type' | 'default-style' | 'refresh' | string;
653
+ name?: string;
654
+ }>;
612
655
 
613
656
  // Meter element
614
- meter: BaseAttr & {
615
- form?: string;
616
- high?: number | string;
617
- low?: number | string;
618
- max?: number | string;
619
- min?: number | string;
620
- optimum?: number | string;
621
- value?: number | string;
622
- };
657
+ meter: BaseAttr &
658
+ KTReactifyObject<{
659
+ form?: string;
660
+ high?: number | string;
661
+ low?: number | string;
662
+ max?: number | string;
663
+ min?: number | string;
664
+ optimum?: number | string;
665
+ value?: number | string;
666
+ }>;
623
667
 
624
668
  // Object element
625
- object: BaseAttr & {
626
- data?: string;
627
- form?: string;
628
- height?: number | string;
629
- name?: string;
630
- type?: string;
631
- usemap?: string;
632
- width?: number | string;
633
- };
669
+ object: BaseAttr &
670
+ KTReactifyObject<{
671
+ data?: string;
672
+ form?: string;
673
+ height?: number | string;
674
+ name?: string;
675
+ type?: string;
676
+ usemap?: string;
677
+ width?: number | string;
678
+ }>;
634
679
 
635
680
  // OL element
636
- ol: BaseAttr & {
637
- reversed?: boolean;
638
- start?: number | string;
639
- type?: '1' | 'a' | 'A' | 'i' | 'I';
640
- };
681
+ ol: BaseAttr &
682
+ KTReactifyObject<{
683
+ reversed?: boolean;
684
+ start?: number | string;
685
+ type?: '1' | 'a' | 'A' | 'i' | 'I';
686
+ }>;
641
687
 
642
688
  // Optgroup element
643
- optgroup: BaseAttr & {
644
- disabled?: boolean;
645
- label?: string;
646
- };
689
+ optgroup: BaseAttr &
690
+ KTReactifyObject<{
691
+ disabled?: boolean;
692
+ label?: string;
693
+ }>;
647
694
 
648
695
  // Option element
649
- option: BaseAttr & {
650
- disabled?: boolean;
651
- label?: string;
652
- selected?: boolean;
653
- value?: string;
654
- };
696
+ option: BaseAttr &
697
+ KTReactifyObject<{
698
+ disabled?: boolean;
699
+ label?: string;
700
+ selected?: boolean;
701
+ value?: string;
702
+ }>;
655
703
 
656
704
  // Output element
657
- output: BaseAttr & {
658
- for?: string;
659
- form?: string;
660
- name?: string;
661
- };
705
+ output: BaseAttr &
706
+ KTReactifyObject<{
707
+ for?: string;
708
+ form?: string;
709
+ name?: string;
710
+ }>;
662
711
 
663
712
  // Picture element
664
- picture: BaseAttr & {};
713
+ picture: BaseAttr & KTReactifyObject<{}>;
665
714
 
666
715
  // Pre element
667
- pre: BaseAttr & {};
716
+ pre: BaseAttr & KTReactifyObject<{}>;
668
717
 
669
718
  // Progress element
670
- progress: BaseAttr & {
671
- max?: number | string;
672
- value?: number | string;
673
- };
719
+ progress: BaseAttr &
720
+ KTReactifyObject<{
721
+ max?: number | string;
722
+ value?: number | string;
723
+ }>;
674
724
 
675
725
  // Quote element (q and blockquote)
676
- q: BaseAttr & {
677
- cite?: string;
678
- };
726
+ q: BaseAttr &
727
+ KTReactifyObject<{
728
+ cite?: string;
729
+ }>;
679
730
 
680
- blockquote: BaseAttr & {
681
- cite?: string;
682
- };
731
+ blockquote: BaseAttr &
732
+ KTReactifyObject<{
733
+ cite?: string;
734
+ }>;
683
735
 
684
736
  // Script element
685
- script: BaseAttr & {
686
- async?: boolean;
687
- crossorigin?: 'anonymous' | 'use-credentials' | '';
688
- defer?: boolean;
689
- integrity?: string;
690
- nomodule?: boolean;
691
- referrerpolicy?:
692
- | 'no-referrer'
693
- | 'no-referrer-when-downgrade'
694
- | 'origin'
695
- | 'origin-when-cross-origin'
696
- | 'same-origin'
697
- | 'strict-origin'
698
- | 'strict-origin-when-cross-origin'
699
- | 'unsafe-url';
700
- src?: string;
701
- type?: string;
702
- };
737
+ script: BaseAttr &
738
+ KTReactifyObject<{
739
+ async?: boolean;
740
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
741
+ defer?: boolean;
742
+ integrity?: string;
743
+ nomodule?: boolean;
744
+ referrerpolicy?:
745
+ | 'no-referrer'
746
+ | 'no-referrer-when-downgrade'
747
+ | 'origin'
748
+ | 'origin-when-cross-origin'
749
+ | 'same-origin'
750
+ | 'strict-origin'
751
+ | 'strict-origin-when-cross-origin'
752
+ | 'unsafe-url';
753
+ src?: string;
754
+ type?: string;
755
+ }>;
703
756
 
704
757
  // Select element
705
- select: BaseAttr & {
706
- autocomplete?: string;
707
- disabled?: boolean;
708
- form?: string;
709
- multiple?: boolean;
710
- name?: string;
711
- required?: boolean;
712
- size?: number | string;
713
- };
758
+ select: BaseAttr &
759
+ KTReactifyObject<{
760
+ autocomplete?: string;
761
+ disabled?: boolean;
762
+ form?: string;
763
+ multiple?: boolean;
764
+ name?: string;
765
+ required?: boolean;
766
+ size?: number | string;
767
+ }>;
714
768
 
715
769
  // Slot element
716
- slot: BaseAttr & {
717
- name?: string;
718
- };
770
+ slot: BaseAttr &
771
+ KTReactifyObject<{
772
+ name?: string;
773
+ }>;
719
774
 
720
775
  // Source element
721
- source: BaseAttr & {
722
- height?: number | string;
723
- media?: string;
724
- sizes?: string;
725
- src?: string;
726
- srcset?: string;
727
- type?: string;
728
- width?: number | string;
729
- };
776
+ source: BaseAttr &
777
+ KTReactifyObject<{
778
+ height?: number | string;
779
+ media?: string;
780
+ sizes?: string;
781
+ src?: string;
782
+ srcset?: string;
783
+ type?: string;
784
+ width?: number | string;
785
+ }>;
730
786
 
731
787
  // Style element
732
- style: BaseAttr & {
733
- media?: string;
734
- };
788
+ style: BaseAttr &
789
+ KTReactifyObject<{
790
+ media?: string;
791
+ }>;
735
792
 
736
793
  // Table element
737
- table: BaseAttr & {};
794
+ table: BaseAttr & KTReactifyObject<{}>;
738
795
 
739
796
  // Table body/footer/header elements
740
- tbody: BaseAttr & {};
797
+ tbody: BaseAttr & KTReactifyObject<{}>;
741
798
 
742
- tfoot: BaseAttr & {};
799
+ tfoot: BaseAttr & KTReactifyObject<{}>;
743
800
 
744
- thead: BaseAttr & {};
801
+ thead: BaseAttr & KTReactifyObject<{}>;
745
802
 
746
803
  // Table cell elements
747
- td: BaseAttr & {
748
- colspan?: number | string;
749
- headers?: string;
750
- rowspan?: number | string;
751
- };
752
-
753
- th: BaseAttr & {
754
- abbr?: string;
755
- colspan?: number | string;
756
- headers?: string;
757
- rowspan?: number | string;
758
- scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
759
- };
804
+ td: BaseAttr &
805
+ KTReactifyObject<{
806
+ colspan?: number | string;
807
+ headers?: string;
808
+ rowspan?: number | string;
809
+ }>;
810
+
811
+ th: BaseAttr &
812
+ KTReactifyObject<{
813
+ abbr?: string;
814
+ colspan?: number | string;
815
+ headers?: string;
816
+ rowspan?: number | string;
817
+ scope?: 'row' | 'col' | 'rowgroup' | 'colgroup';
818
+ }>;
760
819
 
761
820
  // Template element
762
- template: BaseAttr & {};
821
+ template: BaseAttr & KTReactifyObject<{}>;
763
822
 
764
823
  // Textarea element
765
- textarea: BaseAttr & {
766
- autocomplete?: string;
767
- cols?: number | string;
768
- dirname?: string;
769
- disabled?: boolean;
770
- form?: string;
771
- maxlength?: number | string;
772
- minlength?: number | string;
773
- name?: string;
774
- placeholder?: string;
775
- readonly?: boolean;
776
- required?: boolean;
777
- rows?: number | string;
778
- wrap?: 'hard' | 'soft' | 'off';
779
- };
824
+ textarea: BaseAttr &
825
+ KTReactifyObject<{
826
+ autocomplete?: string;
827
+ cols?: number | string;
828
+ dirname?: string;
829
+ disabled?: boolean;
830
+ form?: string;
831
+ maxlength?: number | string;
832
+ minlength?: number | string;
833
+ name?: string;
834
+ placeholder?: string;
835
+ readonly?: boolean;
836
+ required?: boolean;
837
+ rows?: number | string;
838
+ wrap?: 'hard' | 'soft' | 'off';
839
+ }>;
780
840
 
781
841
  // Time element
782
- time: BaseAttr & {
783
- datetime?: string;
784
- };
842
+ time: BaseAttr &
843
+ KTReactifyObject<{
844
+ datetime?: string;
845
+ }>;
785
846
 
786
847
  // Title element
787
- title: BaseAttr & {};
848
+ title: BaseAttr & KTReactifyObject<{}>;
788
849
 
789
850
  // TR element
790
- tr: BaseAttr & {};
851
+ tr: BaseAttr & KTReactifyObject<{}>;
791
852
 
792
853
  // Track element
793
- track: BaseAttr & {
794
- default?: boolean;
795
- kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
796
- label?: string;
797
- src?: string;
798
- srclang?: string;
799
- };
854
+ track: BaseAttr &
855
+ KTReactifyObject<{
856
+ default?: boolean;
857
+ kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';
858
+ label?: string;
859
+ src?: string;
860
+ srclang?: string;
861
+ }>;
800
862
 
801
863
  // UL element
802
- ul: BaseAttr & {};
864
+ ul: BaseAttr & KTReactifyObject<{}>;
803
865
 
804
866
  // Video element
805
- video: BaseAttr & {
806
- autoplay?: boolean;
807
- controls?: boolean;
808
- crossorigin?: 'anonymous' | 'use-credentials' | '';
809
- height?: number | string;
810
- loop?: boolean;
811
- muted?: boolean;
812
- playsinline?: boolean;
813
- poster?: string;
814
- preload?: 'none' | 'metadata' | 'auto' | '';
815
- src?: string;
816
- width?: number | string;
817
- };
867
+ video: BaseAttr &
868
+ KTReactifyObject<{
869
+ autoplay?: boolean;
870
+ controls?: boolean;
871
+ crossorigin?: 'anonymous' | 'use-credentials' | '';
872
+ height?: number | string;
873
+ loop?: boolean;
874
+ muted?: boolean;
875
+ playsinline?: boolean;
876
+ poster?: string;
877
+ preload?: 'none' | 'metadata' | 'auto' | '';
878
+ src?: string;
879
+ width?: number | string;
880
+ }>;
818
881
 
819
882
  // Generic HTMLElement (no specific attributes beyond BaseEvent)
820
- abbr: BaseAttr & {};
821
- address: BaseAttr & {};
822
- article: BaseAttr & {};
823
- aside: BaseAttr & {};
824
- b: BaseAttr & {};
825
- bdi: BaseAttr & {};
826
- bdo: BaseAttr & {};
827
- cite: BaseAttr & {};
828
- code: BaseAttr & {};
829
- dd: BaseAttr & {};
830
- dfn: BaseAttr & {};
831
- div: BaseAttr & {};
832
- dl: BaseAttr & {};
833
- dt: BaseAttr & {};
834
- em: BaseAttr & {};
835
- figcaption: BaseAttr & {};
836
- figure: BaseAttr & {};
837
- footer: BaseAttr & {};
838
- h1: BaseAttr & {};
839
- h2: BaseAttr & {};
840
- h3: BaseAttr & {};
841
- h4: BaseAttr & {};
842
- h5: BaseAttr & {};
843
- h6: BaseAttr & {};
844
- header: BaseAttr & {};
845
- hgroup: BaseAttr & {};
846
- i: BaseAttr & {};
847
- kbd: BaseAttr & {};
848
- main: BaseAttr & {};
849
- mark: BaseAttr & {};
850
- nav: BaseAttr & {};
851
- noscript: BaseAttr & {};
852
- p: BaseAttr & {};
853
- rp: BaseAttr & {};
854
- rt: BaseAttr & {};
855
- ruby: BaseAttr & {};
856
- s: BaseAttr & {};
857
- samp: BaseAttr & {};
858
- search: BaseAttr & {};
859
- section: BaseAttr & {};
860
- small: BaseAttr & {};
861
- span: BaseAttr & {};
862
- strong: BaseAttr & {};
863
- sub: BaseAttr & {};
864
- summary: BaseAttr & {};
865
- sup: BaseAttr & {};
866
- u: BaseAttr & {};
867
- var: BaseAttr & {};
868
- wbr: BaseAttr & {};
883
+ abbr: BaseAttr & KTReactifyObject<{}>;
884
+ address: BaseAttr & KTReactifyObject<{}>;
885
+ article: BaseAttr & KTReactifyObject<{}>;
886
+ aside: BaseAttr & KTReactifyObject<{}>;
887
+ b: BaseAttr & KTReactifyObject<{}>;
888
+ bdi: BaseAttr & KTReactifyObject<{}>;
889
+ bdo: BaseAttr & KTReactifyObject<{}>;
890
+ cite: BaseAttr & KTReactifyObject<{}>;
891
+ code: BaseAttr & KTReactifyObject<{}>;
892
+ dd: BaseAttr & KTReactifyObject<{}>;
893
+ dfn: BaseAttr & KTReactifyObject<{}>;
894
+ div: BaseAttr & KTReactifyObject<{}>;
895
+ dl: BaseAttr & KTReactifyObject<{}>;
896
+ dt: BaseAttr & KTReactifyObject<{}>;
897
+ em: BaseAttr & KTReactifyObject<{}>;
898
+ figcaption: BaseAttr & KTReactifyObject<{}>;
899
+ figure: BaseAttr & KTReactifyObject<{}>;
900
+ footer: BaseAttr & KTReactifyObject<{}>;
901
+ h1: BaseAttr & KTReactifyObject<{}>;
902
+ h2: BaseAttr & KTReactifyObject<{}>;
903
+ h3: BaseAttr & KTReactifyObject<{}>;
904
+ h4: BaseAttr & KTReactifyObject<{}>;
905
+ h5: BaseAttr & KTReactifyObject<{}>;
906
+ h6: BaseAttr & KTReactifyObject<{}>;
907
+ header: BaseAttr & KTReactifyObject<{}>;
908
+ hgroup: BaseAttr & KTReactifyObject<{}>;
909
+ i: BaseAttr & KTReactifyObject<{}>;
910
+ kbd: BaseAttr & KTReactifyObject<{}>;
911
+ main: BaseAttr & KTReactifyObject<{}>;
912
+ mark: BaseAttr & KTReactifyObject<{}>;
913
+ nav: BaseAttr & KTReactifyObject<{}>;
914
+ noscript: BaseAttr & KTReactifyObject<{}>;
915
+ p: BaseAttr & KTReactifyObject<{}>;
916
+ rp: BaseAttr & KTReactifyObject<{}>;
917
+ rt: BaseAttr & KTReactifyObject<{}>;
918
+ ruby: BaseAttr & KTReactifyObject<{}>;
919
+ s: BaseAttr & KTReactifyObject<{}>;
920
+ samp: BaseAttr & KTReactifyObject<{}>;
921
+ search: BaseAttr & KTReactifyObject<{}>;
922
+ section: BaseAttr & KTReactifyObject<{}>;
923
+ small: BaseAttr & KTReactifyObject<{}>;
924
+ span: BaseAttr & KTReactifyObject<{}>;
925
+ strong: BaseAttr & KTReactifyObject<{}>;
926
+ sub: BaseAttr & KTReactifyObject<{}>;
927
+ summary: BaseAttr & KTReactifyObject<{}>;
928
+ sup: BaseAttr & KTReactifyObject<{}>;
929
+ u: BaseAttr & KTReactifyObject<{}>;
930
+ var: BaseAttr & KTReactifyObject<{}>;
931
+ wbr: BaseAttr & KTReactifyObject<{}>;
869
932
 
870
933
  svg: BaseAttr & {
871
934
  class?: string;
@@ -1346,5 +1409,5 @@ interface KTForProps<T> {
1346
1409
  */
1347
1410
  declare function KTFor<T>(props: KTForProps<T>): KTForElement;
1348
1411
 
1349
- export { $modelOrRef, Fragment, KTAsync, KTComputed, KTFor, KTReactiveType, KTRef, computed, h as createElement, createRedrawable, deref, h, isComputed, isKT, isRef, jsx, jsxDEV, jsxs, ref, surfaceRef, toReactive, toRef };
1350
- export type { EventHandler, HTMLTag, InputElementTag, KTAttribute, KTForElement, KTForProps, KTPrefixedEventAttribute, KTRawAttr, KTRawContent, KTRawContents, KTReactive, KTSurfaceRef, MathMLTag, ReactiveChangeHandler, SVGTag };
1412
+ export { $modelOrRef, Fragment, KTAsync, KTComputed, KTFor, KTReactiveType, KTRef, computed, h as createElement, createRedrawable, deref, effect, h, isComputed, isKT, isRef, jsx, jsxDEV, jsxs, ref, surfaceRef, toReactive, toRef };
1413
+ export type { EventHandler, HTMLTag, InputElementTag, KTAttribute, KTForElement, KTForProps, KTPrefixedEventAttribute, KTRawAttr, KTRawContent, KTRawContents, KTReactify, KTReactifyObject, KTReactive, KTSurfaceRef, MathMLTag, ReactiveChangeHandler, SVGTag };