@mateosuarezdev/flash 0.0.4 → 0.0.6

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
@@ -598,3 +598,899 @@ declare interface VNode {
598
598
  export declare function withViewTransition(mutate: () => void, elements?: HTMLElement[], options?: ViewTransitionOptions): void;
599
599
 
600
600
  export { }
601
+
602
+
603
+ // JSX Types
604
+ // =============================================================================
605
+ // JSX Element type - what JSX expressions return
606
+ // =============================================================================
607
+
608
+ export type JSXElement =
609
+ | IntrinsicVNode
610
+ | VNode
611
+ | ReactiveVNode
612
+ | string
613
+ | number
614
+ | boolean
615
+ | null
616
+ | undefined;
617
+
618
+ // =============================================================================
619
+ // Component types
620
+ // =============================================================================
621
+
622
+ export type Component<P = {}> = (props: P) => JSXElement;
623
+
624
+ export type ParentComponent<P = {}> = (
625
+ props: P & { children?: Children },
626
+ ) => JSXElement;
627
+
628
+ // =============================================================================
629
+ // JSX Namespace
630
+ // =============================================================================
631
+
632
+ declare global {
633
+ namespace JSX {
634
+ type Element = JSXElement;
635
+
636
+ interface ElementAttributesProperty {
637
+ props: {};
638
+ }
639
+
640
+ interface ElementChildrenAttribute {
641
+ children: {};
642
+ }
643
+
644
+ // -------------------------------------------------------------------------
645
+ // Intrinsic elements (HTML + SVG)
646
+ // -------------------------------------------------------------------------
647
+ type IntrinsicElements = {
648
+ [K in keyof HTMLElementTagNameMap]: HTMLAttributes<
649
+ HTMLElementTagNameMap[K]
650
+ > &
651
+ TagSpecificProps<K>;
652
+ } & {
653
+ [K in keyof SVGElementTagNameMap]: SVGAttributes<SVGElementTagNameMap[K]>;
654
+ };
655
+ }
656
+ }
657
+
658
+ // =============================================================================
659
+ // Ref type
660
+ // =============================================================================
661
+
662
+ type Ref<T extends Element = Element> = (el: T) => void;
663
+
664
+ // =============================================================================
665
+ // Hybrid - allows static value or reactive function
666
+ // =============================================================================
667
+
668
+ type Hybrid<T> = T | (() => T);
669
+
670
+ // =============================================================================
671
+ // Event Handlers
672
+ // =============================================================================
673
+
674
+ type EventHandler<E extends Event = Event> = (event: E) => void;
675
+
676
+ interface DOMEventHandlers<T extends Element = Element> {
677
+ // Mouse events
678
+ onClick?: EventHandler<MouseEvent>;
679
+ onDblClick?: EventHandler<MouseEvent>;
680
+ onMouseDown?: EventHandler<MouseEvent>;
681
+ onMouseUp?: EventHandler<MouseEvent>;
682
+ onMouseEnter?: EventHandler<MouseEvent>;
683
+ onMouseLeave?: EventHandler<MouseEvent>;
684
+ onMouseMove?: EventHandler<MouseEvent>;
685
+ onMouseOver?: EventHandler<MouseEvent>;
686
+ onMouseOut?: EventHandler<MouseEvent>;
687
+ onContextMenu?: EventHandler<MouseEvent>;
688
+
689
+ // Keyboard events
690
+ onKeyDown?: EventHandler<KeyboardEvent>;
691
+ onKeyUp?: EventHandler<KeyboardEvent>;
692
+ onKeyPress?: EventHandler<KeyboardEvent>;
693
+
694
+ // Focus events
695
+ onFocus?: EventHandler<FocusEvent>;
696
+ onBlur?: EventHandler<FocusEvent>;
697
+ onFocusIn?: EventHandler<FocusEvent>;
698
+ onFocusOut?: EventHandler<FocusEvent>;
699
+
700
+ // Form events
701
+ onInput?: EventHandler<InputEvent>;
702
+ onChange?: EventHandler<Event>;
703
+ onSubmit?: EventHandler<SubmitEvent>;
704
+ onReset?: EventHandler<Event>;
705
+ onInvalid?: EventHandler<Event>;
706
+
707
+ // Touch events
708
+ onTouchStart?: EventHandler<TouchEvent>;
709
+ onTouchEnd?: EventHandler<TouchEvent>;
710
+ onTouchMove?: EventHandler<TouchEvent>;
711
+ onTouchCancel?: EventHandler<TouchEvent>;
712
+
713
+ // Pointer events
714
+ onPointerDown?: EventHandler<PointerEvent>;
715
+ onPointerUp?: EventHandler<PointerEvent>;
716
+ onPointerMove?: EventHandler<PointerEvent>;
717
+ onPointerEnter?: EventHandler<PointerEvent>;
718
+ onPointerLeave?: EventHandler<PointerEvent>;
719
+ onPointerOver?: EventHandler<PointerEvent>;
720
+ onPointerOut?: EventHandler<PointerEvent>;
721
+ onPointerCancel?: EventHandler<PointerEvent>;
722
+
723
+ // Drag events
724
+ onDrag?: EventHandler<DragEvent>;
725
+ onDragStart?: EventHandler<DragEvent>;
726
+ onDragEnd?: EventHandler<DragEvent>;
727
+ onDragEnter?: EventHandler<DragEvent>;
728
+ onDragLeave?: EventHandler<DragEvent>;
729
+ onDragOver?: EventHandler<DragEvent>;
730
+ onDrop?: EventHandler<DragEvent>;
731
+
732
+ // Clipboard events
733
+ onCopy?: EventHandler<ClipboardEvent>;
734
+ onCut?: EventHandler<ClipboardEvent>;
735
+ onPaste?: EventHandler<ClipboardEvent>;
736
+
737
+ // Scroll/Wheel events
738
+ onScroll?: EventHandler<Event>;
739
+ onWheel?: EventHandler<WheelEvent>;
740
+
741
+ // Animation events
742
+ onAnimationStart?: EventHandler<AnimationEvent>;
743
+ onAnimationEnd?: EventHandler<AnimationEvent>;
744
+ onAnimationIteration?: EventHandler<AnimationEvent>;
745
+
746
+ // Transition events
747
+ onTransitionStart?: EventHandler<TransitionEvent>;
748
+ onTransitionEnd?: EventHandler<TransitionEvent>;
749
+ onTransitionRun?: EventHandler<TransitionEvent>;
750
+ onTransitionCancel?: EventHandler<TransitionEvent>;
751
+
752
+ // Media events
753
+ onLoad?: EventHandler<Event>;
754
+ onError?: EventHandler<Event>;
755
+ }
756
+
757
+ // =============================================================================
758
+ // CSS Properties (for style prop)
759
+ // =============================================================================
760
+
761
+ type CSSProperties = {
762
+ [K in keyof CSSStyleDeclaration]?: CSSStyleDeclaration[K] | number;
763
+ } & {
764
+ // Allow CSS custom properties
765
+ [key: `--${string}`]: string | number;
766
+ };
767
+
768
+ // =============================================================================
769
+ // ARIA attributes
770
+ // =============================================================================
771
+
772
+ interface AriaAttributes {
773
+ role?: string;
774
+ "aria-activedescendant"?: string;
775
+ "aria-atomic"?: boolean | "true" | "false";
776
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both";
777
+ "aria-busy"?: boolean | "true" | "false";
778
+ "aria-checked"?: boolean | "true" | "false" | "mixed";
779
+ "aria-colcount"?: number;
780
+ "aria-colindex"?: number;
781
+ "aria-colspan"?: number;
782
+ "aria-controls"?: string;
783
+ "aria-current"?:
784
+ | boolean
785
+ | "true"
786
+ | "false"
787
+ | "page"
788
+ | "step"
789
+ | "location"
790
+ | "date"
791
+ | "time";
792
+ "aria-describedby"?: string;
793
+ "aria-details"?: string;
794
+ "aria-disabled"?: boolean | "true" | "false";
795
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup";
796
+ "aria-errormessage"?: string;
797
+ "aria-expanded"?: boolean | "true" | "false";
798
+ "aria-flowto"?: string;
799
+ "aria-grabbed"?: boolean | "true" | "false";
800
+ "aria-haspopup"?:
801
+ | boolean
802
+ | "true"
803
+ | "false"
804
+ | "menu"
805
+ | "listbox"
806
+ | "tree"
807
+ | "grid"
808
+ | "dialog";
809
+ "aria-hidden"?: boolean | "true" | "false";
810
+ "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling";
811
+ "aria-keyshortcuts"?: string;
812
+ "aria-label"?: string;
813
+ "aria-labelledby"?: string;
814
+ "aria-level"?: number;
815
+ "aria-live"?: "off" | "assertive" | "polite";
816
+ "aria-modal"?: boolean | "true" | "false";
817
+ "aria-multiline"?: boolean | "true" | "false";
818
+ "aria-multiselectable"?: boolean | "true" | "false";
819
+ "aria-orientation"?: "horizontal" | "vertical";
820
+ "aria-owns"?: string;
821
+ "aria-placeholder"?: string;
822
+ "aria-posinset"?: number;
823
+ "aria-pressed"?: boolean | "true" | "false" | "mixed";
824
+ "aria-readonly"?: boolean | "true" | "false";
825
+ "aria-relevant"?:
826
+ | "additions"
827
+ | "additions removals"
828
+ | "additions text"
829
+ | "all"
830
+ | "removals"
831
+ | "removals additions"
832
+ | "removals text"
833
+ | "text"
834
+ | "text additions"
835
+ | "text removals";
836
+ "aria-required"?: boolean | "true" | "false";
837
+ "aria-roledescription"?: string;
838
+ "aria-rowcount"?: number;
839
+ "aria-rowindex"?: number;
840
+ "aria-rowspan"?: number;
841
+ "aria-selected"?: boolean | "true" | "false";
842
+ "aria-setsize"?: number;
843
+ "aria-sort"?: "none" | "ascending" | "descending" | "other";
844
+ "aria-valuemax"?: number;
845
+ "aria-valuemin"?: number;
846
+ "aria-valuenow"?: number;
847
+ "aria-valuetext"?: string;
848
+ }
849
+
850
+ // =============================================================================
851
+ // HTML Attributes
852
+ // =============================================================================
853
+
854
+ interface HTMLAttributes<T extends Element = Element>
855
+ extends AriaAttributes, DOMEventHandlers<T> {
856
+ // Flash-specific
857
+ ref?: Ref<T>;
858
+ key?: string | number;
859
+ children?: Children;
860
+ innerHTML?: string | object;
861
+
862
+ // Standard HTML attributes
863
+ id?: Hybrid<string>;
864
+ class?: Hybrid<string>;
865
+ className?: Hybrid<string>;
866
+ style?: Hybrid<string | CSSProperties>;
867
+ title?: Hybrid<string>;
868
+ tabindex?: Hybrid<number>;
869
+ lang?: Hybrid<string>;
870
+ dir?: Hybrid<"ltr" | "rtl" | "auto">;
871
+ hidden?: Hybrid<boolean>;
872
+ draggable?: Hybrid<boolean>;
873
+ spellcheck?: Hybrid<boolean>;
874
+ contenteditable?: Hybrid<boolean | "true" | "false" | "inherit">;
875
+ translate?: Hybrid<"yes" | "no">;
876
+ slot?: Hybrid<string>;
877
+ accesskey?: Hybrid<string>;
878
+ autocapitalize?: Hybrid<string>;
879
+ autofocus?: Hybrid<boolean>;
880
+ enterkeyhint?: Hybrid<
881
+ "enter" | "done" | "go" | "next" | "previous" | "search" | "send"
882
+ >;
883
+ inputmode?: Hybrid<
884
+ "none" | "text" | "decimal" | "numeric" | "tel" | "search" | "email" | "url"
885
+ >;
886
+ is?: Hybrid<string>;
887
+ itemid?: Hybrid<string>;
888
+ itemprop?: Hybrid<string>;
889
+ itemref?: Hybrid<string>;
890
+ itemscope?: Hybrid<boolean>;
891
+ itemtype?: Hybrid<string>;
892
+ nonce?: Hybrid<string>;
893
+ part?: Hybrid<string>;
894
+ popover?: Hybrid<"auto" | "manual">;
895
+ popovertarget?: Hybrid<string>;
896
+ popovertargetaction?: Hybrid<"hide" | "show" | "toggle">;
897
+
898
+ // Data attributes
899
+ [key: `data-${string}`]: Hybrid<string | number | boolean>;
900
+ }
901
+
902
+ // =============================================================================
903
+ // Tag-specific props
904
+ // =============================================================================
905
+
906
+ type TagSpecificProps<K extends keyof HTMLElementTagNameMap> =
907
+ K extends keyof TagExtraProps ? TagExtraProps[K] : {};
908
+
909
+ interface TagExtraProps {
910
+ a: {
911
+ href?: Hybrid<string>;
912
+ target?: Hybrid<"_blank" | "_self" | "_parent" | "_top" | string>;
913
+ rel?: Hybrid<string>;
914
+ download?: Hybrid<boolean | string>;
915
+ hreflang?: Hybrid<string>;
916
+ ping?: Hybrid<string>;
917
+ referrerpolicy?: Hybrid<ReferrerPolicy>;
918
+ type?: Hybrid<string>;
919
+ };
920
+ area: {
921
+ alt?: Hybrid<string>;
922
+ coords?: Hybrid<string>;
923
+ download?: Hybrid<boolean | string>;
924
+ href?: Hybrid<string>;
925
+ hreflang?: Hybrid<string>;
926
+ ping?: Hybrid<string>;
927
+ referrerpolicy?: Hybrid<ReferrerPolicy>;
928
+ rel?: Hybrid<string>;
929
+ shape?: Hybrid<"rect" | "circle" | "poly" | "default">;
930
+ target?: Hybrid<string>;
931
+ };
932
+ audio: MediaProps;
933
+ base: {
934
+ href?: Hybrid<string>;
935
+ target?: Hybrid<string>;
936
+ };
937
+ blockquote: {
938
+ cite?: Hybrid<string>;
939
+ };
940
+ button: {
941
+ type?: Hybrid<"button" | "submit" | "reset">;
942
+ disabled?: Hybrid<boolean>;
943
+ form?: Hybrid<string>;
944
+ formaction?: Hybrid<string>;
945
+ formenctype?: Hybrid<string>;
946
+ formmethod?: Hybrid<string>;
947
+ formnovalidate?: Hybrid<boolean>;
948
+ formtarget?: Hybrid<string>;
949
+ name?: Hybrid<string>;
950
+ value?: Hybrid<string>;
951
+ popovertarget?: Hybrid<string>;
952
+ popovertargetaction?: Hybrid<"hide" | "show" | "toggle">;
953
+ };
954
+ canvas: {
955
+ width?: Hybrid<number | string>;
956
+ height?: Hybrid<number | string>;
957
+ };
958
+ col: {
959
+ span?: Hybrid<number>;
960
+ };
961
+ colgroup: {
962
+ span?: Hybrid<number>;
963
+ };
964
+ del: {
965
+ cite?: Hybrid<string>;
966
+ datetime?: Hybrid<string>;
967
+ };
968
+ details: {
969
+ open?: Hybrid<boolean>;
970
+ onToggle?: EventHandler<Event>;
971
+ };
972
+ dialog: {
973
+ open?: Hybrid<boolean>;
974
+ onClose?: EventHandler<Event>;
975
+ onCancel?: EventHandler<Event>;
976
+ };
977
+ embed: {
978
+ height?: Hybrid<number | string>;
979
+ src?: Hybrid<string>;
980
+ type?: Hybrid<string>;
981
+ width?: Hybrid<number | string>;
982
+ };
983
+ fieldset: {
984
+ disabled?: Hybrid<boolean>;
985
+ form?: Hybrid<string>;
986
+ name?: Hybrid<string>;
987
+ };
988
+ form: {
989
+ action?: Hybrid<string>;
990
+ method?: Hybrid<"get" | "post" | "dialog">;
991
+ enctype?: Hybrid<string>;
992
+ target?: Hybrid<string>;
993
+ autocomplete?: Hybrid<"on" | "off">;
994
+ novalidate?: Hybrid<boolean>;
995
+ name?: Hybrid<string>;
996
+ "accept-charset"?: Hybrid<string>;
997
+ rel?: Hybrid<string>;
998
+ };
999
+ html: {
1000
+ manifest?: Hybrid<string>;
1001
+ };
1002
+ iframe: {
1003
+ allow?: Hybrid<string>;
1004
+ allowfullscreen?: Hybrid<boolean>;
1005
+ height?: Hybrid<number | string>;
1006
+ loading?: Hybrid<"eager" | "lazy">;
1007
+ name?: Hybrid<string>;
1008
+ referrerpolicy?: Hybrid<ReferrerPolicy>;
1009
+ sandbox?: Hybrid<string>;
1010
+ src?: Hybrid<string>;
1011
+ srcdoc?: Hybrid<string>;
1012
+ width?: Hybrid<number | string>;
1013
+ };
1014
+ img: {
1015
+ alt?: Hybrid<string>;
1016
+ crossorigin?: Hybrid<boolean | "anonymous" | "use-credentials" | "">;
1017
+ decoding?: Hybrid<"async" | "auto" | "sync">;
1018
+ height?: Hybrid<number | string>;
1019
+ loading?: Hybrid<"eager" | "lazy">;
1020
+ referrerpolicy?: Hybrid<ReferrerPolicy>;
1021
+ sizes?: Hybrid<string>;
1022
+ src?: Hybrid<string>;
1023
+ srcset?: Hybrid<string>;
1024
+ usemap?: Hybrid<string>;
1025
+ width?: Hybrid<number | string>;
1026
+ fetchpriority?: Hybrid<"high" | "low" | "auto">;
1027
+ };
1028
+ input: {
1029
+ accept?: Hybrid<string>;
1030
+ alt?: Hybrid<string>;
1031
+ autocomplete?: Hybrid<string>;
1032
+ capture?: Hybrid<boolean | "user" | "environment">;
1033
+ checked?: Hybrid<boolean>;
1034
+ disabled?: Hybrid<boolean>;
1035
+ form?: Hybrid<string>;
1036
+ formaction?: Hybrid<string>;
1037
+ formenctype?: Hybrid<string>;
1038
+ formmethod?: Hybrid<string>;
1039
+ formnovalidate?: Hybrid<boolean>;
1040
+ formtarget?: Hybrid<string>;
1041
+ height?: Hybrid<number | string>;
1042
+ list?: Hybrid<string>;
1043
+ max?: Hybrid<number | string>;
1044
+ maxlength?: Hybrid<number>;
1045
+ min?: Hybrid<number | string>;
1046
+ minlength?: Hybrid<number>;
1047
+ multiple?: Hybrid<boolean>;
1048
+ name?: Hybrid<string>;
1049
+ pattern?: Hybrid<string>;
1050
+ placeholder?: Hybrid<string>;
1051
+ readonly?: Hybrid<boolean>;
1052
+ required?: Hybrid<boolean>;
1053
+ size?: Hybrid<number>;
1054
+ src?: Hybrid<string>;
1055
+ step?: Hybrid<number | string>;
1056
+ type?: Hybrid<
1057
+ | "button"
1058
+ | "checkbox"
1059
+ | "color"
1060
+ | "date"
1061
+ | "datetime-local"
1062
+ | "email"
1063
+ | "file"
1064
+ | "hidden"
1065
+ | "image"
1066
+ | "month"
1067
+ | "number"
1068
+ | "password"
1069
+ | "radio"
1070
+ | "range"
1071
+ | "reset"
1072
+ | "search"
1073
+ | "submit"
1074
+ | "tel"
1075
+ | "text"
1076
+ | "time"
1077
+ | "url"
1078
+ | "week"
1079
+ >;
1080
+ value?: Hybrid<string | number | readonly string[]>;
1081
+ width?: Hybrid<number | string>;
1082
+ };
1083
+ ins: {
1084
+ cite?: Hybrid<string>;
1085
+ datetime?: Hybrid<string>;
1086
+ };
1087
+ label: {
1088
+ for?: Hybrid<string>;
1089
+ };
1090
+ li: {
1091
+ value?: Hybrid<number>;
1092
+ };
1093
+ link: {
1094
+ as?: Hybrid<string>;
1095
+ crossorigin?: Hybrid<boolean | "anonymous" | "use-credentials" | "">;
1096
+ disabled?: Hybrid<boolean>;
1097
+ href?: Hybrid<string>;
1098
+ hreflang?: Hybrid<string>;
1099
+ imagesizes?: Hybrid<string>;
1100
+ imagesrcset?: Hybrid<string>;
1101
+ integrity?: Hybrid<string>;
1102
+ media?: Hybrid<string>;
1103
+ referrerpolicy?: Hybrid<ReferrerPolicy>;
1104
+ rel?: Hybrid<string>;
1105
+ sizes?: Hybrid<string>;
1106
+ type?: Hybrid<string>;
1107
+ fetchpriority?: Hybrid<"high" | "low" | "auto">;
1108
+ };
1109
+ map: {
1110
+ name?: Hybrid<string>;
1111
+ };
1112
+ meta: {
1113
+ charset?: Hybrid<string>;
1114
+ content?: Hybrid<string>;
1115
+ "http-equiv"?: Hybrid<string>;
1116
+ name?: Hybrid<string>;
1117
+ media?: Hybrid<string>;
1118
+ property?: Hybrid<string>; // Open Graph
1119
+ };
1120
+ meter: {
1121
+ high?: Hybrid<number>;
1122
+ low?: Hybrid<number>;
1123
+ max?: Hybrid<number>;
1124
+ min?: Hybrid<number>;
1125
+ optimum?: Hybrid<number>;
1126
+ value?: Hybrid<number>;
1127
+ };
1128
+ object: {
1129
+ data?: Hybrid<string>;
1130
+ form?: Hybrid<string>;
1131
+ height?: Hybrid<number | string>;
1132
+ name?: Hybrid<string>;
1133
+ type?: Hybrid<string>;
1134
+ usemap?: Hybrid<string>;
1135
+ width?: Hybrid<number | string>;
1136
+ };
1137
+ ol: {
1138
+ reversed?: Hybrid<boolean>;
1139
+ start?: Hybrid<number>;
1140
+ type?: Hybrid<"1" | "a" | "A" | "i" | "I">;
1141
+ };
1142
+ optgroup: {
1143
+ disabled?: Hybrid<boolean>;
1144
+ label?: Hybrid<string>;
1145
+ };
1146
+ option: {
1147
+ disabled?: Hybrid<boolean>;
1148
+ label?: Hybrid<string>;
1149
+ selected?: Hybrid<boolean>;
1150
+ value?: Hybrid<string | number>;
1151
+ };
1152
+ output: {
1153
+ for?: Hybrid<string>;
1154
+ form?: Hybrid<string>;
1155
+ name?: Hybrid<string>;
1156
+ };
1157
+ progress: {
1158
+ max?: Hybrid<number>;
1159
+ value?: Hybrid<number>;
1160
+ };
1161
+ q: {
1162
+ cite?: Hybrid<string>;
1163
+ };
1164
+ script: {
1165
+ async?: Hybrid<boolean>;
1166
+ crossorigin?: Hybrid<boolean | "anonymous" | "use-credentials" | "">;
1167
+ defer?: Hybrid<boolean>;
1168
+ integrity?: Hybrid<string>;
1169
+ nomodule?: Hybrid<boolean>;
1170
+ referrerpolicy?: Hybrid<ReferrerPolicy>;
1171
+ src?: Hybrid<string>;
1172
+ type?: Hybrid<string>;
1173
+ fetchpriority?: Hybrid<"high" | "low" | "auto">;
1174
+ };
1175
+ select: {
1176
+ autocomplete?: Hybrid<string>;
1177
+ disabled?: Hybrid<boolean>;
1178
+ form?: Hybrid<string>;
1179
+ multiple?: Hybrid<boolean>;
1180
+ name?: Hybrid<string>;
1181
+ required?: Hybrid<boolean>;
1182
+ size?: Hybrid<number>;
1183
+ value?: Hybrid<string | number | readonly string[]>;
1184
+ };
1185
+ slot: {
1186
+ name?: Hybrid<string>;
1187
+ };
1188
+ source: {
1189
+ height?: Hybrid<number | string>;
1190
+ media?: Hybrid<string>;
1191
+ sizes?: Hybrid<string>;
1192
+ src?: Hybrid<string>;
1193
+ srcset?: Hybrid<string>;
1194
+ type?: Hybrid<string>;
1195
+ width?: Hybrid<number | string>;
1196
+ };
1197
+ style: {
1198
+ media?: Hybrid<string>;
1199
+ scoped?: Hybrid<boolean>;
1200
+ };
1201
+ table: {
1202
+ cellpadding?: Hybrid<number | string>;
1203
+ cellspacing?: Hybrid<number | string>;
1204
+ };
1205
+ td: TableCellProps;
1206
+ textarea: {
1207
+ autocomplete?: Hybrid<string>;
1208
+ cols?: Hybrid<number>;
1209
+ disabled?: Hybrid<boolean>;
1210
+ form?: Hybrid<string>;
1211
+ maxlength?: Hybrid<number>;
1212
+ minlength?: Hybrid<number>;
1213
+ name?: Hybrid<string>;
1214
+ placeholder?: Hybrid<string>;
1215
+ readonly?: Hybrid<boolean>;
1216
+ required?: Hybrid<boolean>;
1217
+ rows?: Hybrid<number>;
1218
+ value?: Hybrid<string>;
1219
+ wrap?: Hybrid<"hard" | "soft" | "off">;
1220
+ };
1221
+ th: TableCellProps & {
1222
+ scope?: Hybrid<"row" | "col" | "rowgroup" | "colgroup">;
1223
+ abbr?: Hybrid<string>;
1224
+ };
1225
+ time: {
1226
+ datetime?: Hybrid<string>;
1227
+ };
1228
+ track: {
1229
+ default?: Hybrid<boolean>;
1230
+ kind?: Hybrid<
1231
+ "subtitles" | "captions" | "descriptions" | "chapters" | "metadata"
1232
+ >;
1233
+ label?: Hybrid<string>;
1234
+ src?: Hybrid<string>;
1235
+ srclang?: Hybrid<string>;
1236
+ };
1237
+ video: MediaProps & {
1238
+ height?: Hybrid<number | string>;
1239
+ playsinline?: Hybrid<boolean>;
1240
+ poster?: Hybrid<string>;
1241
+ width?: Hybrid<number | string>;
1242
+ disablepictureinpicture?: Hybrid<boolean>;
1243
+ disableremoteplayback?: Hybrid<boolean>;
1244
+ };
1245
+ }
1246
+
1247
+ interface MediaProps {
1248
+ autoplay?: Hybrid<boolean>;
1249
+ controls?: Hybrid<boolean>;
1250
+ crossorigin?: Hybrid<boolean | "anonymous" | "use-credentials" | "">;
1251
+ loop?: Hybrid<boolean>;
1252
+ muted?: Hybrid<boolean>;
1253
+ preload?: Hybrid<"none" | "metadata" | "auto" | "">;
1254
+ src?: Hybrid<string>;
1255
+ onAbort?: EventHandler<Event>;
1256
+ onCanPlay?: EventHandler<Event>;
1257
+ onCanPlayThrough?: EventHandler<Event>;
1258
+ onDurationChange?: EventHandler<Event>;
1259
+ onEmptied?: EventHandler<Event>;
1260
+ onEnded?: EventHandler<Event>;
1261
+ onLoadedData?: EventHandler<Event>;
1262
+ onLoadedMetadata?: EventHandler<Event>;
1263
+ onLoadStart?: EventHandler<Event>;
1264
+ onPause?: EventHandler<Event>;
1265
+ onPlay?: EventHandler<Event>;
1266
+ onPlaying?: EventHandler<Event>;
1267
+ onProgress?: EventHandler<Event>;
1268
+ onRateChange?: EventHandler<Event>;
1269
+ onSeeked?: EventHandler<Event>;
1270
+ onSeeking?: EventHandler<Event>;
1271
+ onStalled?: EventHandler<Event>;
1272
+ onSuspend?: EventHandler<Event>;
1273
+ onTimeUpdate?: EventHandler<Event>;
1274
+ onVolumeChange?: EventHandler<Event>;
1275
+ onWaiting?: EventHandler<Event>;
1276
+ }
1277
+
1278
+ interface TableCellProps {
1279
+ colspan?: Hybrid<number>;
1280
+ headers?: Hybrid<string>;
1281
+ rowspan?: Hybrid<number>;
1282
+ }
1283
+
1284
+ // =============================================================================
1285
+ // SVG Attributes
1286
+ // =============================================================================
1287
+
1288
+ interface SVGAttributes<T extends SVGElement = SVGElement>
1289
+ extends AriaAttributes, DOMEventHandlers<T> {
1290
+ // Flash-specific
1291
+ ref?: Ref<T>;
1292
+ key?: string | number;
1293
+ children?: Children;
1294
+ innerHTML?: string | object;
1295
+
1296
+ // Core SVG attributes
1297
+ id?: Hybrid<string>;
1298
+ class?: Hybrid<string>;
1299
+ className?: Hybrid<string>;
1300
+ style?: Hybrid<string | CSSProperties>;
1301
+ tabindex?: Hybrid<number>;
1302
+ lang?: Hybrid<string>;
1303
+
1304
+ // Presentation attributes
1305
+ "alignment-baseline"?: Hybrid<string>;
1306
+ "baseline-shift"?: Hybrid<string>;
1307
+ clip?: Hybrid<string>;
1308
+ "clip-path"?: Hybrid<string>;
1309
+ "clip-rule"?: Hybrid<"nonzero" | "evenodd" | "inherit">;
1310
+ color?: Hybrid<string>;
1311
+ "color-interpolation"?: Hybrid<string>;
1312
+ "color-interpolation-filters"?: Hybrid<string>;
1313
+ cursor?: Hybrid<string>;
1314
+ direction?: Hybrid<string>;
1315
+ display?: Hybrid<string>;
1316
+ "dominant-baseline"?: Hybrid<string>;
1317
+ fill?: Hybrid<string>;
1318
+ "fill-opacity"?: Hybrid<number | string>;
1319
+ "fill-rule"?: Hybrid<"nonzero" | "evenodd" | "inherit">;
1320
+ filter?: Hybrid<string>;
1321
+ "flood-color"?: Hybrid<string>;
1322
+ "flood-opacity"?: Hybrid<number | string>;
1323
+ "font-family"?: Hybrid<string>;
1324
+ "font-size"?: Hybrid<string>;
1325
+ "font-size-adjust"?: Hybrid<string>;
1326
+ "font-stretch"?: Hybrid<string>;
1327
+ "font-style"?: Hybrid<string>;
1328
+ "font-variant"?: Hybrid<string>;
1329
+ "font-weight"?: Hybrid<string>;
1330
+ "glyph-orientation-horizontal"?: Hybrid<string>;
1331
+ "glyph-orientation-vertical"?: Hybrid<string>;
1332
+ "image-rendering"?: Hybrid<string>;
1333
+ kerning?: Hybrid<string>;
1334
+ "letter-spacing"?: Hybrid<string>;
1335
+ "lighting-color"?: Hybrid<string>;
1336
+ "marker-end"?: Hybrid<string>;
1337
+ "marker-mid"?: Hybrid<string>;
1338
+ "marker-start"?: Hybrid<string>;
1339
+ mask?: Hybrid<string>;
1340
+ opacity?: Hybrid<number | string>;
1341
+ overflow?: Hybrid<string>;
1342
+ "pointer-events"?: Hybrid<string>;
1343
+ "shape-rendering"?: Hybrid<string>;
1344
+ "stop-color"?: Hybrid<string>;
1345
+ "stop-opacity"?: Hybrid<number | string>;
1346
+ stroke?: Hybrid<string>;
1347
+ "stroke-dasharray"?: Hybrid<string>;
1348
+ "stroke-dashoffset"?: Hybrid<number | string>;
1349
+ "stroke-linecap"?: Hybrid<"butt" | "round" | "square" | "inherit">;
1350
+ "stroke-linejoin"?: Hybrid<"miter" | "round" | "bevel" | "inherit">;
1351
+ "stroke-miterlimit"?: Hybrid<number | string>;
1352
+ "stroke-opacity"?: Hybrid<number | string>;
1353
+ "stroke-width"?: Hybrid<number | string>;
1354
+ "text-anchor"?: Hybrid<"start" | "middle" | "end" | "inherit">;
1355
+ "text-decoration"?: Hybrid<string>;
1356
+ "text-rendering"?: Hybrid<string>;
1357
+ transform?: Hybrid<string>;
1358
+ "transform-origin"?: Hybrid<string>;
1359
+ "unicode-bidi"?: Hybrid<string>;
1360
+ "vector-effect"?: Hybrid<string>;
1361
+ visibility?: Hybrid<string>;
1362
+ "word-spacing"?: Hybrid<string>;
1363
+ "writing-mode"?: Hybrid<string>;
1364
+
1365
+ // Common SVG element attributes
1366
+ x?: Hybrid<number | string>;
1367
+ y?: Hybrid<number | string>;
1368
+ width?: Hybrid<number | string>;
1369
+ height?: Hybrid<number | string>;
1370
+ viewBox?: Hybrid<string>;
1371
+ preserveAspectRatio?: Hybrid<string>;
1372
+ xmlns?: Hybrid<string>;
1373
+ "xmlns:xlink"?: Hybrid<string>;
1374
+
1375
+ // Path
1376
+ d?: Hybrid<string>;
1377
+ pathLength?: Hybrid<number>;
1378
+
1379
+ // Circle/Ellipse
1380
+ cx?: Hybrid<number | string>;
1381
+ cy?: Hybrid<number | string>;
1382
+ r?: Hybrid<number | string>;
1383
+ rx?: Hybrid<number | string>;
1384
+ ry?: Hybrid<number | string>;
1385
+
1386
+ // Line
1387
+ x1?: Hybrid<number | string>;
1388
+ y1?: Hybrid<number | string>;
1389
+ x2?: Hybrid<number | string>;
1390
+ y2?: Hybrid<number | string>;
1391
+
1392
+ // Polygon/Polyline
1393
+ points?: Hybrid<string>;
1394
+
1395
+ // Text
1396
+ dx?: Hybrid<number | string>;
1397
+ dy?: Hybrid<number | string>;
1398
+ textLength?: Hybrid<number | string>;
1399
+ lengthAdjust?: Hybrid<"spacing" | "spacingAndGlyphs">;
1400
+
1401
+ // Use/Image
1402
+ href?: Hybrid<string>;
1403
+ "xlink:href"?: Hybrid<string>;
1404
+
1405
+ // Gradient
1406
+ gradientUnits?: Hybrid<"userSpaceOnUse" | "objectBoundingBox">;
1407
+ gradientTransform?: Hybrid<string>;
1408
+ spreadMethod?: Hybrid<"pad" | "reflect" | "repeat">;
1409
+ fx?: Hybrid<number | string>;
1410
+ fy?: Hybrid<number | string>;
1411
+ offset?: Hybrid<number | string>;
1412
+
1413
+ // Filter
1414
+ result?: Hybrid<string>;
1415
+ in?: Hybrid<string>;
1416
+ in2?: Hybrid<string>;
1417
+ mode?: Hybrid<string>;
1418
+ values?: Hybrid<string>;
1419
+ type?: Hybrid<string>;
1420
+ tableValues?: Hybrid<string>;
1421
+ slope?: Hybrid<number | string>;
1422
+ intercept?: Hybrid<number | string>;
1423
+ amplitude?: Hybrid<number | string>;
1424
+ exponent?: Hybrid<number | string>;
1425
+ stdDeviation?: Hybrid<number | string>;
1426
+ baseFrequency?: Hybrid<number | string>;
1427
+ numOctaves?: Hybrid<number>;
1428
+ seed?: Hybrid<number>;
1429
+ stitchTiles?: Hybrid<"stitch" | "noStitch">;
1430
+ scale?: Hybrid<number>;
1431
+ xChannelSelector?: Hybrid<"R" | "G" | "B" | "A">;
1432
+ yChannelSelector?: Hybrid<"R" | "G" | "B" | "A">;
1433
+ azimuth?: Hybrid<number>;
1434
+ elevation?: Hybrid<number>;
1435
+ surfaceScale?: Hybrid<number>;
1436
+ diffuseConstant?: Hybrid<number>;
1437
+ specularConstant?: Hybrid<number>;
1438
+ specularExponent?: Hybrid<number>;
1439
+ kernelUnitLength?: Hybrid<number | string>;
1440
+ order?: Hybrid<number | string>;
1441
+ kernelMatrix?: Hybrid<string>;
1442
+ divisor?: Hybrid<number>;
1443
+ bias?: Hybrid<number>;
1444
+ targetX?: Hybrid<number>;
1445
+ targetY?: Hybrid<number>;
1446
+ edgeMode?: Hybrid<"duplicate" | "wrap" | "none">;
1447
+ preserveAlpha?: Hybrid<boolean>;
1448
+ radius?: Hybrid<number | string>;
1449
+ k1?: Hybrid<number>;
1450
+ k2?: Hybrid<number>;
1451
+ k3?: Hybrid<number>;
1452
+ k4?: Hybrid<number>;
1453
+ operator?: Hybrid<string>;
1454
+
1455
+ // Marker
1456
+ markerWidth?: Hybrid<number | string>;
1457
+ markerHeight?: Hybrid<number | string>;
1458
+ refX?: Hybrid<number | string>;
1459
+ refY?: Hybrid<number | string>;
1460
+ orient?: Hybrid<string>;
1461
+ markerUnits?: Hybrid<"strokeWidth" | "userSpaceOnUse">;
1462
+
1463
+ // ClipPath/Mask
1464
+ clipPathUnits?: Hybrid<"userSpaceOnUse" | "objectBoundingBox">;
1465
+ maskUnits?: Hybrid<"userSpaceOnUse" | "objectBoundingBox">;
1466
+ maskContentUnits?: Hybrid<"userSpaceOnUse" | "objectBoundingBox">;
1467
+
1468
+ // Pattern
1469
+ patternUnits?: Hybrid<"userSpaceOnUse" | "objectBoundingBox">;
1470
+ patternContentUnits?: Hybrid<"userSpaceOnUse" | "objectBoundingBox">;
1471
+ patternTransform?: Hybrid<string>;
1472
+
1473
+ // Animation
1474
+ attributeName?: Hybrid<string>;
1475
+ attributeType?: Hybrid<string>;
1476
+ begin?: Hybrid<string>;
1477
+ dur?: Hybrid<string>;
1478
+ end?: Hybrid<string>;
1479
+ min?: Hybrid<string>;
1480
+ max?: Hybrid<string>;
1481
+ restart?: Hybrid<"always" | "whenNotActive" | "never">;
1482
+ repeatCount?: Hybrid<number | "indefinite">;
1483
+ repeatDur?: Hybrid<string>;
1484
+ calcMode?: Hybrid<"discrete" | "linear" | "paced" | "spline">;
1485
+ keyTimes?: Hybrid<string>;
1486
+ keySplines?: Hybrid<string>;
1487
+ from?: Hybrid<string>;
1488
+ to?: Hybrid<string>;
1489
+ by?: Hybrid<string>;
1490
+ additive?: Hybrid<"replace" | "sum">;
1491
+ accumulate?: Hybrid<"none" | "sum">;
1492
+
1493
+ // Allow any other attributes
1494
+ [key: string]: any;
1495
+ }
1496
+