@viraui/react 2026.3.10 → 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 (307) hide show
  1. package/dist/catalog.json +50 -50
  2. package/dist/components/dialog/dialog-sheet.js +2 -1
  3. package/dist/components/separator/separator.d.ts +2 -2
  4. package/dist/components/separator/separator.js +2 -2
  5. package/dist/components/surface/surface.css +1 -1
  6. package/dist/components/surface/surface.js +2 -0
  7. package/dist/components/textarea/textarea.js +2 -2
  8. package/dist/components/textfield/textfield.js +2 -2
  9. package/dist/specs/PROTOCOL.md +48 -0
  10. package/dist/specs/activity-hints.xml +42 -0
  11. package/dist/specs/components/accordion/a11y.xml +6 -0
  12. package/dist/specs/components/accordion/meta.xml +20 -0
  13. package/dist/specs/components/accordion/patterns.xml +9 -0
  14. package/dist/specs/components/accordion/props.xml +48 -0
  15. package/dist/specs/components/accordion/usage.xml +8 -0
  16. package/dist/specs/components/annotate/a11y.xml +6 -0
  17. package/dist/specs/components/annotate/meta.xml +19 -0
  18. package/dist/specs/components/annotate/patterns.xml +7 -0
  19. package/dist/specs/components/annotate/props.xml +88 -0
  20. package/dist/specs/components/annotate/usage.xml +10 -0
  21. package/dist/specs/components/autocomplete/a11y.xml +6 -0
  22. package/dist/specs/components/autocomplete/meta.xml +22 -0
  23. package/dist/specs/components/autocomplete/patterns.xml +14 -0
  24. package/dist/specs/components/autocomplete/props.xml +81 -0
  25. package/dist/specs/components/autocomplete/usage.xml +11 -0
  26. package/dist/specs/components/avatar/a11y.xml +5 -0
  27. package/dist/specs/components/avatar/meta.xml +17 -0
  28. package/dist/specs/components/avatar/patterns.xml +7 -0
  29. package/dist/specs/components/avatar/props.xml +38 -0
  30. package/dist/specs/components/avatar/usage.xml +7 -0
  31. package/dist/specs/components/avatar-group/a11y.xml +6 -0
  32. package/dist/specs/components/avatar-group/meta.xml +16 -0
  33. package/dist/specs/components/avatar-group/patterns.xml +7 -0
  34. package/dist/specs/components/avatar-group/props.xml +39 -0
  35. package/dist/specs/components/avatar-group/usage.xml +10 -0
  36. package/dist/specs/components/badge/a11y.xml +7 -0
  37. package/dist/specs/components/badge/meta.xml +19 -0
  38. package/dist/specs/components/badge/patterns.xml +7 -0
  39. package/dist/specs/components/badge/props.xml +37 -0
  40. package/dist/specs/components/badge/usage.xml +9 -0
  41. package/dist/specs/components/beam/a11y.xml +7 -0
  42. package/dist/specs/components/beam/meta.xml +18 -0
  43. package/dist/specs/components/beam/patterns.xml +7 -0
  44. package/dist/specs/components/beam/props.xml +90 -0
  45. package/dist/specs/components/beam/usage.xml +11 -0
  46. package/dist/specs/components/bleed/a11y.xml +7 -0
  47. package/dist/specs/components/bleed/meta.xml +18 -0
  48. package/dist/specs/components/bleed/patterns.xml +7 -0
  49. package/dist/specs/components/bleed/props.xml +22 -0
  50. package/dist/specs/components/bleed/usage.xml +10 -0
  51. package/dist/specs/components/breakpoints/a11y.xml +5 -0
  52. package/dist/specs/components/breakpoints/meta.xml +17 -0
  53. package/dist/specs/components/breakpoints/patterns.xml +9 -0
  54. package/dist/specs/components/breakpoints/props.xml +20 -0
  55. package/dist/specs/components/breakpoints/usage.xml +9 -0
  56. package/dist/specs/components/button/a11y.xml +9 -0
  57. package/dist/specs/components/button/meta.xml +20 -0
  58. package/dist/specs/components/button/patterns.xml +11 -0
  59. package/dist/specs/components/button/props.xml +101 -0
  60. package/dist/specs/components/button/usage.xml +18 -0
  61. package/dist/specs/components/checkbox/a11y.xml +6 -0
  62. package/dist/specs/components/checkbox/meta.xml +21 -0
  63. package/dist/specs/components/checkbox/patterns.xml +7 -0
  64. package/dist/specs/components/checkbox/props.xml +48 -0
  65. package/dist/specs/components/checkbox/usage.xml +10 -0
  66. package/dist/specs/components/chip/a11y.xml +6 -0
  67. package/dist/specs/components/chip/meta.xml +19 -0
  68. package/dist/specs/components/chip/patterns.xml +7 -0
  69. package/dist/specs/components/chip/props.xml +49 -0
  70. package/dist/specs/components/chip/usage.xml +11 -0
  71. package/dist/specs/components/clamp-text/a11y.xml +6 -0
  72. package/dist/specs/components/clamp-text/meta.xml +17 -0
  73. package/dist/specs/components/clamp-text/patterns.xml +7 -0
  74. package/dist/specs/components/clamp-text/props.xml +27 -0
  75. package/dist/specs/components/clamp-text/usage.xml +8 -0
  76. package/dist/specs/components/dialog/a11y.xml +7 -0
  77. package/dist/specs/components/dialog/meta.xml +21 -0
  78. package/dist/specs/components/dialog/patterns.xml +19 -0
  79. package/dist/specs/components/dialog/props.xml +49 -0
  80. package/dist/specs/components/dialog/usage.xml +12 -0
  81. package/dist/specs/components/elevator/a11y.xml +6 -0
  82. package/dist/specs/components/elevator/meta.xml +16 -0
  83. package/dist/specs/components/elevator/patterns.xml +7 -0
  84. package/dist/specs/components/elevator/props.xml +31 -0
  85. package/dist/specs/components/elevator/usage.xml +8 -0
  86. package/dist/specs/components/fieldset/a11y.xml +6 -0
  87. package/dist/specs/components/fieldset/meta.xml +22 -0
  88. package/dist/specs/components/fieldset/patterns.xml +7 -0
  89. package/dist/specs/components/fieldset/props.xml +26 -0
  90. package/dist/specs/components/fieldset/usage.xml +11 -0
  91. package/dist/specs/components/fit-text/a11y.xml +6 -0
  92. package/dist/specs/components/fit-text/meta.xml +18 -0
  93. package/dist/specs/components/fit-text/patterns.xml +7 -0
  94. package/dist/specs/components/fit-text/props.xml +19 -0
  95. package/dist/specs/components/fit-text/usage.xml +9 -0
  96. package/dist/specs/components/glow/a11y.xml +6 -0
  97. package/dist/specs/components/glow/meta.xml +19 -0
  98. package/dist/specs/components/glow/patterns.xml +7 -0
  99. package/dist/specs/components/glow/props.xml +74 -0
  100. package/dist/specs/components/glow/usage.xml +12 -0
  101. package/dist/specs/components/grid/a11y.xml +6 -0
  102. package/dist/specs/components/grid/meta.xml +18 -0
  103. package/dist/specs/components/grid/patterns.xml +9 -0
  104. package/dist/specs/components/grid/props.xml +101 -0
  105. package/dist/specs/components/grid/usage.xml +10 -0
  106. package/dist/specs/components/icon-button/a11y.xml +9 -0
  107. package/dist/specs/components/icon-button/meta.xml +18 -0
  108. package/dist/specs/components/icon-button/patterns.xml +11 -0
  109. package/dist/specs/components/icon-button/props.xml +95 -0
  110. package/dist/specs/components/icon-button/usage.xml +14 -0
  111. package/dist/specs/components/linear-progress/a11y.xml +6 -0
  112. package/dist/specs/components/linear-progress/meta.xml +21 -0
  113. package/dist/specs/components/linear-progress/patterns.xml +7 -0
  114. package/dist/specs/components/linear-progress/props.xml +31 -0
  115. package/dist/specs/components/linear-progress/usage.xml +11 -0
  116. package/dist/specs/components/masonry/a11y.xml +6 -0
  117. package/dist/specs/components/masonry/meta.xml +18 -0
  118. package/dist/specs/components/masonry/patterns.xml +9 -0
  119. package/dist/specs/components/masonry/props.xml +32 -0
  120. package/dist/specs/components/masonry/usage.xml +9 -0
  121. package/dist/specs/components/menu/a11y.xml +7 -0
  122. package/dist/specs/components/menu/meta.xml +25 -0
  123. package/dist/specs/components/menu/patterns.xml +25 -0
  124. package/dist/specs/components/menu/props.xml +73 -0
  125. package/dist/specs/components/menu/usage.xml +15 -0
  126. package/dist/specs/components/meter/a11y.xml +6 -0
  127. package/dist/specs/components/meter/meta.xml +19 -0
  128. package/dist/specs/components/meter/patterns.xml +7 -0
  129. package/dist/specs/components/meter/props.xml +31 -0
  130. package/dist/specs/components/meter/usage.xml +10 -0
  131. package/dist/specs/components/popover/a11y.xml +7 -0
  132. package/dist/specs/components/popover/meta.xml +22 -0
  133. package/dist/specs/components/popover/patterns.xml +15 -0
  134. package/dist/specs/components/popover/props.xml +37 -0
  135. package/dist/specs/components/popover/usage.xml +12 -0
  136. package/dist/specs/components/progressive-blur/a11y.xml +6 -0
  137. package/dist/specs/components/progressive-blur/meta.xml +17 -0
  138. package/dist/specs/components/progressive-blur/patterns.xml +7 -0
  139. package/dist/specs/components/progressive-blur/props.xml +28 -0
  140. package/dist/specs/components/progressive-blur/usage.xml +10 -0
  141. package/dist/specs/components/radio/a11y.xml +6 -0
  142. package/dist/specs/components/radio/meta.xml +20 -0
  143. package/dist/specs/components/radio/patterns.xml +9 -0
  144. package/dist/specs/components/radio/props.xml +44 -0
  145. package/dist/specs/components/radio/usage.xml +12 -0
  146. package/dist/specs/components/select/a11y.xml +6 -0
  147. package/dist/specs/components/select/meta.xml +21 -0
  148. package/dist/specs/components/select/patterns.xml +13 -0
  149. package/dist/specs/components/select/props.xml +83 -0
  150. package/dist/specs/components/select/usage.xml +14 -0
  151. package/dist/specs/components/separator/a11y.xml +6 -0
  152. package/dist/specs/components/separator/meta.xml +18 -0
  153. package/dist/specs/components/separator/patterns.xml +7 -0
  154. package/dist/specs/components/separator/props.xml +39 -0
  155. package/dist/specs/components/separator/usage.xml +8 -0
  156. package/dist/specs/components/shimmer/a11y.xml +6 -0
  157. package/dist/specs/components/shimmer/meta.xml +18 -0
  158. package/dist/specs/components/shimmer/patterns.xml +7 -0
  159. package/dist/specs/components/shimmer/props.xml +40 -0
  160. package/dist/specs/components/shimmer/usage.xml +9 -0
  161. package/dist/specs/components/skeleton/a11y.xml +8 -0
  162. package/dist/specs/components/skeleton/meta.xml +17 -0
  163. package/dist/specs/components/skeleton/patterns.xml +8 -0
  164. package/dist/specs/components/skeleton/props.xml +73 -0
  165. package/dist/specs/components/skeleton/usage.xml +10 -0
  166. package/dist/specs/components/slider/a11y.xml +6 -0
  167. package/dist/specs/components/slider/meta.xml +19 -0
  168. package/dist/specs/components/slider/patterns.xml +7 -0
  169. package/dist/specs/components/slider/props.xml +45 -0
  170. package/dist/specs/components/slider/usage.xml +8 -0
  171. package/dist/specs/components/spinner/a11y.xml +7 -0
  172. package/dist/specs/components/spinner/meta.xml +17 -0
  173. package/dist/specs/components/spinner/patterns.xml +7 -0
  174. package/dist/specs/components/spinner/props.xml +24 -0
  175. package/dist/specs/components/spinner/usage.xml +8 -0
  176. package/dist/specs/components/stack/a11y.xml +6 -0
  177. package/dist/specs/components/stack/meta.xml +19 -0
  178. package/dist/specs/components/stack/patterns.xml +7 -0
  179. package/dist/specs/components/stack/props.xml +94 -0
  180. package/dist/specs/components/stack/usage.xml +14 -0
  181. package/dist/specs/components/static-noise/a11y.xml +6 -0
  182. package/dist/specs/components/static-noise/meta.xml +17 -0
  183. package/dist/specs/components/static-noise/patterns.xml +7 -0
  184. package/dist/specs/components/static-noise/props.xml +27 -0
  185. package/dist/specs/components/static-noise/usage.xml +10 -0
  186. package/dist/specs/components/surface/a11y.xml +6 -0
  187. package/dist/specs/components/surface/meta.xml +17 -0
  188. package/dist/specs/components/surface/patterns.xml +7 -0
  189. package/dist/specs/components/surface/props.xml +92 -0
  190. package/dist/specs/components/surface/usage.xml +16 -0
  191. package/dist/specs/components/switch/a11y.xml +6 -0
  192. package/dist/specs/components/switch/meta.xml +19 -0
  193. package/dist/specs/components/switch/patterns.xml +7 -0
  194. package/dist/specs/components/switch/props.xml +48 -0
  195. package/dist/specs/components/switch/usage.xml +8 -0
  196. package/dist/specs/components/tabs/a11y.xml +6 -0
  197. package/dist/specs/components/tabs/meta.xml +19 -0
  198. package/dist/specs/components/tabs/patterns.xml +14 -0
  199. package/dist/specs/components/tabs/props.xml +24 -0
  200. package/dist/specs/components/tabs/usage.xml +8 -0
  201. package/dist/specs/components/text/a11y.xml +6 -0
  202. package/dist/specs/components/text/meta.xml +17 -0
  203. package/dist/specs/components/text/patterns.xml +7 -0
  204. package/dist/specs/components/text/props.xml +129 -0
  205. package/dist/specs/components/text/usage.xml +7 -0
  206. package/dist/specs/components/textarea/a11y.xml +6 -0
  207. package/dist/specs/components/textarea/meta.xml +19 -0
  208. package/dist/specs/components/textarea/patterns.xml +7 -0
  209. package/dist/specs/components/textarea/props.xml +39 -0
  210. package/dist/specs/components/textarea/usage.xml +10 -0
  211. package/dist/specs/components/textfield/a11y.xml +6 -0
  212. package/dist/specs/components/textfield/meta.xml +21 -0
  213. package/dist/specs/components/textfield/patterns.xml +7 -0
  214. package/dist/specs/components/textfield/props.xml +51 -0
  215. package/dist/specs/components/textfield/usage.xml +9 -0
  216. package/dist/specs/components/title/a11y.xml +7 -0
  217. package/dist/specs/components/title/meta.xml +17 -0
  218. package/dist/specs/components/title/patterns.xml +7 -0
  219. package/dist/specs/components/title/props.xml +124 -0
  220. package/dist/specs/components/title/usage.xml +10 -0
  221. package/dist/specs/components/toast/a11y.xml +7 -0
  222. package/dist/specs/components/toast/meta.xml +20 -0
  223. package/dist/specs/components/toast/patterns.xml +15 -0
  224. package/dist/specs/components/toast/props.xml +42 -0
  225. package/dist/specs/components/toast/usage.xml +10 -0
  226. package/dist/specs/components/toggle-button/a11y.xml +6 -0
  227. package/dist/specs/components/toggle-button/meta.xml +20 -0
  228. package/dist/specs/components/toggle-button/patterns.xml +7 -0
  229. package/dist/specs/components/toggle-button/props.xml +61 -0
  230. package/dist/specs/components/toggle-button/usage.xml +10 -0
  231. package/dist/specs/components/toggle-group/a11y.xml +6 -0
  232. package/dist/specs/components/toggle-group/meta.xml +19 -0
  233. package/dist/specs/components/toggle-group/patterns.xml +9 -0
  234. package/dist/specs/components/toggle-group/props.xml +15 -0
  235. package/dist/specs/components/toggle-group/usage.xml +9 -0
  236. package/dist/specs/components/tooltip/a11y.xml +6 -0
  237. package/dist/specs/components/tooltip/meta.xml +21 -0
  238. package/dist/specs/components/tooltip/patterns.xml +12 -0
  239. package/dist/specs/components/tooltip/props.xml +20 -0
  240. package/dist/specs/components/tooltip/usage.xml +10 -0
  241. package/dist/specs/components/typewriter/a11y.xml +7 -0
  242. package/dist/specs/components/typewriter/meta.xml +18 -0
  243. package/dist/specs/components/typewriter/patterns.xml +7 -0
  244. package/dist/specs/components/typewriter/props.xml +43 -0
  245. package/dist/specs/components/typewriter/usage.xml +11 -0
  246. package/dist/specs/foundation/attributes.xml +127 -0
  247. package/dist/specs/foundation/bootstrap.xml +62 -0
  248. package/dist/specs/foundation/elevation.xml +21 -0
  249. package/dist/specs/foundation/meta.xml +20 -0
  250. package/dist/specs/foundation/modules.xml +62 -0
  251. package/dist/specs/foundation/theme-topics.xml +60 -0
  252. package/dist/specs/foundation/toggles.xml +25 -0
  253. package/dist/specs/index.xml +538 -0
  254. package/dist/specs/patterns/settings-row.xml +19 -0
  255. package/package.json +12 -11
  256. package/dist/components/accordion/accordion.guide.json +0 -69
  257. package/dist/components/annotate/annotate.guide.json +0 -110
  258. package/dist/components/autocomplete/autocomplete.guide.json +0 -103
  259. package/dist/components/avatar/avatar.guide.json +0 -53
  260. package/dist/components/avatar-group/avatar-group.guide.json +0 -56
  261. package/dist/components/badge/badge.guide.json +0 -59
  262. package/dist/components/beam/beam.guide.json +0 -123
  263. package/dist/components/bleed/bleed.guide.json +0 -43
  264. package/dist/components/breakpoints/breakpoints.guide.json +0 -40
  265. package/dist/components/button/button-link.guide.json +0 -69
  266. package/dist/components/button/button.guide.json +0 -78
  267. package/dist/components/checkbox/checkbox.guide.json +0 -68
  268. package/dist/components/chip/chip.guide.json +0 -69
  269. package/dist/components/clamp-text/clamp-text.guide.json +0 -47
  270. package/dist/components/dialog/dialog.guide.json +0 -72
  271. package/dist/components/elevator/elevator.guide.json +0 -46
  272. package/dist/components/fieldset/fieldset.guide.json +0 -43
  273. package/dist/components/fit-text/fit-text.guide.json +0 -38
  274. package/dist/components/glow/glow.guide.json +0 -108
  275. package/dist/components/grid/grid.guide.json +0 -120
  276. package/dist/components/icon-button/icon-button-link.guide.json +0 -73
  277. package/dist/components/icon-button/icon-button.guide.json +0 -72
  278. package/dist/components/linear-progress/linear-progress.guide.json +0 -53
  279. package/dist/components/masonry/masonry.guide.json +0 -50
  280. package/dist/components/menu/menu.guide.json +0 -94
  281. package/dist/components/meter/meter.guide.json +0 -52
  282. package/dist/components/popover/popover.guide.json +0 -58
  283. package/dist/components/progressive-blur/progressive-blur.guide.json +0 -50
  284. package/dist/components/radio/radio.guide.json +0 -65
  285. package/dist/components/select/select.guide.json +0 -105
  286. package/dist/components/separator/separator.guide.json +0 -58
  287. package/dist/components/shimmer/shimmer.guide.json +0 -67
  288. package/dist/components/skeleton/skeleton.guide.json +0 -98
  289. package/dist/components/slider/slider.guide.json +0 -64
  290. package/dist/components/spinner/spinner.guide.json +0 -43
  291. package/dist/components/stack/stack.guide.json +0 -116
  292. package/dist/components/static-noise/static-noise.guide.json +0 -44
  293. package/dist/components/surface/surface.guide.json +0 -114
  294. package/dist/components/switch/switch.guide.json +0 -71
  295. package/dist/components/tabs/tabs.guide.json +0 -43
  296. package/dist/components/text/text.guide.json +0 -152
  297. package/dist/components/textarea/textarea.guide.json +0 -55
  298. package/dist/components/textfield/textfield.guide.json +0 -70
  299. package/dist/components/title/title.guide.json +0 -149
  300. package/dist/components/toast/toast.guide.json +0 -60
  301. package/dist/components/toggle-button/toggle-button.guide.json +0 -81
  302. package/dist/components/toggle-group/toggle-group.guide.json +0 -27
  303. package/dist/components/tooltip/tooltip.guide.json +0 -40
  304. package/dist/components/typewriter/typewriter.guide.json +0 -65
  305. package/dist/consumption.json +0 -84
  306. package/dist/preflight-surface.json +0 -233
  307. package/dist/theme-surface.json +0 -71
