@viraui/react 2026.3.11 → 2026.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.
Files changed (302) hide show
  1. package/dist/catalog.json +50 -50
  2. package/dist/components/textarea/textarea.js +2 -2
  3. package/dist/components/textfield/textfield.js +2 -2
  4. package/dist/specs/PROTOCOL.md +48 -0
  5. package/dist/specs/activity-hints.xml +42 -0
  6. package/dist/specs/components/accordion/a11y.xml +6 -0
  7. package/dist/specs/components/accordion/meta.xml +20 -0
  8. package/dist/specs/components/accordion/patterns.xml +9 -0
  9. package/dist/specs/components/accordion/props.xml +48 -0
  10. package/dist/specs/components/accordion/usage.xml +8 -0
  11. package/dist/specs/components/annotate/a11y.xml +6 -0
  12. package/dist/specs/components/annotate/meta.xml +19 -0
  13. package/dist/specs/components/annotate/patterns.xml +7 -0
  14. package/dist/specs/components/annotate/props.xml +88 -0
  15. package/dist/specs/components/annotate/usage.xml +10 -0
  16. package/dist/specs/components/autocomplete/a11y.xml +6 -0
  17. package/dist/specs/components/autocomplete/meta.xml +22 -0
  18. package/dist/specs/components/autocomplete/patterns.xml +14 -0
  19. package/dist/specs/components/autocomplete/props.xml +81 -0
  20. package/dist/specs/components/autocomplete/usage.xml +11 -0
  21. package/dist/specs/components/avatar/a11y.xml +5 -0
  22. package/dist/specs/components/avatar/meta.xml +17 -0
  23. package/dist/specs/components/avatar/patterns.xml +7 -0
  24. package/dist/specs/components/avatar/props.xml +38 -0
  25. package/dist/specs/components/avatar/usage.xml +7 -0
  26. package/dist/specs/components/avatar-group/a11y.xml +6 -0
  27. package/dist/specs/components/avatar-group/meta.xml +16 -0
  28. package/dist/specs/components/avatar-group/patterns.xml +7 -0
  29. package/dist/specs/components/avatar-group/props.xml +39 -0
  30. package/dist/specs/components/avatar-group/usage.xml +10 -0
  31. package/dist/specs/components/badge/a11y.xml +7 -0
  32. package/dist/specs/components/badge/meta.xml +19 -0
  33. package/dist/specs/components/badge/patterns.xml +7 -0
  34. package/dist/specs/components/badge/props.xml +37 -0
  35. package/dist/specs/components/badge/usage.xml +9 -0
  36. package/dist/specs/components/beam/a11y.xml +7 -0
  37. package/dist/specs/components/beam/meta.xml +18 -0
  38. package/dist/specs/components/beam/patterns.xml +7 -0
  39. package/dist/specs/components/beam/props.xml +90 -0
  40. package/dist/specs/components/beam/usage.xml +11 -0
  41. package/dist/specs/components/bleed/a11y.xml +7 -0
  42. package/dist/specs/components/bleed/meta.xml +18 -0
  43. package/dist/specs/components/bleed/patterns.xml +7 -0
  44. package/dist/specs/components/bleed/props.xml +22 -0
  45. package/dist/specs/components/bleed/usage.xml +10 -0
  46. package/dist/specs/components/breakpoints/a11y.xml +5 -0
  47. package/dist/specs/components/breakpoints/meta.xml +17 -0
  48. package/dist/specs/components/breakpoints/patterns.xml +9 -0
  49. package/dist/specs/components/breakpoints/props.xml +20 -0
  50. package/dist/specs/components/breakpoints/usage.xml +9 -0
  51. package/dist/specs/components/button/a11y.xml +9 -0
  52. package/dist/specs/components/button/meta.xml +20 -0
  53. package/dist/specs/components/button/patterns.xml +11 -0
  54. package/dist/specs/components/button/props.xml +101 -0
  55. package/dist/specs/components/button/usage.xml +18 -0
  56. package/dist/specs/components/checkbox/a11y.xml +6 -0
  57. package/dist/specs/components/checkbox/meta.xml +21 -0
  58. package/dist/specs/components/checkbox/patterns.xml +7 -0
  59. package/dist/specs/components/checkbox/props.xml +48 -0
  60. package/dist/specs/components/checkbox/usage.xml +10 -0
  61. package/dist/specs/components/chip/a11y.xml +6 -0
  62. package/dist/specs/components/chip/meta.xml +19 -0
  63. package/dist/specs/components/chip/patterns.xml +7 -0
  64. package/dist/specs/components/chip/props.xml +49 -0
  65. package/dist/specs/components/chip/usage.xml +11 -0
  66. package/dist/specs/components/clamp-text/a11y.xml +6 -0
  67. package/dist/specs/components/clamp-text/meta.xml +17 -0
  68. package/dist/specs/components/clamp-text/patterns.xml +7 -0
  69. package/dist/specs/components/clamp-text/props.xml +27 -0
  70. package/dist/specs/components/clamp-text/usage.xml +8 -0
  71. package/dist/specs/components/dialog/a11y.xml +7 -0
  72. package/dist/specs/components/dialog/meta.xml +21 -0
  73. package/dist/specs/components/dialog/patterns.xml +19 -0
  74. package/dist/specs/components/dialog/props.xml +49 -0
  75. package/dist/specs/components/dialog/usage.xml +12 -0
  76. package/dist/specs/components/elevator/a11y.xml +6 -0
  77. package/dist/specs/components/elevator/meta.xml +16 -0
  78. package/dist/specs/components/elevator/patterns.xml +7 -0
  79. package/dist/specs/components/elevator/props.xml +31 -0
  80. package/dist/specs/components/elevator/usage.xml +8 -0
  81. package/dist/specs/components/fieldset/a11y.xml +6 -0
  82. package/dist/specs/components/fieldset/meta.xml +22 -0
  83. package/dist/specs/components/fieldset/patterns.xml +7 -0
  84. package/dist/specs/components/fieldset/props.xml +26 -0
  85. package/dist/specs/components/fieldset/usage.xml +11 -0
  86. package/dist/specs/components/fit-text/a11y.xml +6 -0
  87. package/dist/specs/components/fit-text/meta.xml +18 -0
  88. package/dist/specs/components/fit-text/patterns.xml +7 -0
  89. package/dist/specs/components/fit-text/props.xml +19 -0
  90. package/dist/specs/components/fit-text/usage.xml +9 -0
  91. package/dist/specs/components/glow/a11y.xml +6 -0
  92. package/dist/specs/components/glow/meta.xml +19 -0
  93. package/dist/specs/components/glow/patterns.xml +7 -0
  94. package/dist/specs/components/glow/props.xml +74 -0
  95. package/dist/specs/components/glow/usage.xml +12 -0
  96. package/dist/specs/components/grid/a11y.xml +6 -0
  97. package/dist/specs/components/grid/meta.xml +18 -0
  98. package/dist/specs/components/grid/patterns.xml +9 -0
  99. package/dist/specs/components/grid/props.xml +101 -0
  100. package/dist/specs/components/grid/usage.xml +10 -0
  101. package/dist/specs/components/icon-button/a11y.xml +9 -0
  102. package/dist/specs/components/icon-button/meta.xml +18 -0
  103. package/dist/specs/components/icon-button/patterns.xml +11 -0
  104. package/dist/specs/components/icon-button/props.xml +95 -0
  105. package/dist/specs/components/icon-button/usage.xml +14 -0
  106. package/dist/specs/components/linear-progress/a11y.xml +6 -0
  107. package/dist/specs/components/linear-progress/meta.xml +21 -0
  108. package/dist/specs/components/linear-progress/patterns.xml +7 -0
  109. package/dist/specs/components/linear-progress/props.xml +31 -0
  110. package/dist/specs/components/linear-progress/usage.xml +11 -0
  111. package/dist/specs/components/masonry/a11y.xml +6 -0
  112. package/dist/specs/components/masonry/meta.xml +18 -0
  113. package/dist/specs/components/masonry/patterns.xml +9 -0
  114. package/dist/specs/components/masonry/props.xml +32 -0
  115. package/dist/specs/components/masonry/usage.xml +9 -0
  116. package/dist/specs/components/menu/a11y.xml +7 -0
  117. package/dist/specs/components/menu/meta.xml +25 -0
  118. package/dist/specs/components/menu/patterns.xml +25 -0
  119. package/dist/specs/components/menu/props.xml +73 -0
  120. package/dist/specs/components/menu/usage.xml +15 -0
  121. package/dist/specs/components/meter/a11y.xml +6 -0
  122. package/dist/specs/components/meter/meta.xml +19 -0
  123. package/dist/specs/components/meter/patterns.xml +7 -0
  124. package/dist/specs/components/meter/props.xml +31 -0
  125. package/dist/specs/components/meter/usage.xml +10 -0
  126. package/dist/specs/components/popover/a11y.xml +7 -0
  127. package/dist/specs/components/popover/meta.xml +22 -0
  128. package/dist/specs/components/popover/patterns.xml +15 -0
  129. package/dist/specs/components/popover/props.xml +37 -0
  130. package/dist/specs/components/popover/usage.xml +12 -0
  131. package/dist/specs/components/progressive-blur/a11y.xml +6 -0
  132. package/dist/specs/components/progressive-blur/meta.xml +17 -0
  133. package/dist/specs/components/progressive-blur/patterns.xml +7 -0
  134. package/dist/specs/components/progressive-blur/props.xml +28 -0
  135. package/dist/specs/components/progressive-blur/usage.xml +10 -0
  136. package/dist/specs/components/radio/a11y.xml +6 -0
  137. package/dist/specs/components/radio/meta.xml +20 -0
  138. package/dist/specs/components/radio/patterns.xml +9 -0
  139. package/dist/specs/components/radio/props.xml +44 -0
  140. package/dist/specs/components/radio/usage.xml +12 -0
  141. package/dist/specs/components/select/a11y.xml +6 -0
  142. package/dist/specs/components/select/meta.xml +21 -0
  143. package/dist/specs/components/select/patterns.xml +13 -0
  144. package/dist/specs/components/select/props.xml +83 -0
  145. package/dist/specs/components/select/usage.xml +14 -0
  146. package/dist/specs/components/separator/a11y.xml +6 -0
  147. package/dist/specs/components/separator/meta.xml +18 -0
  148. package/dist/specs/components/separator/patterns.xml +7 -0
  149. package/dist/specs/components/separator/props.xml +39 -0
  150. package/dist/specs/components/separator/usage.xml +8 -0
  151. package/dist/specs/components/shimmer/a11y.xml +6 -0
  152. package/dist/specs/components/shimmer/meta.xml +18 -0
  153. package/dist/specs/components/shimmer/patterns.xml +7 -0
  154. package/dist/specs/components/shimmer/props.xml +40 -0
  155. package/dist/specs/components/shimmer/usage.xml +9 -0
  156. package/dist/specs/components/skeleton/a11y.xml +8 -0
  157. package/dist/specs/components/skeleton/meta.xml +17 -0
  158. package/dist/specs/components/skeleton/patterns.xml +8 -0
  159. package/dist/specs/components/skeleton/props.xml +73 -0
  160. package/dist/specs/components/skeleton/usage.xml +10 -0
  161. package/dist/specs/components/slider/a11y.xml +6 -0
  162. package/dist/specs/components/slider/meta.xml +19 -0
  163. package/dist/specs/components/slider/patterns.xml +7 -0
  164. package/dist/specs/components/slider/props.xml +45 -0
  165. package/dist/specs/components/slider/usage.xml +8 -0
  166. package/dist/specs/components/spinner/a11y.xml +7 -0
  167. package/dist/specs/components/spinner/meta.xml +17 -0
  168. package/dist/specs/components/spinner/patterns.xml +7 -0
  169. package/dist/specs/components/spinner/props.xml +24 -0
  170. package/dist/specs/components/spinner/usage.xml +8 -0
  171. package/dist/specs/components/stack/a11y.xml +6 -0
  172. package/dist/specs/components/stack/meta.xml +19 -0
  173. package/dist/specs/components/stack/patterns.xml +7 -0
  174. package/dist/specs/components/stack/props.xml +94 -0
  175. package/dist/specs/components/stack/usage.xml +14 -0
  176. package/dist/specs/components/static-noise/a11y.xml +6 -0
  177. package/dist/specs/components/static-noise/meta.xml +17 -0
  178. package/dist/specs/components/static-noise/patterns.xml +7 -0
  179. package/dist/specs/components/static-noise/props.xml +27 -0
  180. package/dist/specs/components/static-noise/usage.xml +10 -0
  181. package/dist/specs/components/surface/a11y.xml +6 -0
  182. package/dist/specs/components/surface/meta.xml +17 -0
  183. package/dist/specs/components/surface/patterns.xml +7 -0
  184. package/dist/specs/components/surface/props.xml +92 -0
  185. package/dist/specs/components/surface/usage.xml +16 -0
  186. package/dist/specs/components/switch/a11y.xml +6 -0
  187. package/dist/specs/components/switch/meta.xml +19 -0
  188. package/dist/specs/components/switch/patterns.xml +7 -0
  189. package/dist/specs/components/switch/props.xml +48 -0
  190. package/dist/specs/components/switch/usage.xml +8 -0
  191. package/dist/specs/components/tabs/a11y.xml +6 -0
  192. package/dist/specs/components/tabs/meta.xml +19 -0
  193. package/dist/specs/components/tabs/patterns.xml +14 -0
  194. package/dist/specs/components/tabs/props.xml +24 -0
  195. package/dist/specs/components/tabs/usage.xml +8 -0
  196. package/dist/specs/components/text/a11y.xml +6 -0
  197. package/dist/specs/components/text/meta.xml +17 -0
  198. package/dist/specs/components/text/patterns.xml +7 -0
  199. package/dist/specs/components/text/props.xml +129 -0
  200. package/dist/specs/components/text/usage.xml +7 -0
  201. package/dist/specs/components/textarea/a11y.xml +6 -0
  202. package/dist/specs/components/textarea/meta.xml +19 -0
  203. package/dist/specs/components/textarea/patterns.xml +7 -0
  204. package/dist/specs/components/textarea/props.xml +39 -0
  205. package/dist/specs/components/textarea/usage.xml +10 -0
  206. package/dist/specs/components/textfield/a11y.xml +6 -0
  207. package/dist/specs/components/textfield/meta.xml +21 -0
  208. package/dist/specs/components/textfield/patterns.xml +7 -0
  209. package/dist/specs/components/textfield/props.xml +51 -0
  210. package/dist/specs/components/textfield/usage.xml +9 -0
  211. package/dist/specs/components/title/a11y.xml +7 -0
  212. package/dist/specs/components/title/meta.xml +17 -0
  213. package/dist/specs/components/title/patterns.xml +7 -0
  214. package/dist/specs/components/title/props.xml +124 -0
  215. package/dist/specs/components/title/usage.xml +10 -0
  216. package/dist/specs/components/toast/a11y.xml +7 -0
  217. package/dist/specs/components/toast/meta.xml +20 -0
  218. package/dist/specs/components/toast/patterns.xml +15 -0
  219. package/dist/specs/components/toast/props.xml +42 -0
  220. package/dist/specs/components/toast/usage.xml +10 -0
  221. package/dist/specs/components/toggle-button/a11y.xml +6 -0
  222. package/dist/specs/components/toggle-button/meta.xml +20 -0
  223. package/dist/specs/components/toggle-button/patterns.xml +7 -0
  224. package/dist/specs/components/toggle-button/props.xml +61 -0
  225. package/dist/specs/components/toggle-button/usage.xml +10 -0
  226. package/dist/specs/components/toggle-group/a11y.xml +6 -0
  227. package/dist/specs/components/toggle-group/meta.xml +19 -0
  228. package/dist/specs/components/toggle-group/patterns.xml +9 -0
  229. package/dist/specs/components/toggle-group/props.xml +15 -0
  230. package/dist/specs/components/toggle-group/usage.xml +9 -0
  231. package/dist/specs/components/tooltip/a11y.xml +6 -0
  232. package/dist/specs/components/tooltip/meta.xml +21 -0
  233. package/dist/specs/components/tooltip/patterns.xml +12 -0
  234. package/dist/specs/components/tooltip/props.xml +20 -0
  235. package/dist/specs/components/tooltip/usage.xml +10 -0
  236. package/dist/specs/components/typewriter/a11y.xml +7 -0
  237. package/dist/specs/components/typewriter/meta.xml +18 -0
  238. package/dist/specs/components/typewriter/patterns.xml +7 -0
  239. package/dist/specs/components/typewriter/props.xml +43 -0
  240. package/dist/specs/components/typewriter/usage.xml +11 -0
  241. package/dist/specs/foundation/attributes.xml +127 -0
  242. package/dist/specs/foundation/bootstrap.xml +62 -0
  243. package/dist/specs/foundation/elevation.xml +21 -0
  244. package/dist/specs/foundation/meta.xml +20 -0
  245. package/dist/specs/foundation/modules.xml +62 -0
  246. package/dist/specs/foundation/theme-topics.xml +60 -0
  247. package/dist/specs/foundation/toggles.xml +25 -0
  248. package/dist/specs/index.xml +538 -0
  249. package/dist/specs/patterns/settings-row.xml +19 -0
  250. package/package.json +12 -11
  251. package/dist/components/accordion/accordion.guide.json +0 -69
  252. package/dist/components/annotate/annotate.guide.json +0 -110
  253. package/dist/components/autocomplete/autocomplete.guide.json +0 -103
  254. package/dist/components/avatar/avatar.guide.json +0 -53
  255. package/dist/components/avatar-group/avatar-group.guide.json +0 -56
  256. package/dist/components/badge/badge.guide.json +0 -59
  257. package/dist/components/beam/beam.guide.json +0 -123
  258. package/dist/components/bleed/bleed.guide.json +0 -43
  259. package/dist/components/breakpoints/breakpoints.guide.json +0 -40
  260. package/dist/components/button/button-link.guide.json +0 -69
  261. package/dist/components/button/button.guide.json +0 -78
  262. package/dist/components/checkbox/checkbox.guide.json +0 -68
  263. package/dist/components/chip/chip.guide.json +0 -69
  264. package/dist/components/clamp-text/clamp-text.guide.json +0 -47
  265. package/dist/components/dialog/dialog.guide.json +0 -72
  266. package/dist/components/elevator/elevator.guide.json +0 -46
  267. package/dist/components/fieldset/fieldset.guide.json +0 -43
  268. package/dist/components/fit-text/fit-text.guide.json +0 -38
  269. package/dist/components/glow/glow.guide.json +0 -108
  270. package/dist/components/grid/grid.guide.json +0 -120
  271. package/dist/components/icon-button/icon-button-link.guide.json +0 -73
  272. package/dist/components/icon-button/icon-button.guide.json +0 -72
  273. package/dist/components/linear-progress/linear-progress.guide.json +0 -53
  274. package/dist/components/masonry/masonry.guide.json +0 -50
  275. package/dist/components/menu/menu.guide.json +0 -94
  276. package/dist/components/meter/meter.guide.json +0 -52
  277. package/dist/components/popover/popover.guide.json +0 -58
  278. package/dist/components/progressive-blur/progressive-blur.guide.json +0 -50
  279. package/dist/components/radio/radio.guide.json +0 -65
  280. package/dist/components/select/select.guide.json +0 -105
  281. package/dist/components/separator/separator.guide.json +0 -58
  282. package/dist/components/shimmer/shimmer.guide.json +0 -67
  283. package/dist/components/skeleton/skeleton.guide.json +0 -98
  284. package/dist/components/slider/slider.guide.json +0 -64
  285. package/dist/components/spinner/spinner.guide.json +0 -43
  286. package/dist/components/stack/stack.guide.json +0 -116
  287. package/dist/components/static-noise/static-noise.guide.json +0 -44
  288. package/dist/components/surface/surface.guide.json +0 -115
  289. package/dist/components/switch/switch.guide.json +0 -71
  290. package/dist/components/tabs/tabs.guide.json +0 -43
  291. package/dist/components/text/text.guide.json +0 -152
  292. package/dist/components/textarea/textarea.guide.json +0 -55
  293. package/dist/components/textfield/textfield.guide.json +0 -70
  294. package/dist/components/title/title.guide.json +0 -149
  295. package/dist/components/toast/toast.guide.json +0 -60
  296. package/dist/components/toggle-button/toggle-button.guide.json +0 -81
  297. package/dist/components/toggle-group/toggle-group.guide.json +0 -27
  298. package/dist/components/tooltip/tooltip.guide.json +0 -40
  299. package/dist/components/typewriter/typewriter.guide.json +0 -65
  300. package/dist/consumption.json +0 -84
  301. package/dist/preflight-surface.json +0 -233
  302. package/dist/theme-surface.json +0 -71
