@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
package/dist/catalog.json CHANGED
@@ -6,285 +6,285 @@
6
6
  "id": "accordion",
7
7
  "name": "Accordion",
8
8
  "summary": "Collapsible sections grouped into open/closed blocks with optional Surface wrapping, shared corner radius, and optional Item color for open-block background.",
9
- "guidePath": "./components/accordion/accordion.guide.json"
9
+ "agentDocs": "./specs/components/accordion/meta.xml"
10
10
  },
11
11
  {
12
12
  "id": "annotate",
13
13
  "name": "Annotate",
14
14
  "summary": "Decorative arrow and handwritten label that wraps inline content with optional highlighter mark, positioned via CSS anchor positioning.",
15
- "guidePath": "./components/annotate/annotate.guide.json"
15
+ "agentDocs": "./specs/components/annotate/meta.xml"
16
16
  },
17
17
  {
18
18
  "id": "autocomplete",
19
19
  "name": "Autocomplete",
20
20
  "summary": "Field-wrapped free-form suggest input with Textfield chrome and Select-like popup list.",
21
- "guidePath": "./components/autocomplete/autocomplete.guide.json"
21
+ "agentDocs": "./specs/components/autocomplete/meta.xml"
22
22
  },
23
23
  {
24
24
  "id": "avatar",
25
25
  "name": "Avatar",
26
26
  "summary": "Circular identity image or fallback for users, entities, or profile chips.",
27
- "guidePath": "./components/avatar/avatar.guide.json"
27
+ "agentDocs": "./specs/components/avatar/meta.xml"
28
28
  },
29
29
  {
30
30
  "id": "avatar-group",
31
31
  "name": "AvatarGroup",
32
32
  "summary": "Overlapping avatar stack with shared sizing, directional layout, and an optional overflow pill.",
33
- "guidePath": "./components/avatar-group/avatar-group.guide.json"
33
+ "agentDocs": "./specs/components/avatar-group/meta.xml"
34
34
  },
35
35
  {
36
36
  "id": "badge",
37
37
  "name": "Badge",
38
38
  "summary": "Decorative status-dot overlay that wraps a child, with optional radial mask cutout on the child around the corner dot.",
39
- "guidePath": "./components/badge/badge.guide.json"
39
+ "agentDocs": "./specs/components/badge/meta.xml"
40
40
  },
41
41
  {
42
42
  "id": "beam",
43
43
  "name": "Beam",
44
44
  "summary": "Decorative animated border, line, or pulse glow on a transparent Surface shell (radius only). Put the visual card as children. CSS-module geometry plus shared ~30fps pulse rAF for pulse variants. Memory/CPU cost — use sparingly.",
45
- "guidePath": "./components/beam/beam.guide.json"
45
+ "agentDocs": "./specs/components/beam/meta.xml"
46
46
  },
47
47
  {
48
48
  "id": "bleed",
49
49
  "name": "Bleed",
50
50
  "summary": "Layout utility that pulls content past inline padding using negative margins or full viewport bleed.",
51
- "guidePath": "./components/bleed/bleed.guide.json"
51
+ "agentDocs": "./specs/components/bleed/meta.xml"
52
52
  },
53
53
  {
54
54
  "id": "breakpoints",
55
55
  "name": "BreakpointsProvider",
56
56
  "summary": "Client provider plus `useBreakpoints` for mobile-first viewport min-width matches. Defaults are hardcoded em thresholds, not theme tokens.",
57
- "guidePath": "./components/breakpoints/breakpoints.guide.json"
57
+ "agentDocs": "./specs/components/breakpoints/meta.xml"
58
58
  },
59
59
  {
60
60
  "id": "button",
61
61
  "name": "Button",
62
62
  "summary": "Primary action control with size, variant, optional addon, optional pill shape, and loading state.",
63
- "guidePath": "./components/button/button.guide.json"
63
+ "agentDocs": "./specs/components/button/meta.xml"
64
64
  },
