@tamagui/dom 0.0.0-bootstrap.0 → 3.0.0-beta.643.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/cjs/events.cjs +17 -0
  2. package/dist/cjs/events.native.cjs +19 -0
  3. package/dist/cjs/events.native.js +21 -0
  4. package/dist/cjs/events.native.js.map +1 -0
  5. package/dist/cjs/index.cjs +26 -0
  6. package/dist/cjs/index.native.cjs +28 -0
  7. package/dist/cjs/index.native.js +30 -0
  8. package/dist/cjs/index.native.js.map +1 -0
  9. package/dist/cjs/props.cjs +17 -0
  10. package/dist/cjs/props.native.cjs +19 -0
  11. package/dist/cjs/props.native.js +21 -0
  12. package/dist/cjs/props.native.js.map +1 -0
  13. package/dist/cjs/tables/attributes.cjs +850 -0
  14. package/dist/cjs/tables/attributes.native.cjs +862 -0
  15. package/dist/cjs/tables/attributes.native.js +864 -0
  16. package/dist/cjs/tables/attributes.native.js.map +1 -0
  17. package/dist/cjs/tables/compatibility.cjs +338 -0
  18. package/dist/cjs/tables/compatibility.native.cjs +340 -0
  19. package/dist/cjs/tables/compatibility.native.js +342 -0
  20. package/dist/cjs/tables/compatibility.native.js.map +1 -0
  21. package/dist/cjs/tables/events.cjs +169 -0
  22. package/dist/cjs/tables/events.native.cjs +175 -0
  23. package/dist/cjs/tables/events.native.js +177 -0
  24. package/dist/cjs/tables/events.native.js.map +1 -0
  25. package/dist/cjs/tables/nativeBacking.cjs +133 -0
  26. package/dist/cjs/tables/nativeBacking.native.cjs +135 -0
  27. package/dist/cjs/tables/nativeBacking.native.js +137 -0
  28. package/dist/cjs/tables/nativeBacking.native.js.map +1 -0
  29. package/dist/cjs/tables/tags.cjs +576 -0
  30. package/dist/cjs/tables/tags.native.cjs +578 -0
  31. package/dist/cjs/tables/tags.native.js +580 -0
  32. package/dist/cjs/tables/tags.native.js.map +1 -0
  33. package/dist/cjs/tables/types.cjs +17 -0
  34. package/dist/cjs/tables/types.native.cjs +19 -0
  35. package/dist/cjs/tables/types.native.js +21 -0
  36. package/dist/cjs/tables/types.native.js.map +1 -0
  37. package/dist/esm/events.mjs +0 -0
  38. package/dist/esm/events.native.js +0 -0
  39. package/dist/esm/index.mjs +15 -0
  40. package/dist/esm/index.native.js +15 -0
  41. package/dist/esm/props.mjs +0 -0
  42. package/dist/esm/props.native.js +0 -0
  43. package/dist/esm/tables/attributes.mjs +821 -0
  44. package/dist/esm/tables/attributes.mjs.map +1 -0
  45. package/dist/esm/tables/attributes.native.js +831 -0
  46. package/dist/esm/tables/attributes.native.js.map +1 -0
  47. package/dist/esm/tables/compatibility.mjs +314 -0
  48. package/dist/esm/tables/compatibility.mjs.map +1 -0
  49. package/dist/esm/tables/compatibility.native.js +314 -0
  50. package/dist/esm/tables/compatibility.native.js.map +1 -0
  51. package/dist/esm/tables/events.mjs +145 -0
  52. package/dist/esm/tables/events.mjs.map +1 -0
  53. package/dist/esm/tables/events.native.js +149 -0
  54. package/dist/esm/tables/events.native.js.map +1 -0
  55. package/dist/esm/tables/nativeBacking.mjs +106 -0
  56. package/dist/esm/tables/nativeBacking.mjs.map +1 -0
  57. package/dist/esm/tables/nativeBacking.native.js +106 -0
  58. package/dist/esm/tables/nativeBacking.native.js.map +1 -0
  59. package/dist/esm/tables/tags.mjs +550 -0
  60. package/dist/esm/tables/tags.mjs.map +1 -0
  61. package/dist/esm/tables/tags.native.js +550 -0
  62. package/dist/esm/tables/tags.native.js.map +1 -0
  63. package/dist/esm/tables/types.mjs +0 -0
  64. package/dist/esm/tables/types.native.js +0 -0
  65. package/package.json +57 -7
  66. package/src/events.ts +58 -0
  67. package/src/index.ts +19 -0
  68. package/src/props.ts +699 -0
  69. package/src/tables/attributes.ts +863 -0
  70. package/src/tables/compatibility.ts +360 -0
  71. package/src/tables/events.ts +176 -0
  72. package/src/tables/nativeBacking.ts +132 -0
  73. package/src/tables/tags.ts +557 -0
  74. package/src/tables/types.ts +202 -0
  75. package/types/events.d.ts +58 -0
  76. package/types/events.d.ts.map +11 -0
  77. package/types/index.d.ts +20 -0
  78. package/types/index.d.ts.map +11 -0
  79. package/types/props.d.ts +499 -0
  80. package/types/props.d.ts.map +11 -0
  81. package/types/tables/attributes.d.ts +21 -0
  82. package/types/tables/attributes.d.ts.map +11 -0
  83. package/types/tables/compatibility.d.ts +28 -0
  84. package/types/tables/compatibility.d.ts.map +11 -0
  85. package/types/tables/events.d.ts +5 -0
  86. package/types/tables/events.d.ts.map +11 -0
  87. package/types/tables/nativeBacking.d.ts +28 -0
  88. package/types/tables/nativeBacking.d.ts.map +11 -0
  89. package/types/tables/tags.d.ts +36 -0
  90. package/types/tables/tags.d.ts.map +11 -0
  91. package/types/tables/types.d.ts +135 -0
  92. package/types/tables/types.d.ts.map +11 -0
  93. package/README.md +0 -1
