@praxisjs/jsx 0.3.9 → 0.4.0

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/src/index.ts CHANGED
@@ -1 +1,74 @@
1
1
  export { Fragment, jsx, jsxs, jsxDEV } from "./jsx-runtime";
2
+
3
+ export type {
4
+ // Primitives
5
+ Reactive,
6
+ Booleanish,
7
+ CSSProperties,
8
+ // Attribute value types
9
+ HTMLInputTypeAttribute,
10
+ ButtonType,
11
+ FormMethod,
12
+ FormEncType,
13
+ LinkTarget,
14
+ ReferrerPolicy,
15
+ CrossOrigin,
16
+ Decoding,
17
+ Loading,
18
+ Dir,
19
+ AutoCapitalize,
20
+ InputMode,
21
+ EnterKeyHint,
22
+ // Attribute interfaces
23
+ AriaAttributes,
24
+ DOMAttributes,
25
+ HTMLAttributes,
26
+ AnchorHTMLAttributes,
27
+ AreaHTMLAttributes,
28
+ AudioHTMLAttributes,
29
+ BaseHTMLAttributes,
30
+ BlockquoteHTMLAttributes,
31
+ ButtonHTMLAttributes,
32
+ CanvasHTMLAttributes,
33
+ ColHTMLAttributes,
34
+ ColgroupHTMLAttributes,
35
+ DataHTMLAttributes,
36
+ DatalistHTMLAttributes,
37
+ DelHTMLAttributes,
38
+ DetailsHTMLAttributes,
39
+ DialogHTMLAttributes,
40
+ EmbedHTMLAttributes,
41
+ FieldsetHTMLAttributes,
42
+ FormHTMLAttributes,
43
+ IframeHTMLAttributes,
44
+ ImgHTMLAttributes,
45
+ InputHTMLAttributes,
46
+ InsHTMLAttributes,
47
+ LabelHTMLAttributes,
48
+ LiHTMLAttributes,
49
+ LinkHTMLAttributes,
50
+ MapHTMLAttributes,
51
+ MediaHTMLAttributes,
52
+ MenuHTMLAttributes,
53
+ MetaHTMLAttributes,
54
+ MeterHTMLAttributes,
55
+ ObjectHTMLAttributes,
56
+ OlHTMLAttributes,
57
+ OptgroupHTMLAttributes,
58
+ OptionHTMLAttributes,
59
+ OutputHTMLAttributes,
60
+ ProgressHTMLAttributes,
61
+ ScriptHTMLAttributes,
62
+ SelectHTMLAttributes,
63
+ SlotHTMLAttributes,
64
+ SourceHTMLAttributes,
65
+ StyleHTMLAttributes,
66
+ TableHTMLAttributes,
67
+ TdHTMLAttributes,
68
+ TextareaHTMLAttributes,
69
+ ThHTMLAttributes,
70
+ TimeHTMLAttributes,
71
+ TrackHTMLAttributes,
72
+ VideoHTMLAttributes,
73
+ SVGAttributes,
74
+ } from "./dom-types";
@@ -3,22 +3,73 @@ import {
3
3
  mountComponent,
4
4
  getCurrentScope,
5
5
  } from "@praxisjs/runtime";
6
- import type { Children } from "@praxisjs/shared";
7
6
  import {
8
7
  isComponent,
9
8
  type ComponentConstructor,
10
9
  } from "@praxisjs/shared/internal";
11
10
 
