import type { AddEventObject } from '#public'; import type { Nullable } from '#helpers'; /** * Ripple JSX Runtime Type Definitions * Ripple components are imperative and don't return JSX elements */ // Ripple components don't return JSX elements - they're imperative export type ComponentType

= (props: P) => void; /** * Create a JSX element (for elements with children) * In Ripple, this doesn't return anything - components are imperative */ export function jsx( type: string | ComponentType, props?: any, key?: string | number | null, ): void; export function rsx( type: string | ComponentType, props?: any, key?: string | number | null, ): void; /** * Create a JSX element with static children (optimization for multiple children) * In Ripple, this doesn't return anything - components are imperative */ export function jsxs( type: string | ComponentType, props?: any, key?: string | number | null, ): void; /** * JSX Fragment component * In Ripple, fragments are imperative and don't return anything */ export function Fragment(props: { children?: any }): void; export type ClassValue = string | import('clsx').ClassArray | import('clsx').ClassDictionary; // Base HTML attributes interface HTMLAttributes { class?: ClassValue | undefined | null; className?: Nullable; id?: Nullable; style?: Nullable | Record; title?: Nullable; lang?: Nullable; dir?: 'ltr' | 'rtl' | 'auto'; tabIndex?: Nullable; contentEditable?: boolean | 'true' | 'false' | 'inherit'; draggable?: boolean; hidden?: boolean; spellCheck?: boolean; translate?: 'yes' | 'no'; role?: Nullable; // ARIA attributes 'aria-label'?: Nullable; 'aria-labelledby'?: Nullable; 'aria-describedby'?: Nullable; 'aria-hidden'?: boolean | 'true' | 'false'; 'aria-expanded'?: boolean | 'true' | 'false'; 'aria-pressed'?: boolean | 'true' | 'false' | 'mixed'; 'aria-selected'?: boolean | 'true' | 'false'; 'aria-checked'?: boolean | 'true' | 'false' | 'mixed'; 'aria-disabled'?: boolean | 'true' | 'false'; 'aria-readonly'?: boolean | 'true' | 'false'; 'aria-required'?: boolean | 'true' | 'false'; 'aria-live'?: 'off' | 'polite' | 'assertive'; 'aria-atomic'?: boolean | 'true' | 'false'; 'aria-busy'?: boolean | 'true' | 'false'; 'aria-controls'?: Nullable; 'aria-current'?: boolean | 'true' | 'false' | 'page' | 'step' | 'location' | 'date' | 'time'; 'aria-owns'?: Nullable; 'aria-valuemin'?: Nullable; 'aria-valuemax'?: Nullable; 'aria-valuenow'?: Nullable; 'aria-valuetext'?: Nullable; // Event handlers onClick?: EventListener | AddEventObject; onDblClick?: EventListener | AddEventObject; onInput?: EventListener | AddEventObject; onChange?: EventListener | AddEventObject; onSubmit?: EventListener | AddEventObject; onFocus?: EventListener | AddEventObject; onBlur?: EventListener | AddEventObject; onKeyDown?: EventListener | AddEventObject; onKeyUp?: EventListener | AddEventObject; onKeyPress?: EventListener | AddEventObject; onMouseDown?: EventListener | AddEventObject; onMouseUp?: EventListener | AddEventObject; onMouseEnter?: EventListener | AddEventObject; onMouseLeave?: EventListener | AddEventObject; onMouseMove?: EventListener | AddEventObject; onMouseOver?: EventListener | AddEventObject; onMouseOut?: EventListener | AddEventObject; onWheel?: EventListener | AddEventObject; onScroll?: EventListener | AddEventObject; onTouchStart?: EventListener | AddEventObject; onTouchMove?: EventListener | AddEventObject; onTouchEnd?: EventListener | AddEventObject; onTouchCancel?: EventListener | AddEventObject; onDragStart?: EventListener | AddEventObject; onDrag?: EventListener | AddEventObject; onDragEnd?: EventListener | AddEventObject; onDragEnter?: EventListener | AddEventObject; onDragLeave?: EventListener | AddEventObject; onDragOver?: EventListener | AddEventObject; onDrop?: EventListener | AddEventObject; onCopy?: EventListener | AddEventObject; onCut?: EventListener | AddEventObject; onPaste?: EventListener | AddEventObject; onLoad?: EventListener | AddEventObject; onError?: EventListener | AddEventObject; onResize?: EventListener | AddEventObject; onAnimationStart?: EventListener | AddEventObject; onAnimationEnd?: EventListener | AddEventObject; onAnimationIteration?: EventListener | AddEventObject; onTransitionEnd?: EventListener | AddEventObject; children?: any; [key: string]: any; } // SVG common attributes interface SVGAttributes { // Core attributes id?: Nullable; lang?: Nullable; tabIndex?: Nullable; xmlBase?: Nullable; xmlLang?: Nullable; xmlSpace?: Nullable; // Styling class?: ClassValue | undefined | null; className?: Nullable; style?: Nullable | Record; // Presentation attributes alignmentBaseline?: | 'auto' | 'baseline' | 'before-edge' | 'text-before-edge' | 'middle' | 'central' | 'after-edge' | 'text-after-edge' | 'ideographic' | 'alphabetic' | 'hanging' | 'mathematical' | 'inherit'; baselineShift?: string | number; clip?: Nullable; clipPath?: Nullable; clipRule?: 'nonzero' | 'evenodd' | 'inherit'; color?: Nullable; colorInterpolation?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit'; colorInterpolationFilters?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit'; cursor?: Nullable; direction?: 'ltr' | 'rtl' | 'inherit'; display?: Nullable; dominantBaseline?: | 'auto' | 'text-bottom' | 'alphabetic' | 'ideographic' | 'middle' | 'central' | 'mathematical' | 'hanging' | 'text-top' | 'inherit'; fill?: Nullable; fillOpacity?: number | string; fillRule?: 'nonzero' | 'evenodd' | 'inherit'; filter?: Nullable; floodColor?: Nullable; floodOpacity?: number | string; fontFamily?: Nullable; fontSize?: string | number; fontSizeAdjust?: string | number; fontStretch?: Nullable; fontStyle?: 'normal' | 'italic' | 'oblique' | 'inherit'; fontVariant?: Nullable; fontWeight?: string | number; glyphOrientationHorizontal?: Nullable; glyphOrientationVertical?: Nullable; imageRendering?: 'auto' | 'optimizeSpeed' | 'optimizeQuality' | 'inherit'; letterSpacing?: string | number; lightingColor?: Nullable; markerEnd?: Nullable; markerMid?: Nullable; markerStart?: Nullable; mask?: Nullable; opacity?: number | string; overflow?: 'visible' | 'hidden' | 'scroll' | 'auto' | 'inherit'; pointerEvents?: | 'bounding-box' | 'visiblePainted' | 'visibleFill' | 'visibleStroke' | 'visible' | 'painted' | 'fill' | 'stroke' | 'all' | 'none' | 'inherit'; shapeRendering?: 'auto' | 'optimizeSpeed' | 'crispEdges' | 'geometricPrecision' | 'inherit'; stopColor?: Nullable; stopOpacity?: number | string; stroke?: Nullable; strokeDasharray?: string | number; strokeDashoffset?: string | number; strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit'; strokeLinejoin?: 'miter' | 'round' | 'bevel' | 'inherit'; strokeMiterlimit?: number | string; strokeOpacity?: number | string; strokeWidth?: string | number; textAnchor?: 'start' | 'middle' | 'end' | 'inherit'; textDecoration?: Nullable; textRendering?: | 'auto' | 'optimizeSpeed' | 'optimizeLegibility' | 'geometricPrecision' | 'inherit'; transform?: Nullable; transformOrigin?: Nullable; unicodeBidi?: | 'normal' | 'embed' | 'isolate' | 'bidi-override' | 'isolate-override' | 'plaintext' | 'inherit'; vectorEffect?: | 'none' | 'non-scaling-stroke' | 'non-scaling-size' | 'non-rotation' | 'fixed-position'; visibility?: 'visible' | 'hidden' | 'collapse' | 'inherit'; wordSpacing?: string | number; writingMode?: 'horizontal-tb' | 'vertical-rl' | 'vertical-lr' | 'inherit'; // Common SVG attributes width?: string | number; height?: string | number; x?: string | number; y?: string | number; viewBox?: Nullable; preserveAspectRatio?: Nullable; xmlns?: Nullable; 'xmlns:xlink'?: Nullable; // Event handlers (inherited from HTML but included for clarity) onClick?: EventListener | AddEventObject; onMouseDown?: EventListener | AddEventObject; onMouseUp?: EventListener | AddEventObject; onMouseMove?: EventListener | AddEventObject; onMouseEnter?: EventListener | AddEventObject; onMouseLeave?: EventListener | AddEventObject; onMouseOver?: EventListener | AddEventObject; onMouseOut?: EventListener | AddEventObject; onFocus?: EventListener | AddEventObject; onBlur?: EventListener | AddEventObject; onLoad?: EventListener | AddEventObject; onError?: EventListener | AddEventObject; children?: any; [key: string]: any; } // SVG animation attributes interface SVGAnimationAttributes { attributeName?: Nullable; attributeType?: 'CSS' | 'XML' | 'auto'; begin?: Nullable; dur?: Nullable; end?: Nullable; min?: Nullable; max?: Nullable; restart?: 'always' | 'whenNotActive' | 'never'; repeatCount?: number | 'indefinite'; repeatDur?: Nullable; fill?: 'freeze' | 'remove'; calcMode?: 'discrete' | 'linear' | 'paced' | 'spline'; values?: Nullable; keyTimes?: Nullable; keySplines?: Nullable; from?: string | number; to?: string | number; by?: string | number; additive?: 'replace' | 'sum'; accumulate?: 'none' | 'sum'; } // SVG gradient attributes interface SVGGradientAttributes extends SVGAttributes { gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; gradientTransform?: Nullable; spreadMethod?: 'pad' | 'reflect' | 'repeat'; href?: Nullable; 'xlink:href'?: Nullable; } // SVG filter primitive attributes interface SVGFilterAttributes { in?: Nullable; result?: Nullable; x?: string | number; y?: string | number; width?: string | number; height?: string | number; } // SVG transfer function attributes (for feFuncR, feFuncG, feFuncB, feFuncA) interface SVGTransferFunctionAttributes { type?: 'identity' | 'table' | 'discrete' | 'linear' | 'gamma'; tableValues?: Nullable; slope?: Nullable; intercept?: Nullable; amplitude?: Nullable; exponent?: Nullable; offset?: Nullable; } // SVG text attributes interface SVGTextAttributes { x?: string | number; y?: string | number; dx?: string | number; dy?: string | number; rotate?: string | number; lengthAdjust?: 'spacing' | 'spacingAndGlyphs'; textLength?: string | number; } // Global JSX namespace for TypeScript declare global { namespace JSX { // In Ripple, JSX expressions don't return elements - they're imperative type Element = void; interface IntrinsicElements { // Document metadata head: HTMLAttributes; title: HTMLAttributes; base: HTMLAttributes & { href?: Nullable; target?: Nullable; }; link: HTMLAttributes & { rel?: Nullable; href?: Nullable; type?: Nullable; media?: Nullable; as?: Nullable; crossOrigin?: 'anonymous' | 'use-credentials'; integrity?: Nullable; }; meta: HTMLAttributes & { name?: Nullable; content?: Nullable; charSet?: Nullable; httpEquiv?: Nullable; property?: Nullable; }; style: HTMLAttributes & { type?: Nullable; media?: Nullable; }; // Sectioning root body: HTMLAttributes; // Content sectioning address: HTMLAttributes; article: HTMLAttributes; aside: HTMLAttributes; footer: HTMLAttributes; header: HTMLAttributes; h1: HTMLAttributes; h2: HTMLAttributes; h3: HTMLAttributes; h4: HTMLAttributes; h5: HTMLAttributes; h6: HTMLAttributes; hgroup: HTMLAttributes; main: HTMLAttributes; nav: HTMLAttributes; section: HTMLAttributes; search: HTMLAttributes; // Text content blockquote: HTMLAttributes & { cite?: Nullable; }; dd: HTMLAttributes; div: HTMLAttributes; dl: HTMLAttributes; dt: HTMLAttributes; figcaption: HTMLAttributes; figure: HTMLAttributes; hr: HTMLAttributes; li: HTMLAttributes & { value?: Nullable; }; menu: HTMLAttributes; ol: HTMLAttributes & { reversed?: boolean; start?: Nullable; type?: '1' | 'a' | 'A' | 'i' | 'I'; }; p: HTMLAttributes; pre: HTMLAttributes; ul: HTMLAttributes; // Inline text semantics a: HTMLAttributes & { href?: Nullable; target?: Nullable; rel?: Nullable; download?: string | boolean; hrefLang?: Nullable; type?: Nullable; referrerPolicy?: Nullable; }; abbr: HTMLAttributes; b: HTMLAttributes; bdi: HTMLAttributes; bdo: HTMLAttributes; br: HTMLAttributes; cite: HTMLAttributes; code: HTMLAttributes; data: HTMLAttributes & { value?: Nullable; }; dfn: HTMLAttributes; em: HTMLAttributes; i: HTMLAttributes; kbd: HTMLAttributes; mark: HTMLAttributes; q: HTMLAttributes & { cite?: Nullable; }; rp: HTMLAttributes; rt: HTMLAttributes; ruby: HTMLAttributes; s: HTMLAttributes; samp: HTMLAttributes; small: HTMLAttributes; span: HTMLAttributes; strong: HTMLAttributes; sub: HTMLAttributes; sup: HTMLAttributes; time: HTMLAttributes & { dateTime?: Nullable; }; u: HTMLAttributes; var: HTMLAttributes; wbr: HTMLAttributes; // Image and multimedia area: HTMLAttributes & { alt?: Nullable; coords?: Nullable; download?: Nullable; href?: Nullable; hrefLang?: Nullable; media?: Nullable; rel?: Nullable; shape?: 'rect' | 'circle' | 'poly' | 'default'; target?: Nullable; }; audio: HTMLAttributes & { src?: Nullable; autoplay?: boolean; controls?: boolean; loop?: boolean; muted?: boolean; preload?: 'none' | 'metadata' | 'auto'; crossOrigin?: 'anonymous' | 'use-credentials'; }; img: HTMLAttributes & { src?: Nullable; alt?: Nullable; width?: string | number; height?: string | number; loading?: 'eager' | 'lazy'; crossOrigin?: 'anonymous' | 'use-credentials'; decoding?: 'sync' | 'async' | 'auto'; fetchPriority?: 'high' | 'low' | 'auto'; referrerPolicy?: Nullable; sizes?: Nullable; srcSet?: Nullable; useMap?: Nullable; }; map: HTMLAttributes & { name?: Nullable; }; track: HTMLAttributes & { default?: boolean; kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata'; label?: Nullable; src?: Nullable; srcLang?: Nullable; }; video: HTMLAttributes & { src?: Nullable; autoplay?: boolean; controls?: boolean; loop?: boolean; muted?: boolean; preload?: 'none' | 'metadata' | 'auto'; poster?: Nullable; width?: string | number; height?: string | number; crossOrigin?: 'anonymous' | 'use-credentials'; playsInline?: boolean; }; // Embedded content embed: HTMLAttributes & { src?: Nullable; type?: Nullable; width?: string | number; height?: string | number; }; iframe: HTMLAttributes & { src?: Nullable; srcdoc?: Nullable; name?: Nullable; sandbox?: Nullable; allow?: Nullable; allowFullScreen?: boolean; width?: string | number; height?: string | number; loading?: 'eager' | 'lazy'; referrerPolicy?: Nullable; }; object: HTMLAttributes & { data?: Nullable; type?: Nullable; name?: Nullable; useMap?: Nullable; width?: string | number; height?: string | number; }; picture: HTMLAttributes; portal: HTMLAttributes & { referrerPolicy?: Nullable; src?: Nullable; }; source: HTMLAttributes & { src?: Nullable; type?: Nullable; media?: Nullable; sizes?: Nullable; srcSet?: Nullable; }; // SVG and MathML svg: HTMLAttributes & SVGAttributes; math: HTMLAttributes; // SVG elements animate: HTMLAttributes & SVGAnimationAttributes; animateMotion: HTMLAttributes & SVGAnimationAttributes; animateTransform: HTMLAttributes & SVGAnimationAttributes & { type?: 'translate' | 'scale' | 'rotate' | 'skewX' | 'skewY'; }; circle: HTMLAttributes & SVGAttributes & { cx?: string | number; cy?: string | number; r?: string | number; }; clipPath: HTMLAttributes & SVGAttributes & { clipPathUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; }; defs: HTMLAttributes & SVGAttributes; desc: HTMLAttributes & SVGAttributes; ellipse: HTMLAttributes & SVGAttributes & { cx?: string | number; cy?: string | number; rx?: string | number; ry?: string | number; }; feBlend: HTMLAttributes & SVGFilterAttributes & { mode?: | 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten' | 'color-dodge' | 'color-burn' | 'hard-light' | 'soft-light' | 'difference' | 'exclusion' | 'hue' | 'saturation' | 'color' | 'luminosity'; in2?: Nullable; }; feColorMatrix: HTMLAttributes & SVGFilterAttributes & { type?: 'matrix' | 'saturate' | 'hueRotate' | 'luminanceToAlpha'; values?: Nullable; }; feComponentTransfer: HTMLAttributes & SVGFilterAttributes; feComposite: HTMLAttributes & SVGFilterAttributes & { operator?: 'over' | 'in' | 'out' | 'atop' | 'xor' | 'lighter' | 'arithmetic'; in2?: Nullable; k1?: Nullable; k2?: Nullable; k3?: Nullable; k4?: Nullable; }; feConvolveMatrix: HTMLAttributes & SVGFilterAttributes; feDiffuseLighting: HTMLAttributes & SVGFilterAttributes; feDisplacementMap: HTMLAttributes & SVGFilterAttributes; feDistantLight: HTMLAttributes & SVGFilterAttributes & { azimuth?: Nullable; elevation?: Nullable; }; feDropShadow: HTMLAttributes & SVGFilterAttributes & { dx?: Nullable; dy?: Nullable; stdDeviation?: number | string; }; feFlood: HTMLAttributes & SVGFilterAttributes & { 'flood-color'?: Nullable; 'flood-opacity'?: number | string; }; feFuncA: HTMLAttributes & SVGTransferFunctionAttributes; feFuncB: HTMLAttributes & SVGTransferFunctionAttributes; feFuncG: HTMLAttributes & SVGTransferFunctionAttributes; feFuncR: HTMLAttributes & SVGTransferFunctionAttributes; feGaussianBlur: HTMLAttributes & SVGFilterAttributes & { stdDeviation?: number | string; }; feImage: HTMLAttributes & SVGFilterAttributes; feMerge: HTMLAttributes & SVGFilterAttributes; feMergeNode: HTMLAttributes & SVGFilterAttributes; feMorphology: HTMLAttributes & SVGFilterAttributes & { operator?: 'erode' | 'dilate'; radius?: number | string; }; feOffset: HTMLAttributes & SVGFilterAttributes & { dx?: Nullable; dy?: Nullable; }; fePointLight: HTMLAttributes & SVGFilterAttributes & { x?: Nullable; y?: Nullable; z?: Nullable; }; feSpecularLighting: HTMLAttributes & SVGFilterAttributes; feSpotLight: HTMLAttributes & SVGFilterAttributes & { x?: Nullable; y?: Nullable; z?: Nullable; pointsAtX?: Nullable; pointsAtY?: Nullable; pointsAtZ?: Nullable; specularExponent?: Nullable; limitingConeAngle?: Nullable; }; feTile: HTMLAttributes & SVGFilterAttributes; feTurbulence: HTMLAttributes & SVGFilterAttributes & { baseFrequency?: number | string; numOctaves?: Nullable; seed?: Nullable; stitchTiles?: 'stitch' | 'noStitch'; type?: 'fractalNoise' | 'turbulence'; }; filter: HTMLAttributes & SVGAttributes & { filterUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; primitiveUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; x?: string | number; y?: string | number; width?: string | number; height?: string | number; }; foreignObject: HTMLAttributes & SVGAttributes & { x?: string | number; y?: string | number; width?: string | number; height?: string | number; }; g: HTMLAttributes & SVGAttributes; image: HTMLAttributes & SVGAttributes & { href?: Nullable; 'xlink:href'?: Nullable; x?: string | number; y?: string | number; width?: string | number; height?: string | number; preserveAspectRatio?: Nullable; }; line: HTMLAttributes & SVGAttributes & { x1?: string | number; y1?: string | number; x2?: string | number; y2?: string | number; }; linearGradient: HTMLAttributes & SVGGradientAttributes & { x1?: string | number; y1?: string | number; x2?: string | number; y2?: string | number; }; marker: HTMLAttributes & SVGAttributes & { markerHeight?: string | number; markerUnits?: 'strokeWidth' | 'userSpaceOnUse'; markerWidth?: string | number; orient?: string | number; refX?: string | number; refY?: string | number; }; mask: HTMLAttributes & SVGAttributes & { maskContentUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; maskUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; x?: string | number; y?: string | number; width?: string | number; height?: string | number; }; metadata: HTMLAttributes & SVGAttributes; mpath: HTMLAttributes & SVGAttributes & { 'xlink:href'?: Nullable; }; path: HTMLAttributes & SVGAttributes & { d?: Nullable; pathLength?: Nullable; }; pattern: HTMLAttributes & SVGAttributes & { patternContentUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; patternTransform?: Nullable; patternUnits?: 'userSpaceOnUse' | 'objectBoundingBox'; x?: string | number; y?: string | number; width?: string | number; height?: string | number; }; polygon: HTMLAttributes & SVGAttributes & { points?: Nullable; }; polyline: HTMLAttributes & SVGAttributes & { points?: Nullable; }; radialGradient: HTMLAttributes & SVGGradientAttributes & { cx?: string | number; cy?: string | number; r?: string | number; fx?: string | number; fy?: string | number; fr?: string | number; }; rect: HTMLAttributes & SVGAttributes & { x?: string | number; y?: string | number; width?: string | number; height?: string | number; rx?: string | number; ry?: string | number; }; set: HTMLAttributes & SVGAnimationAttributes; stop: HTMLAttributes & SVGAttributes & { offset?: string | number; 'stop-color'?: Nullable; 'stop-opacity'?: number | string; }; switch: HTMLAttributes & SVGAttributes; symbol: HTMLAttributes & SVGAttributes & { viewBox?: Nullable; preserveAspectRatio?: Nullable; refX?: string | number; refY?: string | number; }; text: HTMLAttributes & SVGAttributes & SVGTextAttributes; textPath: HTMLAttributes & SVGAttributes & SVGTextAttributes & { href?: Nullable; 'xlink:href'?: Nullable; startOffset?: string | number; method?: 'align' | 'stretch'; spacing?: 'auto' | 'exact'; }; tspan: HTMLAttributes & SVGAttributes & SVGTextAttributes; use: HTMLAttributes & SVGAttributes & { href?: Nullable; 'xlink:href'?: Nullable; x?: string | number; y?: string | number; width?: string | number; height?: string | number; }; view: HTMLAttributes & SVGAttributes & { viewBox?: Nullable; preserveAspectRatio?: Nullable; }; // Scripting canvas: HTMLAttributes & { width?: string | number; height?: string | number; }; noscript: HTMLAttributes; script: HTMLAttributes & { src?: Nullable; type?: Nullable; async?: boolean; defer?: boolean; crossOrigin?: 'anonymous' | 'use-credentials'; integrity?: Nullable; noModule?: boolean; referrerPolicy?: Nullable; }; // Demarcating edits del: HTMLAttributes & { cite?: Nullable; dateTime?: Nullable; }; ins: HTMLAttributes & { cite?: Nullable; dateTime?: Nullable; }; // Table content caption: HTMLAttributes; col: HTMLAttributes & { span?: Nullable; }; colgroup: HTMLAttributes & { span?: Nullable; }; table: HTMLAttributes; tbody: HTMLAttributes; td: HTMLAttributes & { colSpan?: Nullable; rowSpan?: Nullable; headers?: Nullable; }; tfoot: HTMLAttributes; th: HTMLAttributes & { colSpan?: Nullable; rowSpan?: Nullable; headers?: Nullable; scope?: 'row' | 'col' | 'rowgroup' | 'colgroup'; abbr?: Nullable; }; thead: HTMLAttributes; tr: HTMLAttributes; // Forms button: HTMLAttributes & { type?: 'button' | 'submit' | 'reset'; disabled?: boolean; form?: Nullable; formAction?: Nullable; formEncType?: Nullable; formMethod?: Nullable; formNoValidate?: boolean; formTarget?: Nullable; name?: Nullable; value?: Nullable; }; datalist: HTMLAttributes; fieldset: HTMLAttributes & { disabled?: boolean; form?: Nullable; name?: Nullable; }; form: HTMLAttributes & { action?: Nullable; method?: 'get' | 'post' | 'dialog'; encType?: Nullable; acceptCharset?: Nullable; autoComplete?: 'on' | 'off'; noValidate?: boolean; target?: Nullable; }; input: HTMLAttributes & { type?: Nullable; value?: string | number; placeholder?: Nullable; disabled?: boolean; name?: Nullable; accept?: Nullable; autoComplete?: Nullable; autoFocus?: boolean; checked?: boolean; form?: Nullable; formAction?: Nullable; formEncType?: Nullable; formMethod?: Nullable; formNoValidate?: boolean; formTarget?: Nullable; list?: Nullable; max?: string | number; maxLength?: Nullable; min?: string | number; minLength?: Nullable; multiple?: boolean; pattern?: Nullable; readOnly?: boolean; required?: boolean; size?: Nullable; src?: Nullable; step?: string | number; width?: string | number; height?: string | number; }; label: HTMLAttributes & { for?: Nullable; htmlFor?: Nullable; }; legend: HTMLAttributes; meter: HTMLAttributes & { value?: Nullable; min?: Nullable; max?: Nullable; low?: Nullable; high?: Nullable; optimum?: Nullable; }; optgroup: HTMLAttributes & { disabled?: boolean; label?: Nullable; }; option: HTMLAttributes & { value?: string | number; selected?: boolean; disabled?: boolean; label?: Nullable; }; output: HTMLAttributes & { for?: Nullable; htmlFor?: Nullable; form?: Nullable; name?: Nullable; }; progress: HTMLAttributes & { value?: Nullable; max?: Nullable; }; select: HTMLAttributes & { disabled?: boolean; form?: Nullable; multiple?: boolean; name?: Nullable; required?: boolean; size?: Nullable; autoComplete?: Nullable; }; textarea: HTMLAttributes & { placeholder?: Nullable; disabled?: boolean; rows?: Nullable; cols?: Nullable; name?: Nullable; form?: Nullable; maxLength?: Nullable; minLength?: Nullable; readOnly?: boolean; required?: boolean; wrap?: 'soft' | 'hard'; autoComplete?: Nullable; autoFocus?: boolean; }; // Interactive elements details: HTMLAttributes & { open?: boolean; }; dialog: HTMLAttributes & { open?: boolean; }; summary: HTMLAttributes; // Web Components slot: HTMLAttributes & { name?: Nullable; }; template: HTMLAttributes; // Catch-all for any other elements [elemName: string]: HTMLAttributes; } interface ElementChildrenAttribute { children: {}; } } }