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