65
65
  {
66
66
  "id": "checkbox",
67
67
  "name": "Checkbox",
68
68
  "summary": "Field.Item checkbox option for standalone fields or CheckboxGroup children.",
69
- "guidePath": "./components/checkbox/checkbox.guide.json"
69
+ "agentDocs": "./specs/components/checkbox/meta.xml"
70
70
  },
71
71
  {
72
72
  "id": "chip",
73
73
  "name": "Chip",
74
74
  "summary": "Compact visual label primitive for short status, category, or metadata treatments.",
75
- "guidePath": "./components/chip/chip.guide.json"
75
+ "agentDocs": "./specs/components/chip/meta.xml"
76
76
  },
77
77
  {
78
78
  "id": "clamp-text",
79
79
  "name": "ClampText",
80
80
  "summary": "Presentational utility that truncates overflowing copy to a fixed line count.",
81
- "guidePath": "./components/clamp-text/clamp-text.guide.json"
81
+ "agentDocs": "./specs/components/clamp-text/meta.xml"
82
82
  },
83
83
  {
84
84
  "id": "dialog",
85
85
  "name": "Dialog",
86
86
  "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.",
87
- "guidePath": "./components/dialog/dialog.guide.json"
87
+ "agentDocs": "./specs/components/dialog/meta.xml"
88
88
  },
89
89
  {
90
90
  "id": "elevator",
91
91
  "name": "Elevator",
92
92
  "summary": "No-DOM elevation utility that merges shadow hooks onto valid element children.",
93
- "guidePath": "./components/elevator/elevator.guide.json"
93
+ "agentDocs": "./specs/components/elevator/meta.xml"
94
94
  },
95
95
  {
96
96
  "id": "fieldset",
97
97
  "name": "Fieldset",
98
98
  "summary": "Semantic field grouping with shared legend and optional group helper copy.",
99
- "guidePath": "./components/fieldset/fieldset.guide.json"
99
+ "agentDocs": "./specs/components/fieldset/meta.xml"
100
100
  },
101
101
  {
102
102
  "id": "fit-text",
103
103
  "name": "FitText",
104
104
  "summary": "CSS-only fit-to-width wrapper that scales children to fill available inline space.",
105
- "guidePath": "./components/fit-text/fit-text.guide.json"
105
+ "agentDocs": "./specs/components/fit-text/meta.xml"
106
106
  },
107
107
  {
108
108
  "id": "glow",
109
109
  "name": "Glow",
110
110
  "summary": "Decorative pointer-driven border highlight on a transparent Surface shell (radius only). Put the visual card as children; a shared rAF tracker paints CSS variables without React re-renders. Memory-heavy — use sparingly (rarely).",
111
- "guidePath": "./components/glow/glow.guide.json"
111
+ "agentDocs": "./specs/components/glow/meta.xml"
112
112
  },
113
113
  {
114
114
  "id": "grid",
115
115
  "name": "Grid",
116
116
  "summary": "CSS Grid layout primitive for auto-fill/fit or fixed track layouts with token gaps, Stack-aligned padding, and item placement (`fullWidth` / `fullHeight` / column / row).",
117
- "guidePath": "./components/grid/grid.guide.json"
117
+ "agentDocs": "./specs/components/grid/meta.xml"
118
118
  },
119
119
  {
120
120
  "id": "icon-button",
121
121
  "name": "IconButton",
122
122
  "summary": "Icon-only button that shares Button visual chrome (--vui-button-* CSS) and requires an accessible name through aria-label or aria-labelledby.",
123
- "guidePath": "./components/icon-button/icon-button.guide.json"
123
+ "agentDocs": "./specs/components/icon-button/meta.xml"
124
124
  },