11
+ import type {
12
+ Reactive,
13
+ HTMLAttributes,
14
+ AnchorHTMLAttributes,
15
+ AreaHTMLAttributes,
16
+ AudioHTMLAttributes,
17
+ BaseHTMLAttributes,
18
+ BlockquoteHTMLAttributes,
19
+ ButtonHTMLAttributes,
20
+ CanvasHTMLAttributes,
21
+ ColHTMLAttributes,
22
+ ColgroupHTMLAttributes,
23
+ DataHTMLAttributes,
24
+ DatalistHTMLAttributes,
25
+ DelHTMLAttributes,
26
+ DetailsHTMLAttributes,
27
+ DialogHTMLAttributes,
28
+ EmbedHTMLAttributes,
29
+ FieldsetHTMLAttributes,
30
+ FormHTMLAttributes,
31
+ IframeHTMLAttributes,
32
+ ImgHTMLAttributes,
33
+ InputHTMLAttributes,
34
+ InsHTMLAttributes,
35
+ LabelHTMLAttributes,
36
+ LiHTMLAttributes,
37
+ LinkHTMLAttributes,
38
+ MapHTMLAttributes,
39
+ MenuHTMLAttributes,
40
+ MetaHTMLAttributes,
41
+ MeterHTMLAttributes,
42
+ ObjectHTMLAttributes,
43
+ OlHTMLAttributes,
44
+ OptgroupHTMLAttributes,
45
+ OptionHTMLAttributes,
46
+ OutputHTMLAttributes,
47
+ ProgressHTMLAttributes,
48
+ ScriptHTMLAttributes,
49
+ SelectHTMLAttributes,
50
+ SlotHTMLAttributes,
51
+ SourceHTMLAttributes,
52
+ StyleHTMLAttributes,
53
+ TableHTMLAttributes,
54
+ TdHTMLAttributes,
55
+ TextareaHTMLAttributes,
56
+ ThHTMLAttributes,
57
+ TimeHTMLAttributes,
58
+ TrackHTMLAttributes,
59
+ VideoHTMLAttributes,
60
+ SVGAttributes,
61
+ } from "./dom-types";
62
+
12
63
  export const Fragment = Symbol("Fragment");
13
64
 
14
65
  type PropsOf<T> = T extends string
15
- ? JSX.IntrinsicElements[T]
66
+ ? T extends keyof JSX.IntrinsicElements
67
+ ? JSX.IntrinsicElements[T]
68
+ : HTMLAttributes
16
69
  : T extends ComponentConstructor<infer P>
17
70
  ? { [K in keyof P]: Reactive<P[K]> }
18
71
  : Record<string, unknown>;
19
72
 
