@viraui/react 2026.3.11 → 2026.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/catalog.json +50 -50
  2. package/dist/components/textarea/textarea.js +2 -2
  3. package/dist/components/textfield/textfield.js +2 -2
  4. package/dist/specs/PROTOCOL.md +48 -0
  5. package/dist/specs/activity-hints.xml +42 -0
  6. package/dist/specs/components/accordion/a11y.xml +6 -0
  7. package/dist/specs/components/accordion/meta.xml +20 -0
  8. package/dist/specs/components/accordion/patterns.xml +9 -0
  9. package/dist/specs/components/accordion/props.xml +48 -0
  10. package/dist/specs/components/accordion/usage.xml +8 -0
  11. package/dist/specs/components/annotate/a11y.xml +6 -0
  12. package/dist/specs/components/annotate/meta.xml +19 -0
  13. package/dist/specs/components/annotate/patterns.xml +7 -0
  14. package/dist/specs/components/annotate/props.xml +88 -0
  15. package/dist/specs/components/annotate/usage.xml +10 -0
  16. package/dist/specs/components/autocomplete/a11y.xml +6 -0
  17. package/dist/specs/components/autocomplete/meta.xml +22 -0
  18. package/dist/specs/components/autocomplete/patterns.xml +14 -0
  19. package/dist/specs/components/autocomplete/props.xml +81 -0
  20. package/dist/specs/components/autocomplete/usage.xml +11 -0
  21. package/dist/specs/components/avatar/a11y.xml +5 -0
  22. package/dist/specs/components/avatar/meta.xml +17 -0
  23. package/dist/specs/components/avatar/patterns.xml +7 -0
  24. package/dist/specs/components/avatar/props.xml +38 -0
  25. package/dist/specs/components/avatar/usage.xml +7 -0
  26. package/dist/specs/components/avatar-group/a11y.xml +6 -0
  27. package/dist/specs/components/avatar-group/meta.xml +16 -0
  28. package/dist/specs/components/avatar-group/patterns.xml +7 -0
  29. package/dist/specs/components/avatar-group/props.xml +39 -0
  30. package/dist/specs/components/avatar-group/usage.xml +10 -0
  31. package/dist/specs/components/badge/a11y.xml +7 -0
  32. package/dist/specs/components/badge/meta.xml +19 -0
  33. package/dist/specs/components/badge/patterns.xml +7 -0
  34. package/dist/specs/components/badge/props.xml +37 -0
  35. package/dist/specs/components/badge/usage.xml +9 -0
  36. package/dist/specs/components/beam/a11y.xml +7 -0
  37. package/dist/specs/components/beam/meta.xml +18 -0
  38. package/dist/specs/components/beam/patterns.xml +7 -0
  39. package/dist/specs/components/beam/props.xml +90 -0
  40. package/dist/specs/components/beam/usage.xml +11 -0
  41. package/dist/specs/components/bleed/a11y.xml +7 -0
  42. package/dist/specs/components/bleed/meta.xml +18 -0
  43. package/dist/specs/components/bleed/patterns.xml +7 -0
  44. package/dist/specs/components/bleed/props.xml +22 -0
  45. package/dist/specs/components/bleed/usage.xml +10 -0
  46. package/dist/specs/components/breakpoints/a11y.xml +5 -0
  47. package/dist/specs/components/breakpoints/meta.xml +17 -0
  48. package/dist/specs/components/breakpoints/patterns.xml +9 -0
  49. package/dist/specs/components/breakpoints/props.xml +20 -0
  50. package/dist/specs/components/breakpoints/usage.xml +9 -0
  51. package/dist/specs/components/button/a11y.xml +9 -0
  52. package/dist/specs/components/button/meta.xml +20 -0
  53. package/dist/specs/components/button/patterns.xml +11 -0
  54. package/dist/specs/components/button/props.xml +101 -0
  55. package/dist/specs/components/button/usage.xml +18 -0
  56. package/dist/specs/components/checkbox/a11y.xml +6 -0
  57. package/dist/specs/components/checkbox/meta.xml +21 -0
  58. package/dist/specs/components/checkbox/patterns.xml +7 -0
  59. package/dist/specs/components/checkbox/props.xml +48 -0
  60. package/dist/specs/components/checkbox/usage.xml +10 -0
  61. package/dist/specs/components/chip/a11y.xml +6 -0
  62. package/dist/specs/components/chip/meta.xml +19 -0
  63. package/dist/specs/components/chip/patterns.xml +7 -0
  64. package/dist/specs/components/chip/props.xml +49 -0
  65. package/dist/specs/components/chip/usage.xml +11 -0
  66. package/dist/specs/components/clamp-text/a11y.xml +6 -0
  67. package/dist/specs/components/clamp-text/meta.xml +17 -0
  68. package/dist/specs/components/clamp-text/patterns.xml +7 -0
  69. package/dist/specs/components/clamp-text/props.xml +27 -0
  70. package/dist/specs/components/clamp-text/usage.xml +8 -0
  71. package/dist/specs/components/dialog/a11y.xml +7 -0
  72. package/dist/specs/components/dialog/meta.xml +21 -0
  73. package/dist/specs/components/dialog/patterns.xml +19 -0
  74. package/dist/specs/components/dialog/props.xml +49 -0
  75. package/dist/specs/components/dialog/usage.xml +12 -0
  76. package/dist/specs/components/elevator/a11y.xml +6 -0
  77. package/dist/specs/components/elevator/meta.xml +16 -0
  78. package/dist/specs/components/elevator/patterns.xml +7 -0
  79. package/dist/specs/components/elevator/props.xml +31 -0
  80. package/dist/specs/components/elevator/usage.xml +8 -0
  81. package/dist/specs/components/fieldset/a11y.xml +6 -0
  82. package/dist/specs/components/fieldset/meta.xml +22 -0
  83. package/dist/specs/components/fieldset/patterns.xml +7 -0
  84. package/dist/specs/components/fieldset/props.xml +26 -0
  85. package/dist/specs/components/fieldset/usage.xml +11 -0
  86. package/dist/specs/components/fit-text/a11y.xml +6 -0
  87. package/dist/specs/components/fit-text/meta.xml +18 -0
  88. package/dist/specs/components/fit-text/patterns.xml +7 -0
  89. package/dist/specs/components/fit-text/props.xml +19 -0
  90. package/dist/specs/components/fit-text/usage.xml +9 -0
  91. package/dist/specs/components/glow/a11y.xml +6 -0
  92. package/dist/specs/components/glow/meta.xml +19 -0
  93. package/dist/specs/components/glow/patterns.xml +7 -0
  94. package/dist/specs/components/glow/props.xml +74 -0
  95. package/dist/specs/components/glow/usage.xml +12 -0
  96. package/dist/specs/components/grid/a11y.xml +6 -0
  97. package/dist/specs/components/grid/meta.xml +18 -0
  98. package/dist/specs/components/grid/patterns.xml +9 -0
  99. package/dist/specs/components/grid/props.xml +101 -0
  100. package/dist/specs/components/grid/usage.xml +10 -0
  101. package/dist/specs/components/icon-button/a11y.xml +9 -0
  102. package/dist/specs/components/icon-button/meta.xml +18 -0
  103. package/dist/specs/components/icon-button/patterns.xml +11 -0
  104. package/dist/specs/components/icon-button/props.xml +95 -0
  105. package/dist/specs/components/icon-button/usage.xml +14 -0
  106. package/dist/specs/components/linear-progress/a11y.xml +6 -0
  107. package/dist/specs/components/linear-progress/meta.xml +21 -0
  108. package/dist/specs/components/linear-progress/patterns.xml +7 -0
  109. package/dist/specs/components/linear-progress/props.xml +31 -0
  110. package/dist/specs/components/linear-progress/usage.xml +11 -0
  111. package/dist/specs/components/masonry/a11y.xml +6 -0
  112. package/dist/specs/components/masonry/meta.xml +18 -0
  113. package/dist/specs/components/masonry/patterns.xml +9 -0
  114. package/dist/specs/components/masonry/props.xml +32 -0
  115. package/dist/specs/components/masonry/usage.xml +9 -0
  116. package/dist/specs/components/menu/a11y.xml +7 -0
  117. package/dist/specs/components/menu/meta.xml +25 -0
  118. package/dist/specs/components/menu/patterns.xml +25 -0
  119. package/dist/specs/components/menu/props.xml +73 -0
  120. package/dist/specs/components/menu/usage.xml +15 -0
  121. package/dist/specs/components/meter/a11y.xml +6 -0
  122. package/dist/specs/components/meter/meta.xml +19 -0
  123. package/dist/specs/components/meter/patterns.xml +7 -0
  124. package/dist/specs/components/meter/props.xml +31 -0
  125. package/dist/specs/components/meter/usage.xml +10 -0
  126. package/dist/specs/components/popover/a11y.xml +7 -0
  127. package/dist/specs/components/popover/meta.xml +22 -0
  128. package/dist/specs/components/popover/patterns.xml +15 -0
  129. package/dist/specs/components/popover/props.xml +37 -0
  130. package/dist/specs/components/popover/usage.xml +12 -0
  131. package/dist/specs/components/progressive-blur/a11y.xml +6 -0
  132. package/dist/specs/components/progressive-blur/meta.xml +17 -0
  133. package/dist/specs/components/progressive-blur/patterns.xml +7 -0
  134. package/dist/specs/components/progressive-blur/props.xml +28 -0
  135. package/dist/specs/components/progressive-blur/usage.xml +10 -0
  136. package/dist/specs/components/radio/a11y.xml +6 -0
  137. package/dist/specs/components/radio/meta.xml +20 -0
  138. package/dist/specs/components/radio/patterns.xml +9 -0
  139. package/dist/specs/components/radio/props.xml +44 -0
  140. package/dist/specs/components/radio/usage.xml +12 -0
  141. package/dist/specs/components/select/a11y.xml +6 -0
  142. package/dist/specs/components/select/meta.xml +21 -0
  143. package/dist/specs/components/select/patterns.xml +13 -0
  144. package/dist/specs/components/select/props.xml +83 -0
  145. package/dist/specs/components/select/usage.xml +14 -0
  146. package/dist/specs/components/separator/a11y.xml +6 -0
  147. package/dist/specs/components/separator/meta.xml +18 -0
  148. package/dist/specs/components/separator/patterns.xml +7 -0
  149. package/dist/specs/components/separator/props.xml +39 -0
  150. package/dist/specs/components/separator/usage.xml +8 -0
  151. package/dist/specs/components/shimmer/a11y.xml +6 -0
  152. package/dist/specs/components/shimmer/meta.xml +18 -0
  153. package/dist/specs/components/shimmer/patterns.xml +7 -0
  154. package/dist/specs/components/shimmer/props.xml +40 -0
  155. package/dist/specs/components/shimmer/usage.xml +9 -0
  156. package/dist/specs/components/skeleton/a11y.xml +8 -0
  157. package/dist/specs/components/skeleton/meta.xml +17 -0
  158. package/dist/specs/components/skeleton/patterns.xml +8 -0
  159. package/dist/specs/components/skeleton/props.xml +73 -0
  160. package/dist/specs/components/skeleton/usage.xml +10 -0
  161. package/dist/specs/components/slider/a11y.xml +6 -0
  162. package/dist/specs/components/slider/meta.xml +19 -0
  163. package/dist/specs/components/slider/patterns.xml +7 -0
  164. package/dist/specs/components/slider/props.xml +45 -0
  165. package/dist/specs/components/slider/usage.xml +8 -0
  166. package/dist/specs/components/spinner/a11y.xml +7 -0
  167. package/dist/specs/components/spinner/meta.xml +17 -0
  168. package/dist/specs/components/spinner/patterns.xml +7 -0
  169. package/dist/specs/components/spinner/props.xml +24 -0
  170. package/dist/specs/components/spinner/usage.xml +8 -0
  171. package/dist/specs/components/stack/a11y.xml +6 -0
  172. package/dist/specs/components/stack/meta.xml +19 -0
  173. package/dist/specs/components/stack/patterns.xml +7 -0
  174. package/dist/specs/components/stack/props.xml +94 -0
  175. package/dist/specs/components/stack/usage.xml +14 -0
  176. package/dist/specs/components/static-noise/a11y.xml +6 -0
  177. package/dist/specs/components/static-noise/meta.xml +17 -0
  178. package/dist/specs/components/static-noise/patterns.xml +7 -0
  179. package/dist/specs/components/static-noise/props.xml +27 -0
  180. package/dist/specs/components/static-noise/usage.xml +10 -0
  181. package/dist/specs/components/surface/a11y.xml +6 -0
  182. package/dist/specs/components/surface/meta.xml +17 -0
  183. package/dist/specs/components/surface/patterns.xml +7 -0
  184. package/dist/specs/components/surface/props.xml +92 -0
  185. package/dist/specs/components/surface/usage.xml +16 -0
  186. package/dist/specs/components/switch/a11y.xml +6 -0
  187. package/dist/specs/components/switch/meta.xml +19 -0
  188. package/dist/specs/components/switch/patterns.xml +7 -0
  189. package/dist/specs/components/switch/props.xml +48 -0
  190. package/dist/specs/components/switch/usage.xml +8 -0
  191. package/dist/specs/components/tabs/a11y.xml +6 -0
  192. package/dist/specs/components/tabs/meta.xml +19 -0
  193. package/dist/specs/components/tabs/patterns.xml +14 -0
  194. package/dist/specs/components/tabs/props.xml +24 -0
  195. package/dist/specs/components/tabs/usage.xml +8 -0
  196. package/dist/specs/components/text/a11y.xml +6 -0
  197. package/dist/specs/components/text/meta.xml +17 -0
  198. package/dist/specs/components/text/patterns.xml +7 -0
  199. package/dist/specs/components/text/props.xml +129 -0
  200. package/dist/specs/components/text/usage.xml +7 -0
  201. package/dist/specs/components/textarea/a11y.xml +6 -0
  202. package/dist/specs/components/textarea/meta.xml +19 -0
  203. package/dist/specs/components/textarea/patterns.xml +7 -0
  204. package/dist/specs/components/textarea/props.xml +39 -0
  205. package/dist/specs/components/textarea/usage.xml +10 -0
  206. package/dist/specs/components/textfield/a11y.xml +6 -0
  207. package/dist/specs/components/textfield/meta.xml +21 -0
  208. package/dist/specs/components/textfield/patterns.xml +7 -0
  209. package/dist/specs/components/textfield/props.xml +51 -0
  210. package/dist/specs/components/textfield/usage.xml +9 -0
  211. package/dist/specs/components/title/a11y.xml +7 -0
  212. package/dist/specs/components/title/meta.xml +17 -0
  213. package/dist/specs/components/title/patterns.xml +7 -0
  214. package/dist/specs/components/title/props.xml +124 -0
  215. package/dist/specs/components/title/usage.xml +10 -0
  216. package/dist/specs/components/toast/a11y.xml +7 -0
  217. package/dist/specs/components/toast/meta.xml +20 -0
  218. package/dist/specs/components/toast/patterns.xml +15 -0
  219. package/dist/specs/components/toast/props.xml +42 -0
  220. package/dist/specs/components/toast/usage.xml +10 -0
  221. package/dist/specs/components/toggle-button/a11y.xml +6 -0
  222. package/dist/specs/components/toggle-button/meta.xml +20 -0
  223. package/dist/specs/components/toggle-button/patterns.xml +7 -0
  224. package/dist/specs/components/toggle-button/props.xml +61 -0
  225. package/dist/specs/components/toggle-button/usage.xml +10 -0
  226. package/dist/specs/components/toggle-group/a11y.xml +6 -0
  227. package/dist/specs/components/toggle-group/meta.xml +19 -0
  228. package/dist/specs/components/toggle-group/patterns.xml +9 -0
  229. package/dist/specs/components/toggle-group/props.xml +15 -0
  230. package/dist/specs/components/toggle-group/usage.xml +9 -0
  231. package/dist/specs/components/tooltip/a11y.xml +6 -0
  232. package/dist/specs/components/tooltip/meta.xml +21 -0
  233. package/dist/specs/components/tooltip/patterns.xml +12 -0
  234. package/dist/specs/components/tooltip/props.xml +20 -0
  235. package/dist/specs/components/tooltip/usage.xml +10 -0
  236. package/dist/specs/components/typewriter/a11y.xml +7 -0
  237. package/dist/specs/components/typewriter/meta.xml +18 -0
  238. package/dist/specs/components/typewriter/patterns.xml +7 -0
  239. package/dist/specs/components/typewriter/props.xml +43 -0
  240. package/dist/specs/components/typewriter/usage.xml +11 -0
  241. package/dist/specs/foundation/attributes.xml +127 -0
  242. package/dist/specs/foundation/bootstrap.xml +62 -0
  243. package/dist/specs/foundation/elevation.xml +21 -0
  244. package/dist/specs/foundation/meta.xml +20 -0
  245. package/dist/specs/foundation/modules.xml +62 -0
  246. package/dist/specs/foundation/theme-topics.xml +60 -0
  247. package/dist/specs/foundation/toggles.xml +25 -0
  248. package/dist/specs/index.xml +538 -0
  249. package/dist/specs/patterns/settings-row.xml +19 -0
  250. package/package.json +12 -11
  251. package/dist/components/accordion/accordion.guide.json +0 -69
  252. package/dist/components/annotate/annotate.guide.json +0 -110
  253. package/dist/components/autocomplete/autocomplete.guide.json +0 -103
  254. package/dist/components/avatar/avatar.guide.json +0 -53
  255. package/dist/components/avatar-group/avatar-group.guide.json +0 -56
  256. package/dist/components/badge/badge.guide.json +0 -59
  257. package/dist/components/beam/beam.guide.json +0 -123
  258. package/dist/components/bleed/bleed.guide.json +0 -43
  259. package/dist/components/breakpoints/breakpoints.guide.json +0 -40
  260. package/dist/components/button/button-link.guide.json +0 -69
  261. package/dist/components/button/button.guide.json +0 -78
  262. package/dist/components/checkbox/checkbox.guide.json +0 -68
  263. package/dist/components/chip/chip.guide.json +0 -69
  264. package/dist/components/clamp-text/clamp-text.guide.json +0 -47
  265. package/dist/components/dialog/dialog.guide.json +0 -72
  266. package/dist/components/elevator/elevator.guide.json +0 -46
  267. package/dist/components/fieldset/fieldset.guide.json +0 -43
  268. package/dist/components/fit-text/fit-text.guide.json +0 -38
  269. package/dist/components/glow/glow.guide.json +0 -108
  270. package/dist/components/grid/grid.guide.json +0 -120
  271. package/dist/components/icon-button/icon-button-link.guide.json +0 -73
  272. package/dist/components/icon-button/icon-button.guide.json +0 -72
  273. package/dist/components/linear-progress/linear-progress.guide.json +0 -53
  274. package/dist/components/masonry/masonry.guide.json +0 -50
  275. package/dist/components/menu/menu.guide.json +0 -94
  276. package/dist/components/meter/meter.guide.json +0 -52
  277. package/dist/components/popover/popover.guide.json +0 -58
  278. package/dist/components/progressive-blur/progressive-blur.guide.json +0 -50
  279. package/dist/components/radio/radio.guide.json +0 -65
  280. package/dist/components/select/select.guide.json +0 -105
  281. package/dist/components/separator/separator.guide.json +0 -58
  282. package/dist/components/shimmer/shimmer.guide.json +0 -67
  283. package/dist/components/skeleton/skeleton.guide.json +0 -98
  284. package/dist/components/slider/slider.guide.json +0 -64
  285. package/dist/components/spinner/spinner.guide.json +0 -43
  286. package/dist/components/stack/stack.guide.json +0 -116
  287. package/dist/components/static-noise/static-noise.guide.json +0 -44
  288. package/dist/components/surface/surface.guide.json +0 -115
  289. package/dist/components/switch/switch.guide.json +0 -71
  290. package/dist/components/tabs/tabs.guide.json +0 -43
  291. package/dist/components/text/text.guide.json +0 -152
  292. package/dist/components/textarea/textarea.guide.json +0 -55
  293. package/dist/components/textfield/textfield.guide.json +0 -70
  294. package/dist/components/title/title.guide.json +0 -149
  295. package/dist/components/toast/toast.guide.json +0 -60
  296. package/dist/components/toggle-button/toggle-button.guide.json +0 -81
  297. package/dist/components/toggle-group/toggle-group.guide.json +0 -27
  298. package/dist/components/tooltip/tooltip.guide.json +0 -40
  299. package/dist/components/typewriter/typewriter.guide.json +0 -65
  300. package/dist/consumption.json +0 -84
  301. package/dist/preflight-surface.json +0 -233
  302. package/dist/theme-surface.json +0 -71
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="beam">
3
+ <do>Highlight a focal Surface with a traveling border beam</do>
4
+ <do>Bottom-edge line travel under a card or panel</do>
5
+ <do>Breathing pulse glow inside or outside a Surface</do>
6
+ <do>Token-colored or colorful multi-stop decorative emphasis</do>
7
+ <dont>Relying on Beam for keyboard focus visibility</dont>
8
+ <dont>Treating Beam as the visual card instead of composing Surface children</dont>
9
+ <dont>Expecting theme light/dark auto-tuning — colors are token-driven and theme-agnostic</dont>
10
+ <dont>Using many pulse Beam instances on one page — shared rAF still paints per instance</dont>
11
+ </usage>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="bleed">
3
+ <rule>Bleed is a layout wrapper only — child content keeps native semantics</rule>
4
+ <rule>Parent containers should preserve readable line length for text content</rule>
5
+ <rule>Full bleed can introduce horizontal scroll when ancestors use overflow hidden incorrectly</rule>
6
+ <rule>Full bleed uses physical `margin-left: calc(50% - 50vw)` — known RTL limitation; verify mirroring in right-to-left layouts</rule>
7
+ </a11y>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="bleed" title="Bleed" category="layout" shared_contract="bleed">
3
+ <summary>Layout utility that pulls content past inline padding using negative margins or full viewport bleed.</summary>
4
+ <exports>
5
+ <export name="Bleed" />
6
+ </exports>
7
+ <related>
8
+ <ref id="stack" />
9
+ <ref id="surface" />
10
+ <ref id="separator" />
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>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="bleed">
3
+ <example title="Bleed structure">
4
+ <tsx><![CDATA[<Bleed>…</Bleed>]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="bleed">
3
+ <when_to_use>
4
+ <item>Edge-to-edge media or dividers inside padded Surface or Stack containers</item>
5
+ <item>Hero bands or callouts that should break out of card padding</item>
6
+ <item>Full-bleed sections that span the viewport width from a centered layout</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Replacing Stack or Surface padding instead of composing with them</item>
10
+ <item>Interactive controls that need their own hit target sizing</item>
11
+ <item>Cases where overflow clipping on the parent should remain strict</item>
12
+ </when_not_to_use>
13
+ <prop name="amount" kind="react">
14
+ <description>Sets the inline bleed amount using a Vira space token.</description>
15
+ </prop>
16
+ <prop name="full" kind="react">
17
+ <description>Bleeds content to the viewport edges and ignores `amount`.</description>
18
+ </prop>
19
+ <css_var suffix="amount">
20
+ <description>Bleed distance on the root via `margin: 0 calc(var(--vui-bleed-amount, 0) * -1)` (negative inline, zero block).</description>
21
+ </css_var>
22
+ </props>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="bleed">
3
+ <do>Edge-to-edge media or dividers inside padded Surface or Stack containers</do>
4
+ <do>Hero bands or callouts that should break out of card padding</do>
5
+ <do>Full-bleed sections that span the viewport width from a centered layout</do>
6
+ <dont>Nesting multiple full bleeds without checking ancestor overflow</dont>
7
+ <dont>Using Bleed to compensate for missing Stack padding instead of fixing layout composition</dont>
8
+ <dont>Applying full bleed inside narrow overflow-hidden cards without testing clipping</dont>
9
+ <dont>Expecting full bleed `margin-left` to flip automatically in RTL</dont>
10
+ </usage>
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="breakpoints">
3
+ <rule>Match state is not an APG widget. Keep the same accessible name and semantics when swapping chrome</rule>
4
+ <rule>Do not rely on breakpoint-only visibility as the only way to reach essential actions on small viewports</rule>
5
+ </a11y>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="breakpoints" title="BreakpointsProvider" category="layout" shared_contract="breakpoints">
3
+ <summary>Client provider plus `useBreakpoints` for mobile-first viewport min-width matches. Defaults are hardcoded em thresholds, not theme tokens.</summary>
4
+ <exports>
5
+ <export name="BreakpointsProvider" />
6
+ </exports>
7
+ <related>
8
+ <ref id="stack" />
9
+ <ref id="grid" />
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,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="breakpoints">
3
+ <example title="BreakpointsProvider structure">
4
+ <tsx><![CDATA[<BreakpointsProvider>
5
+ {children}
6
+ </BreakpointsProvider>]]></tsx>
7
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
8
+ </example>
9
+ </patterns>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="breakpoints">
3
+ <when_to_use>
4
+ <item>Swap or hide React markup when the viewport crosses named breakpoints</item>
5
+ <item>Read one flag with `useBreakpoints(&apos;small&apos;)` so unrelated breakpoint flips skip work</item>
6
+ <item>Override the full map with the `breakpoints` prop for product-specific thresholds</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Layout that CSS `@media` or container queries can own without branching markup</item>
10
+ <item>Calling `useBreakpoints` outside this provider</item>
11
+ <item>Reading design-token CSS variables for breakpoint widths</item>
12
+ </when_not_to_use>
13
+ <prop name="breakpoints" kind="react">
14
+ <description>Replaces the entire default map (extra-small 30em, small 48em, medium 60em, large 80em, extra-large 100em). Values are CSS lengths used as mobile-first min-width queries.</description>
15
+ </prop>
16
+ <prop name="children" kind="react">
17
+ <description>Tree that may call `useBreakpoints`. The hook returns all match flags, or `useBreakpoints(name)` for one boolean.</description>
18
+ </prop>
19
+
20
+ </props>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="breakpoints">
3
+ <do>Swap or hide React markup when the viewport crosses named breakpoints</do>
4
+ <do>Read one flag with `useBreakpoints(&apos;small&apos;)` so unrelated breakpoint flips skip work</do>
5
+ <do>Override the full map with the `breakpoints` prop for product-specific thresholds</do>
6
+ <dont>Using `useBreakpoints` without wrapping the tree in `BreakpointsProvider`</dont>
7
+ <dont>Merging a sparse custom map onto defaults — the `breakpoints` prop replaces the whole map</dont>
8
+ <dont>Putting the provider in a Server Component module — wrap it in a Client Component (`&apos;use client&apos;`)</dont>
9
+ </usage>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="button">
3
+ <rule>Visible button text should name the action; avoid relying on addon alone</rule>
4
+ <rule>Loading sets aria-busy on the control while Spinner stays decorative</rule>
5
+ <rule>Disabled and loading states should not remove the action from the tab order without clear context</rule>
6
+ <rule>Renders a real link root so assistive tech get link role and keyboard behavior</rule>
7
+ <rule>loading sets aria-disabled / aria-busy for loading chrome; no disabled prop — native links stay activatable</rule>
8
+ <rule>Loading sets aria-busy; Spinner stays decorative</rule>
9
+ </a11y>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="button" title="Button" category="action" shared_contract="button">
3
+ <summary>Primary action control with size, variant, optional addon, optional pill shape, and loading state.</summary>
4
+ <exports>
5
+ <export name="Button" />
6
+ <export name="ButtonLink" />
7
+ </exports>
8
+ <related>
9
+ <ref id="icon-button" />
10
+ <ref id="spinner" />
11
+ <ref id="chip" />
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/button#api-reference" />
20
+ </meta>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="button">
3
+ <example title="Button structure">
4
+ <tsx><![CDATA[<Button>Save</Button>]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ <example title="ButtonLink structure">
8
+ <tsx><![CDATA[<ButtonLink href="#">Save</ButtonLink>]]></tsx>
9
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
10
+ </example>
11
+ </patterns>
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="button">
3
+ <when_to_use>
4
+ <item>Labeled actions with text and optional leading or trailing addon</item>
5
+ <item>Primary, secondary, flat, or destructive visual treatments</item>
6
+ <item>Capsule-shaped actions via pill when a fully rounded button fits the layout</item>
7
+ <item>Async actions that need a stable width while loading</item>
8
+ <item>Primary Chip addons inside a primary Button — set data-mode=&quot;inverted&quot; on the Chip so its background contrasts the button fill</item>
9
+ </when_to_use>
10
+ <when_not_to_use>
11
+ <item>Icon-only actions without a visible label — use IconButton</item>
12
+ <item>Navigation or non-button semantics — use ButtonLink</item>
13
+ </when_not_to_use>
14
+ <prop name="addon" kind="react">
15
+ <description>Decorative addon rendered alongside the button label. Pass any React element; use a named icon from `@viraui/icons/react` or `&lt;Chip /&gt;` for status chips.</description>
16
+ </prop>
17
+ <prop name="addonPosition" kind="react">
18
+ <description>Controls whether the addon appears before or after the label.</description>
19
+ </prop>
20
+ <prop name="loading" kind="react">
21
+ <description>Shows a centered spinner overlay while preserving the original content width.</description>
22
+ </prop>
23
+ <prop name="pill" kind="react">
24
+ <description>Applies a fully rounded pill shape to the button.</description>
25
+ </prop>
26
+ <prop name="size" kind="react">
27
+ <description>Controls the visual button size.</description>
28
+ </prop>
29
+ <prop name="variant" kind="react">
30
+ <description>Selects the visual treatment for the button.</description>
31
+ </prop>
32
+ <prop name="addon" kind="react">
33
+ <description>Decorative addon rendered alongside the link label. (button-link)</description>
34
+ </prop>
35
+ <prop name="addonPosition" kind="react">
36
+ <description>Controls whether the addon appears before or after the label. (button-link)</description>
37
+ </prop>
38
+ <prop name="loading" kind="react">
39
+ <description>Shows a centered spinner overlay while preserving the original content width. Sets `aria-disabled` / `aria-busy` for loading chrome; link stays activatable. (button-link)</description>
40
+ </prop>
41
+ <prop name="pill" kind="react">
42
+ <description>Applies a fully rounded pill shape. (button-link)</description>
43
+ </prop>
44
+ <prop name="render" kind="react">
45
+ <description>Replaces the default `a` root using Base UI render semantics (e.g. Next.js `Link`). (button-link)</description>
46
+ </prop>
47
+ <prop name="size" kind="react">
48
+ <description>Controls the visual button size. (button-link)</description>
49
+ </prop>
50
+ <prop name="variant" kind="react">
51
+ <description>Selects the visual treatment matching Button. (button-link)</description>
52
+ </prop>
53
+ <css_var suffix="background">
54
+ <description>Button fill; variant and state selectors preset this.</description>
55
+ </css_var>
56
+ <css_var suffix="color">
57
+ <description>Button label and icon color.</description>
58
+ </css_var>
59
+ <css_var suffix="height">
60
+ <description>Button block size; size prop presets via data attributes.</description>
61
+ </css_var>
62
+ <css_var suffix="icon-size">
63
+ <description>Addon icon size inside the button.</description>
64
+ </css_var>
65
+ <css_var suffix="padding-block">
66
+ <description>Vertical padding inside the button.</description>
67
+ </css_var>
68
+ <css_var suffix="padding-inline">
69
+ <description>Horizontal padding inside the button.</description>
70
+ </css_var>
71
+ <css_var suffix="radius">
72
+ <description>Corner radius; pill sets infinite radius via data-pill.</description>
73
+ </css_var>
74
+ <css_var suffix="spinner-color">
75
+ <description>Loading spinner color on the root.</description>
76
+ </css_var>
77
+ <css_var suffix="background">
78
+ <description>Button fill; variant and state selectors preset this. (button-link)</description>
79
+ </css_var>
80
+ <css_var suffix="color">
81
+ <description>Button label and icon color. (button-link)</description>
82
+ </css_var>
83
+ <css_var suffix="height">
84
+ <description>Button block size; size prop presets via data attributes. (button-link)</description>
85
+ </css_var>
86
+ <css_var suffix="icon-size">
87
+ <description>Addon icon size inside the button. (button-link)</description>
88
+ </css_var>
89
+ <css_var suffix="padding-block">
90
+ <description>Vertical padding inside the button. (button-link)</description>
91
+ </css_var>
92
+ <css_var suffix="padding-inline">
93
+ <description>Horizontal padding inside the button. (button-link)</description>
94
+ </css_var>
95
+ <css_var suffix="radius">
96
+ <description>Corner radius; pill sets infinite radius via data-pill. (button-link)</description>
97
+ </css_var>
98
+ <css_var suffix="spinner-color">
99
+ <description>Loading spinner color on the root. (button-link)</description>
100
+ </css_var>
101
+ </props>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="button">
3
+ <do>Labeled actions with text and optional leading or trailing addon</do>
4
+ <do>Primary, secondary, flat, or destructive visual treatments</do>
5
+ <do>Capsule-shaped actions via pill when a fully rounded button fits the layout</do>
6
+ <do>Async actions that need a stable width while loading</do>
7
+ <do>Primary Chip addons inside a primary Button — set data-mode=&quot;inverted&quot; on the Chip so its background contrasts the button fill</do>
8
+ <do>Actions that navigate (href or router Link) but should look like Button</do>
9
+ <do>Same size, variant, addon, pill, and loading chrome as Button without button semantics</do>
10
+ <do>Compose with Next.js Link or React Router Link via the render prop</do>
11
+ <dont>Using Button without children as icon-only — prefer IconButton</dont>
12
+ <dont>Using Button with render={&lt;a /&gt;} for links — Base UI enforces button semantics; use ButtonLink</dont>
13
+ <dont>Duplicating icon size on every addon slot — Button CSS sizes SVG descendants</dont>
14
+ <dont>Mixing pill with custom border-radius overrides that fight data-pill styling</dont>
15
+ <dont>Primary Chip addon inside a primary Button without data-mode=&quot;inverted&quot; — chip background matches the button fill and disappears</dont>
16
+ <dont>Using Button with render={&lt;a /&gt;} instead of ButtonLink</dont>
17
+ <dont>Forcing role=button on a link</dont>
18
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="checkbox">
3
+ <rule>Provide visible label or aria-label so the checkbox has an accessible name</rule>
4
+ <rule>Checked and indeterminate states must map to native checkbox semantics exposed by the control</rule>
5
+ <rule>Surface standalone invalid state and error copy through Field.Root and FieldHelperCopy on Checkbox</rule>
6
+ </a11y>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="checkbox" title="Checkbox" category="form" shared_contract="checkbox">
3
+ <summary>Field.Item checkbox option for standalone fields or CheckboxGroup children.</summary>
4
+ <exports>
5
+ <export name="Checkbox" />
6
+ </exports>
7
+ <related>
8
+ <ref id="fieldset" />
9
+ <ref id="checkbox-group" />
10
+ <ref id="switch" />
11
+ <ref id="stack" />
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/checkbox#api-reference" />
21
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="checkbox">
3
+ <example title="Checkbox structure">
4
+ <tsx><![CDATA[<Checkbox 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="checkbox">
3
+ <when_to_use>
4
+ <item>Single boolean fields wrapped in Field.Root with optional label and helper text — no Fieldset required</item>
5
+ <item>CheckboxGroup alone inside Field.Root when each Checkbox has its own label and no shared group legend is needed</item>
6
+ <item>Multi-select sets with shared legend or group copy — Field.Root &gt; Fieldset render={&lt;CheckboxGroup /&gt;} with Checkbox children</item>
7
+ <item>Invalid and disabled states with Switch-parity focus treatment</item>
8
+ </when_to_use>
9
+ <when_not_to_use>
10
+ <item>Unlabeled checkbox without aria-label on the root</item>
11
+ <item>Mutually exclusive options in a set (use Radio and RadioGroup instead)</item>
12
+ <item>Assuming Fieldset is mandatory for every CheckboxGroup — add Fieldset only for shared legend or group copy</item>
13
+ <item>Group legend, description, or validation on CheckboxGroup props — use Field.Root and Fieldset instead</item>
14
+ </when_not_to_use>
15
+ <prop name="description" kind="react">
16
+ <description>Helper copy rendered with `Field.Description` and `Text` for this option.</description>
17
+ </prop>
18
+ <prop name="error" kind="react">
19
+ <description>Error copy rendered in the same slot as `description` while invalid.</description>
20
+ </prop>
21
+ <prop name="hPadding" kind="react">
22
+ <description>Sets inline padding using one token for both sides or a `[start, end]` tuple.</description>
23
+ </prop>
24
+ <prop name="label" kind="react">
25
+ <description>Visible label rendered with shared internal `FieldLabel`.</description>
26
+ </prop>
27
+ <prop name="size" kind="react">
28
+ <description>Controls the visual checkbox size.</description>
29
+ </prop>
30
+ <prop name="vPadding" kind="react">
31
+ <description>Sets block padding using one token for both sides or a `[start, end]` tuple.</description>
32
+ </prop>
33
+ <css_var suffix="background">
34
+ <description>Checkbox control background color.</description>
35
+ </css_var>
36
+ <css_var suffix="border-color">
37
+ <description>Checkbox control border color; invalid and checked states override.</description>
38
+ </css_var>
39
+ <css_var suffix="indicator-color">
40
+ <description>Checkbox check/minus indicator color.</description>
41
+ </css_var>
42
+ <css_var suffix="radius">
43
+ <description>Checkbox control corner radius.</description>
44
+ </css_var>
45
+ <css_var suffix="size">
46
+ <description>Checkbox control box size; size presets adjust footprint and radius.</description>
47
+ </css_var>
48
+ </props>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="checkbox">
3
+ <do>Single boolean fields wrapped in Field.Root with optional label and helper text — no Fieldset required</do>
4
+ <do>CheckboxGroup alone inside Field.Root when each Checkbox has its own label and no shared group legend is needed</do>
5
+ <do>Multi-select sets with shared legend or group copy — Field.Root &gt; Fieldset render={&lt;CheckboxGroup /&gt;} with Checkbox children</do>
6
+ <do>Invalid and disabled states with Switch-parity focus treatment</do>
7
+ <dont>Rendering a checkbox without label and without aria-label</dont>
8
+ <dont>Using Checkbox without Field.Root for standalone validated fields</dont>
9
+ <dont>Expecting description to stay visible when invalid without an error message</dont>
10
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="chip">
3
+ <rule>Chip renders a div by default, so choose render explicitly when a different semantic element is needed</rule>
4
+ <rule>Decorative addons are aria-hidden and should not carry the accessible name</rule>
5
+ <rule>Chip does not add button semantics, disabled state, or loading behavior in v1</rule>
6
+ </a11y>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="chip" title="Chip" category="action" shared_contract="chip">
3
+ <summary>Compact visual label primitive for short status, category, or metadata treatments.</summary>
4
+ <exports>
5
+ <export name="Chip" />
6
+ </exports>
7
+ <related>
8
+ <ref id="button" />
9
+ <ref id="icon-button" />
10
+ <ref id="stack" />
11
+ <ref id="text" />
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
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="chip">
3
+ <example title="Chip structure">
4
+ <tsx><![CDATA[<Chip>Label</Chip>]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -0,0 +1,49 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="chip">
3
+ <when_to_use>
4
+ <item>Short, non-interactive labels that need a compact pill treatment</item>
5
+ <item>Metadata, category, status, or inline tag-like presentation</item>
6
+ <item>Color-coded badges using the semantic highlight palette</item>
7
+ <item>Polymorphic label content that should render as div by default or as another semantic tag through render</item>
8
+ </when_to_use>
9
+ <when_not_to_use>
10
+ <item>Interactive actions or dismiss controls — use Button or IconButton</item>
11
+ <item>Long-form text content that should wrap like body copy — use Text</item>
12
+ </when_not_to_use>
13
+ <prop name="addon" kind="react">
14
+ <description>Decorative addon rendered alongside the chip label.</description>
15
+ </prop>
16
+ <prop name="addonPosition" kind="react">
17
+ <description>Controls whether the addon appears before or after the label.</description>
18
+ </prop>
19
+ <prop name="ref" kind="react">
20
+ <description>Ref forwarded to the rendered chip root element.</description>
21
+ </prop>
22
+ <prop name="render" kind="react">
23
+ <description>Replaces the default `div` root using Base UI render semantics.</description>
24
+ </prop>
25
+ <prop name="variant" kind="react">
26
+ <description>Selects the visual treatment for the chip.</description>
27
+ </prop>
28
+ <css_var suffix="background">
29
+ <description>Chip fill; variant presets via data attributes.</description>
30
+ </css_var>
31
+ <css_var suffix="border-color">
32
+ <description>Chip border color.</description>
33
+ </css_var>
34
+ <css_var suffix="color">
35
+ <description>Chip label and icon color.</description>
36
+ </css_var>
37
+ <css_var suffix="color-bg-opacity">
38
+ <description>Highlight variant background opacity mix.</description>
39
+ </css_var>
40
+ <css_var suffix="color-border-opacity">
41
+ <description>Highlight variant border opacity mix.</description>
42
+ </css_var>
43
+ <css_var suffix="height">
44
+ <description>Fixed chip block size.</description>
45
+ </css_var>
46
+ <css_var suffix="icon-size">
47
+ <description>Decorative addon icon size.</description>
48
+ </css_var>
49
+ </props>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="chip">
3
+ <do>Short, non-interactive labels that need a compact pill treatment</do>
4
+ <do>Metadata, category, status, or inline tag-like presentation</do>
5
+ <do>Color-coded badges using the semantic highlight palette</do>
6
+ <do>Polymorphic label content that should render as div by default or as another semantic tag through render</do>
7
+ <dont>Using Chip as a button replacement for clickable actions</dont>
8
+ <dont>Expecting addonPosition to have any effect when addon is omitted</dont>
9
+ <dont>Introducing custom size variants instead of the fixed compact height</dont>
10
+ <dont>Re-adding a one-off destructive variant instead of using the red highlight color</dont>
11
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="clamp-text">
3
+ <rule>Truncation hides content — provide full text nearby, in a tooltip, or on a detail view when it matters</rule>
4
+ <rule>Do not use clamped text alone for critical instructions or legal copy</rule>
5
+ <rule>Choose Title render for headings so document outline stays correct</rule>
6
+ </a11y>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="clamp-text" title="ClampText" category="typography" shared_contract="clamp-text">
3
+ <summary>Presentational utility that truncates overflowing copy to a fixed line count.</summary>
4
+ <exports>
5
+ <export name="ClampText" />
6
+ </exports>
7
+ <related>
8
+ <ref id="text" />
9
+ <ref id="title" />
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="clamp-text">
3
+ <example title="ClampText structure">
4
+ <tsx><![CDATA[<ClampText>…</ClampText>]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="clamp-text">
3
+ <when_to_use>
4
+ <item>Single- or multi-line ellipsis in constrained layouts</item>
5
+ <item>Clamp Text or Title roots through render</item>
6
+ <item>Inline or block clamped typography</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Full text must remain visible without truncation</item>
10
+ <item>Heading semantics without composing Title through render</item>
11
+ </when_not_to_use>
12
+ <prop name="inline" kind="react">
13
+ <description>Uses inline `-webkit-inline-box` display instead of block `-webkit-box`.</description>
14
+ </prop>
15
+ <prop name="ref" kind="react">
16
+ <description>Ref forwarded to the rendered clamp text root element.</description>
17
+ </prop>
18
+ <prop name="render" kind="react">
19
+ <description>Replaces the default `span` root using Base UI render semantics.</description>
20
+ </prop>
21
+ <prop name="rows" kind="react">
22
+ <description>Sets how many lines of text remain visible before truncation.</description>
23
+ </prop>
24
+ <css_var suffix="rows">
25
+ <description>WebKit line-clamp row count on the root.</description>
26
+ </css_var>
27
+ </props>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="clamp-text">
3
+ <do>Single- or multi-line ellipsis in constrained layouts</do>
4
+ <do>Clamp Text or Title roots through render</do>
5
+ <do>Inline or block clamped typography</do>
6
+ <dont>Using ClampText as a heading primitive without Title render</dont>
7
+ <dont>Expecting children-driven sizing instead of rows</dont>
8
+ </usage>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="dialog">
3
+ <rule>Always pass `title`; add `description` when the heading alone is not enough context</rule>
4
+ <rule>Compose `Dialog.Close` with an accessible name when a visible close control is needed</rule>
5
+ <rule>Use `Dialog.Close` for footer actions that should dismiss the sheet</rule>
6
+ <rule>For non-modal Dialogs (`modal={false}` with `disablePointerDismissal`), the Sheet backdrop is omitted automatically — do not expect a scrim</rule>
7
+ </a11y>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="dialog" title="Dialog" category="overlay" shared_contract="dialog">
3
+ <summary>Compound drawer sheet with `Dialog.Trigger`, `Dialog.Sheet`, `Dialog.Close`, and Base UI pass-through `Dialog.Provider`, `Dialog.Indent`, and `Dialog.IndentBackground` for app-shell indent effects.</summary>
4
+ <exports>
5
+ <export name="Dialog" />
6
+ </exports>
7
+ <related>
8
+ <ref id="surface" />
9
+ <ref id="button" />
10
+ <ref id="icon-button" />
11
+ <ref id="stack" />
12
+ <ref id="elevator" />
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/drawer#api-reference" />
21
+ </meta>