125
125
  {
126
126
  "id": "linear-progress",
127
127
  "name": "LinearProgress",
128
128
  "summary": "Shows determinate or indeterminate progress for a task in a compact horizontal track.",
129
- "guidePath": "./components/linear-progress/linear-progress.guide.json"
129
+ "agentDocs": "./specs/components/linear-progress/meta.xml"
130
130
  },
131
131
  {
132
132
  "id": "masonry",
133
133
  "name": "Masonry",
134
134
  "summary": "Responsive React-column layout primitive for read-only mixed-height content walls; root is a named CSS container query context (`masonry` / inline-size).",
135
- "guidePath": "./components/masonry/masonry.guide.json"
135
+ "agentDocs": "./specs/components/masonry/meta.xml"
136
136
  },
137
137
  {
138
138
  "id": "menu",
139
139
  "name": "Menu",
140
140
  "summary": "Compound menu built on Base UI Menu with `Menu.Trigger`, `Menu.Popup`, unified item rows, groups, checkbox/radio items, nested submenus, destructive sentiment, and `Menu.createHandle` for detached triggers; `Popup` owns Portal + Positioner + Elevator/Surface Select-like list chrome.",
141
- "guidePath": "./components/menu/menu.guide.json"
141
+ "agentDocs": "./specs/components/menu/meta.xml"
142
142
  },
143
143
  {
144
144
  "id": "meter",
145
145
  "name": "Meter",
146
146
  "summary": "Shows a determinate metric in a compact horizontal track for static capacity, level, or score values.",
147
- "guidePath": "./components/meter/meter.guide.json"
147
+ "agentDocs": "./specs/components/meter/meta.xml"
148
148
  },
149
149
  {
150
150
  "id": "popover",
151
151
  "name": "Popover",
152
152
  "summary": "Compound popover built on Base UI Popover with `Popover.Trigger`, `Popover.Sheet`, `Popover.Close`, `Popover.Title`, `Popover.Description`, and `Popover.createHandle` for detached and multiple triggers; `Sheet` encapsulates Portal + Positioner + Popup + Viewport + Title + Description and animates position, size, and content between triggers; `Sheet` with `unstyled` skips the built-in Surface and header so the consumer composes the popup chrome, including `Popover.Title` and `Popover.Description`.",
153
- "guidePath": "./components/popover/popover.guide.json"
153
+ "agentDocs": "./specs/components/popover/meta.xml"
154
154
  },
155
155
  {
156
156
  "id": "progressive-blur",
157
157
  "name": "ProgressiveBlur",
158
158
  "summary": "Decorative stacked backdrop-filter overlay that ramps blur from one edge toward the opposite edge.",
159
- "guidePath": "./components/progressive-blur/progressive-blur.guide.json"
159
+ "agentDocs": "./specs/components/progressive-blur/meta.xml"
160
160
  },
161
161
  {
162
162
  "id": "radio",
163
163
  "name": "Radio",
164
164
  "summary": "Mutually exclusive choice within a RadioGroup, with optional per-option label and helper text.",
165
- "guidePath": "./components/radio/radio.guide.json"
165
+ "agentDocs": "./specs/components/radio/meta.xml"
166
166
  },
167
167
  {
168
168
  "id": "select",
169
169
  "name": "Select",
170
170
  "summary": "Field-wrapped single-select dropdown with grouped options and field copy.",
171
- "guidePath": "./components/select/select.guide.json"
171
+ "agentDocs": "./specs/components/select/meta.xml"
172
172
  },
173
173
  {
174
174
  "id": "separator",
175
175
  "name": "Separator",
176
176
  "summary": "Thematic or content divider with horizontal or vertical orientation, token padding, and preset line thickness.",
177
- "guidePath": "./components/separator/separator.guide.json"
177
+ "agentDocs": "./specs/components/separator/meta.xml"
178
178
  },
179
179
  {
180
180
  "id": "shimmer",
181
181
  "name": "Shimmer",
182
182
  "summary": "Decorative inline text shimmer that inherits typography and color from a parent text primitive.",
183
- "guidePath": "./components/shimmer/shimmer.guide.json"
183
+ "agentDocs": "./specs/components/shimmer/meta.xml"
184
184
  },