@@ -0,0 +1,48 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="switch">
3
+ <when_to_use>
4
+ <item>Boolean on/off settings with optional label and helper text</item>
5
+ <item>Compact small or medium track sizes</item>
6
+ <item>Invalid and disabled states with Textfield-parity focus treatment</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Unlabeled switch without aria-label on the root</item>
10
+ <item>Expecting size or variant beyond medium and small</item>
11
+ </when_not_to_use>
12
+ <prop name="description" kind="react">
13
+ <description>Helper copy rendered with `Field.Description` and `Text` while the field is valid.</description>
14
+ </prop>
15
+ <prop name="error" kind="react">
16
+ <description>Error copy rendered with `Field.Error` and `Text` in the same slot as `description`. Replaces description while the field is invalid and dirty.</description>
17
+ </prop>
18
+ <prop name="hPadding" kind="react">
19
+ <description>Sets inline padding using one token for both sides or a `[start, end]` tuple.</description>
20
+ </prop>
21
+ <prop name="label" kind="react">
22
+ <description>Visible label rendered with shared internal `FieldLabel`.</description>
23
+ </prop>
24
+ <prop name="size" kind="react">
25
+ <description>Controls the visual switch size.</description>
26
+ </prop>
27
+ <prop name="vPadding" kind="react">
28
+ <description>Sets block padding using one token for both sides or a `[start, end]` tuple.</description>
29
+ </prop>
30
+ <css_var suffix="thumb-background">
31
+ <description>Switch thumb background color.</description>
32
+ </css_var>
33
+ <css_var suffix="thumb-inset">
34
+ <description>Inset between thumb and track edges.</description>
35
+ </css_var>
36
+ <css_var suffix="thumb-size">
37
+ <description>Switch thumb size derived from track block size.</description>
38
+ </css_var>
39
+ <css_var suffix="track-background">
40
+ <description>Switch track background color.</description>
41
+ </css_var>
42
+ <css_var suffix="track-block-size">
43
+ <description>Switch track block size; size presets adjust track and thumb.</description>
44
+ </css_var>
45
+ <css_var suffix="track-radius">
46
+ <description>Switch track corner radius.</description>
47
+ </css_var>
48
+ </props>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="switch">
3
+ <do>Boolean on/off settings with optional label and helper text</do>
4
+ <do>Compact small or medium track sizes</do>
5
+ <do>Invalid and disabled states with Textfield-parity focus treatment</do>
6
+ <dont>Rendering a switch without label and without aria-label</dont>
7
+ <dont>Expecting description to stay visible when invalid without an error message</dont>
8
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="tabs">
3
+ <rule>Keep tab labels as visible text; addons are decorative and aria-hidden</rule>
4
+ <rule>Ensure each `Tabs.Panel` value matches a `Tabs.Tab` value</rule>
5
+ <rule>Disabled items cannot be activated through pointer or keyboard</rule>
6
+ </a11y>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="tabs" title="Tabs" category="layout" shared_contract="tabs">
3
+ <summary>Compound segmented tab control with Surface list chrome, moving indicator, and animated panels.</summary>
4
+ <exports>
5
+ <export name="Tabs" />
6
+ </exports>
7
+ <related>
8
+ <ref id="surface" />
9
+ <ref id="stack" />
10
+ <ref id="text" />
11
+ </related>
12
+ <units>
13
+ <unit kind="a11y" href="a11y.xml" />
14
+ <unit kind="props" href="props.xml" />
15
+ <unit kind="usage" href="usage.xml" />
16
+ <unit kind="patterns" href="patterns.xml" />
17
+ </units>
18
+ <base_ui href="https://base-ui.com/react/components/tabs#api-reference" />
19
+ </meta>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="tabs">
3
+ <example title="Tabs structure">
4
+ <tsx><![CDATA[<Tabs>
5
+ <Tabs.List>
6
+ <Tabs.Tab value="a">…</Tabs.Tab>
7
+ </Tabs.List>
8
+ <Tabs.Viewport>
9
+ <Tabs.Panel value="a">…</Tabs.Panel>
10
+ </Tabs.Viewport>
11
+ </Tabs>]]></tsx>
12
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
13
+ </example>
14
+ </patterns>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="tabs">
3
+ <when_to_use>
4
+ <item>Switching between related views in the same surface</item>
5
+ <item>Compact horizontal segmented navigation</item>
6
+ <item>Decorative start/end addons on tab labels without changing accessible names</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Primary app navigation that should use links or routes directly</item>
10
+ <item>Vertical tab layouts in v1 styled targets</item>
11
+ </when_not_to_use>
12
+ <prop name="listAlignment" kind="react">
13
+ <description>Horizontal alignment of tab list within root Stack.</description>
14
+ </prop>
15
+ <prop name="Tab.addon" kind="react">
16
+ <description>Decorative addon rendered alongside the tab label.</description>
17
+ </prop>
18
+ <prop name="Tab.addonPosition" kind="react">
19
+ <description>Controls whether the addon appears before or after the label.</description>
20
+ </prop>
21
+ <css_var suffix="translate-amount">
22
+ <description>Panel entry translate distance for tab transitions.</description>
23
+ </css_var>
24
+ </props>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="tabs">
3
+ <do>Switching between related views in the same surface</do>
4
+ <do>Compact horizontal segmented navigation</do>
5
+ <do>Decorative start/end addons on tab labels without changing accessible names</do>
6
+ <dont>Using addons as the only visible label for a tab</dont>
7
+ <dont>Trying to compose a separate public `Tabs.Indicator`; the indicator is owned by `Tabs.List`</dont>
8
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="text">
3
+ <rule>Use Text for body copy; do not substitute for heading elements in the document outline</rule>
4
+ <rule>Semantic tone supports meaning but does not replace explicit labels on controls</rule>
5
+ <rule>Choose render when the copy must live on a specific inline or block element</rule>
6
+ </a11y>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="text" title="Text" category="typography" shared_contract="text">
3
+ <summary>Theme-aware body-copy primitive with tone, family, and responsive body sizing.</summary>
4
+ <exports>
5
+ <export name="Text" />
6
+ </exports>
7
+ <related>
8
+ <ref id="title" />
9
+ <ref id="clamp-text" />
10
+ </related>
11
+ <units>
12
+ <unit kind="a11y" href="a11y.xml" />
13
+ <unit kind="props" href="props.xml" />
14
+ <unit kind="usage" href="usage.xml" />
15
+ <unit kind="patterns" href="patterns.xml" />
16
+ </units>
17
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="text">
3
+ <example title="Text structure">
4
+ <tsx><![CDATA[<Text>…</Text>]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -0,0 +1,129 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="text">
3
+ <when_to_use>
4
+ <item>Body copy with semantic tone (including brand `primary`) and token-backed typography</item>
5
+ <item>Helper, label, or inline copy inside other components</item>
6
+ <item>Mono or body family text with fluid clamp sizing</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Headings or display typography — use Title</item>
10
+ <item>Heading semantics without an appropriate render root</item>
11
+ </when_not_to_use>
12
+ <prop name="align" kind="react">
13
+ <description>Aligns text using logical alignment values.</description>
14
+ </prop>
15
+ <prop name="balanced" kind="react">
16
+ <description>Enables balanced wrapping for block-like copy.</description>
17
+ </prop>
18
+ <prop name="color" kind="react">
19
+ <description>Applies a literal color escape hatch when semantic `tone` is not used.</description>
20
+ </prop>
21
+ <prop name="family" kind="react">
22
+ <description>Selects the semantic font family for body copy and inline code-like text.</description>
23
+ </prop>
24
+ <prop name="fontWidth" kind="react">
25
+ <description>Overrides font width as a percentage (100 = normal); maps to `font-stretch` and `wdth`.</description>
26
+ </prop>
27
+ <prop name="hPadding" kind="react">
28
+ <description>Sets inline padding using one token for both sides or a `[start, end]` tuple.</description>
29
+ </prop>
30
+ <prop name="lineHeight" kind="react">
31
+ <description>Controls line height through foundation leading tokens.</description>
32
+ </prop>
33
+ <prop name="maxWidth" kind="react">
34
+ <description>Constrains the maximum inline size of the rendered text block.</description>
35
+ </prop>
36
+ <prop name="opticalSize" kind="react">
37
+ <description>Overrides the optical size (`opsz`) axis on variable fonts; static fonts keep `font-optical-sizing: auto`.</description>
38
+ </prop>
39
+ <prop name="ref" kind="react">
40
+ <description>Ref forwarded to the rendered text root element.</description>
41
+ </prop>
42
+ <prop name="render" kind="react">
43
+ <description>Replaces the default `span` root using Base UI render semantics.</description>
44
+ </prop>
45
+ <prop name="selection" kind="react">
46
+ <description>Enables text selection on the rendered copy.</description>
47
+ </prop>
48
+ <prop name="size" kind="react">
49
+ <description>Selects a semantic body typography size from the active theme scale.</description>
50
+ </prop>
51
+ <prop name="tone" kind="react">
52
+ <description>Sets the semantic text color role when no literal `color` override is used. `default` inherits; `primary` → `--global-primary`; `muted` → `--global-muted`; `interactive` → `--global-interactive-text`; `positive` / `informative` / `danger` / `warning` → `--highlight-green` / `--highlight-blue` / `--highlight-red` / `--highlight-yellow`.</description>
53
+ </prop>
54
+ <prop name="tracking" kind="react">
55
+ <description>Sets letter spacing on the rendered copy.</description>
56
+ </prop>
57
+ <prop name="transform" kind="react">
58
+ <description>Applies a text-transform on the rendered copy.</description>
59
+ </prop>
60
+ <prop name="trim" kind="react">
61
+ <description>Trims text box whitespace at the chosen edge when the browser supports `text-box`. Pass `false` to disable text-box trim.</description>
62
+ </prop>
63
+ <prop name="trimType" kind="react">
64
+ <description>Selects the `text-box` trim basis when `trim` is active.</description>
65
+ </prop>
66
+ <prop name="vPadding" kind="react">
67
+ <description>Sets block padding using one token for both sides or a `[start, end]` tuple.</description>
68
+ </prop>
69
+ <prop name="weight" kind="react">
70
+ <description>Selects a semantic weight keyword or a numeric weight (`font-weight` + `wght` axis).</description>
71
+ </prop>
72
+ <prop name="whiteSpace" kind="react">
73
+ <description>Controls white-space preservation and wrapping behavior.</description>
74
+ </prop>
75
+ <css_var suffix="align">
76
+ <description>Text alignment on the root.</description>
77
+ </css_var>
78
+ <css_var suffix="font-family">
79
+ <description>Font family; family prop presets via data attributes.</description>
80
+ </css_var>
81
+ <css_var suffix="font-opsz">
82
+ <description>Optical size axis on the root (variable fonts).</description>
83
+ </css_var>
84
+ <css_var suffix="font-size">
85
+ <description>Body font size; size prop presets via data attributes.</description>
86
+ </css_var>
87
+ <css_var suffix="font-weight">
88
+ <description>Font weight on the root; keyword presets or numeric via weight prop.</description>
89
+ </css_var>
90
+ <css_var suffix="font-width">
91
+ <description>Font width percentage on the root (font-stretch + wdth).</description>
92
+ </css_var>
93
+ <css_var suffix="line-height">
94
+ <description>Line height; lineHeight prop presets via data attributes.</description>
95
+ </css_var>
96
+ <css_var suffix="letter-spacing">
97
+ <description>Letter spacing on the root.</description>
98
+ </css_var>
99
+ <css_var suffix="literal-color">
100
+ <description>Literal color override on the root.</description>
101
+ </css_var>
102
+ <css_var suffix="max-width">
103
+ <description>Max inline size of the text root.</description>
104
+ </css_var>
105
+ <css_var suffix="padding-block-end">
106
+ <description>Block-end padding when padding is enabled.</description>
107
+ </css_var>
108
+ <css_var suffix="padding-block-start">
109
+ <description>Block-start padding when padding is enabled.</description>
110
+ </css_var>
111
+ <css_var suffix="padding-inline-end">
112
+ <description>Inline-end padding when padding is enabled.</description>
113
+ </css_var>
114
+ <css_var suffix="padding-inline-start">
115
+ <description>Inline-start padding when padding is enabled.</description>
116
+ </css_var>
117
+ <css_var suffix="trim">
118
+ <description>Text-box trim mode on the root.</description>
119
+ </css_var>
120
+ <css_var suffix="trim-type">
121
+ <description>Text-box trim basis on the root.</description>
122
+ </css_var>
123
+ <css_var suffix="text-transform">
124
+ <description>Text transform on the root.</description>
125
+ </css_var>
126
+ <css_var suffix="white-space">
127
+ <description>White-space behavior on the root.</description>
128
+ </css_var>
129
+ </props>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="text">
3
+ <do>Body copy with semantic tone (including brand `primary`) and token-backed typography</do>
4
+ <do>Helper, label, or inline copy inside other components</do>
5
+ <do>Mono or body family text with fluid clamp sizing</do>
6
+ <dont>Using Text for headings instead of Title</dont>
7
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="textarea">
3
+ <rule>Associate label with the textarea through the field label pattern</rule>
4
+ <rule>Expose validation and helper copy through description and error slots</rule>
5
+ <rule>Prefer resize modes that do not hide required content from keyboard users</rule>
6
+ </a11y>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="textarea" title="Textarea" category="form" shared_contract="textarea">
3
+ <summary>Multi-line field control with shared field copy, optional resize, and optional content sizing.</summary>
4
+ <exports>
5
+ <export name="Textarea" />
6
+ </exports>
7
+ <related>
8
+ <ref id="fieldset" />
9
+ <ref id="textfield" />
10
+ <ref id="text" />
11
+ </related>
12
+ <units>
13
+ <unit kind="a11y" href="a11y.xml" />
14
+ <unit kind="props" href="props.xml" />
15
+ <unit kind="usage" href="usage.xml" />
16
+ <unit kind="patterns" href="patterns.xml" />
17
+ </units>
18
+ <base_ui href="https://base-ui.com/react/components/field#api-reference" />
19
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="textarea">
3
+ <example title="Textarea structure">
4
+ <tsx><![CDATA[<Textarea />]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="textarea">
3
+ <when_to_use>
4
+ <item>Multi-line text entry with label, description, and error</item>
5
+ <item>Optional native CSS resize (vertical, horizontal, both, and other valid resize values)</item>
6
+ <item>Content-sized growth via fitContent</item>
7
+ <item>Native textarea attributes through the field control</item>
8
+ <item>One or more Textareas inside Fieldset when they belong to a labeled form section with other fields</item>
9
+ </when_to_use>
10
+ <when_not_to_use>
11
+ <item>Single-line input — use Textfield</item>
12
+ <item>Addon slots like Textfield startAddon or endAddon</item>
13
+ <item>Wrapping a lone Textarea in Fieldset when its own label is sufficient</item>
14
+ </when_not_to_use>
15
+ <prop name="description" kind="react">
16
+ <description>Helper copy rendered with `Field.Description` and `Text` while the field is valid.</description>
17
+ </prop>
18
+ <prop name="error" kind="react">
19
+ <description>Error copy rendered with `Field.Error` and `Text` in the same slot as `description`. Replaces description while the field is invalid and dirty. Validation messages from `validate` are shown by `Field.Error` even when this prop is omitted (also requires dirty).</description>
20
+ </prop>
21
+ <prop name="fitContent" kind="react">
22
+ <description>When `true`, sets `field-sizing: content` so the control grows with its value. Still respects `min-block-size` and `resize`. Omitted / `false` keeps the browser fixed default.</description>
23
+ </prop>
24
+ <prop name="label" kind="react">
25
+ <description>Visible label rendered with shared internal `FieldLabel`.</description>
26
+ </prop>
27
+ <prop name="resize" kind="react">
28
+ <description>Native CSS `resize` for the control, serialized to `data-resize`. Omitted keeps resize disabled (`none`); accepts any valid `CSSProperties[&apos;resize&apos;]` value such as `&quot;vertical&quot;`, `&quot;horizontal&quot;`, or `&quot;both&quot;`.</description>
29
+ </prop>
30
+ <css_var suffix="input-border-radius">
31
+ <description>Corner radius for the BasicInput textarea control (also drives field label/description inline padding).</description>
32
+ </css_var>
33
+ <css_var suffix="min-block-size">
34
+ <description>Minimum block size of the BasicInput textarea control.</description>
35
+ </css_var>
36
+ <css_var suffix="padding-block">
37
+ <description>Block padding on the BasicInput textarea control.</description>
38
+ </css_var>
39
+ </props>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="textarea">
3
+ <do>Multi-line text entry with label, description, and error</do>
4
+ <do>Optional native CSS resize (vertical, horizontal, both, and other valid resize values)</do>
5
+ <do>Content-sized growth via fitContent</do>
6
+ <do>Native textarea attributes through the field control</do>
7
+ <do>One or more Textareas inside Fieldset when they belong to a labeled form section with other fields</do>
8
+ <dont>Using Textarea for single-line values</dont>
9
+ <dont>Expecting unsupported size or variant props</dont>
10
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="textfield">
3
+ <rule>Associate label with the input through the field label pattern</rule>
4
+ <rule>Surface validation errors in the shared description slot or Field.Error</rule>
5
+ <rule>Addon buttons must keep type=&quot;button&quot; and their own accessible names</rule>
6
+ </a11y>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="textfield" title="Textfield" category="form" shared_contract="textfield">
3
+ <summary>Single-line field input with control-group chrome and optional addons.</summary>
4
+ <exports>
5
+ <export name="Textfield" />
6
+ </exports>
7
+ <related>
8
+ <ref id="autocomplete" />
9
+ <ref id="fieldset" />
10
+ <ref id="textarea" />
11
+ <ref id="select" />
12
+ <ref id="text" />
13
+ </related>
14
+ <units>
15
+ <unit kind="a11y" href="a11y.xml" />
16
+ <unit kind="props" href="props.xml" />
17
+ <unit kind="usage" href="usage.xml" />
18
+ <unit kind="patterns" href="patterns.xml" />
19
+ </units>
20
+ <base_ui href="https://base-ui.com/react/components/input#api-reference" />
21
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="textfield">
3
+ <example title="Textfield structure">
4
+ <tsx><![CDATA[<Textfield />]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -0,0 +1,51 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="textfield">
3
+ <when_to_use>
4
+ <item>Single-line text, email, password, or similar native input types</item>
5
+ <item>Start or end addon slots inside the shared control group</item>
6
+ <item>Label, description, and error copy with validation states</item>
7
+ <item>Several related Textfields grouped under one section legend as Fieldset children (e.g. billing details)</item>
8
+ </when_to_use>
9
+ <when_not_to_use>
10
+ <item>Multi-line entry — use Textarea</item>
11
+ <item>Custom size or variant props — fixed medium treatment</item>
12
+ <item>Wrapping a lone Textfield in Fieldset when its own label is sufficient — Fieldset is for multi-field sections or shared legends</item>
13
+ <item>Using Fieldset instead of the Textfield label for a single control</item>
14
+ </when_not_to_use>
15
+ <prop name="description" kind="react">
16
+ <description>Helper copy rendered with `Field.Description` and `Text` while the field is valid.</description>
17
+ </prop>
18
+ <prop name="endAddon" kind="react">
19
+ <description>Trailing decoration (icon, button). Buttons must use `type=&quot;button&quot;`.</description>
20
+ </prop>
21
+ <prop name="error" kind="react">
22
+ <description>Error copy rendered with `Field.Error` and `Text` in the same slot as `description`. Replaces description while the field is invalid and dirty. Validation messages from `validate` are shown by `Field.Error` even when this prop is omitted (also requires dirty).</description>
23
+ </prop>
24
+ <prop name="fitContent" kind="react">
25
+ <description>When `true`, sets `field-sizing: content` so the control grows inline with its value. Block chrome stays `var(--vui-textfield-input-height)`. Omitted / `false` keeps the browser fixed default.</description>
26
+ </prop>
27
+ <prop name="fullWidth" kind="react">
28
+ <description>When `true`, root and control group take `inline-size: 100%`.</description>
29
+ </prop>
30
+ <prop name="label" kind="react">
31
+ <description>Visible label rendered with shared internal `FieldLabel`.</description>
32
+ </prop>
33
+ <prop name="startAddon" kind="react">
34
+ <description>Leading decoration (prefix text, icon). Not a second field control.</description>
35
+ </prop>
36
+ <css_var suffix="control-group-background">
37
+ <description>Textfield control group background.</description>
38
+ </css_var>
39
+ <css_var suffix="control-group-border-color">
40
+ <description>Textfield control group border color.</description>
41
+ </css_var>
42
+ <css_var suffix="control-group-border-radius">
43
+ <description>Textfield control group corner radius.</description>
44
+ </css_var>
45
+ <css_var suffix="control-group-color">
46
+ <description>Textfield control group foreground color.</description>
47
+ </css_var>
48
+ <css_var suffix="input-height">
49
+ <description>Textfield control group block size.</description>
50
+ </css_var>
51
+ </props>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="textfield">
3
+ <do>Single-line text, email, password, or similar native input types</do>
4
+ <do>Start or end addon slots inside the shared control group</do>
5
+ <do>Label, description, and error copy with validation states</do>
6
+ <do>Several related Textfields grouped under one section legend as Fieldset children (e.g. billing details)</do>
7
+ <dont>Passing unsupported size or variant props</dont>
8
+ <dont>Expecting a focus ring when focus is only on addon controls</dont>
9
+ </usage>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="title">
3
+ <rule>Title renders a span by default, so choose render to match the correct heading level for the page outline</rule>
4
+ <rule>Visual size presets do not replace picking the right h1–h6 element</rule>
5
+ <rule>Use size for appearance and render for semantics; pair them unless you intentionally need a visual mismatch</rule>
6
+ <rule>Keep heading hierarchy sequential; do not skip outline levels for styling alone</rule>
7
+ </a11y>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="title" title="Title" category="typography" shared_contract="title">
3
+ <summary>Theme-aware heading and display typography primitive.</summary>
4
+ <exports>
5
+ <export name="Title" />
6
+ </exports>
7
+ <related>
8
+ <ref id="text" />
9
+ <ref id="clamp-text" />
10
+ </related>
11
+ <units>
12
+ <unit kind="a11y" href="a11y.xml" />
13
+ <unit kind="props" href="props.xml" />
14
+ <unit kind="usage" href="usage.xml" />
15
+ <unit kind="patterns" href="patterns.xml" />
16
+ </units>
17
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="title">
3
+ <example title="Title structure">
4
+ <tsx><![CDATA[<Title>…</Title>]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>