20
- type Reactive<T> = T | (() => T);
21
-
22
73
  export function jsx<T extends string | ComponentConstructor | symbol>(
23
74
  type: T,
24
75
  props: PropsOf<T> & { children?: unknown },
@@ -51,35 +102,32 @@ export const jsxDEV = jsx;
51
102
  export namespace JSX {
52
103
  export type Element = Node | Node[];
53
104
 
54
- interface GlobalAttributes {
55
- key?: string | number | symbol;
56
- }
57
-
58
105
  // Resolves to `true` when T is the `any` type.
59
106
  type IsAny<T> = 0 extends 1 & T ? true : false;
60
107
 
61
- // Infer props from the class instance properties
62
- // (excludes lifecycle and methods)
108
+ // Internal framework property names excluded from JSX prop inference.
109
+ // `_${string}` covers all underscore-prefixed internals without enumeration.
110
+ type FrameworkKeys =
111
+ | `_${string}`
112
+ | "props"
113
+ | "render"
114
+ | "onBeforeMount"
115
+ | "onMount"
116
+ | "onUnmount"
117
+ | "onError"
118
+ | "onUpdate";
119
+
120
+ // Infer typed props:
121
+ // - StatelessComponent<T> with an explicit T → use _rawProps keys directly.
122
+ // - StatefulComponent (wide record) → walk instance properties, strip framework
123
+ // internals via FrameworkKeys and method filter, leaving @Prop/@State fields.
63
124
  type InstancePropsOf<C> = C extends { prototype: infer I }
64
125
  ? IsAny<I> extends true
65
126
  ? never // raw construct-type alias — prototype resolves to `any`
66
127
  : I extends { _rawProps: infer RawProps extends object }
67
128
  ? [string] extends [keyof RawProps]
68
129
  ? {
69
- [K in keyof I as K extends
70
- | "_defaults"
71
- | "_stateDirty"
72
- | "_rawProps"
73
- | "_mounted"
74
- | "_anchor"
75
- | "_setProps"
76
- | "props"
77
- | "onBeforeMount"
78
- | "onMount"
79
- | "onUnmount"
80
- | "onError"
81
- | "render"
82
- | "onUpdate"
130
+ [K in keyof I as K extends FrameworkKeys
83
131
  ? never
84
132
  : I[K] extends (...args: unknown[]) => unknown
85
133
  ? never
@@ -90,222 +138,245 @@ export namespace JSX {
90
138
  : never;
91
139
 
92
140
  export type LibraryManagedAttributes<C, P> = C extends string
93
- ? P & GlobalAttributes
141
+ ? P & { key?: string | number | symbol }
94
142
  : [InstancePropsOf<C>] extends [never]
95
143
  ? C extends new (props: infer CtorProps) => unknown
96
- ? { [K in keyof CtorProps]?: Reactive<CtorProps[K]> } & GlobalAttributes
97
- : Record<string, unknown> & GlobalAttributes
98
- : InstancePropsOf<C> & GlobalAttributes;
144
+ ? {
145
+ [K in keyof CtorProps]?: Reactive<CtorProps[K]>;
146
+ } & { key?: string | number | symbol }
147
+ : Record<string, unknown> & { key?: string | number | symbol }
148
+ : InstancePropsOf<C> & { key?: string | number | symbol };
99
149
 
100
150
  export interface IntrinsicElements {
101
- div: HTMLAttributes;
102
- span: HTMLAttributes;
103
- p: HTMLAttributes;
104
- h1: HTMLAttributes;
105
- h2: HTMLAttributes;
106
- h3: HTMLAttributes;
107
- h4: HTMLAttributes;
108
- h5: HTMLAttributes;
109
- h6: HTMLAttributes;
110
- button: ButtonAttributes;
111
- input: InputAttributes;
112
- form: FormAttributes;
113
- ul: HTMLAttributes;
114
- ol: HTMLAttributes;
115
- li: HTMLAttributes;
116
- a: AnchorAttributes;
117
- img: ImgAttributes;
118
- section: HTMLAttributes;
151
+ // --- Metadata ---
152
+ base: BaseHTMLAttributes;
153
+ head: HTMLAttributes;
154
+ html: HTMLAttributes<HTMLHtmlElement>;
155
+ link: LinkHTMLAttributes;
156
+ meta: MetaHTMLAttributes;
157
+ noscript: HTMLAttributes;
158
+ script: ScriptHTMLAttributes;
159
+ style: StyleHTMLAttributes;
160
+ title: HTMLAttributes<HTMLTitleElement>;
161
+
162
+ // --- Sectioning ---
163
+ address: HTMLAttributes;
164
+ article: HTMLAttributes;
165
+ aside: HTMLAttributes;
166
+ body: HTMLAttributes<HTMLBodyElement>;
167
+ footer: HTMLAttributes;
119
168
  header: HTMLAttributes;
169
+ h1: HTMLAttributes<HTMLHeadingElement>;
170
+ h2: HTMLAttributes<HTMLHeadingElement>;
171
+ h3: HTMLAttributes<HTMLHeadingElement>;
172
+ h4: HTMLAttributes<HTMLHeadingElement>;
173
+ h5: HTMLAttributes<HTMLHeadingElement>;
174
+ h6: HTMLAttributes<HTMLHeadingElement>;
175
+ hgroup: HTMLAttributes;
120
176
  main: HTMLAttributes;
121
- footer: HTMLAttributes;
122
177
  nav: HTMLAttributes;
123
- article: HTMLAttributes;
124
- aside: HTMLAttributes;
125
- label: LabelAttributes;
126
- select: SelectAttributes;
127
- option: OptionAttributes;
128
- textarea: TextareaAttributes;
129
- table: HTMLAttributes;
130
- thead: HTMLAttributes;
131
- tbody: HTMLAttributes;
132
- tfoot: HTMLAttributes;
133
- tr: HTMLAttributes;
134
- th: ThAttributes;
135
- td: TdAttributes;
136
- pre: HTMLAttributes;
178
+ search: HTMLAttributes;
179
+ section: HTMLAttributes;
180
+
181
+ // --- Grouping content ---
182
+ blockquote: BlockquoteHTMLAttributes;
183
+ dd: HTMLAttributes;
184
+ div: HTMLAttributes<HTMLDivElement>;
185
+ dl: HTMLAttributes<HTMLDListElement>;
186
+ dt: HTMLAttributes;
187
+ figcaption: HTMLAttributes;
188
+ figure: HTMLAttributes;
189
+ hr: HTMLAttributes<HTMLHRElement>;
190
+ li: LiHTMLAttributes;
191
+ menu: MenuHTMLAttributes;
192
+ ol: OlHTMLAttributes;
193
+ p: HTMLAttributes<HTMLParagraphElement>;
194
+ pre: HTMLAttributes<HTMLPreElement>;
195
+ ul: HTMLAttributes<HTMLUListElement>;
196
+
197
+ // --- Text-level semantics ---
198
+ a: AnchorHTMLAttributes;
199
+ abbr: HTMLAttributes;
200
+ b: HTMLAttributes;
201
+ bdi: HTMLAttributes;
202
+ bdo: HTMLAttributes;
203
+ br: HTMLAttributes<HTMLBRElement>;
204
+ cite: HTMLAttributes;
137
205
  code: HTMLAttributes;
138
- strong: HTMLAttributes;
206
+ data: DataHTMLAttributes;
207
+ dfn: HTMLAttributes;
139
208
  em: HTMLAttributes;
209
+ i: HTMLAttributes;
210
+ kbd: HTMLAttributes;
211
+ mark: HTMLAttributes;
212
+ q: BlockquoteHTMLAttributes;
213
+ rp: HTMLAttributes;
214
+ rt: HTMLAttributes;
215
+ ruby: HTMLAttributes;
216
+ s: HTMLAttributes;
217
+ samp: HTMLAttributes;
140
218
  small: HTMLAttributes;
141
- hr: HTMLAttributes;
142
- br: HTMLAttributes;
143
- [key: string]: HTMLAttributes;
144
- }
145
-
146
- interface HTMLAttributes {
147
- id?: Reactive<string>;
148
- class?: Reactive<string>;
149
- className?: Reactive<string>;
150
- style?: Reactive<string | Partial<CSSStyleDeclaration>>;
151
- children?: Children;
152
- key?: string | number;
153
- ref?: (el: HTMLElement) => void;
154
- tabIndex?: Reactive<number>;
155
- title?: Reactive<string>;
156
- hidden?: Reactive<boolean>;
157
- draggable?: Reactive<boolean>;
158
- role?: Reactive<string>;
159
- // Aria
160
- "aria-label"?: Reactive<string>;
161
- "aria-hidden"?: Reactive<boolean | "true" | "false">;
162
- "aria-expanded"?: Reactive<boolean | "true" | "false">;
163
- "aria-checked"?: Reactive<boolean | "true" | "false" | "mixed">;
164
- "aria-disabled"?: Reactive<boolean | "true" | "false">;
165
- "aria-selected"?: Reactive<boolean | "true" | "false">;
166
- "aria-controls"?: Reactive<string>;
167
- "aria-describedby"?: Reactive<string>;
168
- "aria-labelledby"?: Reactive<string>;
169
- // Mouse Events
170
- onClick?: (e: MouseEvent) => void;
171
- onDblClick?: (e: MouseEvent) => void;
172
- onMouseDown?: (e: MouseEvent) => void;
173
- onMouseUp?: (e: MouseEvent) => void;
174
- onMouseEnter?: (e: MouseEvent) => void;
175
- onMouseLeave?: (e: MouseEvent) => void;
176
- onMouseMove?: (e: MouseEvent) => void;
177
- onContextMenu?: (e: MouseEvent) => void;
178
- // Keyboard Events
179
- onKeyDown?: (e: KeyboardEvent) => void;
180
- onKeyUp?: (e: KeyboardEvent) => void;
181
- onKeyPress?: (e: KeyboardEvent) => void;
182
- // Focus Events
183
- onFocus?: (e: FocusEvent) => void;
184
- onBlur?: (e: FocusEvent) => void;
185
- // Form Events
186
- onChange?: (e: Event) => void;
187
- onInput?: (e: InputEvent) => void;
188
- onSubmit?: (e: SubmitEvent) => void;
189
- onReset?: (e: Event) => void;
190
- // Drag Events
191
- onDragStart?: (e: DragEvent) => void;
192
- onDragEnd?: (e: DragEvent) => void;
193
- onDragOver?: (e: DragEvent) => void;
194
- onDrop?: (e: DragEvent) => void;
195
- // Touch Events
196
- onTouchStart?: (e: TouchEvent) => void;
197
- onTouchEnd?: (e: TouchEvent) => void;
198
- onTouchMove?: (e: TouchEvent) => void;
199
- // Other Events
200
- onScroll?: (e: Event) => void;
201
- onWheel?: (e: WheelEvent) => void;
202
- onAnimationEnd?: (e: AnimationEvent) => void;
203
- onTransitionEnd?: (e: TransitionEvent) => void;
204
- [key: string]: unknown;
205
- }
206
-
207
- interface ButtonAttributes extends HTMLAttributes {
208
- type?: "button" | "submit" | "reset";
209
- disabled?: Reactive<boolean>;
210
- form?: string;
211
- name?: string;
212
- value?: Reactive<string>;
213
- }
214
-
215
- interface InputAttributes extends HTMLAttributes {
216
- type?: string;
217
- value?: Reactive<string | number>;
218
- defaultValue?: string | number;
219
- placeholder?: Reactive<string>;
220
- disabled?: Reactive<boolean>;
221
- checked?: Reactive<boolean>;
222
- defaultChecked?: boolean;
223
- name?: string;
224
- min?: Reactive<string | number>;
225
- max?: Reactive<string | number>;
226
- step?: Reactive<string | number>;
227
- minLength?: number;
228
- maxLength?: number;
229
- pattern?: string;
230
- required?: Reactive<boolean>;
231
- readOnly?: Reactive<boolean>;
232
- multiple?: boolean;
233
- accept?: string;
234
- autoComplete?: string;
235
- autoFocus?: boolean;
236
- }
237
-
238
- interface FormAttributes extends HTMLAttributes {
239
- action?: string;
240
- method?: "get" | "post";
241
- encType?: string;
242
- noValidate?: boolean;
243
- target?: string;
244
- name?: string;
245
- }
246
-
247
- interface AnchorAttributes extends HTMLAttributes {
248
- href?: Reactive<string>;
249
- target?: "_blank" | "_self" | "_parent" | "_top";
250
- rel?: string;
251
- download?: string | boolean;
252
- }
219
+ span: HTMLAttributes;
220
+ strong: HTMLAttributes;
221
+ sub: HTMLAttributes;
222
+ sup: HTMLAttributes;
223
+ time: TimeHTMLAttributes;
224
+ u: HTMLAttributes;
225
+ var: HTMLAttributes;
226
+ wbr: HTMLAttributes;
253
227
 
254
- interface ImgAttributes extends HTMLAttributes {
255
- src?: Reactive<string>;
256
- alt?: string;
257
- width?: Reactive<number | string>;
258
- height?: Reactive<number | string>;
259
- loading?: "lazy" | "eager";
260
- decoding?: "async" | "sync" | "auto";
261
- }
228
+ // --- Edits ---
229
+ del: DelHTMLAttributes;
230
+ ins: InsHTMLAttributes;
262
231
 
263
- interface LabelAttributes extends HTMLAttributes {
264
- for?: string;
265
- htmlFor?: string;
266
- form?: string;
267
- }
232
+ // --- Embedded content ---
233
+ area: AreaHTMLAttributes;
234
+ audio: AudioHTMLAttributes;
235
+ canvas: CanvasHTMLAttributes;
236
+ embed: EmbedHTMLAttributes;
237
+ iframe: IframeHTMLAttributes;
238
+ img: ImgHTMLAttributes;
239
+ map: MapHTMLAttributes;
240
+ object: ObjectHTMLAttributes;
241
+ picture: HTMLAttributes;
242
+ source: SourceHTMLAttributes;
243
+ track: TrackHTMLAttributes;
244
+ video: VideoHTMLAttributes;
268
245
 
269
- interface SelectAttributes extends HTMLAttributes {
270
- value?: Reactive<string>;
271
- multiple?: boolean;
272
- size?: number;
273
- disabled?: Reactive<boolean>;
274
- required?: Reactive<boolean>;
275
- name?: string;
276
- }
246
+ // --- Forms ---
247
+ button: ButtonHTMLAttributes;
248
+ datalist: DatalistHTMLAttributes;
249
+ fieldset: FieldsetHTMLAttributes;
250
+ form: FormHTMLAttributes;
251
+ input: InputHTMLAttributes;
252
+ label: LabelHTMLAttributes;
253
+ legend: HTMLAttributes<HTMLLegendElement>;
254
+ meter: MeterHTMLAttributes;
255
+ optgroup: OptgroupHTMLAttributes;
256
+ option: OptionHTMLAttributes;
257
+ output: OutputHTMLAttributes;
258
+ progress: ProgressHTMLAttributes;
259
+ select: SelectHTMLAttributes;
260
+ textarea: TextareaHTMLAttributes;
277
261
 
278
- interface OptionAttributes extends HTMLAttributes {
279
- value?: string;
280
- selected?: Reactive<boolean>;
281
- disabled?: Reactive<boolean>;
282
- label?: string;
283
- }
262
+ // --- Interactive ---
263
+ details: DetailsHTMLAttributes;
264
+ dialog: DialogHTMLAttributes;
265
+ slot: SlotHTMLAttributes;
266
+ summary: HTMLAttributes;
284
267
 
285
- interface TextareaAttributes extends HTMLAttributes {
286
- value?: Reactive<string>;
287
- defaultValue?: string;
288
- placeholder?: Reactive<string>;
289
- rows?: number;
290
- cols?: number;
291
- disabled?: Reactive<boolean>;
292
- required?: Reactive<boolean>;
293
- readOnly?: Reactive<boolean>;
294
- minLength?: number;
295
- maxLength?: number;
296
- name?: string;
297
- autoFocus?: boolean;
298
- resize?: "none" | "both" | "horizontal" | "vertical";
299
- }
268
+ // --- Tabular ---
269
+ caption: HTMLAttributes<HTMLTableCaptionElement>;
270
+ col: ColHTMLAttributes;
271
+ colgroup: ColgroupHTMLAttributes;
272
+ table: TableHTMLAttributes;
273
+ tbody: HTMLAttributes<HTMLTableSectionElement>;
274
+ td: TdHTMLAttributes;
275
+ tfoot: HTMLAttributes<HTMLTableSectionElement>;
276
+ th: ThHTMLAttributes;
277
+ thead: HTMLAttributes<HTMLTableSectionElement>;
278
+ tr: HTMLAttributes<HTMLTableRowElement>;
300
279
 
301
- interface ThAttributes extends HTMLAttributes {
302
- colSpan?: number;
303
- rowSpan?: number;
304
- scope?: "col" | "row" | "colgroup" | "rowgroup";
305
- }
280
+ // --- Scripting ---
281
+ template: HTMLAttributes<HTMLTemplateElement>;
306
282
 
307
- interface TdAttributes extends HTMLAttributes {
308
- colSpan?: number;
309
- rowSpan?: number;
283
+ // --- SVG ---
284
+ svg: SVGAttributes<SVGSVGElement>;
285
+ path: SVGAttributes<SVGPathElement>;
286
+ circle: SVGAttributes<SVGCircleElement>;
287
+ rect: SVGAttributes<SVGRectElement>;
288
+ line: SVGAttributes<SVGLineElement>;
289
+ polyline: SVGAttributes<SVGPolylineElement>;
290
+ polygon: SVGAttributes<SVGPolygonElement>;
291
+ ellipse: SVGAttributes<SVGEllipseElement>;
292
+ text: SVGAttributes<SVGTextElement>;
293
+ g: SVGAttributes<SVGGElement>;
294
+ defs: SVGAttributes<SVGDefsElement>;
295
+ use: SVGAttributes<SVGUseElement>;
296
+ symbol: SVGAttributes<SVGSymbolElement>;
297
+ marker: SVGAttributes<SVGMarkerElement>;
298
+ clipPath: SVGAttributes<SVGClipPathElement>;
299
+ mask: SVGAttributes<SVGMaskElement>;
300
+ pattern: SVGAttributes<SVGPatternElement>;
301
+ image: SVGAttributes<SVGImageElement>;
302
+ linearGradient: SVGAttributes<SVGLinearGradientElement>;
303
+ radialGradient: SVGAttributes<SVGRadialGradientElement>;
304
+ stop: SVGAttributes<SVGStopElement>;
305
+ filter: SVGAttributes<SVGFilterElement>;
306
+ feGaussianBlur: SVGAttributes<SVGFEGaussianBlurElement>;
307
+ tspan: SVGAttributes<SVGTSpanElement>;
308
+ textPath: SVGAttributes<SVGTextPathElement>;
309
+ foreignObject: SVGAttributes<SVGForeignObjectElement>;
310
310
  }
311
311
  }
312
+
313
+ // Re-export all HTML/SVG attribute types for use in application code.
314
+ export type {
315
+ Reactive,
316
+ Booleanish,
317
+ CSSProperties,
318
+ HTMLInputTypeAttribute,
319
+ ButtonType,
320
+ FormMethod,
321
+ FormEncType,
322
+ LinkTarget,
323
+ ReferrerPolicy,
324
+ CrossOrigin,
325
+ Decoding,
326
+ Loading,
327
+ Dir,
328
+ AutoCapitalize,
329
+ InputMode,
330
+ EnterKeyHint,
331
+ AriaAttributes,
332
+ DOMAttributes,
333
+ HTMLAttributes,
334
+ AnchorHTMLAttributes,
335
+ AreaHTMLAttributes,
336
+ AudioHTMLAttributes,
337
+ BaseHTMLAttributes,
338
+ BlockquoteHTMLAttributes,
339
+ ButtonHTMLAttributes,
340
+ CanvasHTMLAttributes,
341
+ ColHTMLAttributes,
342
+ ColgroupHTMLAttributes,
343
+ DataHTMLAttributes,
344
+ DatalistHTMLAttributes,
345
+ DelHTMLAttributes,
346
+ DetailsHTMLAttributes,
347
+ DialogHTMLAttributes,
348
+ EmbedHTMLAttributes,
349
+ FieldsetHTMLAttributes,
350
+ FormHTMLAttributes,
351
+ IframeHTMLAttributes,
352
+ ImgHTMLAttributes,
353
+ InputHTMLAttributes,
354
+ InsHTMLAttributes,
355
+ LabelHTMLAttributes,
356
+ LiHTMLAttributes,
357
+ LinkHTMLAttributes,
358
+ MapHTMLAttributes,
359
+ MediaHTMLAttributes,
360
+ MenuHTMLAttributes,
361
+ MetaHTMLAttributes,
362
+ MeterHTMLAttributes,
363
+ ObjectHTMLAttributes,
364
+ OlHTMLAttributes,
365
+ OptgroupHTMLAttributes,
366
+ OptionHTMLAttributes,
367
+ OutputHTMLAttributes,
368
+ ProgressHTMLAttributes,
369
+ ScriptHTMLAttributes,
370
+ SelectHTMLAttributes,
371
+ SlotHTMLAttributes,
372
+ SourceHTMLAttributes,
373
+ StyleHTMLAttributes,
374
+ TableHTMLAttributes,
375
+ TdHTMLAttributes,
376
+ TextareaHTMLAttributes,
377
+ ThHTMLAttributes,
378
+ TimeHTMLAttributes,
379
+ TrackHTMLAttributes,
380
+ VideoHTMLAttributes,
381
+ SVGAttributes,
382
+ } from "./dom-types";