185
185
  {
186
186
  "id": "skeleton",
187
187
  "name": "Skeleton",
188
188
  "summary": "Decorative opacity pulse block sized by props, or Overlay sized by hidden child content.",
189
- "guidePath": "./components/skeleton/skeleton.guide.json"
189
+ "agentDocs": "./specs/components/skeleton/meta.xml"
190
190
  },
191
191
  {
192
192
  "id": "slider",
193
193
  "name": "Slider",
194
194
  "summary": "Field-wrapped range input supporting single-thumb or two-thumb range selection.",
195
- "guidePath": "./components/slider/slider.guide.json"
195
+ "agentDocs": "./specs/components/slider/meta.xml"
196
196
  },
197
197
  {
198
198
  "id": "spinner",
199
199
  "name": "Spinner",
200
200
  "summary": "Decorative SVG pulsing loading indicator used inside interactive components.",
201
- "guidePath": "./components/spinner/spinner.guide.json"
201
+ "agentDocs": "./specs/components/spinner/meta.xml"
202
202
  },
203
203
  {
204
204
  "id": "stack",
205
205
  "name": "Stack",
206
206
  "summary": "Flex layout primitive for arranging children with token spacing, alignment, and padding; optionally enables a named CSS container query context (`stack`) via `enableContainer`.",
207
- "guidePath": "./components/stack/stack.guide.json"
207
+ "agentDocs": "./specs/components/stack/meta.xml"
208
208
  },
209
209
  {
210
210
  "id": "static-noise",
211
211
  "name": "StaticNoise",
212
212
  "summary": "Decorative SVG turbulence noise overlay for textured surfaces and hero sections. Memory-heavy — use sparingly (rarely).",
213
- "guidePath": "./components/static-noise/static-noise.guide.json"
213
+ "agentDocs": "./specs/components/static-noise/meta.xml"
214
214
  },
215
215
  {
216
216
  "id": "surface",
217
217
  "name": "Surface",
218
- "summary": "Presentational container with token background, optional border, radius, and padding; `data-vibrant` frosts the fill even without `color` (page shell via `--global-background`); nested surfaces use radius=\"auto\" for concentric corners; optionally enables a named CSS container query context (`surface`) via `enableContainer`.",
219
- "guidePath": "./components/surface/surface.guide.json"
218
+ "summary": "Presentational container with token background, optional border, radius, and padding; `data-vibrant` frosts the fill even without `color` (page shell via `--global-background`); nested surfaces use radius="auto" for concentric corners; optionally enables a named CSS container query context (`surface`) via `enableContainer`.",
219
+ "agentDocs": "./specs/components/surface/meta.xml"
220
220
  },
221
221
  {
222
222
  "id": "switch",
223
223
  "name": "Switch",
224
224
  "summary": "Field-wrapped toggle control with medium or small track and optional field copy.",
225
- "guidePath": "./components/switch/switch.guide.json"
225
+ "agentDocs": "./specs/components/switch/meta.xml"
226
226
  },
227
227
  {
228
228
  "id": "tabs",
229
229
  "name": "Tabs",
230
230
  "summary": "Compound segmented tab control with Surface list chrome, moving indicator, and animated panels.",
231
- "guidePath": "./components/tabs/tabs.guide.json"
231
+ "agentDocs": "./specs/components/tabs/meta.xml"
232
232
  },
233
233
  {
234
234
  "id": "text",
235
235
  "name": "Text",
236
236
  "summary": "Theme-aware body-copy primitive with tone, family, and responsive body sizing.",
237
- "guidePath": "./components/text/text.guide.json"
237
+ "agentDocs": "./specs/components/text/meta.xml"
238
238
  },