@@ -0,0 +1,92 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="surface">
3
+ <when_to_use>
4
+ <item>Group content with base-level background and contrast border</item>
5
+ <item>Frosted glass panels with `data-vibrant` — omit `color` for page-level shell or pass `color` for a tinted fill</item>
6
+ <item>Popup or card chrome with optional hover background</item>
7
+ <item>Compose with Elevator for animated elevation transitions</item>
8
+ <item>Set radius to a token on the outermost Surface that needs rounded corners</item>
9
+ <item>Set radius to a four-value tuple [top-left, top-right, bottom-right, bottom-left] when corners need different token radii</item>
10
+ <item>Set radius=&quot;auto&quot; on a nested Surface when its parent Surface has a radius so each corner subtracts the nearest ancestor padding and stays concentric</item>
11
+ <item>Stack nested auto-radius Surfaces recursively; context still resolves through wrapper layout such as Stack</item>
12
+ <item>Set overflow=&quot;hidden&quot; (or scroll/auto) when Surface must clip or scroll inner content with radius or padding</item>
13
+ <item>Style descendants with `@container surface` queries when layout or typography should respond to the Surface&apos;s own inline-size instead of the viewport (set `enableContainer` on the Surface you&apos;re querying)</item>
14
+ </when_to_use>
15
+ <when_not_to_use>
16
+ <item>Interactive control semantics without an appropriate render root</item>
17
+ <item>Expecting hover background on touch-primary devices</item>
18
+ <item>Using radius=&quot;auto&quot; on the outermost Surface when no ancestor Surface provides a radius context</item>
19
+ </when_not_to_use>
20
+ <prop name="border" kind="react">
21
+ <description>Applies the shared contrast border on one or more sides (`all`, `top`, `right`, `bottom`, `left`). Pass a single side or a list (e.g. `[&quot;bottom&quot;, &quot;left&quot;]`). Omit for no border.</description>
22
+ </prop>
23
+ <prop name="enableContainer" kind="react">
24
+ <description>Opt-in named CSS container query context for this Surface (enables `container: surface / inline-size` on the root). Required for `@container surface (min-width: ...)` rules to react to this Surface inline-size. Warning: inline-size containment can affect nested layout (e.g. cards inside Masonry). Use only when you need container queries against this specific Surface.</description>
25
+ </prop>
26
+ <prop name="borderStyle" kind="react">
27
+ <description>Sets the CSS border style when `border` is set.</description>
28
+ </prop>
29
+ <prop name="color" kind="react">
30
+ <description>Sets the resting background using a base ramp layer (`1`–`3`), a literal CSS color value, or the named token `primary` (`data-surface-color=&quot;primary&quot;`; CSS owns light/dark opacity via `--global-primary`).</description>
31
+ </prop>
32
+ <prop name="hoverColor" kind="react">
33
+ <description>Sets the hover background on hover-capable pointers using a base ramp layer (`1`–`3`), a literal CSS value, or the named token `primary` (`data-surface-hover-color=&quot;primary&quot;`; CSS owns light/dark opacity via `--global-primary`).</description>
34
+ </prop>
35
+ <prop name="hPadding" kind="react">
36
+ <description>Sets inline padding using one token for both sides or a `[start, end]` tuple.</description>
37
+ </prop>
38
+ <prop name="overflow" kind="react">
39
+ <description>Sets root overflow through the `--vui-surface-overflow` custom property.</description>
40
+ </prop>
41
+ <prop name="radius" kind="react">
42
+ <description>Sets corner radius from the Vira radius token scale, a per-corner `[top-left, top-right, bottom-right, bottom-left]` tuple (`0` for square corners), or `auto` for concentric radii from the nearest ancestor Surface.</description>
43
+ </prop>
44
+ <prop name="ref" kind="react">
45
+ <description>Ref forwarded to the rendered surface root element.</description>
46
+ </prop>
47
+ <prop name="render" kind="react">
48
+ <description>Replaces the default `div` root using Base UI render semantics.</description>
49
+ </prop>
50
+ <prop name="vPadding" kind="react">
51
+ <description>Sets block padding using one token for both sides or a `[start, end]` tuple.</description>
52
+ </prop>
53
+ <css_var suffix="background">
54
+ <description>Resting surface background on the root.</description>
55
+ </css_var>
56
+ <css_var suffix="background-hover">
57
+ <description>Hover surface background on the root.</description>
58
+ </css_var>
59
+ <css_var suffix="border-radius">
60
+ <description>Uniform corner radius when radius is a single token.</description>
61
+ </css_var>
62
+ <css_var suffix="border-radius-bottom-left">
63
+ <description>Bottom-left corner radius; radius tuple or auto resolves per corner.</description>
64
+ </css_var>
65
+ <css_var suffix="border-radius-bottom-right">
66
+ <description>Bottom-right corner radius; radius tuple or auto resolves per corner.</description>
67
+ </css_var>
68
+ <css_var suffix="border-radius-top-left">
69
+ <description>Top-left corner radius; radius tuple or auto resolves per corner.</description>
70
+ </css_var>
71
+ <css_var suffix="border-radius-top-right">
72
+ <description>Top-right corner radius; radius tuple or auto resolves per corner.</description>
73
+ </css_var>
74
+ <css_var suffix="border-style">
75
+ <description>Border style when border is enabled.</description>
76
+ </css_var>
77
+ <css_var suffix="overflow">
78
+ <description>Root overflow behavior.</description>
79
+ </css_var>
80
+ <css_var suffix="padding-block-end">
81
+ <description>Block-end padding when padding is enabled.</description>
82
+ </css_var>
83
+ <css_var suffix="padding-block-start">
84
+ <description>Block-start padding when padding is enabled.</description>
85
+ </css_var>
86
+ <css_var suffix="padding-inline-end">
87
+ <description>Inline-end padding when padding is enabled.</description>
88
+ </css_var>
89
+ <css_var suffix="padding-inline-start">
90
+ <description>Inline-start padding when padding is enabled.</description>
91
+ </css_var>
92
+ </props>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="surface">
3
+ <do>Group content with base-level background and contrast border</do>
4
+ <do>Frosted glass panels with `data-vibrant` — omit `color` for page-level shell or pass `color` for a tinted fill</do>
5
+ <do>Popup or card chrome with optional hover background</do>
6
+ <do>Compose with Elevator for animated elevation transitions</do>
7
+ <do>Set radius to a token on the outermost Surface that needs rounded corners</do>
8
+ <do>Set radius to a four-value tuple [top-left, top-right, bottom-right, bottom-left] when corners need different token radii</do>
9
+ <do>Set radius=&quot;auto&quot; on a nested Surface when its parent Surface has a radius so each corner subtracts the nearest ancestor padding and stays concentric</do>
10
+ <do>Stack nested auto-radius Surfaces recursively; context still resolves through wrapper layout such as Stack</do>
11
+ <dont>Overwriting transition shorthand without composing box-shadow when data-elevation is present</dont>
12
+ <dont>Assuming hoverColor applies on touch devices</dont>
13
+ <dont>Reusing the parent token radius on nested Surfaces instead of radius=&quot;auto&quot; when concentric corners are required</dont>
14
+ <dont>Expecting radius=&quot;auto&quot; to inherit a token when the nearest ancestor Surface has no radius set</dont>
15
+ <dont>Using viewport media queries when @container surface queries against the rendered Surface inline-size would match the design intent</dont>
16
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="switch">
3
+ <rule>Provide visible label or aria-label so the switch has an accessible name</rule>
4
+ <rule>Checked state must map to the native switch semantics exposed by the control</rule>
5
+ <rule>Surface invalid state and error copy through the shared field pattern</rule>
6
+ </a11y>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="switch" title="Switch" category="form" shared_contract="switch">
3
+ <summary>Field-wrapped toggle control with medium or small track and optional field copy.</summary>
4
+ <exports>
5
+ <export name="Switch" />
6
+ </exports>
7
+ <related>
8
+ <ref id="textfield" />
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/switch#api-reference" />
19
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="switch">
3
+ <example title="Switch structure">
4
+ <tsx><![CDATA[<Switch label="…" />]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -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>