package/src/props.ts ADDED
@@ -0,0 +1,699 @@
1
+ // Generated by scripts/generate-props.ts from the tables in src/tables.
2
+ // Run `bun run generate:props` after changing a table. Do not edit by hand.
3
+
4
+ import type { ReactNode } from 'react'
5
+
6
+ import type {
7
+ DOMChangeEvent,
8
+ DOMClickEvent,
9
+ DOMImageErrorEvent,
10
+ DOMImageLoadEvent,
11
+ DOMInputEvent,
12
+ DOMKeyEvent,
13
+ } from './events'
14
+
15
+ /** the aria roles an author may set, excluding the abstract roles */
16
+ export type AriaRole =
17
+ | 'alert'
18
+ | 'alertdialog'
19
+ | 'application'
20
+ | 'article'
21
+ | 'banner'
22
+ | 'blockquote'
23
+ | 'button'
24
+ | 'caption'
25
+ | 'cell'
26
+ | 'checkbox'
27
+ | 'code'
28
+ | 'columnheader'
29
+ | 'combobox'
30
+ | 'complementary'
31
+ | 'contentinfo'
32
+ | 'definition'
33
+ | 'deletion'
34
+ | 'dialog'
35
+ | 'document'
36
+ | 'emphasis'
37
+ | 'feed'
38
+ | 'figure'
39
+ | 'form'
40
+ | 'grid'
41
+ | 'gridcell'
42
+ | 'group'
43
+ | 'heading'
44
+ | 'img'
45
+ | 'input'
46
+ | 'insertion'
47
+ | 'link'
48
+ | 'list'
49
+ | 'listbox'
50
+ | 'listitem'
51
+ | 'log'
52
+ | 'main'
53
+ | 'marquee'
54
+ | 'math'
55
+ | 'menu'
56
+ | 'menubar'
57
+ | 'menuitem'
58
+ | 'menuitemcheckbox'
59
+ | 'menuitemradio'
60
+ | 'meter'
61
+ | 'navigation'
62
+ | 'none'
63
+ | 'note'
64
+ | 'option'
65
+ | 'paragraph'
66
+ | 'progressbar'
67
+ | 'radio'
68
+ | 'radiogroup'
69
+ | 'region'
70
+ | 'row'
71
+ | 'rowgroup'
72
+ | 'rowheader'
73
+ | 'scrollbar'
74
+ | 'search'
75
+ | 'searchbox'
76
+ | 'separator'
77
+ | 'slider'
78
+ | 'spinbutton'
79
+ | 'status'
80
+ | 'strong'
81
+ | 'subscript'
82
+ | 'superscript'
83
+ | 'switch'
84
+ | 'tab'
85
+ | 'table'
86
+ | 'tablist'
87
+ | 'tabpanel'
88
+ | 'term'
89
+ | 'textbox'
90
+ | 'time'
91
+ | 'timer'
92
+ | 'toolbar'
93
+ | 'tooltip'
94
+ | 'tree'
95
+ | 'treegrid'
96
+ | 'treeitem'
97
+
98
+ /** the autofill hints web and react native both understand */
99
+ export type AutoComplete =
100
+ | 'additional-name'
101
+ | 'address-line1'
102
+ | 'address-line2'
103
+ | 'birthdate-day'
104
+ | 'birthdate-full'
105
+ | 'birthdate-month'
106
+ | 'birthdate-year'
107
+ | 'cc-csc'
108
+ | 'cc-exp'
109
+ | 'cc-exp-day'
110
+ | 'cc-exp-month'
111
+ | 'cc-exp-year'
112
+ | 'cc-number'
113
+ | 'cc-name'
114
+ | 'cc-given-name'
115
+ | 'cc-middle-name'
116
+ | 'cc-family-name'
117
+ | 'cc-type'
118
+ | 'country'
119
+ | 'current-password'
120
+ | 'email'
121
+ | 'family-name'
122
+ | 'gender'
123
+ | 'given-name'
124
+ | 'honorific-prefix'
125
+ | 'honorific-suffix'
126
+ | 'name'
127
+ | 'name-family'
128
+ | 'name-given'
129
+ | 'name-middle'
130
+ | 'name-middle-initial'
131
+ | 'name-prefix'
132
+ | 'name-suffix'
133
+ | 'new-password'
134
+ | 'nickname'
135
+ | 'on'
136
+ | 'one-time-code'
137
+ | 'organization'
138
+ | 'organization-title'
139
+ | 'password'
140
+ | 'password-new'
141
+ | 'postal-address'
142
+ | 'postal-address-country'
143
+ | 'postal-address-extended'
144
+ | 'postal-address-extended-postal-code'
145
+ | 'postal-address-locality'
146
+ | 'postal-address-region'
147
+ | 'postal-code'
148
+ | 'street-address'
149
+ | 'sms-otp'
150
+ | 'tel'
151
+ | 'tel-country-code'
152
+ | 'tel-national'
153
+ | 'tel-device'
154
+ | 'url'
155
+ | 'username'
156
+ | 'username-new'
157
+ | 'off'
158
+
159
+ /** every html input type; the ones native cannot render are a native build error */
160
+ export type InputType =
161
+ | 'checkbox'
162
+ | 'color'
163
+ | 'date'
164
+ | 'datetime-local'
165
+ | 'email'
166
+ | 'file'
167
+ | 'hidden'
168
+ | 'month'
169
+ | 'number'
170
+ | 'password'
171
+ | 'radio'
172
+ | 'range'
173
+ | 'search'
174
+ | 'submit'
175
+ | 'tel'
176
+ | 'text'
177
+ | 'time'
178
+ | 'url'
179
+ | 'week'
180
+
181
+ /**
182
+ * `data-*` passthrough. Only `data-testid` reaches native, as `testID`; the
183
+ * rest are web attributes.
184
+ */
185
+ export interface StrictDOMDataProps {
186
+ [key: `data-${string}`]: string | number | boolean | undefined
187
+ }
188
+
189
+ /**
190
+ * Everything every tag accepts. Element interfaces extend this rather than
191
+ * restating it, so a tag costs one interface to instantiate.
192
+ */
193
+ export interface StrictDOMPropsBase extends StrictDOMDataProps {
194
+ /** @platform web */
195
+ 'aria-activedescendant'?: string
196
+ /** @platform web */
197
+ 'aria-atomic'?: boolean
198
+ /** @platform web */
199
+ 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both'
200
+ 'aria-busy'?: boolean
201
+ 'aria-checked'?: boolean | 'mixed'
202
+ /** @platform web */
203
+ 'aria-colcount'?: number
204
+ /** @platform web */
205
+ 'aria-colindex'?: number
206
+ /** @platform web */
207
+ 'aria-colindextext'?: string
208
+ /** @platform web */
209
+ 'aria-colspan'?: number
210
+ /** @platform web */
211
+ 'aria-controls'?: string
212
+ /** @platform web */
213
+ 'aria-current'?: boolean | 'page' | 'step' | 'location' | 'date' | 'time'
214
+ /**
215
+ * react native has no described-by relationship; put the description in aria-label instead
216
+ * @platform web
217
+ */
218
+ 'aria-describedby'?: string
219
+ /** @platform web */
220
+ 'aria-details'?: string
221
+ 'aria-disabled'?: boolean
222
+ /** @platform web */
223
+ 'aria-errormessage'?: string
224
+ 'aria-expanded'?: boolean
225
+ /** @platform web */
226
+ 'aria-flowto'?: string
227
+ /** @platform web */
228
+ 'aria-haspopup'?: 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'
229
+ /** also sets importantForAccessibility on android so descendants are hidden */
230
+ 'aria-hidden'?: boolean
231
+ /** @platform web */
232
+ 'aria-invalid'?: boolean | 'grammar' | 'spelling'
233
+ /** @platform web */
234
+ 'aria-keyshortcuts'?: string
235
+ 'aria-label'?: string
236
+ 'aria-labelledby'?: string
237
+ /** @platform web */
238
+ 'aria-level'?: number
239
+ 'aria-live'?: 'off' | 'assertive' | 'polite'
240
+ 'aria-modal'?: boolean
241
+ /** @platform web */
242
+ 'aria-multiline'?: boolean
243
+ /** @platform web */
244
+ 'aria-multiselectable'?: boolean
245
+ /** @platform web */
246
+ 'aria-orientation'?: 'horizontal' | 'vertical'
247
+ /** @platform web */
248
+ 'aria-owns'?: string
249
+ /** @platform web */
250
+ 'aria-placeholder'?: string
251
+ /** @platform web */
252
+ 'aria-posinset'?: number
253
+ /** @platform web */
254
+ 'aria-pressed'?: boolean | 'mixed'
255
+ /** @platform web */
256
+ 'aria-readonly'?: boolean
257
+ /** @platform web */
258
+ 'aria-required'?: boolean
259
+ /** @platform web */
260
+ 'aria-roledescription'?: string
261
+ /** @platform web */
262
+ 'aria-rowcount'?: number
263
+ /** @platform web */
264
+ 'aria-rowindex'?: number
265
+ /** @platform web */
266
+ 'aria-rowindextext'?: string
267
+ /** @platform web */
268
+ 'aria-rowspan'?: number
269
+ 'aria-selected'?: boolean
270
+ /** @platform web */
271
+ 'aria-setsize'?: number
272
+ /** @platform web */
273
+ 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other'
274
+ 'aria-valuemax'?: number
275
+ 'aria-valuemin'?: number
276
+ 'aria-valuenow'?: number
277
+ 'aria-valuetext'?: string
278
+ /**
279
+ * focus a native element through a ref in an effect instead
280
+ * @platform web
281
+ */
282
+ autoFocus?: boolean
283
+ dir?: 'auto' | 'ltr' | 'rtl'
284
+ /**
285
+ * element timing is a browser performance api
286
+ * @platform web
287
+ */
288
+ elementTiming?: string
289
+ /** native applies display none and has no until-found reveal */
290
+ hidden?: true | 'hidden' | 'until-found'
291
+ id?: string
292
+ /** @platform web */
293
+ inert?: boolean
294
+ /** @platform web */
295
+ lang?: string
296
+ role?: AriaRole
297
+ tabIndex?: 0 | -1
298
+ /** @platform web */
299
+ suppressHydrationWarning?: boolean
300
+ 'data-testid'?: string
301
+ onPointerCancel?: (event: unknown) => void
302
+ onPointerDown?: (event: unknown) => void
303
+ onPointerEnter?: (event: unknown) => void
304
+ onPointerLeave?: (event: unknown) => void
305
+ onPointerMove?: (event: unknown) => void
306
+ onPointerOut?: (event: unknown) => void
307
+ onPointerOver?: (event: unknown) => void
308
+ onPointerUp?: (event: unknown) => void
309
+ onGotPointerCapture?: (event: unknown) => void
310
+ onLostPointerCapture?: (event: unknown) => void
311
+ onTouchCancel?: (event: unknown) => void
312
+ onTouchEnd?: (event: unknown) => void
313
+ onTouchMove?: (event: unknown) => void
314
+ onTouchStart?: (event: unknown) => void
315
+ /** native builds the click payload from the press event; preventDefault and stopPropagation are no-ops because there is nothing to cancel */
316
+ onClick?: (event: DOMClickEvent) => void
317
+ /**
318
+ * native has no secondary pointer button
319
+ * @platform web
320
+ */
321
+ onAuxClick?: (event: unknown) => void
322
+ /**
323
+ * native has no context menu event; use a long press
324
+ * @platform web
325
+ */
326
+ onContextMenu?: (event: unknown) => void
327
+ /** native focus events only fire on elements that can hold focus, which is text entry and pressable elements */
328
+ onBlur?: (event: unknown) => void
329
+ /** native focus events only fire on elements that can hold focus, which is text entry and pressable elements */
330
+ onFocus?: (event: unknown) => void
331
+ /**
332
+ * native has no bubbling focus event; use onFocus
333
+ * @platform web
334
+ */
335
+ onFocusIn?: (event: unknown) => void
336
+ /**
337
+ * native has no bubbling blur event; use onBlur
338
+ * @platform web
339
+ */
340
+ onFocusOut?: (event: unknown) => void
341
+ /** native only reports key presses inside a text-entry control, and reports the submit key as Enter */
342
+ onKeyDown?: (event: DOMKeyEvent) => void
343
+ /**
344
+ * react native reports key presses, not key releases
345
+ * @platform web
346
+ */
347
+ onKeyUp?: (event: unknown) => void
348
+ /**
349
+ * native has no clipboard events
350
+ * @platform web
351
+ */
352
+ onCopy?: (event: unknown) => void
353
+ /**
354
+ * native has no clipboard events
355
+ * @platform web
356
+ */
357
+ onCut?: (event: unknown) => void
358
+ /**
359
+ * native has no clipboard events
360
+ * @platform web
361
+ */
362
+ onPaste?: (event: unknown) => void
363
+ /**
364
+ * fullscreen is a browser api
365
+ * @platform web
366
+ */
367
+ onFullscreenChange?: (event: unknown) => void
368
+ /**
369
+ * fullscreen is a browser api
370
+ * @platform web
371
+ */
372
+ onFullscreenError?: (event: unknown) => void
373
+ onScroll?: (event: unknown) => void
374
+ /**
375
+ * native has no wheel input
376
+ * @platform web
377
+ */
378
+ onWheel?: (event: unknown) => void
379
+ onMouseDown?: (event: unknown) => void
380
+ onMouseEnter?: (event: unknown) => void
381
+ onMouseLeave?: (event: unknown) => void
382
+ /**
383
+ * use onPointerMove for cross-platform pointer input
384
+ * @platform web
385
+ */
386
+ onMouseMove?: (event: unknown) => void
387
+ onMouseOut?: (event: unknown) => void
388
+ onMouseOver?: (event: unknown) => void
389
+ onMouseUp?: (event: unknown) => void
390
+ }
391
+
392
+ export interface StrictDOMAnchorProps extends StrictDOMPropsBase {
393
+ /** @platform web */
394
+ download?: string
395
+ /**
396
+ * native has no navigation; handle onClick and call your router or Linking
397
+ * @platform web
398
+ */
399
+ href?: string
400
+ /** native honours it for image requests only */
401
+ referrerPolicy?:
402
+ | 'no-referrer'
403
+ | 'no-referrer-when-downgrade'
404
+ | 'origin'
405
+ | 'origin-when-cross-origin'
406
+ | 'same-origin'
407
+ | 'strict-origin'
408
+ | 'strict-origin-when-cross-origin'
409
+ | 'unsafe-url'
410
+ /** @platform web */
411
+ rel?: string
412
+ /** @platform web */
413
+ target?: '_self' | '_blank' | '_parent' | '_top'
414
+ children?: ReactNode
415
+ }
416
+
417
+ export interface StrictDOMProps extends StrictDOMPropsBase {
418
+ children?: ReactNode
419
+ }
420
+
421
+ /** the common interface for a tag that takes no children: br and hr */
422
+ export interface StrictDOMVoidProps extends StrictDOMPropsBase {
423
+ children?: never
424
+ }
425
+
426
+ export interface StrictDOMButtonProps extends StrictDOMPropsBase {
427
+ /** native also clears focusable, and editable on a text-entry control */
428
+ disabled?: boolean
429
+ type?: 'button' | 'submit'
430
+ children?: ReactNode
431
+ }
432
+
433
+ export interface StrictDOMImageProps extends StrictDOMPropsBase {
434
+ alt?: string
435
+ crossOrigin?: 'anonymous' | 'use-credentials'
436
+ /** @platform web */
437
+ decoding?: 'async' | 'auto' | 'sync'
438
+ /** @platform web */
439
+ draggable?: boolean
440
+ /** @platform web */
441
+ fetchPriority?: 'high' | 'low' | 'auto'
442
+ height?: number
443
+ /** @platform web */
444
+ loading?: 'eager' | 'lazy'
445
+ /** native honours it for image requests only */
446
+ referrerPolicy?:
447
+ | 'no-referrer'
448
+ | 'no-referrer-when-downgrade'
449
+ | 'origin'
450
+ | 'origin-when-cross-origin'
451
+ | 'same-origin'
452
+ | 'strict-origin'
453
+ | 'strict-origin-when-cross-origin'
454
+ | 'unsafe-url'
455
+ src?: string
456
+ srcSet?: string
457
+ width?: number
458
+ onError?: (event: DOMImageErrorEvent) => void
459
+ /** native reports naturalWidth and naturalHeight from the decoded source */
460
+ onLoad?: (event: DOMImageLoadEvent) => void
461
+ children?: never
462
+ }
463
+
464
+ export interface StrictDOMInputProps extends StrictDOMPropsBase {
465
+ autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters'
466
+ autoComplete?: AutoComplete
467
+ /**
468
+ * checkbox and radio inputs have no native rendering
469
+ * @platform web
470
+ */
471
+ checked?: boolean | 'mixed'
472
+ /**
473
+ * checkbox and radio inputs have no native rendering
474
+ * @platform web
475
+ */
476
+ defaultChecked?: boolean
477
+ defaultValue?: string
478
+ /** native also clears focusable, and editable on a text-entry control */
479
+ disabled?: boolean
480
+ enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'
481
+ inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
482
+ /** @platform web */
483
+ max?: string | number
484
+ maxLength?: number
485
+ /** @platform web */
486
+ min?: string | number
487
+ /** @platform web */
488
+ minLength?: number
489
+ /** @platform web */
490
+ multiple?: boolean
491
+ /**
492
+ * form field names only matter to a form submission, which native does not have
493
+ * @platform web
494
+ */
495
+ name?: string
496
+ placeholder?: string
497
+ readOnly?: boolean
498
+ /**
499
+ * native has no form validation
500
+ * @platform web
501
+ */
502
+ required?: boolean
503
+ /** ios only on native */
504
+ spellCheck?: boolean
505
+ /** @platform web */
506
+ step?: number | 'any'
507
+ /** on native the type selects the keyboard and secure entry rather than reaching one prop, and the types with no text-entry control are a build error */
508
+ type?: InputType
509
+ value?: string
510
+ /**
511
+ * native text entry reports changes only after they are applied
512
+ * @platform web
513
+ */
514
+ onBeforeInput?: (event: unknown) => void
515
+ /** native fires on every keystroke like onInput, because there is no commit-on-blur change event */
516
+ onChange?: (event: DOMChangeEvent) => void
517
+ onInput?: (event: DOMInputEvent) => void
518
+ /**
519
+ * native has no form validation
520
+ * @platform web
521
+ */
522
+ onInvalid?: (event: unknown) => void
523
+ /**
524
+ * read the selection through the element ref instead
525
+ * @platform web
526
+ */
527
+ onSelect?: (event: unknown) => void
528
+ children?: never
529
+ }
530
+
531
+ export interface StrictDOMLabelProps extends StrictDOMPropsBase {
532
+ /**
533
+ * native has no label association; wrap the control or drive it from your own state
534
+ * @platform web
535
+ */
536
+ for?: string
537
+ children?: ReactNode
538
+ }
539
+
540
+ export interface StrictDOMListItemProps extends StrictDOMPropsBase {
541
+ /** the list counter is not rendered on either platform, matching the list-style reset */
542
+ value?: number
543
+ children?: ReactNode
544
+ }
545
+
546
+ export interface StrictDOMOptionGroupProps extends StrictDOMPropsBase {
547
+ /** native also clears focusable, and editable on a text-entry control */
548
+ disabled?: boolean
549
+ /** @platform web */
550
+ label?: string
551
+ children?: ReactNode
552
+ }
553
+
554
+ export interface StrictDOMOptionProps extends StrictDOMPropsBase {
555
+ /** native also clears focusable, and editable on a text-entry control */
556
+ disabled?: boolean
557
+ /** @platform web */
558
+ label?: string
559
+ value?: string
560
+ children?: string | number
561
+ }
562
+
563
+ export interface StrictDOMSelectProps extends StrictDOMPropsBase {
564
+ autoComplete?: AutoComplete
565
+ defaultValue?: string | readonly string[]
566
+ /** @platform web */
567
+ multiple?: boolean
568
+ /**
569
+ * form field names only matter to a form submission, which native does not have
570
+ * @platform web
571
+ */
572
+ name?: string
573
+ /**
574
+ * native has no form validation
575
+ * @platform web
576
+ */
577
+ required?: boolean
578
+ value?: string | readonly string[]
579
+ /**
580
+ * native text entry reports changes only after they are applied
581
+ * @platform web
582
+ */
583
+ onBeforeInput?: (event: unknown) => void
584
+ /** native fires on every keystroke like onInput, because there is no commit-on-blur change event */
585
+ onChange?: (event: DOMChangeEvent) => void
586
+ onInput?: (event: DOMInputEvent) => void
587
+ /**
588
+ * native has no form validation
589
+ * @platform web
590
+ */
591
+ onInvalid?: (event: unknown) => void
592
+ /**
593
+ * read the selection through the element ref instead
594
+ * @platform web
595
+ */
596
+ onSelect?: (event: unknown) => void
597
+ children?: ReactNode
598
+ }
599
+
600
+ export interface StrictDOMTextAreaProps extends StrictDOMPropsBase {
601
+ autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters'
602
+ autoComplete?: AutoComplete
603
+ defaultValue?: string
604
+ /** native also clears focusable, and editable on a text-entry control */
605
+ disabled?: boolean
606
+ enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'
607
+ inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
608
+ maxLength?: number
609
+ /** @platform web */
610
+ minLength?: number
611
+ /**
612
+ * form field names only matter to a form submission, which native does not have
613
+ * @platform web
614
+ */
615
+ name?: string
616
+ placeholder?: string
617
+ readOnly?: boolean
618
+ /**
619
+ * native has no form validation
620
+ * @platform web
621
+ */
622
+ required?: boolean
623
+ rows?: number
624
+ /** ios only on native */
625
+ spellCheck?: boolean
626
+ value?: string
627
+ /**
628
+ * native text entry reports changes only after they are applied
629
+ * @platform web
630
+ */
631
+ onBeforeInput?: (event: unknown) => void
632
+ /** native fires on every keystroke like onInput, because there is no commit-on-blur change event */
633
+ onChange?: (event: DOMChangeEvent) => void
634
+ onInput?: (event: DOMInputEvent) => void
635
+ /**
636
+ * native has no form validation
637
+ * @platform web
638
+ */
639
+ onInvalid?: (event: unknown) => void
640
+ /**
641
+ * read the selection through the element ref instead
642
+ * @platform web
643
+ */
644
+ onSelect?: (event: unknown) => void
645
+ children?: never
646
+ }
647
+
648
+ /** the props interface for each tag in the DOM contract */
649
+ export type StrictDOMPropsByTag = {
650
+ a: StrictDOMAnchorProps
651
+ article: StrictDOMProps
652
+ aside: StrictDOMProps
653
+ b: StrictDOMProps
654
+ bdi: StrictDOMProps
655
+ bdo: StrictDOMProps
656
+ blockquote: StrictDOMProps
657
+ br: StrictDOMVoidProps
658
+ button: StrictDOMButtonProps
659
+ code: StrictDOMProps
660
+ del: StrictDOMProps
661
+ div: StrictDOMProps
662
+ em: StrictDOMProps
663
+ fieldset: StrictDOMProps
664
+ footer: StrictDOMProps
665
+ form: StrictDOMProps
666
+ h1: StrictDOMProps
667
+ h2: StrictDOMProps
668
+ h3: StrictDOMProps
669
+ h4: StrictDOMProps
670
+ h5: StrictDOMProps
671
+ h6: StrictDOMProps
672
+ header: StrictDOMProps
673
+ hr: StrictDOMVoidProps
674
+ i: StrictDOMProps
675
+ img: StrictDOMImageProps
676
+ input: StrictDOMInputProps
677
+ ins: StrictDOMProps
678
+ kbd: StrictDOMProps
679
+ label: StrictDOMLabelProps
680
+ li: StrictDOMListItemProps
681
+ main: StrictDOMProps
682
+ mark: StrictDOMProps
683
+ nav: StrictDOMProps
684
+ ol: StrictDOMProps
685
+ optgroup: StrictDOMOptionGroupProps
686
+ option: StrictDOMOptionProps
687
+ p: StrictDOMProps
688
+ pre: StrictDOMProps
689
+ s: StrictDOMProps
690
+ section: StrictDOMProps
691
+ select: StrictDOMSelectProps
692
+ span: StrictDOMProps
693
+ strong: StrictDOMProps
694
+ sub: StrictDOMProps
695
+ sup: StrictDOMProps
696
+ textarea: StrictDOMTextAreaProps
697
+ u: StrictDOMProps
698
+ ul: StrictDOMProps
699
+ }