239
239
  {
240
240
  "id": "textarea",
241
241
  "name": "Textarea",
242
242
  "summary": "Multi-line field control with shared field copy, optional resize, and optional content sizing.",
243
- "guidePath": "./components/textarea/textarea.guide.json"
243
+ "agentDocs": "./specs/components/textarea/meta.xml"
244
244
  },
245
245
  {
246
246
  "id": "textfield",
247
247
  "name": "Textfield",
248
248
  "summary": "Single-line field input with control-group chrome and optional addons.",
249
- "guidePath": "./components/textfield/textfield.guide.json"
249
+ "agentDocs": "./specs/components/textfield/meta.xml"
250
250
  },
251
251
  {
252
252
  "id": "title",
253
253
  "name": "Title",
254
254
  "summary": "Theme-aware heading and display typography primitive.",
255
- "guidePath": "./components/title/title.guide.json"
255
+ "agentDocs": "./specs/components/title/meta.xml"
256
256
  },
257
257
  {
258
258
  "id": "toast",
259
259
  "name": "Toast",
260
260
  "summary": "Non-callable compound Toast namespace for transient notifications, with stacked or anchored placement, Banner high-level API, and optional action buttons.",
261
- "guidePath": "./components/toast/toast.guide.json"
261
+ "agentDocs": "./specs/components/toast/meta.xml"
262
262
  },
263
263
  {
264
264
  "id": "toggle-button",
265
265
  "name": "ToggleButton",
266
266
  "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.",
267
- "guidePath": "./components/toggle-button/toggle-button.guide.json"
267
+ "agentDocs": "./specs/components/toggle-button/meta.xml"
268
268
  },
269
269
  {
270
270
  "id": "toggle-group",
271
271
  "name": "ToggleGroup",
272
272
  "summary": "Toolbar toggle set with shared selection state; Stack direction follows orientation with zero default gap.",
273
- "guidePath": "./components/toggle-group/toggle-group.guide.json"
273
+ "agentDocs": "./specs/components/toggle-group/meta.xml"
274
274
  },
275
275
  {
276
276
  "id": "typewriter",
277
277
  "name": "Typewriter",
278
278
  "summary": "Decorative inline typewriter animation that inherits typography and color from a parent text primitive.",
279
- "guidePath": "./components/typewriter/typewriter.guide.json"
279
+ "agentDocs": "./specs/components/typewriter/meta.xml"
280
280
  },
281
281
  {
282
282
  "id": "tooltip",
283
283
  "name": "Tooltip",
284
284
  "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.",
285
- "guidePath": "./components/tooltip/tooltip.guide.json"
285
+ "agentDocs": "./specs/components/tooltip/meta.xml"
286
286
  }
287
287
  ],
288
- "consumption": "./consumption.json",
289
- "themeSurface": "./theme-surface.json"
288
+ "agentDocsIndex": "./specs/index.xml",
289
+ "agentDocsProtocol": "./specs/PROTOCOL.md"
290
290
  }
@@ -9,7 +9,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
9
9
  import { Field } from "@base-ui/react/field";
10
10
  //#region src/components/textarea/textarea.tsx
