@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,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>
@@ -0,0 +1,124 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="title">
3
+ <when_to_use>
4
+ <item>Headings and display text with title presets</item>
5
+ <item>Semantic heading tags chosen explicitly through render</item>
6
+ <item>Size and render paired together for most heading use cases</item>
7
+ <item>Fluid clamp sizing across title appearance presets</item>
8
+ </when_to_use>
9
+ <when_not_to_use>
10
+ <item>Body copy — use Text</item>
11
+ <item>Body or mono family typography</item>
12
+ </when_not_to_use>
13
+ <prop name="align" kind="react">
14
+ <description>Aligns text using logical alignment values.</description>
15
+ </prop>
16
+ <prop name="balanced" kind="react">
17
+ <description>Enables balanced wrapping for block-like titles.</description>
18
+ </prop>
19
+ <prop name="color" kind="react">
20
+ <description>Applies a literal color escape hatch.</description>
21
+ </prop>
22
+ <prop name="fontWidth" kind="react">
23
+ <description>Overrides font width as a percentage (100 = normal); maps to `font-stretch` and `wdth`.</description>
24
+ </prop>
25
+ <prop name="hPadding" kind="react">
26
+ <description>Sets inline padding using one token for both sides or a `[start, end]` tuple.</description>
27
+ </prop>
28
+ <prop name="lineHeight" kind="react">
29
+ <description>Controls line height through foundation leading tokens.</description>
30
+ </prop>
31
+ <prop name="maxWidth" kind="react">
32
+ <description>Constrains the maximum inline size of the rendered text block.</description>
33
+ </prop>
34
+ <prop name="opticalSize" kind="react">
35
+ <description>Overrides the optical size (`opsz`) axis on variable fonts; static fonts keep `font-optical-sizing: auto`.</description>
36
+ </prop>
37
+ <prop name="ref" kind="react">
38
+ <description>Ref forwarded to the rendered title root element.</description>
39
+ </prop>
40
+ <prop name="render" kind="react">
41
+ <description>Replaces the default `span` root using Base UI render semantics. Pair this with `size` for most headings so DOM semantics and visual preset stay intentionally aligned.</description>
42
+ </prop>
43
+ <prop name="selection" kind="react">
44
+ <description>Enables text selection on the rendered copy.</description>
45
+ </prop>
46
+ <prop name="size" kind="react">
47
+ <description>Selects a heading or display typography preset from the active theme scale. This controls only the visual preset. Semantic heading choice remains owned by `render`, because `Title` keeps a `span` root unless `render` replaces it.</description>
48
+ </prop>
49
+ <prop name="tracking" kind="react">
50
+ <description>Sets letter spacing on the rendered copy. Overrides size preset letter-spacing when set.</description>
51
+ </prop>
52
+ <prop name="transform" kind="react">
53
+ <description>Applies a text-transform on the rendered copy.</description>
54
+ </prop>
55
+ <prop name="trim" kind="react">
56
+ <description>Trims text box whitespace at the chosen edge when the browser supports `text-box`. Pass `false` to disable text-box trim.</description>
57
+ </prop>
58
+ <prop name="trimType" kind="react">
59
+ <description>Selects the `text-box` trim basis when `trim` is active.</description>
60
+ </prop>
61
+ <prop name="vPadding" kind="react">
62
+ <description>Sets block padding using one token for both sides or a `[start, end]` tuple.</description>
63
+ </prop>
64
+ <prop name="weight" kind="react">
65
+ <description>Overrides the size preset weight (`font-weight` + `wght` axis).</description>
66
+ </prop>
67
+ <prop name="whiteSpace" kind="react">
68
+ <description>Controls white-space preservation and wrapping behavior.</description>
69
+ </prop>
70
+ <css_var suffix="align">
71
+ <description>Title alignment on the root.</description>
72
+ </css_var>
73
+ <css_var suffix="font-family">
74
+ <description>Heading font family on the root.</description>
75
+ </css_var>
76
+ <css_var suffix="font-opsz">
77
+ <description>Optical size axis on the root (variable fonts).</description>
78
+ </css_var>
79
+ <css_var suffix="font-size">
80
+ <description>Heading font size; size prop presets via data attributes.</description>
81
+ </css_var>
82
+ <css_var suffix="font-weight">
83
+ <description>Font weight on the root.</description>
84
+ </css_var>
85
+ <css_var suffix="font-width">
86
+ <description>Font width percentage on the root (font-stretch + wdth).</description>
87
+ </css_var>
88
+ <css_var suffix="letter-spacing">
89
+ <description>Public letter spacing from the `tracking` prop when set.</description>
90
+ </css_var>
91
+ <css_var suffix="line-height">
92
+ <description>Line height; lineHeight prop presets via data attributes.</description>
93
+ </css_var>
94
+ <css_var suffix="literal-color">
95
+ <description>Literal color override on the root.</description>
96
+ </css_var>
97
+ <css_var suffix="max-width">
98
+ <description>Max inline size of the title root.</description>
99
+ </css_var>
100
+ <css_var suffix="padding-block-end">
101
+ <description>Block-end padding when padding is enabled.</description>
102
+ </css_var>
103
+ <css_var suffix="padding-block-start">
104
+ <description>Block-start padding when padding is enabled.</description>
105
+ </css_var>
106
+ <css_var suffix="padding-inline-end">
107
+ <description>Inline-end padding when padding is enabled.</description>
108
+ </css_var>
109
+ <css_var suffix="padding-inline-start">
110
+ <description>Inline-start padding when padding is enabled.</description>
111
+ </css_var>
112
+ <css_var suffix="trim">
113
+ <description>Text-box trim mode on the root.</description>
114
+ </css_var>
115
+ <css_var suffix="trim-type">
116
+ <description>Text-box trim basis on the root.</description>
117
+ </css_var>
118
+ <css_var suffix="text-transform">
119
+ <description>Text transform on the root.</description>
120
+ </css_var>
121
+ <css_var suffix="white-space">
122
+ <description>White-space behavior on the root.</description>
123
+ </css_var>
124
+ </props>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="title">
3
+ <do>Headings and display text with title presets</do>
4
+ <do>Semantic heading tags chosen explicitly through render</do>
5
+ <do>Size and render paired together for most heading use cases</do>
6
+ <do>Fluid clamp sizing across title appearance presets</do>
7
+ <dont>Assuming size changes the HTML tag automatically</dont>
8
+ <dont>Letting size force the HTML tag instead of choosing render explicitly</dont>
9
+ <dont>Using Title for long body paragraphs</dont>
10
+ </usage>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="toast">
3
+ <rule>Pass title and description strings to toastManager.add for screen reader announcements on high-priority toasts</rule>
4
+ <rule>Keep toast copy concise; users can navigate the toast viewport landmark with F6</rule>
5
+ <rule>Ensure action and dismiss controls have visible labels</rule>
6
+ <rule>Use anchored toasts for contextual feedback tied to a specific trigger</rule>
7
+ </a11y>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="toast" title="Toast" category="feedback" shared_contract="toast">
3
+ <summary>Non-callable compound Toast namespace for transient notifications, with stacked or anchored placement, Banner high-level API, and optional action buttons.</summary>
4
+ <exports>
5
+ <export name="Toast" />
6
+ </exports>
7
+ <related>
8
+ <ref id="button" />
9
+ <ref id="surface" />
10
+ <ref id="stack" />
11
+ <ref id="dialog" />
12
+ </related>
13
+ <units>
14
+ <unit kind="a11y" href="a11y.xml" />
15
+ <unit kind="props" href="props.xml" />
16
+ <unit kind="usage" href="usage.xml" />
17
+ <unit kind="patterns" href="patterns.xml" />
18
+ </units>
19
+ <base_ui href="https://base-ui.com/react/components/toast#api-reference" />
20
+ </meta>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="toast">
3
+ <example title="Toast structure">
4
+ <tsx><![CDATA[<Toast.Provider>
5
+ <Toast.Portal>
6
+ <Toast.Viewport>
7
+ <Toast.Banner toast={…}>
8
+ <Toast.Action>…</Toast.Action>
9
+ </Toast.Banner>
10
+ </Toast.Viewport>
11
+ </Toast.Portal>
12
+ </Toast.Provider>]]></tsx>
13
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
14
+ </example>
15
+ </patterns>
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="toast">
3
+ <when_to_use>
4
+ <item>Confirming a completed action such as save or delete</item>
5
+ <item>Offering a short undo window after a reversible change</item>
6
+ <item>Showing contextual feedback anchored to the control that triggered it</item>
7
+ <item>Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part</item>
8
+ </when_to_use>
9
+ <when_not_to_use>
10
+ <item>Blocking errors that need immediate correction — use inline field errors or a dialog</item>
11
+ <item>Persistent status that should stay visible — use inline status text or a banner pattern</item>
12
+ <item>Long-form content that needs reading time — use a dialog or dedicated panel</item>
13
+ </when_not_to_use>
14
+ <prop name="Banner.children" kind="react">
15
+ <description>Optional action buttons. Accepts a single `Toast.Action` or an array of them.</description>
16
+ </prop>
17
+ <prop name="Banner.className" kind="react">
18
+ <description>Class name forwarded to the toast root.</description>
19
+ </prop>
20
+ <prop name="Banner.description" kind="react">
21
+ <description>Supporting copy below the title.</description>
22
+ </prop>
23
+ <prop name="Banner.dismissable" kind="react">
24
+ <description>Whether to render the dismiss control.</description>
25
+ </prop>
26
+ <prop name="Banner.dismissLabel" kind="react">
27
+ <description>Label for the dismiss control.</description>
28
+ </prop>
29
+ <prop name="Banner.onDismiss" kind="react">
30
+ <description>Called when the dismiss control is activated, before Base UI closes the toast.</description>
31
+ </prop>
32
+ <prop name="Banner.title" kind="react">
33
+ <description>Heading above the description. Falls back to `toast.title` from `toastManager.add`.</description>
34
+ </prop>
35
+ <prop name="Banner.toast" kind="react">
36
+ <description>Toast instance from `Toast.useToastManager().toasts` or `Toast.createToastManager()`.</description>
37
+ </prop>
38
+ <prop name="Viewport.position" kind="react">
39
+ <description>Controls viewport placement and stacking layout hooks.</description>
40
+ </prop>
41
+
42
+ </props>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="toast">
3
+ <do>Confirming a completed action such as save or delete</do>
4
+ <do>Offering a short undo window after a reversible change</do>
5
+ <do>Showing contextual feedback anchored to the control that triggered it</do>
6
+ <do>Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part</do>
7
+ <dont>Nesting arbitrary components inside Toast.Banner — children must be Toast.Action only</dont>
8
+ <dont>Stacking many simultaneous toasts without a clear limit</dont>
9
+ <dont>Using toasts for critical validation errors that block task completion</dont>
10
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="toggle-button">
3
+ <rule>Provide aria-label or aria-labelledby on every ToggleButton — icon alone is not a name</rule>
4
+ <rule>Base UI Toggle exposes aria-pressed on the rendered button</rule>
5
+ <rule>Keep the accessible name stable when loading state changes</rule>
6
+ </a11y>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="toggle-button" title="ToggleButton" category="action" shared_contract="toggle-button">
3
+ <summary>Icon-only two-state toggle that swaps resting and optional pressed icons on Base UI Toggle state; `interpolateIcons` (default false) opt-in crossfade + light rotate between dual icons.</summary>
4
+ <exports>
5
+ <export name="ToggleButton" />
6
+ </exports>
7
+ <related>
8
+ <ref id="icon-button" />
9
+ <ref id="button" />
10
+ <ref id="switch" />
11
+ <ref id="toggle-group" />
12
+ </related>
13
+ <units>
14
+ <unit kind="a11y" href="a11y.xml" />
15
+ <unit kind="props" href="props.xml" />
16
+ <unit kind="usage" href="usage.xml" />
17
+ <unit kind="patterns" href="patterns.xml" />
18
+ </units>
19
+ <base_ui href="https://base-ui.com/react/components/toggle#api-reference" />
20
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="toggle-button">
3
+ <example title="ToggleButton structure">
4
+ <tsx><![CDATA[<ToggleButton restingIcon={<Plus />} aria-label="Pin" />]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -0,0 +1,61 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="toggle-button">
3
+ <when_to_use>
4
+ <item>Toolbar pin, favorite, or mute toggles identified only by icon</item>
5
+ <item>Compact on/off controls that share IconButton size, variant, and loading model</item>
6
+ <item>Two-state actions where pressed state should swap the visible glyph</item>
7
+ <item>Temporally swap icons after user interactions with temporal pressed state, like copy feedback.</item>
8
+ </when_to_use>
9
+ <when_not_to_use>
10
+ <item>Settings-style on/off fields — use Switch</item>
11
+ <item>One-shot actions with no pressed state — use IconButton</item>
12
+ </when_not_to_use>
13
+ <prop name="interpolateIcons" kind="react">
14
+ <description>When `pressedIcon` is set, crossfade and rotate between resting and pressed icons (`data-interpolate=&quot;true&quot;`). When `false`, swap instantly with no transition.</description>
15
+ </prop>
16
+ <prop name="loading" kind="react">
17
+ <description>Shows a centered spinner overlay while preserving the original content width.</description>
18
+ </prop>
19
+ <prop name="pill" kind="react">
20
+ <description>Applies a fully rounded pill shape to the button.</description>
21
+ </prop>
22
+ <prop name="pressedIcon" kind="react">
23
+ <description>Icon shown while the toggle is pressed.</description>
24
+ </prop>
25
+ <prop name="pressedVariant" kind="react">
26
+ <description>Visual variant while the toggle is pressed.</description>
27
+ </prop>
28
+ <prop name="restingIcon" kind="react">
29
+ <description>Icon shown while the toggle is not pressed.</description>
30
+ </prop>
31
+ <prop name="size" kind="react">
32
+ <description>Controls the visual button size.</description>
33
+ </prop>
34
+ <prop name="variant" kind="react">
35
+ <description>Visual variant while the toggle is not pressed.</description>
36
+ </prop>
37
+ <css_var suffix="background">
38
+ <description>Button fill; variant and state selectors preset this.</description>
39
+ </css_var>
40
+ <css_var suffix="color">
41
+ <description>Button label and icon color.</description>
42
+ </css_var>
43
+ <css_var suffix="height">
44
+ <description>Button block size; size prop presets via data attributes.</description>
45
+ </css_var>
46
+ <css_var suffix="icon-size">
47
+ <description>Addon icon size inside the button.</description>
48
+ </css_var>
49
+ <css_var suffix="padding-block">
50
+ <description>Vertical padding inside the button.</description>
51
+ </css_var>
52
+ <css_var suffix="padding-inline">
53
+ <description>Horizontal padding inside the button.</description>
54
+ </css_var>
55
+ <css_var suffix="radius">
56
+ <description>Corner radius; pill sets infinite radius via data-pill.</description>
57
+ </css_var>
58
+ <css_var suffix="spinner-color">
59
+ <description>Loading spinner color on the root.</description>
60
+ </css_var>
61
+ </props>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="toggle-button">
3
+ <do>Toolbar pin, favorite, or mute toggles identified only by icon</do>
4
+ <do>Compact on/off controls that share IconButton size, variant, and loading model</do>
5
+ <do>Two-state actions where pressed state should swap the visible glyph</do>
6
+ <do>Temporally swap icons after user interactions with temporal pressed state, like copy feedback.</do>
7
+ <dont>Using IconButton for persistent pressed toolbar state</dont>
8
+ <dont>Using Switch for compact icon-only toolbar toggles</dont>
9
+ <dont>Passing icon or render — ToggleButton owns icon swap and Toggle render wiring</dont>
10
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="toggle-group">
3
+ <rule>Provide aria-label or aria-labelledby on the ToggleGroup root</rule>
4
+ <rule>Provide aria-label or aria-labelledby on every ToggleButton child</rule>
5
+ <rule>Each ToggleButton exposes aria-pressed; group selection follows Base UI ToggleGroup semantics</rule>
6
+ </a11y>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="toggle-group" title="ToggleGroup" category="action" shared_contract="toggle-group">
3
+ <summary>Toolbar toggle set with shared selection state; Stack direction follows orientation with zero default gap.</summary>
4
+ <exports>
5
+ <export name="ToggleGroup" />
6
+ </exports>
7
+ <related>
8
+ <ref id="toggle-button" />
9
+ <ref id="icon-button" />
10
+ <ref id="tabs" />
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/toggle-group#api-reference" />
19
+ </meta>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="toggle-group">
3
+ <example title="ToggleGroup structure">
4
+ <tsx><![CDATA[<ToggleGroup>
5
+ <ToggleButton restingIcon={<Plus />} aria-label="List" value="list" />
6
+ </ToggleGroup>]]></tsx>
7
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
8
+ </example>
9
+ </patterns>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="toggle-group">
3
+ <when_to_use>
4
+ <item>Segmented icon toolbars such as text alignment or formatting controls</item>
5
+ <item>Single- or multi-select pressed states across related ToggleButton items</item>
6
+ <item>Compact action clusters that need coordinated value and disabled state</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Standalone one-off toggles — use ToggleButton</item>
10
+ <item>Settings-style on/off fields — use Switch</item>
11
+ <item>Tabbed panel navigation — use Tabs</item>
12
+ </when_not_to_use>
13
+
14
+
15
+ </props>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="toggle-group">
3
+ <do>Segmented icon toolbars such as text alignment or formatting controls</do>
4
+ <do>Single- or multi-select pressed states across related ToggleButton items</do>
5
+ <do>Compact action clusters that need coordinated value and disabled state</do>
6
+ <dont>Omitting value on ToggleButton children inside a group</dont>
7
+ <dont>Using Switch for icon-only toolbar toggle sets</dont>
8
+ <dont>Embedding Surface chrome in the component — wrap demos or app chrome at the consumer</dont>
9
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="tooltip">
3
+ <rule>Match trigger `aria-label` to tooltip copy so sighted and assistive users get the same hint</rule>
4
+ <rule>Keep tooltip copy concise; use Popover when the hint needs paragraphs, links, or controls</rule>
5
+ <rule>Wrap regions with multiple tooltips in `Tooltip.Provider` for predictable delay grouping</rule>
6
+ </a11y>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="tooltip" title="Tooltip" category="overlay" shared_contract="tooltip">
3
+ <summary>Compound tooltip built on Base UI Tooltip with `Tooltip.Provider`, `Tooltip.Trigger`, `Tooltip.Content`, and `Tooltip.createHandle` for detached and multiple triggers; `Content` encapsulates Portal + Positioner + Popup + Viewport and animates position, size, and content between triggers.</summary>
4
+ <exports>
5
+ <export name="Tooltip" />
6
+ </exports>
7
+ <related>
8
+ <ref id="surface" />
9
+ <ref id="button" />
10
+ <ref id="icon-button" />
11
+ <ref id="stack" />
12
+ <ref id="popover" />
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/tooltip#api-reference" />
21
+ </meta>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="tooltip">
3
+ <example title="Tooltip structure">
4
+ <tsx><![CDATA[<Tooltip.Provider>
5
+ <Tooltip>
6
+ <Tooltip.Trigger />
7
+ <Tooltip.Content />
8
+ </Tooltip>
9
+ </Tooltip.Provider>]]></tsx>
10
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
11
+ </example>
12
+ </patterns>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="tooltip">
3
+ <when_to_use>
4
+ <item>Short hints on hover or focus for toolbar controls and icon buttons</item>
5
+ <item>Per-trigger labels on shared tooltip roots using `payload` and Root render-function children</item>
6
+ <item>Adjacent controls that benefit from shared open/close delay via `Tooltip.Provider`</item>
7
+ <item>Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part</item>
8
+ </when_to_use>
9
+ <when_not_to_use>
10
+ <item>Rich interactive panels or forms (use Popover or Dialog)</item>
11
+ <item>System-wide transient alerts (use Toast)</item>
12
+ <item>Content that must stay open while the pointer moves into the popup (enable `disableHoverablePopup` only when needed)</item>
13
+ </when_not_to_use>
14
+ <prop name="Content.container" kind="react">
15
+ <description>Portal mount node (iframe body, shadow root, or app overlay root). Omit for Base UI default (`document.body` from the module window — iframe hosts must pass the iframe document body explicitly).</description>
16
+ </prop>
17
+ <css_var suffix="content-fade-duration">
18
+ <description>content fade duration custom property on the component root.</description>
19
+ </css_var>
20
+ </props>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="tooltip">
3
+ <do>Short hints on hover or focus for toolbar controls and icon buttons</do>
4
+ <do>Per-trigger labels on shared tooltip roots using `payload` and Root render-function children</do>
5
+ <do>Adjacent controls that benefit from shared open/close delay via `Tooltip.Provider`</do>
6
+ <do>Custom portal host (iframe preview, shadow root, or app overlay root) via `container` on the portal-owning public part</do>
7
+ <dont>Putting essential-only information in a tooltip with no accessible name on the trigger</dont>
8
+ <dont>Expecting `Tooltip.Arrow` (it is intentionally not exported or rendered)</dont>
9
+ <dont>Using tooltip for modal or focus-trapped tasks</dont>
10
+ </usage>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="typewriter">
3
+ <rule>One phrase layer (Ghost when preserveSpace, clipped A11y otherwise) holds the full current phrase and announces via aria-live</rule>
4
+ <rule>The absolute/in-flow typed layer is aria-hidden and only paints the progressive effect plus caret</rule>
5
+ <rule>Reduced motion shows the final phrase immediately without cycling delays</rule>
6
+ <rule>Parent region owns loading or busy semantics when Typewriter is decorative</rule>
7
+ </a11y>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="typewriter" title="Typewriter" category="typography" shared_contract="typewriter">
3
+ <summary>Decorative inline typewriter animation that inherits typography and color from a parent text primitive.</summary>
4
+ <exports>
5
+ <export name="Typewriter" />
6
+ </exports>
7
+ <related>
8
+ <ref id="text" />
9
+ <ref id="title" />
10
+ <ref id="shimmer" />
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
+ </meta>