11
11
  var Textarea = ({ className, description, dirty, disabled, error, fitContent, invalid, label, name, ref, resize, touched, validate, validationDebounceTime, validationMode, ...textareaProps }) => /* @__PURE__ */ jsxs(Field.Root, {
12
- className: textarea_module_default.Textarea,
12
+ className: clsx(textarea_module_default.Textarea, className),
13
13
  dirty,
14
14
  disabled,
15
15
  invalid,
@@ -30,7 +30,7 @@ var Textarea = ({ className, description, dirty, disabled, error, fitContent, in
30
30
  /* @__PURE__ */ jsx(BasicInput, {
31
31
  ...textareaProps,
32
32
  ref,
33
- className: clsx(textarea_module_default.CustomBasicInput, className),
33
+ className: textarea_module_default.CustomBasicInput,
34
34
  "data-resize": resize,
35
35
  disabled,
36
36
  fitContent,
@@ -11,7 +11,7 @@ import { Field } from "@base-ui/react/field";
11
11
  import { Input } from "@base-ui/react/input";
12
12
  //#region src/components/textfield/textfield.tsx
13
13
  var Textfield = ({ className, description, dirty, disabled, endAddon, error, fitContent, fullWidth = false, invalid, label, name, ref, startAddon, touched, validate, validationDebounceTime, validationMode, ...inputProps }) => /* @__PURE__ */ jsxs(Field.Root, {
14
- className: textfield_module_default.Textfield,
14
+ className: clsx(textfield_module_default.Textfield, className),
15
15
  dirty,
16
16
  disabled,
17
17
  invalid,
@@ -38,7 +38,7 @@ var Textfield = ({ className, description, dirty, disabled, endAddon, error, fit
38
38
  children: /* @__PURE__ */ jsx(BasicInput, {
39
39
  ...inputProps,
40
40
  ref,
41
- className: clsx(textfield_module_default.CustomBasicInput, className),
41
+ className: textfield_module_default.CustomBasicInput,
42
42
  disabled,
43
43
  fitContent,
44
44
  render: /* @__PURE__ */ jsx(Input, {})
@@ -0,0 +1,48 @@
1
+ # ViraUI package specs protocol
2
+
3
+ **Package:** `@viraui/react` agent documentation
4
+ **Authority after cutover:** navigation index + scoped XML units only. `*.guide.json` is **not** agent API authority.
5
+
6
+ ## Index-first (mandatory)
7
+
8
+ 1. Open `index.xml` before any component or foundation unit.
9
+ 2. Use `activity-hints.xml` for activity → load sequences (`choose-component`, `implement`, `foundation-attrs`).
10
+ 3. Open only the unit files named for that activity (and the chosen surface).
11
+ 4. Do **not** parse the full tree of XML unit files. Failure to route is an index or content defect—not a reason to tree-walk.
12
+
13
+ ## Authority order
14
+
15
+ 1. **Package specs units** for the installed version (`meta`, `props`, `usage`, `a11y`, `patterns`, foundation) — intent, Vira-added props, anti-patterns, public CSS hooks.
16
+ 2. Installed package **types / source** — verify accepted props, inherited pass-through, and defaults **after** reading units. Never use types as first discovery.
17
+ 3. Examples / stories — examples only; never API authority.
18
+ 4. Skills prose — routers and playbooks only; never a second encyclopedia of component API facts.
19
+
20
+ ## Co-versioned resolution
21
+
22
+ Resolve docs from the **installed** `@viraui/react` package (Node resolution / `node_modules`), not from a newer skills corpus or another checkout. The `version` attribute on `index.xml` must match the installed package version.
23
+
24
+ ### Filesystem recipe (Read tool)
25
+
26
+ Prefer package subpaths; on disk under the install they map to:
27
+
28
+ - `node_modules/@viraui/react/dist/specs/PROTOCOL.md`
29
+ - `node_modules/@viraui/react/dist/specs/index.xml`
30
+ - `node_modules/@viraui/react/dist/specs/activity-hints.xml`
31
+ - `node_modules/@viraui/react/dist/specs/components/<id>/*.xml`
32
+ - `node_modules/@viraui/react/dist/specs/foundation/*.xml`
33
+
34
+ Package exports: `@viraui/react/specs/*`.
35
+
36
+ ## Forbidden discovery
37
+
38
+ Do **not** `ls` / `rg` / `grep` `dist/components/**` or `*.d.ts` to discover Vira API **before** opening the index and target units. Types are for verification after units — open the specific `.d.ts` with Read if needed; do not shell-parse the tree.
39
+
40
+ ## Machine surfaces
41
+
42
+ `catalog.json` is a small tooling index of public components. Narrative discovery uses the specs index + units—not skill encyclopedias or legacy surface JSON.
43
+
44
+ **Core / preflight units** are hand-authored under `packages/react/src/core/specs/` and published as `specs/foundation/*` (bootstrap, attributes, toggles, theme-topics, elevation, modules).
45
+
46
+ ## Defects
47
+
48
+ Missing index entry, broken `href`, or empty high-traffic units → fix the package docs. Do not invent props or load every `props.xml`.
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <activity_hints>
3
+ <activity id="choose-component">
4
+ <description>Pick a ViraUI component for a UI need.</description>
5
+ <load>
6
+ <step open="index.xml" />
7
+ <step open="activity-hints.xml" note="stop unless implementing" />
8
+ </load>
9
+ <forbid>Opening all props.xml files</forbid>
10
+ </activity>
11
+ <activity id="implement">
12
+ <description>Implement UI with a chosen component.</description>
13
+ <load>
14
+ <step open="index.xml" />
15
+ <step unit="meta" />
16
+ <step unit="props" />
17
+ <step unit="usage" />
18
+ <step unit="a11y" when="interactive or forms" />
19
+ </load>
20
+ <forbid>Opening every component props.xml in the package</forbid>
21
+ </activity>
22
+ <activity id="foundation-attrs">
23
+ <description>Mode, vibrancy, elevation, grow/shrink hooks.</description>
24
+ <load>
25
+ <step open="index.xml" />
26
+ <step open="foundation/attributes.xml" />
27
+ <step open="foundation/elevation.xml" when="elevation on React or raw DOM" />
28
+ <step open="foundation/toggles.xml" when="effects involved" />
29
+ <step open="foundation/modules.xml" when="debugging which preflight CSS module owns a hook" />
30
+ </load>
31
+ <forbid>Inventing data-* attributes not listed in foundation units</forbid>
32
+ </activity>
33
+ <activity id="bootstrap">
34
+ <description>Install peers, theme/fonts/preflight import order, root providers.</description>
35
+ <load>
36
+ <step open="index.xml" />
37
+ <step open="foundation/bootstrap.xml" />
38
+ <step open="foundation/theme-topics.xml" when="custom theme or token groups" />
39
+ </load>
40
+ <forbid>Guessing import paths or inventing provider trees</forbid>
41
+ </activity>
42
+ </activity_hints>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="accordion">
3
+ <rule>Provide meaningful `trigger` text so each section has an accessible name</rule>
4
+ <rule>Use `value` when controlling or identifying items programmatically</rule>
5
+ <rule>Disabled items cannot be expanded through pointer or keyboard</rule>
6
+ </a11y>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="accordion" title="Accordion" category="layout" shared_contract="accordion">
3
+ <summary>Collapsible sections grouped into open/closed blocks with optional Surface wrapping, shared corner radius, and optional Item color for open-block background.</summary>
4
+ <exports>
5
+ <export name="Accordion" />
6
+ </exports>
7
+ <related>
8
+ <ref id="surface" />
9
+ <ref id="separator" />
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
+ <base_ui href="https://base-ui.com/react/components/accordion#api-reference" />
20
+ </meta>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="accordion">
3
+ <example title="Accordion structure">
4
+ <tsx><![CDATA[<Accordion>
5
+ <Accordion.Item trigger="…">…</Accordion.Item>
6
+ </Accordion>]]></tsx>
7
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
8
+ </example>
9
+ </patterns>
@@ -0,0 +1,48 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <props surface="accordion">
3
+ <when_to_use>
4
+ <item>Progressive disclosure for related content sections in one surface</item>
5
+ <item>FAQ or settings groups where only one section may be open by default</item>
6
+ <item>Multiple open sections when `multiple` is enabled</item>
7
+ </when_to_use>
8
+ <when_not_to_use>
9
+ <item>Primary navigation that should use links, tabs, or routes directly</item>
10
+ <item>Expecting to compose public Header/Trigger/Panel parts; those are owned by `Accordion.Item`</item>
11
+ </when_not_to_use>
12
+ <prop name="islands" kind="react">
13
+ <description>When `true`, open/closed blocks render as separated Surface islands with gap between them. When `false`, blocks stay attached with corner radius only on the first and last items. Applies only to items with `useSurface`.</description>
14
+ </prop>
15
+ <prop name="Item.border" kind="react">
16
+ <description>Contrast border side(s) forwarded to the wrapping `Surface` when `useSurface` is `true`. Pass a single side or a list (e.g. `[&quot;bottom&quot;, &quot;left&quot;]`). Omit for no border.</description>
17
+ </prop>
18
+ <prop name="Item.children" kind="react">
19
+ <description>Panel content revealed when the item is open.</description>
20
+ </prop>
21
+ <prop name="Item.color" kind="react">
22
+ <description>Resting background for the item card, forwarded to the wrapping `Surface` when `useSurface` is `true`. Omit for no background.</description>
23
+ </prop>
24
+ <prop name="Item.iconClosed" kind="react">
25
+ <description>Decorative icon shown when the item is closed.</description>
26
+ </prop>
27
+ <prop name="Item.iconOpen" kind="react">
28
+ <description>Decorative icon shown when the item is open.</description>
29
+ </prop>
30
+ <prop name="Item.iconPosition" kind="react">
31
+ <description>Side of the trigger label where the expand/collapse icon is rendered.</description>
32
+ </prop>
33
+ <prop name="Item.radius" kind="react">
34
+ <description>Corner radius token for the wrapping Surface island edges when useSurface is true.</description>
35
+ </prop>
36
+ <prop name="Item.trigger" kind="react">
37
+ <description>Visible trigger label rendered inside the accordion header button.</description>
38
+ </prop>
39
+ <prop name="Item.useSurface" kind="react">
40
+ <description>When `true`, wraps the item in `Surface` (optional open-block background via `color`). When `false`, renders without `Surface` so consumers can insert `Separator` between items; island styling is skipped for that item.</description>
41
+ </prop>
42
+ <css_var suffix="island-gap">
43
+ <description>Gap between separated Surface islands when islands={true}.</description>
44
+ </css_var>
45
+ <css_var suffix="radius">
46
+ <description>Corner radius for Surface island block edges when useSurface is true.</description>
47
+ </css_var>
48
+ </props>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <usage surface="accordion">
3
+ <do>Progressive disclosure for related content sections in one surface</do>
4
+ <do>FAQ or settings groups where only one section may be open by default</do>
5
+ <do>Multiple open sections when `multiple` is enabled</do>
6
+ <dont>Trying to compose separate public `Accordion.Header`, `Accordion.Trigger`, or `Accordion.Panel` exports</dont>
7
+ <dont>Rendering an item without trigger text and without an external aria-label strategy</dont>
8
+ </usage>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <a11y surface="annotate">
3
+ <rule>Arrow and note are presentational spans with aria-hidden — decorative only and not exposed to assistive tech</rule>
4
+ <rule>Do not put critical information in note; keep real meaning in children or aria-describedby content</rule>
5
+ <rule>Children retain native semantics; Annotate itself is a presentational span wrap</rule>
6
+ </a11y>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <meta id="annotate" title="Annotate" category="effect" shared_contract="annotate">
3
+ <summary>Decorative arrow and handwritten label that wraps inline content with optional highlighter mark, positioned via CSS anchor positioning.</summary>
4
+ <exports>
5
+ <export name="Annotate" />
6
+ </exports>
7
+ <related>
8
+ <ref id="text" />
9
+ <ref id="title" />
10
+ <ref id="tooltip" />
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
+ </meta>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <patterns surface="annotate">
3
+ <example title="Annotate structure">
4
+ <tsx><![CDATA[<Annotate note="…">…</Annotate>]]></tsx>
5
+ <notes>Public assembly hint from legacy guide; not API authority.</notes>
6
+ </example>
7
+ </patterns>