@mortenbrudvik/waveui 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/README.md +395 -132
  2. package/dist/components/button/Button.cjs +1 -1
  3. package/dist/components/button/Button.cjs.map +1 -1
  4. package/dist/components/button/Button.mjs +36 -35
  5. package/dist/components/button/Button.mjs.map +1 -1
  6. package/dist/components/button/Button.slots.cjs +1 -1
  7. package/dist/components/button/Button.slots.cjs.map +1 -1
  8. package/dist/components/button/Button.slots.mjs +31 -21
  9. package/dist/components/button/Button.slots.mjs.map +1 -1
  10. package/dist/components/button/CompoundButton.cjs +1 -1
  11. package/dist/components/button/CompoundButton.cjs.map +1 -1
  12. package/dist/components/button/CompoundButton.mjs +31 -29
  13. package/dist/components/button/CompoundButton.mjs.map +1 -1
  14. package/dist/components/button/Link.cjs +1 -1
  15. package/dist/components/button/Link.cjs.map +1 -1
  16. package/dist/components/button/Link.mjs +24 -23
  17. package/dist/components/button/Link.mjs.map +1 -1
  18. package/dist/components/button/MenuButton.cjs +1 -1
  19. package/dist/components/button/MenuButton.cjs.map +1 -1
  20. package/dist/components/button/MenuButton.mjs +29 -28
  21. package/dist/components/button/MenuButton.mjs.map +1 -1
  22. package/dist/components/button/SplitButton.cjs +1 -1
  23. package/dist/components/button/SplitButton.cjs.map +1 -1
  24. package/dist/components/button/SplitButton.mjs +46 -45
  25. package/dist/components/button/SplitButton.mjs.map +1 -1
  26. package/dist/components/button/ToggleButton.cjs +1 -1
  27. package/dist/components/button/ToggleButton.cjs.map +1 -1
  28. package/dist/components/button/ToggleButton.mjs +38 -35
  29. package/dist/components/button/ToggleButton.mjs.map +1 -1
  30. package/dist/components/button/Toolbar.cjs +1 -1
  31. package/dist/components/button/Toolbar.cjs.map +1 -1
  32. package/dist/components/button/Toolbar.mjs +43 -42
  33. package/dist/components/button/Toolbar.mjs.map +1 -1
  34. package/dist/components/button/Toolbar.parts.cjs +1 -1
  35. package/dist/components/button/Toolbar.parts.cjs.map +1 -1
  36. package/dist/components/button/Toolbar.parts.mjs +76 -81
  37. package/dist/components/button/Toolbar.parts.mjs.map +1 -1
  38. package/dist/components/data-display/Avatar.cjs +1 -1
  39. package/dist/components/data-display/Avatar.cjs.map +1 -1
  40. package/dist/components/data-display/Avatar.mjs +72 -67
  41. package/dist/components/data-display/Avatar.mjs.map +1 -1
  42. package/dist/components/data-display/AvatarGroup.cjs +1 -1
  43. package/dist/components/data-display/AvatarGroup.cjs.map +1 -1
  44. package/dist/components/data-display/AvatarGroup.mjs +89 -88
  45. package/dist/components/data-display/AvatarGroup.mjs.map +1 -1
  46. package/dist/components/data-display/Badge.cjs +1 -1
  47. package/dist/components/data-display/Badge.cjs.map +1 -1
  48. package/dist/components/data-display/Badge.mjs +17 -16
  49. package/dist/components/data-display/Badge.mjs.map +1 -1
  50. package/dist/components/data-display/CounterBadge.cjs +1 -1
  51. package/dist/components/data-display/CounterBadge.cjs.map +1 -1
  52. package/dist/components/data-display/CounterBadge.mjs +18 -17
  53. package/dist/components/data-display/CounterBadge.mjs.map +1 -1
  54. package/dist/components/data-display/Divider.cjs +1 -1
  55. package/dist/components/data-display/Divider.cjs.map +1 -1
  56. package/dist/components/data-display/Divider.mjs +31 -30
  57. package/dist/components/data-display/Divider.mjs.map +1 -1
  58. package/dist/components/data-display/Image.cjs +1 -1
  59. package/dist/components/data-display/Image.cjs.map +1 -1
  60. package/dist/components/data-display/Image.mjs +16 -15
  61. package/dist/components/data-display/Image.mjs.map +1 -1
  62. package/dist/components/data-display/InfoLabel.cjs +1 -1
  63. package/dist/components/data-display/InfoLabel.cjs.map +1 -1
  64. package/dist/components/data-display/InfoLabel.mjs +74 -73
  65. package/dist/components/data-display/InfoLabel.mjs.map +1 -1
  66. package/dist/components/data-display/List.cjs +1 -1
  67. package/dist/components/data-display/List.cjs.map +1 -1
  68. package/dist/components/data-display/List.mjs +175 -174
  69. package/dist/components/data-display/List.mjs.map +1 -1
  70. package/dist/components/data-display/Persona.cjs +1 -1
  71. package/dist/components/data-display/Persona.cjs.map +1 -1
  72. package/dist/components/data-display/Persona.mjs +31 -29
  73. package/dist/components/data-display/Persona.mjs.map +1 -1
  74. package/dist/components/data-display/PresenceBadge.cjs +1 -1
  75. package/dist/components/data-display/PresenceBadge.cjs.map +1 -1
  76. package/dist/components/data-display/PresenceBadge.mjs +25 -24
  77. package/dist/components/data-display/PresenceBadge.mjs.map +1 -1
  78. package/dist/components/data-display/Tag.cjs +1 -1
  79. package/dist/components/data-display/Tag.cjs.map +1 -1
  80. package/dist/components/data-display/Tag.mjs +87 -82
  81. package/dist/components/data-display/Tag.mjs.map +1 -1
  82. package/dist/components/feedback/MessageBar.cjs +1 -1
  83. package/dist/components/feedback/MessageBar.cjs.map +1 -1
  84. package/dist/components/feedback/MessageBar.mjs +129 -71
  85. package/dist/components/feedback/MessageBar.mjs.map +1 -1
  86. package/dist/components/feedback/MessageBar.parts.cjs +2 -0
  87. package/dist/components/feedback/MessageBar.parts.cjs.map +1 -0
  88. package/dist/components/feedback/MessageBar.parts.mjs +84 -0
  89. package/dist/components/feedback/MessageBar.parts.mjs.map +1 -0
  90. package/dist/components/feedback/MessageBar.reflow.cjs +2 -0
  91. package/dist/components/feedback/MessageBar.reflow.cjs.map +1 -0
  92. package/dist/components/feedback/MessageBar.reflow.mjs +74 -0
  93. package/dist/components/feedback/MessageBar.reflow.mjs.map +1 -0
  94. package/dist/components/feedback/MessageBar.status.cjs +1 -1
  95. package/dist/components/feedback/MessageBar.status.cjs.map +1 -1
  96. package/dist/components/feedback/MessageBar.status.mjs +2 -1
  97. package/dist/components/feedback/MessageBar.status.mjs.map +1 -1
  98. package/dist/components/feedback/ProgressBar.cjs +1 -1
  99. package/dist/components/feedback/ProgressBar.cjs.map +1 -1
  100. package/dist/components/feedback/ProgressBar.mjs +44 -43
  101. package/dist/components/feedback/ProgressBar.mjs.map +1 -1
  102. package/dist/components/feedback/Skeleton.cjs +1 -1
  103. package/dist/components/feedback/Skeleton.cjs.map +1 -1
  104. package/dist/components/feedback/Skeleton.mjs +26 -24
  105. package/dist/components/feedback/Skeleton.mjs.map +1 -1
  106. package/dist/components/feedback/Spinner.cjs +1 -1
  107. package/dist/components/feedback/Spinner.cjs.map +1 -1
  108. package/dist/components/feedback/Spinner.mjs +32 -31
  109. package/dist/components/feedback/Spinner.mjs.map +1 -1
  110. package/dist/components/feedback/Toast.cjs +1 -1
  111. package/dist/components/feedback/Toast.cjs.map +1 -1
  112. package/dist/components/feedback/Toast.context.cjs +2 -0
  113. package/dist/components/feedback/Toast.context.cjs.map +1 -0
  114. package/dist/components/feedback/Toast.context.mjs +23 -0
  115. package/dist/components/feedback/Toast.context.mjs.map +1 -0
  116. package/dist/components/feedback/Toast.mjs +10 -342
  117. package/dist/components/feedback/Toast.mjs.map +1 -1
  118. package/dist/components/feedback/Toast.parts.cjs +2 -0
  119. package/dist/components/feedback/Toast.parts.cjs.map +1 -0
  120. package/dist/components/feedback/Toast.parts.mjs +98 -0
  121. package/dist/components/feedback/Toast.parts.mjs.map +1 -0
  122. package/dist/components/feedback/Toast.root.cjs +2 -0
  123. package/dist/components/feedback/Toast.root.cjs.map +1 -0
  124. package/dist/components/feedback/Toast.root.mjs +109 -0
  125. package/dist/components/feedback/Toast.root.mjs.map +1 -0
  126. package/dist/components/feedback/Toaster.cjs +2 -0
  127. package/dist/components/feedback/Toaster.cjs.map +1 -0
  128. package/dist/components/feedback/Toaster.mjs +564 -0
  129. package/dist/components/feedback/Toaster.mjs.map +1 -0
  130. package/dist/components/input/AlphaSlider.cjs +2 -0
  131. package/dist/components/input/AlphaSlider.cjs.map +1 -0
  132. package/dist/components/input/AlphaSlider.mjs +115 -0
  133. package/dist/components/input/AlphaSlider.mjs.map +1 -0
  134. package/dist/components/input/Checkbox.cjs +1 -1
  135. package/dist/components/input/Checkbox.cjs.map +1 -1
  136. package/dist/components/input/Checkbox.mjs +47 -46
  137. package/dist/components/input/Checkbox.mjs.map +1 -1
  138. package/dist/components/input/ColorArea.cjs +2 -0
  139. package/dist/components/input/ColorArea.cjs.map +1 -0
  140. package/dist/components/input/ColorArea.mjs +204 -0
  141. package/dist/components/input/ColorArea.mjs.map +1 -0
  142. package/dist/components/input/ColorPicker.cjs +5 -5
  143. package/dist/components/input/ColorPicker.cjs.map +1 -1
  144. package/dist/components/input/ColorPicker.mjs +142 -165
  145. package/dist/components/input/ColorPicker.mjs.map +1 -1
  146. package/dist/components/input/ColorPicker.parts.cjs +2 -0
  147. package/dist/components/input/ColorPicker.parts.cjs.map +1 -0
  148. package/dist/components/input/ColorPicker.parts.mjs +192 -0
  149. package/dist/components/input/ColorPicker.parts.mjs.map +1 -0
  150. package/dist/components/input/ColorSlider.cjs +2 -0
  151. package/dist/components/input/ColorSlider.cjs.map +1 -0
  152. package/dist/components/input/ColorSlider.mjs +138 -0
  153. package/dist/components/input/ColorSlider.mjs.map +1 -0
  154. package/dist/components/input/Combobox.cjs +1 -1
  155. package/dist/components/input/Combobox.cjs.map +1 -1
  156. package/dist/components/input/Combobox.expand.cjs +1 -1
  157. package/dist/components/input/Combobox.expand.cjs.map +1 -1
  158. package/dist/components/input/Combobox.expand.mjs +9 -9
  159. package/dist/components/input/Combobox.expand.mjs.map +1 -1
  160. package/dist/components/input/Combobox.mjs +90 -85
  161. package/dist/components/input/Combobox.mjs.map +1 -1
  162. package/dist/components/input/DatePicker.cjs +1 -1
  163. package/dist/components/input/DatePicker.cjs.map +1 -1
  164. package/dist/components/input/DatePicker.mjs +186 -185
  165. package/dist/components/input/DatePicker.mjs.map +1 -1
  166. package/dist/components/input/Dropdown.cjs +1 -1
  167. package/dist/components/input/Dropdown.cjs.map +1 -1
  168. package/dist/components/input/Dropdown.mjs +71 -68
  169. package/dist/components/input/Dropdown.mjs.map +1 -1
  170. package/dist/components/input/Field.cjs +1 -1
  171. package/dist/components/input/Field.cjs.map +1 -1
  172. package/dist/components/input/Field.mjs +113 -112
  173. package/dist/components/input/Field.mjs.map +1 -1
  174. package/dist/components/input/Input.cjs +1 -1
  175. package/dist/components/input/Input.cjs.map +1 -1
  176. package/dist/components/input/Input.mjs +55 -54
  177. package/dist/components/input/Input.mjs.map +1 -1
  178. package/dist/components/input/Label.cjs +1 -1
  179. package/dist/components/input/Label.cjs.map +1 -1
  180. package/dist/components/input/Label.mjs +12 -11
  181. package/dist/components/input/Label.mjs.map +1 -1
  182. package/dist/components/input/Option.cjs +1 -1
  183. package/dist/components/input/Option.cjs.map +1 -1
  184. package/dist/components/input/Option.mjs +100 -98
  185. package/dist/components/input/Option.mjs.map +1 -1
  186. package/dist/components/input/RadioGroup.cjs +1 -1
  187. package/dist/components/input/RadioGroup.cjs.map +1 -1
  188. package/dist/components/input/RadioGroup.mjs +89 -88
  189. package/dist/components/input/RadioGroup.mjs.map +1 -1
  190. package/dist/components/input/Rating.cjs +1 -1
  191. package/dist/components/input/Rating.cjs.map +1 -1
  192. package/dist/components/input/Rating.mjs +110 -109
  193. package/dist/components/input/Rating.mjs.map +1 -1
  194. package/dist/components/input/SearchBox.cjs +1 -1
  195. package/dist/components/input/SearchBox.cjs.map +1 -1
  196. package/dist/components/input/SearchBox.mjs +118 -119
  197. package/dist/components/input/SearchBox.mjs.map +1 -1
  198. package/dist/components/input/Select.cjs +1 -1
  199. package/dist/components/input/Select.cjs.map +1 -1
  200. package/dist/components/input/Select.mjs +25 -24
  201. package/dist/components/input/Select.mjs.map +1 -1
  202. package/dist/components/input/Slider.cjs +1 -1
  203. package/dist/components/input/Slider.cjs.map +1 -1
  204. package/dist/components/input/Slider.mjs +47 -46
  205. package/dist/components/input/Slider.mjs.map +1 -1
  206. package/dist/components/input/SpinButton.cjs +1 -1
  207. package/dist/components/input/SpinButton.cjs.map +1 -1
  208. package/dist/components/input/SpinButton.mjs +76 -75
  209. package/dist/components/input/SpinButton.mjs.map +1 -1
  210. package/dist/components/input/SwatchPicker.cjs +1 -1
  211. package/dist/components/input/SwatchPicker.cjs.map +1 -1
  212. package/dist/components/input/SwatchPicker.mjs +38 -37
  213. package/dist/components/input/SwatchPicker.mjs.map +1 -1
  214. package/dist/components/input/Switch.cjs +1 -1
  215. package/dist/components/input/Switch.cjs.map +1 -1
  216. package/dist/components/input/Switch.mjs +65 -64
  217. package/dist/components/input/Switch.mjs.map +1 -1
  218. package/dist/components/input/TagPicker.cjs +1 -1
  219. package/dist/components/input/TagPicker.cjs.map +1 -1
  220. package/dist/components/input/TagPicker.mjs +161 -157
  221. package/dist/components/input/TagPicker.mjs.map +1 -1
  222. package/dist/components/input/Textarea.cjs +1 -1
  223. package/dist/components/input/Textarea.cjs.map +1 -1
  224. package/dist/components/input/Textarea.mjs +24 -23
  225. package/dist/components/input/Textarea.mjs.map +1 -1
  226. package/dist/components/input/TimePicker.cjs +1 -1
  227. package/dist/components/input/TimePicker.cjs.map +1 -1
  228. package/dist/components/input/TimePicker.mjs +202 -199
  229. package/dist/components/input/TimePicker.mjs.map +1 -1
  230. package/dist/components/input/colorName.cjs +2 -0
  231. package/dist/components/input/colorName.cjs.map +1 -0
  232. package/dist/components/input/colorName.mjs +30 -0
  233. package/dist/components/input/colorName.mjs.map +1 -0
  234. package/dist/components/input/colorUtils.cjs +1 -1
  235. package/dist/components/input/colorUtils.cjs.map +1 -1
  236. package/dist/components/input/colorUtils.mjs +154 -56
  237. package/dist/components/input/colorUtils.mjs.map +1 -1
  238. package/dist/components/layout/Accordion.cjs +1 -1
  239. package/dist/components/layout/Accordion.cjs.map +1 -1
  240. package/dist/components/layout/Accordion.mjs +130 -129
  241. package/dist/components/layout/Accordion.mjs.map +1 -1
  242. package/dist/components/layout/Card.cjs +1 -1
  243. package/dist/components/layout/Card.cjs.map +1 -1
  244. package/dist/components/layout/Card.mjs +78 -77
  245. package/dist/components/layout/Card.mjs.map +1 -1
  246. package/dist/components/layout/Carousel.cjs +1 -1
  247. package/dist/components/layout/Carousel.cjs.map +1 -1
  248. package/dist/components/layout/Carousel.mjs +111 -110
  249. package/dist/components/layout/Carousel.mjs.map +1 -1
  250. package/dist/components/layout/Flex.cjs +1 -1
  251. package/dist/components/layout/Flex.cjs.map +1 -1
  252. package/dist/components/layout/Flex.mjs +22 -21
  253. package/dist/components/layout/Flex.mjs.map +1 -1
  254. package/dist/components/layout/Grid.cjs +1 -1
  255. package/dist/components/layout/Grid.cjs.map +1 -1
  256. package/dist/components/layout/Grid.mjs +19 -18
  257. package/dist/components/layout/Grid.mjs.map +1 -1
  258. package/dist/components/layout/Overflow.cjs +1 -1
  259. package/dist/components/layout/Overflow.cjs.map +1 -1
  260. package/dist/components/layout/Overflow.mjs +92 -91
  261. package/dist/components/layout/Overflow.mjs.map +1 -1
  262. package/dist/components/layout/Stack.cjs +1 -1
  263. package/dist/components/layout/Stack.cjs.map +1 -1
  264. package/dist/components/layout/Stack.mjs +14 -13
  265. package/dist/components/layout/Stack.mjs.map +1 -1
  266. package/dist/components/layout/TabList.cjs +1 -1
  267. package/dist/components/layout/TabList.cjs.map +1 -1
  268. package/dist/components/layout/TabList.mjs +118 -117
  269. package/dist/components/layout/TabList.mjs.map +1 -1
  270. package/dist/components/layout/Tree.cjs +1 -1
  271. package/dist/components/layout/Tree.cjs.map +1 -1
  272. package/dist/components/layout/Tree.context.cjs +2 -0
  273. package/dist/components/layout/Tree.context.cjs.map +1 -0
  274. package/dist/components/layout/Tree.context.mjs +33 -0
  275. package/dist/components/layout/Tree.context.mjs.map +1 -0
  276. package/dist/components/layout/Tree.core.cjs +2 -0
  277. package/dist/components/layout/Tree.core.cjs.map +1 -0
  278. package/dist/components/layout/Tree.core.mjs +416 -0
  279. package/dist/components/layout/Tree.core.mjs.map +1 -0
  280. package/dist/components/layout/Tree.itemPersonaLayout.cjs +2 -0
  281. package/dist/components/layout/Tree.itemPersonaLayout.cjs.map +1 -0
  282. package/dist/components/layout/Tree.itemPersonaLayout.mjs +46 -0
  283. package/dist/components/layout/Tree.itemPersonaLayout.mjs.map +1 -0
  284. package/dist/components/layout/Tree.mjs +7 -215
  285. package/dist/components/layout/Tree.mjs.map +1 -1
  286. package/dist/components/layout/Tree.selection.cjs +2 -0
  287. package/dist/components/layout/Tree.selection.cjs.map +1 -0
  288. package/dist/components/layout/Tree.selection.mjs +73 -0
  289. package/dist/components/layout/Tree.selection.mjs.map +1 -0
  290. package/dist/components/navigation/Breadcrumb.cjs +1 -1
  291. package/dist/components/navigation/Breadcrumb.cjs.map +1 -1
  292. package/dist/components/navigation/Breadcrumb.mjs +76 -75
  293. package/dist/components/navigation/Breadcrumb.mjs.map +1 -1
  294. package/dist/components/navigation/Menu.group.cjs +1 -1
  295. package/dist/components/navigation/Menu.group.cjs.map +1 -1
  296. package/dist/components/navigation/Menu.group.mjs +39 -37
  297. package/dist/components/navigation/Menu.group.mjs.map +1 -1
  298. package/dist/components/navigation/Menu.items.cjs +1 -1
  299. package/dist/components/navigation/Menu.items.cjs.map +1 -1
  300. package/dist/components/navigation/Menu.items.mjs +67 -61
  301. package/dist/components/navigation/Menu.items.mjs.map +1 -1
  302. package/dist/components/navigation/Menu.link.cjs +1 -1
  303. package/dist/components/navigation/Menu.link.cjs.map +1 -1
  304. package/dist/components/navigation/Menu.link.mjs +34 -28
  305. package/dist/components/navigation/Menu.link.mjs.map +1 -1
  306. package/dist/components/navigation/Menu.popover.cjs +1 -1
  307. package/dist/components/navigation/Menu.popover.cjs.map +1 -1
  308. package/dist/components/navigation/Menu.popover.mjs +110 -109
  309. package/dist/components/navigation/Menu.popover.mjs.map +1 -1
  310. package/dist/components/navigation/Menu.root.cjs +1 -1
  311. package/dist/components/navigation/Menu.root.cjs.map +1 -1
  312. package/dist/components/navigation/Menu.root.mjs +171 -170
  313. package/dist/components/navigation/Menu.root.mjs.map +1 -1
  314. package/dist/components/navigation/Menu.selectable.cjs +1 -1
  315. package/dist/components/navigation/Menu.selectable.cjs.map +1 -1
  316. package/dist/components/navigation/Menu.selectable.mjs +85 -63
  317. package/dist/components/navigation/Menu.selectable.mjs.map +1 -1
  318. package/dist/components/navigation/Menu.splitGroup.cjs +1 -1
  319. package/dist/components/navigation/Menu.splitGroup.cjs.map +1 -1
  320. package/dist/components/navigation/Menu.splitGroup.mjs +27 -26
  321. package/dist/components/navigation/Menu.splitGroup.mjs.map +1 -1
  322. package/dist/components/navigation/Menu.trigger.cjs +1 -1
  323. package/dist/components/navigation/Menu.trigger.cjs.map +1 -1
  324. package/dist/components/navigation/Menu.trigger.mjs +6 -6
  325. package/dist/components/navigation/Nav.cjs +1 -1
  326. package/dist/components/navigation/Nav.cjs.map +1 -1
  327. package/dist/components/navigation/Nav.mjs +170 -155
  328. package/dist/components/navigation/Nav.mjs.map +1 -1
  329. package/dist/components/navigation/Pagination.cjs +1 -1
  330. package/dist/components/navigation/Pagination.cjs.map +1 -1
  331. package/dist/components/navigation/Pagination.mjs +73 -65
  332. package/dist/components/navigation/Pagination.mjs.map +1 -1
  333. package/dist/components/navigation/Stepper.cjs +1 -1
  334. package/dist/components/navigation/Stepper.cjs.map +1 -1
  335. package/dist/components/navigation/Stepper.mjs +110 -109
  336. package/dist/components/navigation/Stepper.mjs.map +1 -1
  337. package/dist/components/overlays/Dialog.cjs +1 -1
  338. package/dist/components/overlays/Dialog.cjs.map +1 -1
  339. package/dist/components/overlays/Dialog.mjs +109 -108
  340. package/dist/components/overlays/Dialog.mjs.map +1 -1
  341. package/dist/components/overlays/Drawer.cjs +1 -1
  342. package/dist/components/overlays/Drawer.cjs.map +1 -1
  343. package/dist/components/overlays/Drawer.mjs +110 -109
  344. package/dist/components/overlays/Drawer.mjs.map +1 -1
  345. package/dist/components/overlays/Popover.cjs +1 -1
  346. package/dist/components/overlays/Popover.cjs.map +1 -1
  347. package/dist/components/overlays/Popover.mjs +229 -227
  348. package/dist/components/overlays/Popover.mjs.map +1 -1
  349. package/dist/components/overlays/TeachingPopover.cjs +1 -1
  350. package/dist/components/overlays/TeachingPopover.cjs.map +1 -1
  351. package/dist/components/overlays/TeachingPopover.mjs +41 -37
  352. package/dist/components/overlays/TeachingPopover.mjs.map +1 -1
  353. package/dist/components/overlays/Tooltip.cjs +1 -1
  354. package/dist/components/overlays/Tooltip.cjs.map +1 -1
  355. package/dist/components/overlays/Tooltip.mjs +87 -86
  356. package/dist/components/overlays/Tooltip.mjs.map +1 -1
  357. package/dist/components/portal/Portal.cjs +1 -1
  358. package/dist/components/portal/Portal.cjs.map +1 -1
  359. package/dist/components/portal/Portal.mjs +33 -32
  360. package/dist/components/portal/Portal.mjs.map +1 -1
  361. package/dist/components/provider/WaveProvider.cjs +1 -1
  362. package/dist/components/provider/WaveProvider.cjs.map +1 -1
  363. package/dist/components/provider/WaveProvider.mjs +31 -30
  364. package/dist/components/provider/WaveProvider.mjs.map +1 -1
  365. package/dist/components/table/DataGrid.cjs +1 -1
  366. package/dist/components/table/DataGrid.cjs.map +1 -1
  367. package/dist/components/table/DataGrid.mjs +228 -227
  368. package/dist/components/table/DataGrid.mjs.map +1 -1
  369. package/dist/components/table/Table.cjs +1 -1
  370. package/dist/components/table/Table.cjs.map +1 -1
  371. package/dist/components/table/Table.mjs +60 -59
  372. package/dist/components/table/Table.mjs.map +1 -1
  373. package/dist/components/typography/Text.cjs +1 -1
  374. package/dist/components/typography/Text.cjs.map +1 -1
  375. package/dist/components/typography/Text.mjs +12 -11
  376. package/dist/components/typography/Text.mjs.map +1 -1
  377. package/dist/hooks/useMediaQuery.cjs +2 -0
  378. package/dist/hooks/useMediaQuery.cjs.map +1 -0
  379. package/dist/hooks/useMediaQuery.mjs +20 -0
  380. package/dist/hooks/useMediaQuery.mjs.map +1 -0
  381. package/dist/hooks/usePrefersReducedMotion.cjs +1 -1
  382. package/dist/hooks/usePrefersReducedMotion.cjs.map +1 -1
  383. package/dist/hooks/usePrefersReducedMotion.mjs +4 -18
  384. package/dist/hooks/usePrefersReducedMotion.mjs.map +1 -1
  385. package/dist/hooks/useRovingTabIndex.cjs +1 -1
  386. package/dist/hooks/useRovingTabIndex.cjs.map +1 -1
  387. package/dist/hooks/useRovingTabIndex.mjs +3 -3
  388. package/dist/hooks/useRovingTabIndex.mjs.map +1 -1
  389. package/dist/index.cjs +1 -1
  390. package/dist/index.d.cts +2089 -102
  391. package/dist/index.d.ts +2089 -102
  392. package/dist/index.mjs +99 -87
  393. package/dist/lib/classNames.cjs +2 -0
  394. package/dist/lib/classNames.cjs.map +1 -0
  395. package/dist/lib/classNames.mjs +415 -0
  396. package/dist/lib/classNames.mjs.map +1 -0
  397. package/dist/lib/color.cjs +2 -0
  398. package/dist/lib/color.cjs.map +1 -0
  399. package/dist/lib/color.mjs +86 -0
  400. package/dist/lib/color.mjs.map +1 -0
  401. package/dist/lib/globalRegistry.cjs.map +1 -1
  402. package/dist/lib/globalRegistry.mjs.map +1 -1
  403. package/dist/lib/toaster.cjs +2 -0
  404. package/dist/lib/toaster.cjs.map +1 -0
  405. package/dist/lib/toaster.mjs +77 -0
  406. package/dist/lib/toaster.mjs.map +1 -0
  407. package/dist/styles.css +1 -1
  408. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -49,6 +49,11 @@ export declare interface AccordionBaseProps extends React_2.HTMLAttributes<HTMLD
49
49
  ref?: React_2.Ref<HTMLDivElement>;
50
50
  }
51
51
 
52
+ /** Accordion: `root` on the accordion element. */
53
+ export declare const accordionClassNames: {
54
+ readonly root: "wave-accordion";
55
+ };
56
+
52
57
  /** Heading level of the element that wraps each Accordion trigger. */
53
58
  export declare type AccordionHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
54
59
 
@@ -72,6 +77,11 @@ export declare const AccordionItem: {
72
77
  displayName: string;
73
78
  };
74
79
 
80
+ /** Accordion.Item: `root` on the item element. */
81
+ export declare const accordionItemClassNames: {
82
+ readonly root: "wave-accordion-item";
83
+ };
84
+
75
85
  /** Properties for the AccordionItem sub-component. */
76
86
  export declare interface AccordionItemProps extends React_2.HTMLAttributes<HTMLDivElement> {
77
87
  /** Unique value identifying this accordion item. */
@@ -110,6 +120,11 @@ export declare const AccordionPanel: {
110
120
  displayName: string;
111
121
  };
112
122
 
123
+ /** Accordion.Panel: `root` on the `role="region"` element. */
124
+ export declare const accordionPanelClassNames: {
125
+ readonly root: "wave-accordion-panel";
126
+ };
127
+
113
128
  /** Properties for the AccordionPanel sub-component (merged onto the `role="region"` element). */
114
129
  export declare interface AccordionPanelProps extends React_2.HTMLAttributes<HTMLDivElement> {
115
130
  /** Ref to the panel `<div role="region">`. */
@@ -168,12 +183,72 @@ export declare const AccordionTrigger: {
168
183
  displayName: string;
169
184
  };
170
185
 
186
+ /**
187
+ * Accordion.Trigger: `root` on the `<button>`; `heading` on the heading element around it (`<h1>`
188
+ * to `<h6>`, from `headingLevel`); `expandIcon` on the chevron `<svg>`.
189
+ */
190
+ export declare const accordionTriggerClassNames: {
191
+ readonly root: "wave-accordion-trigger";
192
+ readonly heading: "wave-accordion-trigger__heading";
193
+ readonly expandIcon: "wave-accordion-trigger__expand-icon";
194
+ };
195
+
171
196
  /** Properties for the AccordionTrigger sub-component (merged onto the trigger `<button>`). */
172
197
  export declare interface AccordionTriggerProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement> {
173
198
  /** Ref to the trigger `<button>`. */
174
199
  ref?: React_2.Ref<HTMLButtonElement>;
175
200
  }
176
201
 
202
+ /**
203
+ * A slider for a color's opacity, drawn over a checkerboard, horizontal (mirrored in right-to-left
204
+ * layouts) or vertical (bottom to top); `transparency` shows transparency instead. The arrow keys
205
+ * move by 1 %, Shift with an arrow and Page Up or Page Down by 10, Home and End to the ends. It is
206
+ * named by `aria-label`, else the surrounding Field's label, else "Opacity" ("Transparency").
207
+ * Inside a ColorPicker, leave `value` and `defaultValue` out and it binds to the picker. Fluent's
208
+ * `AlphaSlider`, with `value`/`onValueChange` for its `color`/`onChange`.
209
+ *
210
+ * @example
211
+ * <AlphaSlider value={color} onValueChange={setColor} />
212
+ */
213
+ export declare const AlphaSlider: {
214
+ ({ transparency, orientation, value, defaultValue, onValueChange, shape, labels, disabled, name, form, required, controlRef, className, style, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, "aria-errormessage": ariaErrorMessage, "aria-details": ariaDetails, autoFocus, tabIndex, onFocus, onBlur, onKeyDown, onKeyUp, ref, ...rest }: AlphaSliderProps): React_2.JSX.Element;
215
+ displayName: string;
216
+ };
217
+
218
+ /** AlphaSlider: `root` on the slider element; `rail` on the rail; `thumb` on the thumb. */
219
+ export declare const alphaSliderClassNames: {
220
+ readonly root: "wave-alpha-slider";
221
+ readonly rail: "wave-alpha-slider__rail";
222
+ readonly thumb: "wave-alpha-slider__thumb";
223
+ };
224
+
225
+ /** Texts of an AlphaSlider, for localisation. Every key is optional. */
226
+ export declare interface AlphaSliderLabels {
227
+ /** Name of the slider.
228
+ * @default 'Opacity'
229
+ */
230
+ opacity?: string;
231
+ /** Name of the slider with `transparency`.
232
+ * @default 'Transparency'
233
+ */
234
+ transparency?: string;
235
+ /** Replaces the value text ("40%"), for languages whose order differs. */
236
+ valueText?: (color: HsvColor, transparency: boolean) => string;
237
+ }
238
+
239
+ /** Properties for the AlphaSlider component. */
240
+ export declare interface AlphaSliderProps extends Omit<ColorSliderProps, 'channel' | 'labels'> {
241
+ /**
242
+ * Shows transparency (100 % is fully transparent) instead of opacity: the rail, the input's
243
+ * value, the value text and the arrow direction all follow it, while `value.a` stays the
244
+ * opacity (Fluent's `transparency`).
245
+ * @default false
246
+ */
247
+ transparency?: boolean;
248
+ /** Texts of the slider; bound to a ColorPicker, the picker's `labels` fill the keys you leave out. */
249
+ labels?: AlphaSliderLabels;
250
+ }
251
+
177
252
  /**
178
253
  * Announces `message` to screen readers through a shared, visually hidden live region
179
254
  * (`[data-wave-announcer]`, which modal isolation never makes inert).
@@ -220,6 +295,21 @@ export declare const Avatar: {
220
295
  displayName: string;
221
296
  };
222
297
 
298
+ /**
299
+ * Avatar: `root` on the avatar span (with `badge`, on the outer wrapper); `visual` on the circle
300
+ * (the root without `badge`, the inner span with it); `image` on the `<img>` (or the element of
301
+ * your `image` slot); `icon` on the `icon` slot, else on the default person `<svg>`; `initials`
302
+ * on the initials span; `badge` on the `badge` slot.
303
+ */
304
+ export declare const avatarClassNames: {
305
+ readonly root: "wave-avatar";
306
+ readonly visual: "wave-avatar__visual";
307
+ readonly image: "wave-avatar__image";
308
+ readonly icon: "wave-avatar__icon";
309
+ readonly initials: "wave-avatar__initials";
310
+ readonly badge: "wave-avatar__badge";
311
+ };
312
+
223
313
  /**
224
314
  * A row of overlapping avatars (`role="group"`; name it with `aria-label`).
225
315
  *
@@ -246,6 +336,20 @@ export declare const AvatarGroup: {
246
336
  displayName: string;
247
337
  };
248
338
 
339
+ /**
340
+ * AvatarGroup: `root` on the `role="group"` element; `item` on the wrapper around each shown
341
+ * member; `overflowButton` on the "+N" button; `surface` on its popup; `list` on the popup's
342
+ * `<ul>`; `listItem` on each of its `<li>`.
343
+ */
344
+ export declare const avatarGroupClassNames: {
345
+ readonly root: "wave-avatar-group";
346
+ readonly item: "wave-avatar-group__item";
347
+ readonly overflowButton: "wave-avatar-group__overflow-button";
348
+ readonly surface: "wave-avatar-group__surface";
349
+ readonly list: "wave-avatar-group__list";
350
+ readonly listItem: "wave-avatar-group__list-item";
351
+ };
352
+
249
353
  /** Properties for the AvatarGroup component. */
250
354
  export declare interface AvatarGroupProps extends React_2.HTMLAttributes<HTMLDivElement> {
251
355
  /**
@@ -356,6 +460,11 @@ export declare const Badge: {
356
460
  /** Visual style variant for Badge components. */
357
461
  export declare type BadgeAppearance = 'filled' | 'tint' | 'outline';
358
462
 
463
+ /** Badge: `root` on the badge span. */
464
+ export declare const badgeClassNames: {
465
+ readonly root: "wave-badge";
466
+ };
467
+
359
468
  /** Semantic colors of Badge and CounterBadge. */
360
469
  export declare type BadgeColor = 'brand' | 'success' | 'warning' | 'danger' | 'important' | 'informative' | 'severe' | 'subtle';
361
470
 
@@ -404,6 +513,17 @@ export declare const Breadcrumb: {
404
513
  Item: typeof BreadcrumbItem;
405
514
  };
406
515
 
516
+ /**
517
+ * Breadcrumb: `root` on the `<nav>`; `list` on its `<ol>`; `listItem` on each `<li>`; `divider`
518
+ * on each separator `<svg>`.
519
+ */
520
+ export declare const breadcrumbClassNames: {
521
+ readonly root: "wave-breadcrumb";
522
+ readonly list: "wave-breadcrumb__list";
523
+ readonly listItem: "wave-breadcrumb__list-item";
524
+ readonly divider: "wave-breadcrumb__divider";
525
+ };
526
+
407
527
  /**
408
528
  * One step of a breadcrumb trail:
409
529
  * - `href` → a link (`<a>`, anchor attributes);
@@ -459,6 +579,15 @@ export declare interface BreadcrumbItemButtonProps extends BreadcrumbItemOwnProp
459
579
  ref?: React_2.Ref<HTMLButtonElement | HTMLSpanElement>;
460
580
  }
461
581
 
582
+ /**
583
+ * Breadcrumb.Item: `root` on the link, button or text span it renders (or your `asChild`
584
+ * element); `icon` on the icon span.
585
+ */
586
+ export declare const breadcrumbItemClassNames: {
587
+ readonly root: "wave-breadcrumb-item";
588
+ readonly icon: "wave-breadcrumb-item__icon";
589
+ };
590
+
462
591
  /**
463
592
  * Breadcrumb.Item with an `href` known only at run time (`string | undefined`): a link when it is
464
593
  * a string, otherwise a button (with `onClick`) or text. Handlers receive `HTMLElement` events and
@@ -562,6 +691,16 @@ export declare interface BreadcrumbProps extends React_2.HTMLAttributes<HTMLElem
562
691
  */
563
692
  export declare const Button: PolymorphicComponent<'button', ButtonOwnProps>;
564
693
 
694
+ /**
695
+ * Button: `root` on the rendered element (`<button>`, or your `as`); `icon` on the icon box.
696
+ * Style them from your own CSS (`.wave-button`, `.wave-button__icon`). State is not a class: use
697
+ * the `data-*` attributes (`[data-pressed]`, `[data-disabled]`).
698
+ */
699
+ export declare const buttonClassNames: {
700
+ readonly root: "wave-button";
701
+ readonly icon: "wave-button__icon";
702
+ };
703
+
565
704
  /**
566
705
  * The Button's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).
567
706
  * Every other prop comes from the rendered element (`as`), so `as="a"` accepts `href`/`target`
@@ -668,12 +807,27 @@ export declare const Card: PolymorphicComponent<"div", CardOwnProps> & {
668
807
  */
669
808
  export declare const CardBody: PolymorphicComponent<'div', CardBodyOwnProps>;
670
809
 
810
+ /** Card.Body: `root` on the rendered element. */
811
+ export declare const cardBodyClassNames: {
812
+ readonly root: "wave-card-body";
813
+ };
814
+
671
815
  /** The Card.Body's own props: none besides the element's (component-specific props only). */
672
816
  export declare type CardBodyOwnProps = Record<never, never>;
673
817
 
674
818
  /** Props of {@link CardBody} rendered as `C` (default `'div'`), including `ref`. */
675
819
  export declare type CardBodyProps<C extends React_2.ElementType = 'div'> = PolymorphicProps<C, CardBodyOwnProps>;
676
820
 
821
+ /**
822
+ * Card: `root` on the rendered element (your `as`, default `<div>`); `checkbox` on the built-in
823
+ * selection checkbox; `checkmark` on the corner check `<svg>` of a selected card.
824
+ */
825
+ export declare const cardClassNames: {
826
+ readonly root: "wave-card";
827
+ readonly checkbox: "wave-card__checkbox";
828
+ readonly checkmark: "wave-card__checkmark";
829
+ };
830
+
677
831
  /**
678
832
  * The action row of a {@link Card} (end-aligned). A selectable card with actions here needs
679
833
  * `selectionControl="checkbox"`. Flat export for React Server Components (`Card.Footer` in client
@@ -681,6 +835,11 @@ export declare type CardBodyProps<C extends React_2.ElementType = 'div'> = Polym
681
835
  */
682
836
  export declare const CardFooter: PolymorphicComponent<'div', CardFooterOwnProps>;
683
837
 
838
+ /** Card.Footer: `root` on the rendered element. */
839
+ export declare const cardFooterClassNames: {
840
+ readonly root: "wave-card-footer";
841
+ };
842
+
684
843
  /** The Card.Footer's own props: none besides the element's (component-specific props only). */
685
844
  export declare type CardFooterOwnProps = Record<never, never>;
686
845
 
@@ -693,6 +852,13 @@ export declare type CardFooterProps<C extends React_2.ElementType = 'div'> = Pol
693
852
  */
694
853
  export declare const CardHeader: PolymorphicComponent<'div', CardHeaderOwnProps>;
695
854
 
855
+ /** Card.Header: `root` on the rendered element; `title` on the title; `subtitle` on the subtitle. */
856
+ export declare const cardHeaderClassNames: {
857
+ readonly root: "wave-card-header";
858
+ readonly title: "wave-card-header__title";
859
+ readonly subtitle: "wave-card-header__subtitle";
860
+ };
861
+
696
862
  /** The Card.Header's own props (component-specific props only). */
697
863
  export declare interface CardHeaderOwnProps {
698
864
  /**
@@ -815,6 +981,24 @@ export declare interface CarouselAutoPlayLabels {
815
981
  play?: string;
816
982
  }
817
983
 
984
+ /**
985
+ * Carousel: `root` on the `role="region"` element; `autoPlayButton` on the pause and start
986
+ * button; `track` on the moving element around the slides; `slide` on each slide wrapper;
987
+ * `previousButton` and `nextButton` on the arrow buttons; `picker` on the `role="group"` of
988
+ * picker buttons; `pickerButton` on each of them; `pickerIndicator` on each button's dot.
989
+ */
990
+ export declare const carouselClassNames: {
991
+ readonly root: "wave-carousel";
992
+ readonly autoPlayButton: "wave-carousel__auto-play-button";
993
+ readonly track: "wave-carousel__track";
994
+ readonly slide: "wave-carousel__slide";
995
+ readonly previousButton: "wave-carousel__previous-button";
996
+ readonly nextButton: "wave-carousel__next-button";
997
+ readonly picker: "wave-carousel__picker";
998
+ readonly pickerButton: "wave-carousel__picker-button";
999
+ readonly pickerIndicator: "wave-carousel__picker-indicator";
1000
+ };
1001
+
818
1002
  /**
819
1003
  * One slide of a {@link Carousel}. Write it in the Carousel, directly or in a Fragment: a component
820
1004
  * that renders `Carousel.Item` itself is not recognised as a slide (put that component inside the
@@ -825,6 +1009,11 @@ export declare const CarouselItem: {
825
1009
  displayName: string;
826
1010
  };
827
1011
 
1012
+ /** Carousel.Item: `root` on the item element. */
1013
+ export declare const carouselItemClassNames: {
1014
+ readonly root: "wave-carousel-item";
1015
+ };
1016
+
828
1017
  /** Properties for the CarouselItem sub-component. */
829
1018
  export declare interface CarouselItemProps extends React_2.HTMLAttributes<HTMLDivElement> {
830
1019
  ref?: React_2.Ref<HTMLDivElement>;
@@ -933,6 +1122,16 @@ export declare const Checkbox: {
933
1122
  displayName: string;
934
1123
  };
935
1124
 
1125
+ /**
1126
+ * Checkbox: `root` on the `<label>`; `indicator` on the `role="checkbox"` button (the box);
1127
+ * `label` on the label text.
1128
+ */
1129
+ export declare const checkboxClassNames: {
1130
+ readonly root: "wave-checkbox";
1131
+ readonly indicator: "wave-checkbox__indicator";
1132
+ readonly label: "wave-checkbox__label";
1133
+ };
1134
+
936
1135
  /** Handlers that run on the `role="checkbox"` button instead of the root label (C-ROUTING). */
937
1136
  declare type CheckboxControlHandlers = 'onClick' | 'onFocus' | 'onBlur' | 'onKeyDown' | 'onKeyUp';
938
1137
 
@@ -1060,43 +1259,213 @@ export declare type CheckedValuesChangeHandler = (checkedValues: Record<string,
1060
1259
  export declare function cn(...inputs: ClassValue[]): string;
1061
1260
 
1062
1261
  /**
1063
- * A color picker: a preview, a hex text field, optional preset swatches and an optional opacity
1064
- * slider, grouped as a named `role="group"`.
1065
- *
1066
- * - **Value**: a hex color, `#rrggbb` or `#rrggbbaa`. The opacity slider shows and edits the
1067
- * value's alpha byte; picking a preset or typing a 6-digit hex keeps the current opacity.
1068
- * - **Hex field**: the text is a draft (surrounding whitespace is dropped). Complete 6- or 8-digit
1069
- * values are applied while typing; text that can never be a hex color is flagged at once
1070
- * (`aria-invalid` plus the `hexError` description). Leaving the field or pressing Enter applies
1071
- * a short `#rgb` (keeping the current opacity) or `#rgba`, then shows the current value again
1072
- * (also when a controlled parent rejected the typed color); an empty field (or a lone `#`) also
1073
- * shows the current value again. Any other text is kept and flagged instead of being thrown
1074
- * away, until it is corrected, cleared, or the value changes from elsewhere (a preset, the
1075
- * opacity slider, the parent, a form reset). Enter still submits the surrounding form, with the
1076
- * color just applied; while the text is flagged, the form submits the last applied color.
1262
+ * A 2-D color field: saturation from left to right (mirrored in right-to-left layouts) and
1263
+ * brightness from bottom to top, at the value's hue. ArrowLeft and ArrowRight move saturation by
1264
+ * 1 %, ArrowUp and ArrowDown brightness; Shift with an arrow moves by 10, Page Up and Page Down
1265
+ * move brightness by 10, and Home and End set saturation to 0 and 100. A press or drag (mouse,
1266
+ * touch or pen) moves the thumb to the pointer. It is one Tab stop holding two sliders for
1267
+ * assistive technology, "Saturation" and "Brightness", whose value texts start with their own
1268
+ * channel and name the color; focus follows the axis a key moves, and unless the primary pointer
1269
+ * is coarse (touch), only the slider with the Tab stop is exposed. Inside a ColorPicker, leave
1270
+ * `value` and `defaultValue` out and it binds to the picker. Fluent's
1271
+ * `ColorArea`, with `value`/`onValueChange` for its `color`/`onChange`.
1272
+ *
1273
+ * @example
1274
+ * <ColorArea aria-label="Accent color" value={color} onValueChange={setColor} />
1275
+ */
1276
+ export declare const ColorArea: {
1277
+ ({ value, defaultValue, onValueChange, shape, labels, disabled, name, form, required, controlRef, className, style, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, "aria-errormessage": ariaErrorMessage, autoFocus, tabIndex, onKeyDown, onPointerDown, onPointerMove, ref, ...rest }: ColorAreaProps): React_2.JSX.Element;
1278
+ displayName: string;
1279
+ };
1280
+
1281
+ /**
1282
+ * ColorArea: `root` on the `role="group"` element; `field` on the gradient layer; `thumb` on the
1283
+ * thumb (the two range inputs are not parts).
1284
+ */
1285
+ export declare const colorAreaClassNames: {
1286
+ readonly root: "wave-color-area";
1287
+ readonly field: "wave-color-area__field";
1288
+ readonly thumb: "wave-color-area__thumb";
1289
+ };
1290
+
1291
+ /** Texts of a ColorArea, for localisation. Every key is optional. */
1292
+ export declare interface ColorAreaLabels {
1293
+ /** Name of the horizontal slider.
1294
+ * @default 'Saturation'
1295
+ */
1296
+ saturation?: string;
1297
+ /** Name of the vertical slider (the `value` channel).
1298
+ * @default 'Brightness'
1299
+ */
1300
+ brightness?: string;
1301
+ /** Role description of both sliders.
1302
+ * @default '2D slider'
1303
+ */
1304
+ roleDescription?: string;
1305
+ /** Names the color at the end of each value text; return `''` to leave it out.
1306
+ * @default an English namer ("dark blue")
1307
+ */
1308
+ colorName?: (color: HsvColor) => string;
1309
+ /** Replaces a whole value text, for languages whose order differs. */
1310
+ valueText?: (color: HsvColor, channel: 'saturation' | 'value') => string;
1311
+ }
1312
+
1313
+ /** Properties for the ColorArea component. */
1314
+ export declare interface ColorAreaProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {
1315
+ /**
1316
+ * The color (Fluent's `color`). Inside a ColorPicker, leave `value` and `defaultValue` out to
1317
+ * bind the area to the picker.
1318
+ */
1319
+ value?: HsvColor;
1320
+ /**
1321
+ * Initial color for uncontrolled usage (also what a form reset restores).
1322
+ * @default the brand blue, `{ h: 208, s: 0.92, v: 0.74 }` (`#0f6cbd`)
1323
+ */
1324
+ defaultValue?: HsvColor;
1325
+ /**
1326
+ * Called with the new color on every step (a key, a pointer move or assistive technology) that
1327
+ * changes it (Fluent's `onChange`). A bound area calls it too.
1328
+ */
1329
+ onValueChange?: (value: HsvColor) => void;
1330
+ /**
1331
+ * `'square'` removes the corner radius (the thumb stays round). Bound to a ColorPicker, the
1332
+ * picker's shape unless you pass one.
1333
+ * @default 'rounded'
1334
+ */
1335
+ shape?: ColorPickerShape;
1336
+ /** Texts of the area; bound to a ColorPicker, the picker's `labels` fill the keys you leave out. */
1337
+ labels?: ColorAreaLabels;
1338
+ /**
1339
+ * Unavailable: both inputs are natively disabled, pointer presses are ignored and the area is
1340
+ * dimmed. A bound area is also disabled while the picker's value is not a hex color.
1341
+ * @default false
1342
+ */
1343
+ disabled?: boolean;
1344
+ /** Form field name: the color is submitted as hex (`hsvToHex`). Ignored while bound to a ColorPicker. */
1345
+ name?: string;
1346
+ /** Id of the form the area belongs to, when it is rendered outside that form. */
1347
+ form?: string;
1348
+ /**
1349
+ * Marks the hidden form input required (a color is always set, so it never blocks). A consumer
1350
+ * `aria-required` does the same: a group supports neither, so neither is set on it.
1351
+ */
1352
+ required?: boolean;
1353
+ /** Ref to the saturation `<input type="range">`. */
1354
+ controlRef?: React_2.Ref<HTMLInputElement>;
1355
+ /** Ref to the root `role="group"` element. */
1356
+ ref?: React_2.Ref<HTMLDivElement>;
1357
+ }
1358
+
1359
+ /**
1360
+ * A color picker whose value is a hex string (`#rrggbb`, or `#rrggbbaa` with an alpha byte),
1361
+ * grouped as a named `role="group"`.
1362
+ *
1363
+ * - **Default layout** (no children): a color area (saturation and brightness) and a hue slider,
1364
+ * then a preview and the hex field, preset swatches and, with `showOpacity`, an opacity row
1365
+ * whose slider is an `AlphaSlider` (0–100 %). Dragging to gray, white or black keeps the hue.
1366
+ * - **Your own layout** (children): `ColorArea`, `ColorSlider` and `AlphaSlider`, which bind to
1367
+ * the picker while they have neither `value` nor `defaultValue`, and the parts
1368
+ * `ColorPicker.HexField`, `ColorPicker.Swatches` and `ColorPicker.Preview`.
1369
+ * - **Hex field**: the text is a draft. Complete 6- and 8-digit values apply while typing; text
1370
+ * that can never be a hex color is flagged at once (`aria-invalid` plus the `hexError`
1371
+ * description). Leaving the field or pressing Enter applies a short `#rgb` (keeping the current
1372
+ * opacity) or `#rgba`, then shows the current value again; other text stays flagged until it is
1373
+ * corrected, cleared, or the value changes from elsewhere. Enter still submits the surrounding
1374
+ * form, with the color just applied.
1077
1375
  * - **Presets** render as a SwatchPicker radiogroup ("Preset colors"): one tab stop, arrow keys
1078
- * move and pick, and the selected preset shows a ring and a check glyph.
1079
- * - **Naming**: `aria-label`/`aria-labelledby` name the group; inside a `Field` its label does, and
1080
- * the Field's hint and error describe the group. The invalid state (`aria-invalid`, from the
1081
- * Field or the prop) is set on the hex field, since `role="group"` does not support it, and the
1082
- * hex field is then also described by the Field's error and by a consumer `aria-errormessage`
1083
- * (which is routed to the hex field too). A consumer `aria-required` makes the hidden form input
1084
- * required instead of reaching the group. The texts of the picker's own parts are localised with
1085
- * `labels`.
1376
+ * move and pick, and picking keeps the current opacity.
1377
+ * - **Naming**: `aria-label`/`aria-labelledby` name the group; inside a `Field` its label does,
1378
+ * and the Field's hint and error describe the group. The invalid state (`aria-invalid`, from the
1379
+ * Field or the prop) is set on the hex field, since `role="group"` does not support it, and a
1380
+ * consumer `aria-errormessage` goes there too. A consumer `aria-required` makes the hidden form
1381
+ * input required instead. The built-in texts are localised with `labels`.
1086
1382
  * - **Forms**: with `name` the color is submitted with the form; a form reset restores
1087
1383
  * `defaultValue` and reports it through `onValueChange` only when the color changes.
1088
1384
  *
1385
+ * React Server Components cannot dot into a client module: import the flat names
1386
+ * `ColorPickerHexField`, `ColorPickerSwatches` and `ColorPickerPreview` there;
1387
+ * `ColorPicker.HexField` etc. work in client files.
1388
+ *
1089
1389
  * @example
1090
1390
  * <ColorPicker aria-label="Accent color" showOpacity value={color} onValueChange={setColor} />
1391
+ *
1392
+ * <ColorPicker aria-label="Accent color" value={color} onValueChange={setColor}>
1393
+ * <ColorArea />
1394
+ * <ColorSlider />
1395
+ * <ColorPicker.HexField />
1396
+ * </ColorPicker>
1091
1397
  */
1092
1398
  export declare const ColorPicker: {
1093
- ({ value: valueProp, defaultValue, onValueChange, onChange, presets, showOpacity, labels, name, required, form, className, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, "aria-errormessage": ariaErrorMessage, ref, ...rest }: ColorPickerProps): React_2.JSX.Element;
1399
+ ({ value: valueProp, defaultValue, onValueChange, onChange, presets, showOpacity, labels, shape, name, required, form, className, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, "aria-errormessage": ariaErrorMessage, children, ref, ...rest }: ColorPickerProps): React_2.JSX.Element;
1094
1400
  displayName: string;
1401
+ } & {
1402
+ HexField: {
1403
+ ({ id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-errormessage": ariaErrorMessage, "aria-details": ariaDetails, "aria-required": ariaRequired, autoFocus, tabIndex, onFocus, onBlur, onKeyDown, onKeyUp, inputMode, enterKeyHint, autoCapitalize, autoCorrect, spellCheck, controlRef, className, ref, ...rest }: ColorPickerHexFieldProps): React_2.JSX.Element;
1404
+ displayName: string;
1405
+ };
1406
+ Swatches: {
1407
+ ({ className, "aria-label": ariaLabel, size, shape, ...rest }: ColorPickerSwatchesProps): React_2.JSX.Element | null;
1408
+ displayName: string;
1409
+ };
1410
+ Preview: {
1411
+ ({ className, style, ref, ...rest }: ColorPickerPreviewProps): React_2.JSX.Element;
1412
+ displayName: string;
1413
+ };
1095
1414
  };
1096
1415
 
1097
1416
  /**
1098
- * Texts of the ColorPicker's own parts, for localisation. Every key is optional; missing keys use
1099
- * the English default.
1417
+ * ColorPicker: `root` on the `role="group"` element; `opacityLabel` on the caption and
1418
+ * `opacityValue` on the percentage of the default layout's opacity row. Its color area and
1419
+ * sliders carry their own classes (ColorArea, ColorSlider, AlphaSlider).
1420
+ */
1421
+ export declare const colorPickerClassNames: {
1422
+ readonly root: "wave-color-picker";
1423
+ readonly opacityLabel: "wave-color-picker__opacity-label";
1424
+ readonly opacityValue: "wave-color-picker__opacity-value";
1425
+ };
1426
+
1427
+ /**
1428
+ * The hex text field of a ColorPicker: a caption, the input and its error. The text is a draft:
1429
+ * complete 6- and 8-digit values apply while typing, text that can never be a hex color is
1430
+ * flagged at once, and leaving the field (or Enter) applies a short `#rgb`/`#rgba` and shows the
1431
+ * value again; other text stays flagged until it is corrected, cleared, or the value changes from
1432
+ * elsewhere (a preset, another part, the parent, a form reset). Inside a Field it carries the
1433
+ * Field's invalid state and error. Must be inside a ColorPicker. Also exported as
1434
+ * `ColorPickerHexField` (import the flat name in React Server Components).
1435
+ */
1436
+ export declare const ColorPickerHexField: {
1437
+ ({ id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-errormessage": ariaErrorMessage, "aria-details": ariaDetails, "aria-required": ariaRequired, autoFocus, tabIndex, onFocus, onBlur, onKeyDown, onKeyUp, inputMode, enterKeyHint, autoCapitalize, autoCorrect, spellCheck, controlRef, className, ref, ...rest }: ColorPickerHexFieldProps): React_2.JSX.Element;
1438
+ displayName: string;
1439
+ };
1440
+
1441
+ /**
1442
+ * ColorPicker.HexField: `root` on the field's outer element; `label` on the caption; `input` on
1443
+ * the hex `<input>`; `errorMessage` on the error text.
1444
+ */
1445
+ export declare const colorPickerHexFieldClassNames: {
1446
+ readonly root: "wave-color-picker-hex-field";
1447
+ readonly label: "wave-color-picker-hex-field__label";
1448
+ readonly input: "wave-color-picker-hex-field__input";
1449
+ readonly errorMessage: "wave-color-picker-hex-field__error-message";
1450
+ };
1451
+
1452
+ /**
1453
+ * Properties for the ColorPickerHexField sub-component. `id`, the labelling and validation
1454
+ * `aria-*` (`aria-label`, `aria-labelledby`, `aria-describedby`, `aria-invalid`,
1455
+ * `aria-errormessage`, `aria-details`, `aria-required`), `autoFocus`, `tabIndex`, the focus and key
1456
+ * handlers and the text-entry attributes (`inputMode`, `enterKeyHint`, `autoCapitalize`,
1457
+ * `autoCorrect`, `spellCheck`) go to the `<input>`; everything else stays on the outer label.
1458
+ */
1459
+ export declare interface ColorPickerHexFieldProps extends React_2.HTMLAttributes<HTMLElement> {
1460
+ /** Ref to the hex `<input>`. */
1461
+ controlRef?: React_2.Ref<HTMLInputElement>;
1462
+ /** Ref to the field's outer element: the label around the caption, the input and the error. */
1463
+ ref?: React_2.Ref<HTMLLabelElement>;
1464
+ }
1465
+
1466
+ /**
1467
+ * Texts of the ColorPicker's own parts and of the color parts bound to it, for localisation.
1468
+ * Every key is optional; missing keys use the English default.
1100
1469
  */
1101
1470
  export declare interface ColorPickerLabels {
1102
1471
  /** Visible caption above the hex field.
@@ -1116,10 +1485,41 @@ export declare interface ColorPickerLabels {
1116
1485
  * @default 'Preset colors'
1117
1486
  */
1118
1487
  presets?: string;
1119
- /** Visible label and accessible name of the opacity slider.
1488
+ /** Visible label of the opacity row and accessible name of the opacity slider (a bound
1489
+ * `AlphaSlider`).
1120
1490
  * @default 'Opacity'
1121
1491
  */
1122
1492
  opacity?: string;
1493
+ /** Accessible name of a bound `ColorArea`'s group.
1494
+ * @default 'Saturation and brightness'
1495
+ */
1496
+ area?: string;
1497
+ /** Name of a bound area's saturation slider and of a bound `channel="saturation"` slider.
1498
+ * @default 'Saturation'
1499
+ */
1500
+ saturation?: string;
1501
+ /** Name of a bound area's brightness slider and of a bound `channel="value"` slider.
1502
+ * @default 'Brightness'
1503
+ */
1504
+ brightness?: string;
1505
+ /** Role description of a bound area's two sliders.
1506
+ * @default '2D slider'
1507
+ */
1508
+ roleDescription?: string;
1509
+ /** Name of a bound hue slider.
1510
+ * @default 'Hue'
1511
+ */
1512
+ hue?: string;
1513
+ /** Name of a bound `AlphaSlider` with `transparency`.
1514
+ * @default 'Transparency'
1515
+ */
1516
+ transparency?: string;
1517
+ /** Names the color at the end of the bound parts' value texts; return `''` to leave it out.
1518
+ * @default an English namer ("dark blue")
1519
+ */
1520
+ colorName?: (color: HsvColor) => string;
1521
+ /** Replaces a whole value text of a bound part, for languages whose order differs. */
1522
+ valueText?: (color: HsvColor, channel: 'hue' | 'saturation' | 'value' | 'alpha') => string;
1123
1523
  }
1124
1524
 
1125
1525
  /** A named preset color. */
@@ -1134,6 +1534,26 @@ export declare interface ColorPickerPreset {
1134
1534
  label: string;
1135
1535
  }
1136
1536
 
1537
+ /**
1538
+ * A swatch of the picker's current color (decorative, `aria-hidden`); it keeps its color in forced
1539
+ * colors and follows the picker's `shape`. Must be inside a ColorPicker. Also exported as
1540
+ * `ColorPickerPreview`.
1541
+ */
1542
+ export declare const ColorPickerPreview: {
1543
+ ({ className, style, ref, ...rest }: ColorPickerPreviewProps): React_2.JSX.Element;
1544
+ displayName: string;
1545
+ };
1546
+
1547
+ /** ColorPicker.Preview: `root` on the preview swatch. */
1548
+ export declare const colorPickerPreviewClassNames: {
1549
+ readonly root: "wave-color-picker-preview";
1550
+ };
1551
+
1552
+ /** Properties for the ColorPickerPreview sub-component. */
1553
+ export declare interface ColorPickerPreviewProps extends React_2.HTMLAttributes<HTMLDivElement> {
1554
+ ref?: React_2.Ref<HTMLDivElement>;
1555
+ }
1556
+
1137
1557
  /** Properties for the ColorPicker component. */
1138
1558
  export declare interface ColorPickerProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
1139
1559
  /**
@@ -1164,16 +1584,34 @@ export declare interface ColorPickerProps extends Omit<React_2.HTMLAttributes<HT
1164
1584
  * skipped (development warning). Picking a preset keeps the current opacity, so a preset's alpha
1165
1585
  * digits are ignored. With an alpha below `f`/`ff` (`#rgba`, `#rrggbbaa`) there is a development
1166
1586
  * warning, and a string preset is announced by the `#rrggbb` color it applies; an opaque alpha
1167
- * (`#rgbf`, `#rrggbbff`) changes nothing, and the string stays the name as written.
1587
+ * (`#rgbf`, `#rrggbbff`) changes nothing, and the string stays the name as written. With
1588
+ * `children`, the presets feed only `ColorPicker.Swatches`.
1168
1589
  * @default Blue, Red, Green, Yellow, Purple, Teal, Pink and Black (Fluent brand colors)
1169
1590
  */
1170
1591
  presets?: ReadonlyArray<string | ColorPickerPreset>;
1171
- /** Whether to show the opacity slider. The opacity is the alpha byte of `value`.
1592
+ /**
1593
+ * Whether the default layout shows the opacity row: the caption, an alpha slider (0–100 %,
1594
+ * named by `labels.opacity`) and the percentage. The opacity is the alpha byte of `value`. Does
1595
+ * nothing with `children`.
1172
1596
  * @default false
1173
1597
  */
1174
1598
  showOpacity?: boolean;
1175
- /** Texts of the picker's own parts (hex field, error, presets, opacity), for localisation. */
1599
+ /** Texts of the picker's own parts and of the color parts bound to it, for localisation. */
1176
1600
  labels?: ColorPickerLabels;
1601
+ /**
1602
+ * `'square'` removes the corner radius of the preview and of the area and the rails of the
1603
+ * color parts bound to it, including those of the default layout.
1604
+ * @default 'rounded'
1605
+ */
1606
+ shape?: ColorPickerShape;
1607
+ /**
1608
+ * Your own layout: `ColorArea`, `ColorSlider` and `AlphaSlider` (bound to the picker while they
1609
+ * have neither `value` nor `defaultValue`) and the parts `ColorPicker.HexField`,
1610
+ * `ColorPicker.Swatches` and `ColorPicker.Preview`. Without children the picker renders its
1611
+ * default layout. With children, `showOpacity` does nothing and `presets` feed only
1612
+ * `ColorPicker.Swatches`.
1613
+ */
1614
+ children?: React_2.ReactNode;
1177
1615
  /** Form field name. With a name, the current color is submitted with the form. */
1178
1616
  name?: string;
1179
1617
  /**
@@ -1188,6 +1626,131 @@ export declare interface ColorPickerProps extends Omit<React_2.HTMLAttributes<HT
1188
1626
  ref?: React_2.Ref<HTMLDivElement>;
1189
1627
  }
1190
1628
 
1629
+ /** The shape of ColorPicker and its color parts (a subset of `Shape`). */
1630
+ export declare type ColorPickerShape = Extract<Shape, 'rounded' | 'square'>;
1631
+
1632
+ /**
1633
+ * The picker's `presets` as swatches (a SwatchPicker named by `labels.presets`, small and rounded
1634
+ * unless you pass `size` or `shape`). Picking one keeps the opacity. Renders nothing without
1635
+ * presets. Must be inside a ColorPicker. Also exported as `ColorPickerSwatches`.
1636
+ */
1637
+ export declare const ColorPickerSwatches: {
1638
+ ({ className, "aria-label": ariaLabel, size, shape, ...rest }: ColorPickerSwatchesProps): React_2.JSX.Element | null;
1639
+ displayName: string;
1640
+ };
1641
+
1642
+ /**
1643
+ * ColorPicker.Swatches (also carries SwatchPicker's root): `root` on the SwatchPicker it renders;
1644
+ * its swatches keep SwatchPicker's own `swatch` class.
1645
+ */
1646
+ export declare const colorPickerSwatchesClassNames: {
1647
+ readonly root: "wave-color-picker-swatches";
1648
+ };
1649
+
1650
+ /** Properties for the ColorPickerSwatches sub-component: the picker's `presets` as a SwatchPicker. */
1651
+ export declare type ColorPickerSwatchesProps = Omit<SwatchPickerProps, 'items' | 'value' | 'defaultValue' | 'onValueChange' | 'onChange' | 'name' | 'form' | 'required'>;
1652
+
1653
+ /**
1654
+ * A slider for one channel of an HSV color: hue (the default), saturation or brightness
1655
+ * (`channel="value"`), horizontal (mirrored in right-to-left layouts) or vertical (bottom to top).
1656
+ * The arrow keys move by 1 (hue in degrees, the others in percent), Shift with an arrow and Page
1657
+ * Up or Page Down by 10, Home and End to the ends. It is named by `aria-label`, else the
1658
+ * surrounding Field's label, else "Hue", "Saturation" or "Brightness"; a hue slider's value text
1659
+ * names the color ("210°, blue"). Inside a ColorPicker, leave `value` and `defaultValue` out and
1660
+ * it binds to the picker. Fluent's `ColorSlider`, with `value`/`onValueChange` for its
1661
+ * `color`/`onChange` and `orientation` for its `vertical`.
1662
+ *
1663
+ * @example
1664
+ * <ColorSlider value={color} onValueChange={setColor} />
1665
+ */
1666
+ export declare const ColorSlider: {
1667
+ ({ channel, orientation, value, defaultValue, onValueChange, shape, labels, disabled, name, form, required, controlRef, className, style, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, "aria-errormessage": ariaErrorMessage, "aria-details": ariaDetails, autoFocus, tabIndex, onFocus, onBlur, onKeyDown, onKeyUp, ref, ...rest }: ColorSliderProps): React_2.JSX.Element;
1668
+ displayName: string;
1669
+ };
1670
+
1671
+ /** ColorSlider: `root` on the slider element; `rail` on the gradient rail; `thumb` on the thumb. */
1672
+ export declare const colorSliderClassNames: {
1673
+ readonly root: "wave-color-slider";
1674
+ readonly rail: "wave-color-slider__rail";
1675
+ readonly thumb: "wave-color-slider__thumb";
1676
+ };
1677
+
1678
+ /** Texts of a ColorSlider, for localisation. Every key is optional. */
1679
+ export declare interface ColorSliderLabels {
1680
+ /** Name of a hue slider.
1681
+ * @default 'Hue'
1682
+ */
1683
+ hue?: string;
1684
+ /** Name of a `channel="saturation"` slider.
1685
+ * @default 'Saturation'
1686
+ */
1687
+ saturation?: string;
1688
+ /** Name of a `channel="value"` slider.
1689
+ * @default 'Brightness'
1690
+ */
1691
+ brightness?: string;
1692
+ /** Names the color at the end of a hue slider's value text; return `''` to leave it out.
1693
+ * @default an English namer ("blue")
1694
+ */
1695
+ colorName?: (color: HsvColor) => string;
1696
+ /** Replaces the value text, for languages whose order differs. */
1697
+ valueText?: (color: HsvColor, channel: 'hue' | 'saturation' | 'value') => string;
1698
+ }
1699
+
1700
+ /** Properties for the ColorSlider component. */
1701
+ export declare interface ColorSliderProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {
1702
+ /** The channel the slider edits.
1703
+ * @default 'hue'
1704
+ */
1705
+ channel?: 'hue' | 'saturation' | 'value';
1706
+ /** `'vertical'` draws the rail from bottom to top (Fluent's `vertical`).
1707
+ * @default 'horizontal'
1708
+ */
1709
+ orientation?: Orientation;
1710
+ /**
1711
+ * The color (Fluent's `color`). Inside a ColorPicker, leave `value` and `defaultValue` out to
1712
+ * bind the slider to the picker.
1713
+ */
1714
+ value?: HsvColor;
1715
+ /**
1716
+ * Initial color for uncontrolled usage (also what a form reset restores).
1717
+ * @default the brand blue, `{ h: 208, s: 0.92, v: 0.74 }` (`#0f6cbd`)
1718
+ */
1719
+ defaultValue?: HsvColor;
1720
+ /**
1721
+ * Called with the new color on every step (a key, the pointer or assistive technology) that
1722
+ * changes it (Fluent's `onChange`). A bound slider calls it too.
1723
+ */
1724
+ onValueChange?: (value: HsvColor) => void;
1725
+ /**
1726
+ * `'square'` removes the corner radius of the rail (the thumb stays round). Bound to a
1727
+ * ColorPicker, the picker's shape unless you pass one.
1728
+ * @default 'rounded'
1729
+ */
1730
+ shape?: ColorPickerShape;
1731
+ /** Texts of the slider; bound to a ColorPicker, the picker's `labels` fill the keys you leave out. */
1732
+ labels?: ColorSliderLabels;
1733
+ /**
1734
+ * Unavailable: the input is natively disabled and the slider dimmed. A bound slider is also
1735
+ * disabled while the picker's value is not a hex color.
1736
+ * @default false
1737
+ */
1738
+ disabled?: boolean;
1739
+ /** Form field name: the color is submitted as hex (`hsvToHex`). Ignored while bound to a ColorPicker. */
1740
+ name?: string;
1741
+ /** Id of the form the slider belongs to, when it is rendered outside that form. */
1742
+ form?: string;
1743
+ /**
1744
+ * Marks the hidden form input required (a color is always set, so it never blocks). A consumer
1745
+ * `aria-required` does the same: a slider supports neither, so neither is set on it.
1746
+ */
1747
+ required?: boolean;
1748
+ /** Ref to the `<input type="range">`. */
1749
+ controlRef?: React_2.Ref<HTMLInputElement>;
1750
+ /** Ref to the root element. */
1751
+ ref?: React_2.Ref<HTMLDivElement>;
1752
+ }
1753
+
1191
1754
  /**
1192
1755
  * An editable combobox: a text input with a filterable listbox of `Option`s (APG combobox with
1193
1756
  * list autocomplete). Typing filters the options; ArrowDown/ArrowUp move the highlight
@@ -1220,6 +1783,23 @@ export declare const Combobox: {
1220
1783
  OptionGroup: React_2.FC<OptionGroupProps>;
1221
1784
  };
1222
1785
 
1786
+ /**
1787
+ * Combobox: `root` on the outer element; `input` on the `role="combobox"` input; `clearButton` on
1788
+ * the clear button; `expandButton` on the expand button and `expandIcon` on its glyph; `listbox`
1789
+ * on the `role="listbox"` list; `surface` on its portaled popup; `emptyMessage` on the
1790
+ * "No matches" row.
1791
+ */
1792
+ export declare const comboboxClassNames: {
1793
+ readonly root: "wave-combobox";
1794
+ readonly input: "wave-combobox__input";
1795
+ readonly clearButton: "wave-combobox__clear-button";
1796
+ readonly expandButton: "wave-combobox__expand-button";
1797
+ readonly expandIcon: "wave-combobox__expand-icon";
1798
+ readonly listbox: "wave-combobox__listbox";
1799
+ readonly surface: "wave-combobox__surface";
1800
+ readonly emptyMessage: "wave-combobox__empty-message";
1801
+ };
1802
+
1223
1803
  /**
1224
1804
  * The Combobox's built-in texts, for localization. Each member is optional and falls back to its
1225
1805
  * English default.
@@ -1397,6 +1977,19 @@ export declare function composeEventHandlers<E extends {
1397
1977
  */
1398
1978
  export declare const CompoundButton: PolymorphicComponent<'button', CompoundButtonOwnProps>;
1399
1979
 
1980
+ /**
1981
+ * CompoundButton (also carries Button's root and icon classes): `root` on the rendered element;
1982
+ * `icon` on the icon box (Button's icon span in the icon-only layout); `contentContainer` on the
1983
+ * text column; `primaryText` on the main line; `secondaryText` on the second line.
1984
+ */
1985
+ export declare const compoundButtonClassNames: {
1986
+ readonly root: "wave-compound-button";
1987
+ readonly icon: "wave-compound-button__icon";
1988
+ readonly contentContainer: "wave-compound-button__content-container";
1989
+ readonly primaryText: "wave-compound-button__primary-text";
1990
+ readonly secondaryText: "wave-compound-button__secondary-text";
1991
+ };
1992
+
1400
1993
  /**
1401
1994
  * The CompoundButton's own props (the XOwnProps rule of `PolymorphicProps`: component-specific
1402
1995
  * props only). Every other prop comes from the rendered element (`as`).
@@ -1475,6 +2068,14 @@ export declare const CounterBadge: {
1475
2068
  displayName: string;
1476
2069
  };
1477
2070
 
2071
+ /**
2072
+ * CounterBadge (also carries Badge's root): `root` on the badge span (a count it does not show
2073
+ * renders no element).
2074
+ */
2075
+ export declare const counterBadgeClassNames: {
2076
+ readonly root: "wave-counter-badge";
2077
+ };
2078
+
1478
2079
  /** Properties for the CounterBadge component. */
1479
2080
  export declare interface CounterBadgeProps extends React_2.HTMLAttributes<HTMLSpanElement> {
1480
2081
  /**
@@ -1516,6 +2117,25 @@ export declare interface CounterBadgeProps extends React_2.HTMLAttributes<HTMLSp
1516
2117
  ref?: React_2.Ref<HTMLSpanElement>;
1517
2118
  }
1518
2119
 
2120
+ /**
2121
+ * Creates a handle. It touches no DOM, so a module-scope handle is safe during server rendering;
2122
+ * a dispatch on the server does nothing (it returns the id), so no toast is carried from one
2123
+ * request to the next.
2124
+ *
2125
+ * - `dispatchToast` returns the id at once: `toastId`, or one the handle generates.
2126
+ * - Before a Toaster binds the handle, dispatches wait in its queue, in dispatch order (a dispatch
2127
+ * with the id of a waiting one replaces it in place); `dismissToast` removes a waiting toast and
2128
+ * `dismissAllToasts` empties the queue. The Toaster that binds takes the queue.
2129
+ *
2130
+ * @example
2131
+ * export const appToaster = createToaster();
2132
+ * // <Toaster toaster={appToaster}><App /></Toaster>
2133
+ * queryClient.getMutationCache().config.onError = () => {
2134
+ * appToaster.dispatchToast({ status: 'error', title: 'Could not save' });
2135
+ * };
2136
+ */
2137
+ export declare function createToaster(): ToasterHandle;
2138
+
1519
2139
  /**
1520
2140
  * An interactive data table (`role="grid"`) following the APG Grid pattern: one tab stop,
1521
2141
  * arrow-key navigation between cells (Home/End, Ctrl+Home/Ctrl+End, PageUp/PageDown; Up/Down keep
@@ -1618,6 +2238,11 @@ export declare const DataGridBody: {
1618
2238
  displayName: string;
1619
2239
  };
1620
2240
 
2241
+ /** DataGrid.Body: `root` on the `<tbody>`. */
2242
+ export declare const dataGridBodyClassNames: {
2243
+ readonly root: "wave-data-grid-body";
2244
+ };
2245
+
1621
2246
  /** Properties for the DataGridBody sub-component. */
1622
2247
  export declare interface DataGridBodyProps extends React_2.HTMLAttributes<HTMLTableSectionElement> {
1623
2248
  /** DataGrid row elements. */
@@ -1632,6 +2257,11 @@ export declare const DataGridCell: {
1632
2257
  displayName: string;
1633
2258
  };
1634
2259
 
2260
+ /** DataGrid.Cell: `root` on the `role="gridcell"` cell. */
2261
+ export declare const dataGridCellClassNames: {
2262
+ readonly root: "wave-data-grid-cell";
2263
+ };
2264
+
1635
2265
  /** Properties for the DataGridCell sub-component. */
1636
2266
  export declare interface DataGridCellProps extends React_2.TdHTMLAttributes<HTMLTableCellElement> {
1637
2267
  /** Cell content. */
@@ -1640,6 +2270,12 @@ export declare interface DataGridCellProps extends React_2.TdHTMLAttributes<HTML
1640
2270
  ref?: React_2.Ref<HTMLTableCellElement>;
1641
2271
  }
1642
2272
 
2273
+ /** DataGrid: `root` on the grid element (`role="grid"`); `container` on the wrapper around it. */
2274
+ export declare const dataGridClassNames: {
2275
+ readonly root: "wave-data-grid";
2276
+ readonly container: "wave-data-grid__container";
2277
+ };
2278
+
1643
2279
  /** Defines a column in the DataGrid. */
1644
2280
  export declare interface DataGridColumn {
1645
2281
  /** Unique identifier for the column (the header cell's `columnId`). */
@@ -1687,6 +2323,16 @@ export declare const DataGridHeaderCell: {
1687
2323
  displayName: string;
1688
2324
  };
1689
2325
 
2326
+ /**
2327
+ * DataGrid.HeaderCell: `root` on the `<th>`; `button` on the sort button; `sortIcon` on its
2328
+ * direction `<svg>`.
2329
+ */
2330
+ export declare const dataGridHeaderCellClassNames: {
2331
+ readonly root: "wave-data-grid-header-cell";
2332
+ readonly button: "wave-data-grid-header-cell__button";
2333
+ readonly sortIcon: "wave-data-grid-header-cell__sort-icon";
2334
+ };
2335
+
1690
2336
  /** Properties for the DataGridHeaderCell sub-component. */
1691
2337
  export declare interface DataGridHeaderCellProps extends React_2.ThHTMLAttributes<HTMLTableCellElement> {
1692
2338
  /** Column ID used for sort tracking. Required for `sortable`. */
@@ -1703,6 +2349,16 @@ export declare interface DataGridHeaderCellProps extends React_2.ThHTMLAttribute
1703
2349
  ref?: React_2.Ref<HTMLTableCellElement>;
1704
2350
  }
1705
2351
 
2352
+ /**
2353
+ * DataGrid.Header: `root` on the `<thead>`; `selectionCell` on the selection column's cell of
2354
+ * each header row; `selectAllCheckbox` on its checkbox.
2355
+ */
2356
+ export declare const dataGridHeaderClassNames: {
2357
+ readonly root: "wave-data-grid-header";
2358
+ readonly selectionCell: "wave-data-grid-header__selection-cell";
2359
+ readonly selectAllCheckbox: "wave-data-grid-header__select-all-checkbox";
2360
+ };
2361
+
1706
2362
  /** Properties for the DataGridHeader sub-component. */
1707
2363
  export declare interface DataGridHeaderProps extends React_2.HTMLAttributes<HTMLTableSectionElement> {
1708
2364
  /**
@@ -1782,6 +2438,16 @@ export declare const DataGridRow: {
1782
2438
  displayName: string;
1783
2439
  };
1784
2440
 
2441
+ /**
2442
+ * DataGrid.Row: `root` on the `<tr>`; `selectionCell` on its selection cell; `selectionControl`
2443
+ * on the checkbox or radio in it.
2444
+ */
2445
+ export declare const dataGridRowClassNames: {
2446
+ readonly root: "wave-data-grid-row";
2447
+ readonly selectionCell: "wave-data-grid-row__selection-cell";
2448
+ readonly selectionControl: "wave-data-grid-row__selection-control";
2449
+ };
2450
+
1785
2451
  /** Properties for the DataGridRow sub-component. */
1786
2452
  export declare interface DataGridRowProps extends React_2.HTMLAttributes<HTMLTableRowElement> {
1787
2453
  /**
@@ -1868,6 +2534,30 @@ export declare const DatePicker: {
1868
2534
  displayName: string;
1869
2535
  };
1870
2536
 
2537
+ /**
2538
+ * DatePicker: `root` on the outer element; `input` on the text input; `clearButton` on the clear
2539
+ * button; `openCalendarButton` on the calendar button; `errorMessage` on the `role="alert"`
2540
+ * message; `surface` on the portaled `role="dialog"` calendar; `header` on its month row;
2541
+ * `previousMonthButton` and `nextMonthButton` on the month buttons; `heading` on the month
2542
+ * `<h2>`; `grid` on the calendar's `role="grid"` element; `weekday` on each weekday header cell;
2543
+ * `day` on each day button.
2544
+ */
2545
+ export declare const datePickerClassNames: {
2546
+ readonly root: "wave-date-picker";
2547
+ readonly input: "wave-date-picker__input";
2548
+ readonly clearButton: "wave-date-picker__clear-button";
2549
+ readonly openCalendarButton: "wave-date-picker__open-calendar-button";
2550
+ readonly errorMessage: "wave-date-picker__error-message";
2551
+ readonly surface: "wave-date-picker__surface";
2552
+ readonly header: "wave-date-picker__header";
2553
+ readonly previousMonthButton: "wave-date-picker__previous-month-button";
2554
+ readonly heading: "wave-date-picker__heading";
2555
+ readonly nextMonthButton: "wave-date-picker__next-month-button";
2556
+ readonly grid: "wave-date-picker__grid";
2557
+ readonly weekday: "wave-date-picker__weekday";
2558
+ readonly day: "wave-date-picker__day";
2559
+ };
2560
+
1871
2561
  /** Why typed text was not accepted (see {@link DatePickerProps.onInvalidInput}). */
1872
2562
  export declare type DatePickerInvalidReason = 'unparseable' | 'out-of-range' | 'disabled';
1873
2563
 
@@ -2135,7 +2825,10 @@ export declare interface DialogCloseRenderProps extends React_2.HTMLAttributes<H
2135
2825
  /**
2136
2826
  * The dialog surface, rendered in a portal (inheriting the WaveProvider theme) while the dialog is
2137
2827
  * open: backdrop, title, Close button and a scrolling body. It takes the full width up to its
2138
- * `size` and never exceeds the viewport (the body scrolls). It is `role="dialog"`, or
2828
+ * `size` and never exceeds the viewport (the body scrolls, also sideways for content wider than
2829
+ * the dialog). Its 1rem gap to the viewport edges is its own margin, so a margin in `className`
2830
+ * replaces the gap: with the width and height caps lifted as well and its height set to the
2831
+ * viewport's, it fills the viewport (a full-screen dialog). It is `role="dialog"`, or
2139
2832
  * `role="alertdialog"` when the Dialog has `modalType="alert"` (a `role` you pass wins), and
2140
2833
  * carries `data-modal-type` with the resolved type.
2141
2834
  */
@@ -2144,6 +2837,19 @@ export declare const DialogContent: {
2144
2837
  displayName: string;
2145
2838
  };
2146
2839
 
2840
+ /**
2841
+ * Dialog.Content: `root` on the surface (`role="dialog"` or `"alertdialog"`); `backdrop` on the
2842
+ * backdrop around it; `closeButton` on the built-in Close button (which also carries Button's
2843
+ * root); `body` on the scrolling body. The heading of its `title` prop carries Dialog.Title's
2844
+ * class.
2845
+ */
2846
+ export declare const dialogContentClassNames: {
2847
+ readonly root: "wave-dialog-content";
2848
+ readonly backdrop: "wave-dialog-content__backdrop";
2849
+ readonly closeButton: "wave-dialog-content__close-button";
2850
+ readonly body: "wave-dialog-content__body";
2851
+ };
2852
+
2147
2853
  /** Properties for the DialogContent sub-component. */
2148
2854
  export declare interface DialogContentProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'title'> {
2149
2855
  /**
@@ -2184,6 +2890,11 @@ export declare const DialogFooter: {
2184
2890
  displayName: string;
2185
2891
  };
2186
2892
 
2893
+ /** Dialog.Footer: `root` on the footer element. */
2894
+ export declare const dialogFooterClassNames: {
2895
+ readonly root: "wave-dialog-footer";
2896
+ };
2897
+
2187
2898
  /** Properties for the DialogFooter sub-component. */
2188
2899
  export declare interface DialogFooterProps extends React_2.HTMLAttributes<HTMLDivElement> {
2189
2900
  /** Footer content, typically action buttons (wrap closing buttons in `Dialog.Close`). */
@@ -2263,6 +2974,11 @@ export declare const DialogTitle: {
2263
2974
  displayName: string;
2264
2975
  };
2265
2976
 
2977
+ /** Dialog.Title: `root` on the `<h2>`. */
2978
+ export declare const dialogTitleClassNames: {
2979
+ readonly root: "wave-dialog-title";
2980
+ };
2981
+
2266
2982
  /** Properties for the DialogTitle sub-component. */
2267
2983
  export declare interface DialogTitleProps extends React_2.HTMLAttributes<HTMLHeadingElement> {
2268
2984
  /** The title; any content. */
@@ -2335,6 +3051,17 @@ export declare interface DialogTriggerRenderProps extends React_2.HTMLAttributes
2335
3051
  */
2336
3052
  export declare const Divider: PolymorphicComponent<'hr', DividerOwnProps>;
2337
3053
 
3054
+ /**
3055
+ * Divider: `root` on the `<hr>` of a plain horizontal divider, else on the `role="separator"`
3056
+ * element (or your `as`); `line` on each of the two line elements of a labelled divider; `label`
3057
+ * on its label span.
3058
+ */
3059
+ export declare const dividerClassNames: {
3060
+ readonly root: "wave-divider";
3061
+ readonly line: "wave-divider__line";
3062
+ readonly label: "wave-divider__label";
3063
+ };
3064
+
2338
3065
  /**
2339
3066
  * The Divider's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props
2340
3067
  * only). Every other prop comes from the rendered element (`as`).
@@ -2404,6 +3131,20 @@ export declare const Drawer: {
2404
3131
  };
2405
3132
  };
2406
3133
 
3134
+ /**
3135
+ * Drawer: `root` on the portaled panel (`role="dialog"`, while open); `backdrop` on the backdrop;
3136
+ * `header` on the header row; `closeButton` on the Close button (which also carries Button's
3137
+ * root); `body` on the scrolling body. The heading of its `title` prop carries Drawer.Title's
3138
+ * class.
3139
+ */
3140
+ export declare const drawerClassNames: {
3141
+ readonly root: "wave-drawer";
3142
+ readonly backdrop: "wave-drawer__backdrop";
3143
+ readonly header: "wave-drawer__header";
3144
+ readonly closeButton: "wave-drawer__close-button";
3145
+ readonly body: "wave-drawer__body";
3146
+ };
3147
+
2407
3148
  /**
2408
3149
  * Closes the drawer: composes a click handler onto its single child (its own `onClick` runs first;
2409
3150
  * calling `preventDefault()` there keeps the drawer open), or passes it to a render-prop child.
@@ -2523,6 +3264,11 @@ export declare const DrawerTitle: {
2523
3264
  displayName: string;
2524
3265
  };
2525
3266
 
3267
+ /** Drawer.Title: `root` on the `<h2>`. */
3268
+ export declare const drawerTitleClassNames: {
3269
+ readonly root: "wave-drawer-title";
3270
+ };
3271
+
2526
3272
  /** Properties for the DrawerTitle sub-component. */
2527
3273
  export declare interface DrawerTitleProps extends React_2.HTMLAttributes<HTMLHeadingElement> {
2528
3274
  /** The title; any content. */
@@ -2619,6 +3365,21 @@ export declare const Dropdown: {
2619
3365
  OptionGroup: React_2.FC<OptionGroupProps>;
2620
3366
  };
2621
3367
 
3368
+ /**
3369
+ * Dropdown: `root` on the outer element; `button` on the `role="combobox"` button; `value` on the
3370
+ * value or placeholder span; `expandIcon` on the chevron `<svg>`; `clearButton` on the clear
3371
+ * button; `listbox` on the `role="listbox"` list; `surface` on its portaled popup.
3372
+ */
3373
+ export declare const dropdownClassNames: {
3374
+ readonly root: "wave-dropdown";
3375
+ readonly button: "wave-dropdown__button";
3376
+ readonly value: "wave-dropdown__value";
3377
+ readonly expandIcon: "wave-dropdown__expand-icon";
3378
+ readonly clearButton: "wave-dropdown__clear-button";
3379
+ readonly listbox: "wave-dropdown__listbox";
3380
+ readonly surface: "wave-dropdown__surface";
3381
+ };
3382
+
2622
3383
  /**
2623
3384
  * The Dropdown's built-in texts, for localization. Each member is optional and falls back to its
2624
3385
  * English default.
@@ -2796,6 +3557,19 @@ export declare const Field: {
2796
3557
  displayName: string;
2797
3558
  };
2798
3559
 
3560
+ /**
3561
+ * Field: `root` on the field element; `label` on the `<label>`; `required` on the asterisk;
3562
+ * `validationMessage` on the message; `validationMessageIcon` on its icon; `hint` on the hint.
3563
+ */
3564
+ export declare const fieldClassNames: {
3565
+ readonly root: "wave-field";
3566
+ readonly label: "wave-field__label";
3567
+ readonly required: "wave-field__required";
3568
+ readonly validationMessage: "wave-field__validation-message";
3569
+ readonly validationMessageIcon: "wave-field__validation-message-icon";
3570
+ readonly hint: "wave-field__hint";
3571
+ };
3572
+
2799
3573
  /**
2800
3574
  * What a `Field` tells the controls inside it: the ids of its label, hint and validation message,
2801
3575
  * and its validation, invalid and required state. `Field` provides it; every library input reads
@@ -2985,6 +3759,11 @@ export declare interface FieldProps extends React_2.HTMLAttributes<HTMLDivElemen
2985
3759
  */
2986
3760
  export declare const Flex: PolymorphicComponent<'div', FlexOwnProps>;
2987
3761
 
3762
+ /** Flex: `root` on the rendered element. */
3763
+ export declare const flexClassNames: {
3764
+ readonly root: "wave-flex";
3765
+ };
3766
+
2988
3767
  /**
2989
3768
  * The Flex's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).
2990
3769
  * Every other prop comes from the rendered element (`as`).
@@ -3049,6 +3828,11 @@ export declare function getThemeClassName(theme: WaveTheme): string;
3049
3828
  */
3050
3829
  export declare const Grid: PolymorphicComponent<'div', GridOwnProps>;
3051
3830
 
3831
+ /** Grid: `root` on the rendered element. */
3832
+ export declare const gridClassNames: {
3833
+ readonly root: "wave-grid";
3834
+ };
3835
+
3052
3836
  /**
3053
3837
  * The Grid's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).
3054
3838
  * Every other prop comes from the rendered element (`as`).
@@ -3076,6 +3860,40 @@ export declare interface GridOwnProps {
3076
3860
  */
3077
3861
  export declare type GridProps<C extends React_2.ElementType = 'div'> = PolymorphicProps<C, GridOwnProps>;
3078
3862
 
3863
+ /**
3864
+ * The HSV color of a hex string: `#rgb`, `#rgba`, `#rrggbb` or `#rrggbbaa` (surrounding whitespace
3865
+ * ignored, any case). `a` is set only when the input has alpha digits. Returns `null` for anything
3866
+ * else (named colors, `rgb()`, a missing `#`). `hsvToHex(hexToHsv(x))` gives `x` back in
3867
+ * ColorPicker's normal form.
3868
+ *
3869
+ * @example hexToHsv('#ff000080') // { h: 0, s: 1, v: 1, a: 0.50196… }
3870
+ */
3871
+ export declare function hexToHsv(hex: string): HsvColor | null;
3872
+
3873
+ /**
3874
+ * A color in HSV (Fluent's `HsvColor`): `h` is the hue in degrees (0–360), `s` the saturation, `v`
3875
+ * the brightness (value) and `a` the opacity, each from 0 to 1. Without `a` the color is opaque.
3876
+ */
3877
+ export declare interface HsvColor {
3878
+ /** Hue in degrees, 0–360. */
3879
+ h: number;
3880
+ /** Saturation, 0–1. */
3881
+ s: number;
3882
+ /** Brightness (value), 0–1. */
3883
+ v: number;
3884
+ /** Opacity, 0–1; left out means opaque. */
3885
+ a?: number;
3886
+ }
3887
+
3888
+ /**
3889
+ * The hex string of an HSV color: lowercase `#rrggbb`, or `#rrggbbaa` when `a` is below 1
3890
+ * (ColorPicker's value format). The hue wraps into [0, 360); saturation, brightness and alpha are
3891
+ * clamped to [0, 1]; a channel that is not a number reads as 0 (alpha: as left out, so opaque).
3892
+ *
3893
+ * @example hsvToHex({ h: 208, s: 0.92, v: 0.74 }) // '#0f6cbd'
3894
+ */
3895
+ export declare function hsvToHex(color: HsvColor): string;
3896
+
3079
3897
  /** Where an icon renders relative to a label: the inline start (`before`) or end (`after`). */
3080
3898
  export declare type IconPosition = 'before' | 'after';
3081
3899
 
@@ -3094,6 +3912,11 @@ declare const Image_2: {
3094
3912
  };
3095
3913
  export { Image_2 as Image }
3096
3914
 
3915
+ /** Image: `root` on the `<img>`. */
3916
+ export declare const imageClassNames: {
3917
+ readonly root: "wave-image";
3918
+ };
3919
+
3097
3920
  /**
3098
3921
  * How an image fits its box (the `width`/`height` attributes, or a size set with `className`):
3099
3922
  *
@@ -3172,6 +3995,13 @@ export declare const InfoLabel: {
3172
3995
  displayName: string;
3173
3996
  };
3174
3997
 
3998
+ /** InfoLabel: `root` on the outer span; `infoButton` on the info button; `info` on its popup. */
3999
+ export declare const infoLabelClassNames: {
4000
+ readonly root: "wave-info-label";
4001
+ readonly infoButton: "wave-info-label__info-button";
4002
+ readonly info: "wave-info-label__info";
4003
+ };
4004
+
3175
4005
  /** Properties for the InfoLabel component. */
3176
4006
  export declare interface InfoLabelProps extends React_2.HTMLAttributes<HTMLSpanElement> {
3177
4007
  /** Primary label text to display. */
@@ -3210,6 +4040,20 @@ export declare const Input: {
3210
4040
  displayName: string;
3211
4041
  };
3212
4042
 
4043
+ /**
4044
+ * Input: `root` on the `<input>`, or, with `contentBefore` or `contentAfter` content, on the
4045
+ * wrapper that draws the field; `input` on the `<input>` (also when it is the root);
4046
+ * `contentBefore` and `contentAfter` on the slot spans; `errorMessage` on the `role="alert"`
4047
+ * message after the control.
4048
+ */
4049
+ export declare const inputClassNames: {
4050
+ readonly root: "wave-input";
4051
+ readonly input: "wave-input__input";
4052
+ readonly contentBefore: "wave-input__content-before";
4053
+ readonly contentAfter: "wave-input__content-after";
4054
+ readonly errorMessage: "wave-input__error-message";
4055
+ };
4056
+
3213
4057
  /**
3214
4058
  * Props of the error message element that {@link Input}, `Select` and `Textarea` render after the
3215
4059
  * control for a string `error` (`id`, `className`, `role`, data attributes, …).
@@ -3272,6 +4116,12 @@ export declare const Label: {
3272
4116
  displayName: string;
3273
4117
  };
3274
4118
 
4119
+ /** Label: `root` on the `<label>`; `required` on the asterisk. */
4120
+ export declare const labelClassNames: {
4121
+ readonly root: "wave-label";
4122
+ readonly required: "wave-label__required";
4123
+ };
4124
+
3275
4125
  /**
3276
4126
  * Where a label renders relative to its control or indicator. Components accept a subset,
3277
4127
  * derived with `Extract<LabelPosition, …>` (never `Exclude<>`, so a later value does not widen
@@ -3330,6 +4180,11 @@ export declare const Link: PolymorphicComponent<'a', LinkOwnProps>;
3330
4180
  */
3331
4181
  export declare type LinkAppearance = 'inline' | 'standalone' | 'subtle';
3332
4182
 
4183
+ /** Link: `root` on the rendered element (`<a>`, or your `as`). */
4184
+ export declare const linkClassNames: {
4185
+ readonly root: "wave-link";
4186
+ };
4187
+
3333
4188
  /**
3334
4189
  * The Link's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).
3335
4190
  * Every other prop comes from the rendered element (`as`, default `'a'`).
@@ -3421,6 +4276,11 @@ export declare const List: {
3421
4276
  };
3422
4277
  };
3423
4278
 
4279
+ /** List: `root` on the `<ul>` (the `role="grid"` element of a selectable list with actions). */
4280
+ export declare const listClassNames: {
4281
+ readonly root: "wave-list";
4282
+ };
4283
+
3424
4284
  /**
3425
4285
  * An item of a {@link List} (also available as `List.Item`). Renders an `<li>` (`listitem`, or
3426
4286
  * `option` in a selectable list), or a `<div role="row">` in a selectable list with actions. In a
@@ -3435,6 +4295,16 @@ export declare const ListItem: {
3435
4295
  displayName: string;
3436
4296
  };
3437
4297
 
4298
+ /**
4299
+ * List.Item: `root` on the `<li>` (the `role="row"` element of a list with actions); `content` on
4300
+ * the content element; `action` on the action cell.
4301
+ */
4302
+ export declare const listItemClassNames: {
4303
+ readonly root: "wave-list-item";
4304
+ readonly content: "wave-list-item__content";
4305
+ readonly action: "wave-list-item__action";
4306
+ };
4307
+
3438
4308
  /** Properties for the ListItem component. */
3439
4309
  export declare interface ListItemProps extends React_2.HTMLAttributes<HTMLLIElement> {
3440
4310
  /**
@@ -3596,7 +4466,7 @@ export declare const Menu: {
3596
4466
  };
3597
4467
  ItemLink: PolymorphicComponent<"a", MenuItemLinkOwnProps>;
3598
4468
  Group: {
3599
- ({ children, ref, ...rest }: MenuGroupProps): JSX.Element;
4469
+ ({ children, className, ref, ...rest }: MenuGroupProps): JSX.Element;
3600
4470
  displayName: string;
3601
4471
  };
3602
4472
  GroupHeader: {
@@ -3631,6 +4501,17 @@ export declare const MenuButton: {
3631
4501
  displayName: string;
3632
4502
  };
3633
4503
 
4504
+ /**
4505
+ * MenuButton (also carries Button's root and icon classes): `root` on the `<button>`; `icon` on
4506
+ * Button's icon span; `menuIcon` on the default chevron `<svg>`, or on the span of your
4507
+ * `menuIcon`.
4508
+ */
4509
+ export declare const menuButtonClassNames: {
4510
+ readonly root: "wave-menu-button";
4511
+ readonly icon: "wave-menu-button__icon";
4512
+ readonly menuIcon: "wave-menu-button__menu-icon";
4513
+ };
4514
+
3634
4515
  /** Properties for the MenuButton component. */
3635
4516
  export declare interface MenuButtonProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement> {
3636
4517
  /** Visual style variant.
@@ -3676,6 +4557,11 @@ export declare interface MenuButtonProps extends React_2.ButtonHTMLAttributes<HT
3676
4557
  ref?: React_2.Ref<HTMLButtonElement>;
3677
4558
  }
3678
4559
 
4560
+ /** Menu: `root` on the `role="menu"` element of a static menu (a popup menu has Menu.Popover's). */
4561
+ export declare const menuClassNames: {
4562
+ readonly root: "wave-menu";
4563
+ };
4564
+
3679
4565
  /**
3680
4566
  * A separator between groups of menu items (`role="separator"`).
3681
4567
  *
@@ -3686,6 +4572,11 @@ export declare const MenuDivider: {
3686
4572
  displayName: string;
3687
4573
  };
3688
4574
 
4575
+ /** Menu.Divider: `root` on the `role="separator"` element. */
4576
+ export declare const menuDividerClassNames: {
4577
+ readonly root: "wave-menu-divider";
4578
+ };
4579
+
3689
4580
  /** Properties for the MenuDivider sub-component. */
3690
4581
  export declare interface MenuDividerProps extends React_2.HTMLAttributes<HTMLDivElement> {
3691
4582
  /** Ref to the `role="separator"` element. */
@@ -3705,10 +4596,15 @@ export declare interface MenuDividerProps extends React_2.HTMLAttributes<HTMLDiv
3705
4596
  * Also exported as `MenuGroup` (import the flat name from React Server Components).
3706
4597
  */
3707
4598
  export declare const MenuGroup: {
3708
- ({ children, ref, ...rest }: MenuGroupProps): React_2.JSX.Element;
4599
+ ({ children, className, ref, ...rest }: MenuGroupProps): React_2.JSX.Element;
3709
4600
  displayName: string;
3710
4601
  };
3711
4602
 
4603
+ /** Menu.Group: `root` on the `role="group"` element. */
4604
+ export declare const menuGroupClassNames: {
4605
+ readonly root: "wave-menu-group";
4606
+ };
4607
+
3712
4608
  /**
3713
4609
  * The visible heading of a `Menu.Group`. It is not a menu item: arrow keys and typeahead skip it.
3714
4610
  * Its text lines up with the item labels (it keeps the menu's check and icon columns). It labels
@@ -3723,6 +4619,11 @@ export declare const MenuGroupHeader: {
3723
4619
  displayName: string;
3724
4620
  };
3725
4621
 
4622
+ /** Menu.GroupHeader: `root` on the header element. */
4623
+ export declare const menuGroupHeaderClassNames: {
4624
+ readonly root: "wave-menu-group-header";
4625
+ };
4626
+
3726
4627
  /** Properties for the MenuGroupHeader sub-component. */
3727
4628
  export declare interface MenuGroupHeaderProps extends React_2.HTMLAttributes<HTMLDivElement> {
3728
4629
  /** Ref to the header element. */
@@ -3781,6 +4682,19 @@ export declare const MenuItemCheckbox: {
3781
4682
  displayName: string;
3782
4683
  };
3783
4684
 
4685
+ /**
4686
+ * Menu.ItemCheckbox (also carries Menu.Item's root and matching part classes): `root` on the
4687
+ * `role="menuitemcheckbox"` element; `checkmark`, `icon`, `content` and `shortcut` as on
4688
+ * Menu.Item.
4689
+ */
4690
+ export declare const menuItemCheckboxClassNames: {
4691
+ readonly root: "wave-menu-item-checkbox";
4692
+ readonly checkmark: "wave-menu-item-checkbox__checkmark";
4693
+ readonly icon: "wave-menu-item-checkbox__icon";
4694
+ readonly content: "wave-menu-item-checkbox__content";
4695
+ readonly shortcut: "wave-menu-item-checkbox__shortcut";
4696
+ };
4697
+
3784
4698
  /** Properties for the MenuItemCheckbox sub-component. */
3785
4699
  export declare interface MenuItemCheckboxProps extends MenuItemProps, MenuItemSelectableProps {
3786
4700
  /**
@@ -3791,6 +4705,20 @@ export declare interface MenuItemCheckboxProps extends MenuItemProps, MenuItemSe
3791
4705
  checkmark?: Slot<'span'>;
3792
4706
  }
3793
4707
 
4708
+ /**
4709
+ * Menu.Item: `root` on the `role="menuitem"` element; `checkmark` on the check column; `icon` on
4710
+ * the icon span; `content` on the label span; `shortcut` on the shortcut span;
4711
+ * `submenuIndicator` on the chevron `<svg>` of a submenu trigger.
4712
+ */
4713
+ export declare const menuItemClassNames: {
4714
+ readonly root: "wave-menu-item";
4715
+ readonly checkmark: "wave-menu-item__checkmark";
4716
+ readonly icon: "wave-menu-item__icon";
4717
+ readonly content: "wave-menu-item__content";
4718
+ readonly shortcut: "wave-menu-item__shortcut";
4719
+ readonly submenuIndicator: "wave-menu-item__submenu-indicator";
4720
+ };
4721
+
3794
4722
  /**
3795
4723
  * A menu item that navigates (`role="menuitem"` on the link element). Enter follows the link the
3796
4724
  * way the browser does (Shift+Enter, Ctrl+Enter and Cmd+Enter open a new window or tab), Space
@@ -3811,6 +4739,17 @@ export declare interface MenuItemCheckboxProps extends MenuItemProps, MenuItemSe
3811
4739
  */
3812
4740
  export declare const MenuItemLink: PolymorphicComponent<'a', MenuItemLinkOwnProps>;
3813
4741
 
4742
+ /**
4743
+ * Menu.ItemLink (also carries Menu.Item's root and matching part classes): `root` on the
4744
+ * `role="menuitem"` link (`<a>`, or your `as`); `icon`, `content` and `shortcut` as on Menu.Item.
4745
+ */
4746
+ export declare const menuItemLinkClassNames: {
4747
+ readonly root: "wave-menu-item-link";
4748
+ readonly icon: "wave-menu-item-link__icon";
4749
+ readonly content: "wave-menu-item-link__content";
4750
+ readonly shortcut: "wave-menu-item-link__shortcut";
4751
+ };
4752
+
3814
4753
  /** The MenuItemLink's own props (the XOwnProps rule: component-specific props only). */
3815
4754
  export declare interface MenuItemLinkOwnProps {
3816
4755
  /** Icon before the label (decorative); the rules of `Menu.Item.icon`. */
@@ -3884,6 +4823,18 @@ export declare const MenuItemRadio: {
3884
4823
  displayName: string;
3885
4824
  };
3886
4825
 
4826
+ /**
4827
+ * Menu.ItemRadio (also carries Menu.Item's root and matching part classes): `root` on the
4828
+ * `role="menuitemradio"` element; `checkmark`, `icon`, `content` and `shortcut` as on Menu.Item.
4829
+ */
4830
+ export declare const menuItemRadioClassNames: {
4831
+ readonly root: "wave-menu-item-radio";
4832
+ readonly checkmark: "wave-menu-item-radio__checkmark";
4833
+ readonly icon: "wave-menu-item-radio__icon";
4834
+ readonly content: "wave-menu-item-radio__content";
4835
+ readonly shortcut: "wave-menu-item-radio__shortcut";
4836
+ };
4837
+
3887
4838
  /** Properties for the MenuItemRadio sub-component. */
3888
4839
  export declare interface MenuItemRadioProps extends MenuItemProps, MenuItemSelectableProps {
3889
4840
  /** As `MenuItemCheckbox.checkmark`. */
@@ -3912,6 +4863,20 @@ export declare const MenuItemSwitch: {
3912
4863
  displayName: string;
3913
4864
  };
3914
4865
 
4866
+ /**
4867
+ * Menu.ItemSwitch (also carries Menu.Item's root, `icon`, `content` and `shortcut` classes):
4868
+ * `root` on the `role="menuitemcheckbox"` element; `icon`, `content` and `shortcut` as on
4869
+ * Menu.Item; `track` on the switch; `thumb` on its thumb.
4870
+ */
4871
+ export declare const menuItemSwitchClassNames: {
4872
+ readonly root: "wave-menu-item-switch";
4873
+ readonly icon: "wave-menu-item-switch__icon";
4874
+ readonly content: "wave-menu-item-switch__content";
4875
+ readonly shortcut: "wave-menu-item-switch__shortcut";
4876
+ readonly track: "wave-menu-item-switch__track";
4877
+ readonly thumb: "wave-menu-item-switch__thumb";
4878
+ };
4879
+
3915
4880
  /** Properties for the MenuItemSwitch sub-component. */
3916
4881
  export declare interface MenuItemSwitchProps extends MenuItemProps, MenuItemSelectableProps {
3917
4882
  }
@@ -3959,6 +4924,11 @@ export declare const MenuPopover: {
3959
4924
  displayName: string;
3960
4925
  };
3961
4926
 
4927
+ /** Menu.Popover: `root` on the portaled `role="menu"` element. */
4928
+ export declare const menuPopoverClassNames: {
4929
+ readonly root: "wave-menu-popover";
4930
+ };
4931
+
3962
4932
  /** Properties for the MenuPopover sub-component. */
3963
4933
  export declare interface MenuPopoverProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'id'> {
3964
4934
  /**
@@ -4111,6 +5081,11 @@ export declare const MenuSplitGroup: {
4111
5081
  displayName: string;
4112
5082
  };
4113
5083
 
5084
+ /** Menu.SplitGroup: `root` on the `role="group"` element. */
5085
+ export declare const menuSplitGroupClassNames: {
5086
+ readonly root: "wave-menu-split-group";
5087
+ };
5088
+
4114
5089
  /** Properties for the MenuSplitGroup sub-component. */
4115
5090
  export declare interface MenuSplitGroupProps extends React_2.HTMLAttributes<HTMLDivElement> {
4116
5091
  /**
@@ -4249,24 +5224,85 @@ export declare function mergeRefs<T>(...refs: Array<React_2.Ref<T> | undefined |
4249
5224
 
4250
5225
  /**
4251
5226
  * An inline message that tells the user about the state of a page or task: a status icon, a
4252
- * visually hidden status label ("Warning:"), the message and an optional dismiss button.
5227
+ * visually hidden status label ("Warning:"), an optional title, the message, optional actions and
5228
+ * an optional dismiss button.
4253
5229
  *
4254
5230
  * - The status sets the tint, the logical start border, the icon and the role (`alert` for
4255
5231
  * `warning`/`error`, `status` otherwise). Screen readers hear the severity through `statusLabel`.
5232
+ * - Parts, as direct children: `MessageBar.Title` (a semibold lead-in, read first after the
5233
+ * severity) and `MessageBar.Actions` (buttons after the text on one row, or below it with
5234
+ * `layout="multiline"`). The built-in Dismiss button stays the bar's own.
5235
+ * - With its default roles the bar is a live region and the title is read as the start of its
5236
+ * content; give the bar `role="region"` (a notice that stays on the page) and the title names it.
4256
5237
  * - The dismiss button is always the MessageBar's own `<button>` wired to `onDismiss`
4257
5238
  * (`type="button"` unless a merged button slot sets its own `type`); the `dismiss` slot only
4258
5239
  * replaces its content (see {@link MessageBarProps.dismiss}).
4259
5240
  *
5241
+ * React Server Components cannot dot into a client module: import the flat names
5242
+ * `MessageBarTitle` and `MessageBarActions` there; `MessageBar.Title` and `MessageBar.Actions`
5243
+ * work in client files.
5244
+ *
4260
5245
  * @example
4261
5246
  * <MessageBar status="warning" onDismiss={() => setVisible(false)}>
4262
- * Your subscription expires in 3 days.
5247
+ * <MessageBar.Title>Update available</MessageBar.Title>
5248
+ * A new version is ready to install.
5249
+ * <MessageBar.Actions>
5250
+ * <Button size="small">Update now</Button>
5251
+ * </MessageBar.Actions>
4263
5252
  * </MessageBar>
4264
5253
  */
4265
5254
  export declare const MessageBar: {
4266
- ({ status, statusLabel, onDismiss, icon, dismiss, children, className, ref, ...rest }: MessageBarProps): React_2.JSX.Element;
5255
+ ({ status, statusLabel, onDismiss, icon, dismiss, layout, children, className, ref, ...rest }: MessageBarProps): React_2.JSX.Element;
5256
+ displayName: string;
5257
+ } & {
5258
+ Title: {
5259
+ ({ id, className, children, ref, ...rest }: MessageBarTitleProps): React_2.JSX.Element;
5260
+ displayName: string;
5261
+ };
5262
+ Actions: {
5263
+ ({ className, children, ref, ...rest }: MessageBarActionsProps): React_2.JSX.Element;
5264
+ displayName: string;
5265
+ };
5266
+ };
5267
+
5268
+ /**
5269
+ * The bar's actions (Retry, Learn more): after the text on one row, on their own row under it in
5270
+ * the multiline layout. Must be a direct child of MessageBar (a Fragment there counts, and so does
5271
+ * a part written in a Server Component); anywhere else it renders where it is (development
5272
+ * warning). Actions whose children render nothing are left out, so the bar keeps its look without
5273
+ * actions. The actions have no role of their own: the bar is already the grouping.
5274
+ *
5275
+ * Also exported as `MessageBarActions` (import the flat name from React Server Components).
5276
+ */
5277
+ export declare const MessageBarActions: {
5278
+ ({ className, children, ref, ...rest }: MessageBarActionsProps): React_2.JSX.Element;
4267
5279
  displayName: string;
4268
5280
  };
4269
5281
 
5282
+ /** MessageBar.Actions: `root` on the element that holds the actions. */
5283
+ export declare const messageBarActionsClassNames: {
5284
+ readonly root: "wave-message-bar-actions";
5285
+ };
5286
+
5287
+ /** Properties for the MessageBarActions sub-component. */
5288
+ export declare interface MessageBarActionsProps extends React_2.HTMLAttributes<HTMLDivElement> {
5289
+ /** Ref to the element that holds the actions. */
5290
+ ref?: React_2.Ref<HTMLDivElement>;
5291
+ }
5292
+
5293
+ /**
5294
+ * MessageBar: `root` on the bar; `icon` on the status icon span; `body` on the text column (it
5295
+ * holds `MessageBar.Title`); `dismissButton` on the Dismiss button; `dismissIcon` on the icon
5296
+ * inside it (what `dismiss` renders, a merged Button's icon span, else the default `<svg>`).
5297
+ */
5298
+ export declare const messageBarClassNames: {
5299
+ readonly root: "wave-message-bar";
5300
+ readonly icon: "wave-message-bar__icon";
5301
+ readonly body: "wave-message-bar__body";
5302
+ readonly dismissButton: "wave-message-bar__dismiss-button";
5303
+ readonly dismissIcon: "wave-message-bar__dismiss-icon";
5304
+ };
5305
+
4270
5306
  /** Properties for the MessageBar component. */
4271
5307
  export declare interface MessageBarProps extends React_2.HTMLAttributes<HTMLDivElement> {
4272
5308
  /** Status level controlling the color, icon, status text and role of the message bar.
@@ -4288,7 +5324,8 @@ export declare interface MessageBarProps extends React_2.HTMLAttributes<HTMLDivE
4288
5324
  onDismiss?: () => void;
4289
5325
  /**
4290
5326
  * Custom status icon, rendered decoratively (`aria-hidden="true"`, a slot object can override
4291
- * it) in the status color. `null` renders no icon.
5327
+ * it) in the status color. Only `undefined` keeps the default status icon; `null`, or anything that
5328
+ * renders nothing (`false`, `''`), shows no icon.
4292
5329
  */
4293
5330
  icon?: Slot<'span'>;
4294
5331
  /**
@@ -4332,12 +5369,50 @@ export declare interface MessageBarProps extends React_2.HTMLAttributes<HTMLDivE
4332
5369
  * Pass icon content instead, e.g. `dismiss={<CloseIcon />}`.
4333
5370
  */
4334
5371
  dismiss?: Slot<'span'> | SlotObject<'button'>;
4335
- /** Message content to display. */
5372
+ /**
5373
+ * How the text and the actions share the bar. `'singleline'`: the actions sit on the text's row
5374
+ * (the text wraps inside its column; it is never cut off). `'multiline'`: the actions get a row of
5375
+ * their own under the text. `'auto'`: the actions stay on the text's row while the text fits on
5376
+ * one line, measured after mount (the server renders one row), and move below it otherwise; a bar
5377
+ * without `MessageBar.Actions` is `'multiline'`, the 0.7 look. The root renders the layout in use
5378
+ * as `data-layout` (`singleline` or `multiline`). Fluent's `layout`.
5379
+ * @default 'auto'
5380
+ */
5381
+ layout?: 'auto' | 'singleline' | 'multiline';
5382
+ /**
5383
+ * The message: body text, with the parts `MessageBar.Title` and `MessageBar.Actions` as direct
5384
+ * children (see the component docs).
5385
+ */
4336
5386
  children: React_2.ReactNode;
4337
5387
  /** Ref to the root `<div>`. */
4338
5388
  ref?: React_2.Ref<HTMLDivElement>;
4339
5389
  }
4340
5390
 
5391
+ /**
5392
+ * The bar's title, read right after the severity text. Names the bar when the bar has a non-live
5393
+ * `role` (`region`, `group`). Must be a direct child of MessageBar (a Fragment there counts, and so
5394
+ * does a title written in a Server Component); anywhere else it renders where it is, without its
5395
+ * place or the naming (development warning). Give a bar one title: a second one renders as body
5396
+ * text (development warning). A title whose children render nothing is left out.
5397
+ *
5398
+ * Also exported as `MessageBarTitle` (import the flat name from React Server Components).
5399
+ */
5400
+ export declare const MessageBarTitle: {
5401
+ ({ id, className, children, ref, ...rest }: MessageBarTitleProps): React_2.JSX.Element;
5402
+ displayName: string;
5403
+ };
5404
+
5405
+ /** MessageBar.Title: `root` on the title span. */
5406
+ export declare const messageBarTitleClassNames: {
5407
+ readonly root: "wave-message-bar-title";
5408
+ };
5409
+
5410
+ /** Properties for the MessageBarTitle sub-component. */
5411
+ export declare interface MessageBarTitleProps extends React_2.HTMLAttributes<HTMLSpanElement> {
5412
+ /** Ref to the title `<span>`. */
5413
+ ref?: React_2.Ref<HTMLSpanElement>;
5414
+ }
5415
+
4341
5416
  /**
4342
5417
  * Why a Dialog or Drawer asks to open or close: `trigger` (its Trigger part), `close` (a
4343
5418
  * `.Close` part), `close-button` (the built-in Close button), `escape`, `outside-press` (the
@@ -4400,6 +5475,20 @@ export declare const NavCategory: {
4400
5475
  displayName: string;
4401
5476
  };
4402
5477
 
5478
+ /**
5479
+ * Nav.Category: `root` on its `<li>`; `button` on the toggle button; `icon` on the icon span;
5480
+ * `label` on the label span; `expandIcon` on the chevron `<svg>`; `list` on the `<ul>` of its
5481
+ * sub-items.
5482
+ */
5483
+ export declare const navCategoryClassNames: {
5484
+ readonly root: "wave-nav-category";
5485
+ readonly button: "wave-nav-category__button";
5486
+ readonly icon: "wave-nav-category__icon";
5487
+ readonly label: "wave-nav-category__label";
5488
+ readonly expandIcon: "wave-nav-category__expand-icon";
5489
+ readonly list: "wave-nav-category__list";
5490
+ };
5491
+
4403
5492
  /** Properties for the NavCategory sub-component. */
4404
5493
  export declare interface NavCategoryProps extends React_2.HTMLAttributes<HTMLLIElement> {
4405
5494
  /**
@@ -4423,6 +5512,12 @@ export declare interface NavCategoryProps extends React_2.HTMLAttributes<HTMLLIE
4423
5512
  ref?: React_2.Ref<HTMLLIElement>;
4424
5513
  }
4425
5514
 
5515
+ /** Nav: `root` on the `<nav>`; `list` on its `<ul>`. */
5516
+ export declare const navClassNames: {
5517
+ readonly root: "wave-nav";
5518
+ readonly list: "wave-nav__list";
5519
+ };
5520
+
4426
5521
  /**
4427
5522
  * A top-level navigation entry: a link when `href` is given (anchor props), a button otherwise
4428
5523
  * (button props). Clicking selects it (`aria-current="page"`); activating a disabled entry never
@@ -4475,6 +5570,17 @@ export declare interface NavItemButtonProps extends NavItemOwnProps, NoAnchorOnl
4475
5570
  ref?: React_2.Ref<HTMLButtonElement>;
4476
5571
  }
4477
5572
 
5573
+ /**
5574
+ * Nav.Item: `root` on the `<a>` (with `href`) or `<button>`; `listItem` on the `<li>` around it;
5575
+ * `icon` on the icon span; `content` on the label span.
5576
+ */
5577
+ export declare const navItemClassNames: {
5578
+ readonly root: "wave-nav-item";
5579
+ readonly listItem: "wave-nav-item__list-item";
5580
+ readonly icon: "wave-nav-item__icon";
5581
+ readonly content: "wave-nav-item__content";
5582
+ };
5583
+
4478
5584
  /**
4479
5585
  * Nav.Item with an `href` known only at run time (`string | undefined`): a link when it is a
4480
5586
  * string, a button otherwise. Resolved after the button and link signatures.
@@ -4611,6 +5717,12 @@ export declare interface NavSubItemButtonProps extends NavSubItemOwnProps, NoAnc
4611
5717
  ref?: React_2.Ref<HTMLButtonElement>;
4612
5718
  }
4613
5719
 
5720
+ /** Nav.SubItem: `root` on the `<a>` or `<button>`; `listItem` on the `<li>` around it. */
5721
+ export declare const navSubItemClassNames: {
5722
+ readonly root: "wave-nav-sub-item";
5723
+ readonly listItem: "wave-nav-sub-item__list-item";
5724
+ };
5725
+
4614
5726
  /**
4615
5727
  * Nav.SubItem with an `href` known only at run time (`string | undefined`): a link when it is a
4616
5728
  * string, a button otherwise. Only the attributes both elements share are accepted, and handlers
@@ -4691,6 +5803,16 @@ export declare interface OpenChangeDetails<R extends string = string> {
4691
5803
  declare const Option_2: React_2.NamedExoticComponent<OptionProps>;
4692
5804
  export { Option_2 as Option }
4693
5805
 
5806
+ /**
5807
+ * Option (also Combobox.Option and Dropdown.Option): `root` on the `role="option"` element;
5808
+ * `checkIcon` on the check `<svg>`; `content` on the content span.
5809
+ */
5810
+ export declare const optionClassNames: {
5811
+ readonly root: "wave-option";
5812
+ readonly checkIcon: "wave-option__check-icon";
5813
+ readonly content: "wave-option__content";
5814
+ };
5815
+
4694
5816
  /**
4695
5817
  * Groups options under a heading: `<li role="presentation">` with the heading and a
4696
5818
  * `<ul role="group" aria-labelledby>` of the options. Hidden while a filter (or their own `hidden`)
@@ -4698,6 +5820,16 @@ export { Option_2 as Option }
4698
5820
  */
4699
5821
  export declare const OptionGroup: React_2.FC<OptionGroupProps>;
4700
5822
 
5823
+ /**
5824
+ * OptionGroup (also Combobox.OptionGroup and Dropdown.OptionGroup): `root` on the group's entry
5825
+ * in the list; `label` on its heading; `list` on the `role="group"` list of its options.
5826
+ */
5827
+ export declare const optionGroupClassNames: {
5828
+ readonly root: "wave-option-group";
5829
+ readonly label: "wave-option-group__label";
5830
+ readonly list: "wave-option-group__list";
5831
+ };
5832
+
4701
5833
  /** Properties for the OptionGroup component used to group options. */
4702
5834
  export declare interface OptionGroupProps extends React_2.LiHTMLAttributes<HTMLLIElement> {
4703
5835
  /** Heading label for the option group (names the group). */
@@ -4785,6 +5917,15 @@ export declare const Overflow: {
4785
5917
  };
4786
5918
  };
4787
5919
 
5920
+ /**
5921
+ * Overflow: `root` on the overflow element; `overflowButton` on the element around what
5922
+ * `overflowButton` renders.
5923
+ */
5924
+ export declare const overflowClassNames: {
5925
+ readonly root: "wave-overflow";
5926
+ readonly overflowButton: "wave-overflow__overflow-button";
5927
+ };
5928
+
4788
5929
  /**
4789
5930
  * One entry of an {@link Overflow}. While it does not fit it stays mounted but is hidden
4790
5931
  * (`data-overflow-hidden` and an inline `display: none` placed after the consumer's own `style`),
@@ -4797,6 +5938,11 @@ export declare const OverflowItem: {
4797
5938
  displayName: string;
4798
5939
  };
4799
5940
 
5941
+ /** Overflow.Item: `root` on the item element. */
5942
+ export declare const overflowItemClassNames: {
5943
+ readonly root: "wave-overflow-item";
5944
+ };
5945
+
4800
5946
  /** Properties for the OverflowItem sub-component. */
4801
5947
  export declare interface OverflowItemProps extends React_2.HTMLAttributes<HTMLDivElement> {
4802
5948
  /**
@@ -4843,6 +5989,23 @@ export declare const Pagination: {
4843
5989
  displayName: string;
4844
5990
  };
4845
5991
 
5992
+ /**
5993
+ * Pagination: `root` on the `<nav>`; `list` on its `<ol>`; `listItem` on each `<li>`;
5994
+ * `firstButton`, `previousButton`, `pageButton`, `nextButton` and `lastButton` on its buttons;
5995
+ * `ellipsis` on each "…" span.
5996
+ */
5997
+ export declare const paginationClassNames: {
5998
+ readonly root: "wave-pagination";
5999
+ readonly list: "wave-pagination__list";
6000
+ readonly listItem: "wave-pagination__list-item";
6001
+ readonly firstButton: "wave-pagination__first-button";
6002
+ readonly previousButton: "wave-pagination__previous-button";
6003
+ readonly pageButton: "wave-pagination__page-button";
6004
+ readonly nextButton: "wave-pagination__next-button";
6005
+ readonly lastButton: "wave-pagination__last-button";
6006
+ readonly ellipsis: "wave-pagination__ellipsis";
6007
+ };
6008
+
4846
6009
  /** The kinds of Pagination buttons, as passed to `getItemAriaLabel`. */
4847
6010
  export declare type PaginationItemType = 'first' | 'previous' | 'page' | 'next' | 'last';
4848
6011
 
@@ -4927,6 +6090,19 @@ export declare const Persona: {
4927
6090
  displayName: string;
4928
6091
  };
4929
6092
 
6093
+ /**
6094
+ * Persona: `root` on the persona element; `avatar` on the built-in Avatar (which also carries
6095
+ * Avatar's root and `visual` classes) or on your `avatar` slot; `badge` on the element that
6096
+ * places the badge; `primaryText` on the name; `secondaryText` on the second line.
6097
+ */
6098
+ export declare const personaClassNames: {
6099
+ readonly root: "wave-persona";
6100
+ readonly avatar: "wave-persona__avatar";
6101
+ readonly badge: "wave-persona__badge";
6102
+ readonly primaryText: "wave-persona__primary-text";
6103
+ readonly secondaryText: "wave-persona__secondary-text";
6104
+ };
6105
+
4930
6106
  /** Properties for the Persona component. */
4931
6107
  export declare interface PersonaProps extends React_2.HTMLAttributes<HTMLDivElement> {
4932
6108
  /** Display name of the person. */
@@ -5092,6 +6268,16 @@ export declare const PopoverContent: {
5092
6268
  displayName: string;
5093
6269
  };
5094
6270
 
6271
+ /**
6272
+ * Popover.Content: `root` on the portaled `role="dialog"` surface; `beak` on the arrow; `title`
6273
+ * on the `<h2>` of `title`.
6274
+ */
6275
+ export declare const popoverContentClassNames: {
6276
+ readonly root: "wave-popover-content";
6277
+ readonly beak: "wave-popover-content__beak";
6278
+ readonly title: "wave-popover-content__title";
6279
+ };
6280
+
5095
6281
  /** Properties for the PopoverContent sub-component. */
5096
6282
  export declare interface PopoverContentProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'title'> {
5097
6283
  /** Content to render inside the popover. */
@@ -5326,6 +6512,14 @@ export declare const Portal: {
5326
6512
  displayName: string;
5327
6513
  };
5328
6514
 
6515
+ /**
6516
+ * Portal: `root` on the portal wrapper (the existing `wave-portal` scope class; the wrapper also
6517
+ * takes your `className`).
6518
+ */
6519
+ export declare const portalClassNames: {
6520
+ readonly root: "wave-portal";
6521
+ };
6522
+
5329
6523
  /** Props accepted by {@link Portal}. */
5330
6524
  export declare interface PortalProps {
5331
6525
  /** Content rendered into the portal. */
@@ -5409,6 +6603,12 @@ export declare const PresenceBadge: {
5409
6603
  displayName: string;
5410
6604
  };
5411
6605
 
6606
+ /** PresenceBadge: `root` on the `role="img"` span; `icon` on the status glyph `<svg>`. */
6607
+ export declare const presenceBadgeClassNames: {
6608
+ readonly root: "wave-presence-badge";
6609
+ readonly icon: "wave-presence-badge__icon";
6610
+ };
6611
+
5412
6612
  /** Properties for the PresenceBadge component. */
5413
6613
  export declare interface PresenceBadgeProps extends React_2.HTMLAttributes<HTMLSpanElement> {
5414
6614
  /** Presence status to display. */
@@ -5471,6 +6671,16 @@ export declare const ProgressBar: {
5471
6671
  displayName: string;
5472
6672
  };
5473
6673
 
6674
+ /**
6675
+ * ProgressBar: `root` on the `role="progressbar"` element (the track); `bar` on the fill; `label`
6676
+ * on the label of `showLabel` (a sibling of the root).
6677
+ */
6678
+ export declare const progressBarClassNames: {
6679
+ readonly root: "wave-progress-bar";
6680
+ readonly bar: "wave-progress-bar__bar";
6681
+ readonly label: "wave-progress-bar__label";
6682
+ };
6683
+
5474
6684
  /** Color of a {@link ProgressBar}'s fill. */
5475
6685
  export declare type ProgressBarColor = 'brand' | 'success' | 'warning' | 'error';
5476
6686
 
@@ -5538,12 +6748,27 @@ export declare const RadioGroup: {
5538
6748
  Item: typeof RadioItem;
5539
6749
  };
5540
6750
 
6751
+ /** RadioGroup: `root` on the `role="radiogroup"` element. */
6752
+ export declare const radioGroupClassNames: {
6753
+ readonly root: "wave-radio-group";
6754
+ };
6755
+
5541
6756
  /**
5542
6757
  * Flat name of `RadioGroup.Item` (C-COMPOUND), for React Server Components, which cannot access
5543
6758
  * the dotted form. Same component as {@link RadioItem}.
5544
6759
  */
5545
6760
  export declare const RadioGroupItem: typeof RadioItem;
5546
6761
 
6762
+ /**
6763
+ * RadioGroup.Item: `root` on the `<label>` (where `className` lands; `ref` and the other props go
6764
+ * to the radio); `indicator` on the `role="radio"` button; `label` on the label text.
6765
+ */
6766
+ export declare const radioGroupItemClassNames: {
6767
+ readonly root: "wave-radio-group-item";
6768
+ readonly indicator: "wave-radio-group-item__indicator";
6769
+ readonly label: "wave-radio-group-item__label";
6770
+ };
6771
+
5547
6772
  /** Props of {@link RadioGroupItem} (same as {@link RadioItemProps}). */
5548
6773
  export declare type RadioGroupItemProps = RadioItemProps;
5549
6774
 
@@ -5647,6 +6872,16 @@ export declare const Rating: {
5647
6872
  displayName: string;
5648
6873
  };
5649
6874
 
6875
+ /**
6876
+ * Rating: `root` on the `role="radiogroup"` element; `star` on each `role="radio"` button; `icon`
6877
+ * on each star `<svg>`.
6878
+ */
6879
+ export declare const ratingClassNames: {
6880
+ readonly root: "wave-rating";
6881
+ readonly star: "wave-rating__star";
6882
+ readonly icon: "wave-rating__icon";
6883
+ };
6884
+
5650
6885
  /**
5651
6886
  * A read-only star rating (`role="img"` named "Rating: <value> out of <max>"). A fractional value
5652
6887
  * is drawn with a partly filled star, so the stars and the name show the same value.
@@ -5662,6 +6897,18 @@ export declare const RatingDisplay: {
5662
6897
  displayName: string;
5663
6898
  };
5664
6899
 
6900
+ /**
6901
+ * RatingDisplay: `root` on the `role="img"` element; `star` on each star span; `icon` on the star
6902
+ * `<svg>` elements; `value` on the value span; `count` on the count span.
6903
+ */
6904
+ export declare const ratingDisplayClassNames: {
6905
+ readonly root: "wave-rating-display";
6906
+ readonly star: "wave-rating-display__star";
6907
+ readonly icon: "wave-rating-display__icon";
6908
+ readonly value: "wave-rating-display__value";
6909
+ readonly count: "wave-rating-display__count";
6910
+ };
6911
+
5665
6912
  /** Built-in texts of RatingDisplay, for localization. */
5666
6913
  export declare interface RatingDisplayLabels {
5667
6914
  /**
@@ -5872,6 +7119,21 @@ export declare const SearchBox: {
5872
7119
  displayName: string;
5873
7120
  };
5874
7121
 
7122
+ /**
7123
+ * SearchBox: `root` on the element that draws the field; `contentBefore` on the span that holds
7124
+ * the search icon or your slot; `input` on the `<input type="search">`; `contentAfter` on the span
7125
+ * that holds your slot; `dismissButton` on the clear button; `dismissIcon` on the icon inside it
7126
+ * (what `dismiss` renders, a merged Button's icon span, else the default `<svg>`).
7127
+ */
7128
+ export declare const searchBoxClassNames: {
7129
+ readonly root: "wave-search-box";
7130
+ readonly contentBefore: "wave-search-box__content-before";
7131
+ readonly input: "wave-search-box__input";
7132
+ readonly contentAfter: "wave-search-box__content-after";
7133
+ readonly dismissButton: "wave-search-box__dismiss-button";
7134
+ readonly dismissIcon: "wave-search-box__dismiss-icon";
7135
+ };
7136
+
5875
7137
  /**
5876
7138
  * Props that SearchBox routes to its `<input>` (C-ROUTING): the id, the ARIA naming/validation
5877
7139
  * attributes, native text-input attributes and the focus/keyboard handlers.
@@ -5969,6 +7231,12 @@ export declare const Select: {
5969
7231
  displayName: string;
5970
7232
  };
5971
7233
 
7234
+ /** Select: `root` on the `<select>`; `errorMessage` on the message after it, as Input's. */
7235
+ export declare const selectClassNames: {
7236
+ readonly root: "wave-select";
7237
+ readonly errorMessage: "wave-select__error-message";
7238
+ };
7239
+
5972
7240
  /** How many items a selectable collection allows (List, DataGrid, Accordion, …). */
5973
7241
  declare type SelectionMode_2 = 'single' | 'multiple';
5974
7242
  export { SelectionMode_2 as SelectionMode }
@@ -6023,11 +7291,16 @@ export declare const Skeleton: {
6023
7291
  displayName: string;
6024
7292
  } & {
6025
7293
  Group: {
6026
- ({ label, "aria-busy": busy, children, ref, ...rest }: SkeletonGroupProps): React_2.JSX.Element;
7294
+ ({ label, "aria-busy": busy, className, children, ref, ...rest }: SkeletonGroupProps): React_2.JSX.Element;
6027
7295
  displayName: string;
6028
7296
  };
6029
7297
  };
6030
7298
 
7299
+ /** Skeleton: `root` on the placeholder element. */
7300
+ export declare const skeletonClassNames: {
7301
+ readonly root: "wave-skeleton";
7302
+ };
7303
+
6031
7304
  /**
6032
7305
  * Container for the Skeletons of a loading region: `aria-busy="true"` plus a visually hidden
6033
7306
  * `label` ("Loading"), while the placeholders stay decorative. It uses no live-region role, so it
@@ -6037,10 +7310,15 @@ export declare const Skeleton: {
6037
7310
  * export for React Server Components (`Skeleton.Group` in client files).
6038
7311
  */
6039
7312
  export declare const SkeletonGroup: {
6040
- ({ label, "aria-busy": busy, children, ref, ...rest }: SkeletonGroupProps): React_2.JSX.Element;
7313
+ ({ label, "aria-busy": busy, className, children, ref, ...rest }: SkeletonGroupProps): React_2.JSX.Element;
6041
7314
  displayName: string;
6042
7315
  };
6043
7316
 
7317
+ /** Skeleton.Group: `root` on the group element. */
7318
+ export declare const skeletonGroupClassNames: {
7319
+ readonly root: "wave-skeleton-group";
7320
+ };
7321
+
6044
7322
  /** Properties for the Skeleton.Group component. */
6045
7323
  export declare interface SkeletonGroupProps extends React_2.HTMLAttributes<HTMLDivElement> {
6046
7324
  /**
@@ -6087,6 +7365,11 @@ export declare const Slider: {
6087
7365
  displayName: string;
6088
7366
  };
6089
7367
 
7368
+ /** Slider: `root` on the `<input type="range">` (its rail and thumb are pseudo-elements). */
7369
+ export declare const sliderClassNames: {
7370
+ readonly root: "wave-slider";
7371
+ };
7372
+
6090
7373
  /** Properties for the Slider component. */
6091
7374
  export declare interface SliderProps extends Omit<React_2.InputHTMLAttributes<HTMLInputElement>, 'type'> {
6092
7375
  /** Controlled slider value. */
@@ -6184,6 +7467,17 @@ export declare const SpinButton: {
6184
7467
  displayName: string;
6185
7468
  };
6186
7469
 
7470
+ /**
7471
+ * SpinButton: `root` on the outer element; `decrementButton` on the − button; `input` on the
7472
+ * `role="spinbutton"` input; `incrementButton` on the + button.
7473
+ */
7474
+ export declare const spinButtonClassNames: {
7475
+ readonly root: "wave-spin-button";
7476
+ readonly decrementButton: "wave-spin-button__decrement-button";
7477
+ readonly input: "wave-spin-button__input";
7478
+ readonly incrementButton: "wave-spin-button__increment-button";
7479
+ };
7480
+
6187
7481
  /**
6188
7482
  * Props that SpinButton routes to its `<input role="spinbutton">` (C-ROUTING): the id, the ARIA
6189
7483
  * naming/validation attributes, native text-input attributes and the focus/keyboard handlers.
@@ -6292,6 +7586,16 @@ export declare const Spinner: {
6292
7586
  /** Color treatment of a {@link Spinner}. */
6293
7587
  export declare type SpinnerAppearance = 'primary' | 'inverted';
6294
7588
 
7589
+ /**
7590
+ * Spinner: `root` on the outer span; `spinner` on the ring; `label` on the label span (also while
7591
+ * only screen readers get it, without `labelVisible`).
7592
+ */
7593
+ export declare const spinnerClassNames: {
7594
+ readonly root: "wave-spinner";
7595
+ readonly spinner: "wave-spinner__spinner";
7596
+ readonly label: "wave-spinner__label";
7597
+ };
7598
+
6295
7599
  /** Properties for the Spinner component. */
6296
7600
  export declare interface SpinnerProps extends React_2.HTMLAttributes<HTMLSpanElement> {
6297
7601
  /** Size of the spinner.
@@ -6359,6 +7663,19 @@ export declare const SplitButton: {
6359
7663
  displayName: string;
6360
7664
  };
6361
7665
 
7666
+ /**
7667
+ * SplitButton: `root` on the `role="group"` element; `primaryActionButton` and `menuButton` on its
7668
+ * two Buttons (which also carry Button's root); `icon` on the primary half's icon span and
7669
+ * `menuIcon` on the menu half's (both also carry Button's icon class).
7670
+ */
7671
+ export declare const splitButtonClassNames: {
7672
+ readonly root: "wave-split-button";
7673
+ readonly primaryActionButton: "wave-split-button__primary-action-button";
7674
+ readonly menuButton: "wave-split-button__menu-button";
7675
+ readonly icon: "wave-split-button__icon";
7676
+ readonly menuIcon: "wave-split-button__menu-icon";
7677
+ };
7678
+
6362
7679
  /**
6363
7680
  * Props for one half of a SplitButton (`menuButtonProps`, `primaryActionButtonProps`): native
6364
7681
  * `<button>` attributes, `data-*` attributes and `ref`. They are merged onto the built-in props
@@ -6461,6 +7778,11 @@ export declare interface SplitButtonProps extends Omit<React_2.HTMLAttributes<HT
6461
7778
  */
6462
7779
  export declare const Stack: PolymorphicComponent<'div', StackOwnProps>;
6463
7780
 
7781
+ /** Stack: `root` on the rendered element. */
7782
+ export declare const stackClassNames: {
7783
+ readonly root: "wave-stack";
7784
+ };
7785
+
6464
7786
  /**
6465
7787
  * The Stack's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).
6466
7788
  * Every other prop comes from the rendered element (`as`).
@@ -6525,6 +7847,12 @@ export declare const Stepper: {
6525
7847
  };
6526
7848
  };
6527
7849
 
7850
+ /** Stepper: `root` on the `role="group"` element; `list` on its `<ol>`. */
7851
+ export declare const stepperClassNames: {
7852
+ readonly root: "wave-stepper";
7853
+ readonly list: "wave-stepper__list";
7854
+ };
7855
+
6528
7856
  /** Properties for the Stepper component. */
6529
7857
  export declare interface StepperProps extends React_2.HTMLAttributes<HTMLDivElement> {
6530
7858
  /** Controlled index (0-based) of the currently active step. */
@@ -6574,6 +7902,23 @@ export declare const StepperStep: {
6574
7902
  displayName: string;
6575
7903
  };
6576
7904
 
7905
+ /**
7906
+ * Stepper.Step: `root` on the step's element inside its `<li>`; `listItem` on the `<li>`; `button`
7907
+ * on the `role="button"` element; `indicator` on the circle; `icon` on the `icon` slot inside it;
7908
+ * `label` on the label; `description` on the description; `connector` on the line to the next
7909
+ * step.
7910
+ */
7911
+ export declare const stepperStepClassNames: {
7912
+ readonly root: "wave-stepper-step";
7913
+ readonly listItem: "wave-stepper-step__list-item";
7914
+ readonly button: "wave-stepper-step__button";
7915
+ readonly indicator: "wave-stepper-step__indicator";
7916
+ readonly icon: "wave-stepper-step__icon";
7917
+ readonly label: "wave-stepper-step__label";
7918
+ readonly description: "wave-stepper-step__description";
7919
+ readonly connector: "wave-stepper-step__connector";
7920
+ };
7921
+
6577
7922
  /** Properties for the Step sub-component. */
6578
7923
  export declare interface StepProps extends React_2.HTMLAttributes<HTMLDivElement> {
6579
7924
  /** Label text for the step. */
@@ -6659,6 +8004,12 @@ export declare const SwatchPicker: {
6659
8004
  displayName: string;
6660
8005
  };
6661
8006
 
8007
+ /** SwatchPicker: `root` on the `role="radiogroup"` element; `swatch` on each `role="radio"` button. */
8008
+ export declare const swatchPickerClassNames: {
8009
+ readonly root: "wave-swatch-picker";
8010
+ readonly swatch: "wave-swatch-picker__swatch";
8011
+ };
8012
+
6662
8013
  /** Properties for the SwatchPicker component. */
6663
8014
  export declare interface SwatchPickerProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
6664
8015
  /** The swatches to display, in order (a readonly array is accepted; it is never modified). */
@@ -6724,6 +8075,17 @@ export declare const Switch: {
6724
8075
  displayName: string;
6725
8076
  };
6726
8077
 
8078
+ /**
8079
+ * Switch: `root` on the `<label>`; `track` on the `role="switch"` button; `thumb` on its thumb;
8080
+ * `label` on the label text.
8081
+ */
8082
+ export declare const switchClassNames: {
8083
+ readonly root: "wave-switch";
8084
+ readonly track: "wave-switch__track";
8085
+ readonly thumb: "wave-switch__thumb";
8086
+ readonly label: "wave-switch__label";
8087
+ };
8088
+
6727
8089
  /** Handlers that run on the `role="switch"` button instead of the root label (C-ROUTING). */
6728
8090
  declare type SwitchControlHandlers = 'onClick' | 'onFocus' | 'onBlur' | 'onKeyDown' | 'onKeyUp';
6729
8091
 
@@ -6853,6 +8215,11 @@ export declare const TableBody: {
6853
8215
  displayName: string;
6854
8216
  };
6855
8217
 
8218
+ /** Table.Body: `root` on the `<tbody>`. */
8219
+ export declare const tableBodyClassNames: {
8220
+ readonly root: "wave-table-body";
8221
+ };
8222
+
6856
8223
  /** Properties for the TableBody sub-component. */
6857
8224
  export declare interface TableBodyProps extends React_2.HTMLAttributes<HTMLTableSectionElement> {
6858
8225
  /** Table row elements. */
@@ -6867,6 +8234,11 @@ export declare const TableCell: {
6867
8234
  displayName: string;
6868
8235
  };
6869
8236
 
8237
+ /** Table.Cell: `root` on the `<td>`. */
8238
+ export declare const tableCellClassNames: {
8239
+ readonly root: "wave-table-cell";
8240
+ };
8241
+
6870
8242
  /** Properties for the TableCell sub-component. */
6871
8243
  export declare interface TableCellProps extends React_2.TdHTMLAttributes<HTMLTableCellElement> {
6872
8244
  /** Cell content. */
@@ -6875,6 +8247,12 @@ export declare interface TableCellProps extends React_2.TdHTMLAttributes<HTMLTab
6875
8247
  ref?: React_2.Ref<HTMLTableCellElement>;
6876
8248
  }
6877
8249
 
8250
+ /** Table: `root` on the `<table>`; `container` on the scroll wrapper around it. */
8251
+ export declare const tableClassNames: {
8252
+ readonly root: "wave-table";
8253
+ readonly container: "wave-table__container";
8254
+ };
8255
+
6878
8256
  /** @deprecated Use `Table.Header` (`TableHeader`). */
6879
8257
  export declare const TableHead: {
6880
8258
  (props: TableHeadProps): React_2.JSX.Element;
@@ -6902,6 +8280,11 @@ export declare const TableHeaderCell: {
6902
8280
  displayName: string;
6903
8281
  };
6904
8282
 
8283
+ /** Table.HeaderCell (and the deprecated Table.HeadCell): `root` on the `<th>`. */
8284
+ export declare const tableHeaderCellClassNames: {
8285
+ readonly root: "wave-table-header-cell";
8286
+ };
8287
+
6905
8288
  /** Properties for the TableHeaderCell sub-component. */
6906
8289
  export declare interface TableHeaderCellProps extends React_2.ThHTMLAttributes<HTMLTableCellElement> {
6907
8290
  /** Header cell content. */
@@ -6910,6 +8293,11 @@ export declare interface TableHeaderCellProps extends React_2.ThHTMLAttributes<H
6910
8293
  ref?: React_2.Ref<HTMLTableCellElement>;
6911
8294
  }
6912
8295
 
8296
+ /** Table.Header (and the deprecated Table.Head): `root` on the `<thead>`. */
8297
+ export declare const tableHeaderClassNames: {
8298
+ readonly root: "wave-table-header";
8299
+ };
8300
+
6913
8301
  /** Properties for the TableHeader sub-component. */
6914
8302
  export declare interface TableHeaderProps extends React_2.HTMLAttributes<HTMLTableSectionElement> {
6915
8303
  /** Table header row elements. */
@@ -6951,6 +8339,11 @@ export declare const TableRow: {
6951
8339
  displayName: string;
6952
8340
  };
6953
8341
 
8342
+ /** Table.Row: `root` on the `<tr>`. */
8343
+ export declare const tableRowClassNames: {
8344
+ readonly root: "wave-table-row";
8345
+ };
8346
+
6954
8347
  /** Properties for the TableRow sub-component. */
6955
8348
  export declare interface TableRowProps extends React_2.HTMLAttributes<HTMLTableRowElement> {
6956
8349
  /** Table cell elements. */
@@ -6996,6 +8389,11 @@ export declare const TabList: {
6996
8389
  };
6997
8390
  };
6998
8391
 
8392
+ /** TabList: `root` on the `role="tablist"` element. */
8393
+ export declare const tabListClassNames: {
8394
+ readonly root: "wave-tab-list";
8395
+ };
8396
+
6999
8397
  /**
7000
8398
  * The content of one tab, rendered only while its tab is selected and labelled by it (while a Tab
7001
8399
  * with its value is mounted). A non-empty `id` replaces the generated one (the tab's
@@ -7006,6 +8404,11 @@ export declare const TabListPanel: {
7006
8404
  displayName: string;
7007
8405
  };
7008
8406
 
8407
+ /** TabList.Panel: `root` on the `role="tabpanel"` element. */
8408
+ export declare const tabListPanelClassNames: {
8409
+ readonly root: "wave-tab-list-panel";
8410
+ };
8411
+
7009
8412
  /**
7010
8413
  * Optional container for the panels, rendered after the tablist. Use it to style the panel area,
7011
8414
  * and for panels that components render themselves: the TabList finds a Panel in its children, in
@@ -7017,6 +8420,11 @@ export declare const TabListPanels: {
7017
8420
  displayName: string;
7018
8421
  };
7019
8422
 
8423
+ /** TabList.Panels: `root` on the element around the panels. */
8424
+ export declare const tabListPanelsClassNames: {
8425
+ readonly root: "wave-tab-list-panels";
8426
+ };
8427
+
7020
8428
  /** Properties for the TabList component. */
7021
8429
  export declare interface TabListProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'defaultValue'> {
7022
8430
  /**
@@ -7078,6 +8486,11 @@ export declare const TabListTab: {
7078
8486
  displayName: string;
7079
8487
  };
7080
8488
 
8489
+ /** TabList.Tab: `root` on the `role="tab"` button. */
8490
+ export declare const tabListTabClassNames: {
8491
+ readonly root: "wave-tab-list-tab";
8492
+ };
8493
+
7081
8494
  /** Properties for the TabPanel sub-component. */
7082
8495
  export declare interface TabPanelProps extends React_2.HTMLAttributes<HTMLDivElement> {
7083
8496
  /** Value of the Tab that shows this panel. */
@@ -7121,6 +8534,18 @@ export declare interface TabProps extends React_2.ButtonHTMLAttributes<HTMLButto
7121
8534
  */
7122
8535
  export declare const Tag: PolymorphicComponent<'span', TagOwnProps>;
7123
8536
 
8537
+ /**
8538
+ * Tag: `root` on the rendered element (your `as`, default `<span>`); `primaryText` on the content
8539
+ * span; `dismissButton` on the Dismiss button; `dismissIcon` on the icon inside it (what
8540
+ * `dismissIcon` renders, a merged Button's icon span, else the default `<svg>`).
8541
+ */
8542
+ export declare const tagClassNames: {
8543
+ readonly root: "wave-tag";
8544
+ readonly primaryText: "wave-tag__primary-text";
8545
+ readonly dismissButton: "wave-tag__dismiss-button";
8546
+ readonly dismissIcon: "wave-tag__dismiss-icon";
8547
+ };
8548
+
7124
8549
  /**
7125
8550
  * The Tag's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).
7126
8551
  * Every other prop comes from the rendered element (`as`, default `span`).
@@ -7215,6 +8640,26 @@ export declare const TagPicker: {
7215
8640
  displayName: string;
7216
8641
  };
7217
8642
 
8643
+ /**
8644
+ * TagPicker: `root` on the outer element; `control` on the tag area; `group` on the list of tags;
8645
+ * `tag` on each tag; `removeButton` on each tag's remove button; `input` on the `role="combobox"`
8646
+ * input; `listbox` on the `role="listbox"` list; `option` on each Option it renders (which also
8647
+ * carries Option's classes); `surface` on the portaled popup; `emptyMessage` on the "No matches"
8648
+ * row.
8649
+ */
8650
+ export declare const tagPickerClassNames: {
8651
+ readonly root: "wave-tag-picker";
8652
+ readonly control: "wave-tag-picker__control";
8653
+ readonly group: "wave-tag-picker__group";
8654
+ readonly tag: "wave-tag-picker__tag";
8655
+ readonly removeButton: "wave-tag-picker__remove-button";
8656
+ readonly input: "wave-tag-picker__input";
8657
+ readonly listbox: "wave-tag-picker__listbox";
8658
+ readonly option: "wave-tag-picker__option";
8659
+ readonly surface: "wave-tag-picker__surface";
8660
+ readonly emptyMessage: "wave-tag-picker__empty-message";
8661
+ };
8662
+
7218
8663
  /**
7219
8664
  * The TagPicker's built-in names, descriptions and announcements, for localization. Each member is
7220
8665
  * optional and falls back to its English default.
@@ -7386,6 +8831,23 @@ export declare const TeachingPopover: {
7386
8831
  displayName: string;
7387
8832
  };
7388
8833
 
8834
+ /**
8835
+ * TeachingPopover: `root` on the `role="dialog"` surface; `beak` on the arrow; `closeButton`,
8836
+ * `backButton` and `nextButton` on its buttons (which also carry Button's root); `title` on the
8837
+ * `<h3>`; `body` on the step body; `footer` on the bottom row; `dot` on each step dot.
8838
+ */
8839
+ export declare const teachingPopoverClassNames: {
8840
+ readonly root: "wave-teaching-popover";
8841
+ readonly beak: "wave-teaching-popover__beak";
8842
+ readonly closeButton: "wave-teaching-popover__close-button";
8843
+ readonly title: "wave-teaching-popover__title";
8844
+ readonly body: "wave-teaching-popover__body";
8845
+ readonly footer: "wave-teaching-popover__footer";
8846
+ readonly dot: "wave-teaching-popover__dot";
8847
+ readonly backButton: "wave-teaching-popover__back-button";
8848
+ readonly nextButton: "wave-teaching-popover__next-button";
8849
+ };
8850
+
7389
8851
  /** The built-in text of a TeachingPopover, for localization (see `TeachingPopoverProps.labels`). */
7390
8852
  export declare interface TeachingPopoverLabels {
7391
8853
  /** Text of the Back button.
@@ -7523,6 +8985,12 @@ export declare const Textarea: {
7523
8985
  displayName: string;
7524
8986
  };
7525
8987
 
8988
+ /** Textarea: `root` on the `<textarea>`; `errorMessage` on the message after it, as Input's. */
8989
+ export declare const textareaClassNames: {
8990
+ readonly root: "wave-textarea";
8991
+ readonly errorMessage: "wave-textarea__error-message";
8992
+ };
8993
+
7526
8994
  /** Properties for the Textarea component. */
7527
8995
  export declare interface TextareaProps extends React_2.TextareaHTMLAttributes<HTMLTextAreaElement> {
7528
8996
  /**
@@ -7545,6 +9013,11 @@ export declare interface TextareaProps extends React_2.TextareaHTMLAttributes<HT
7545
9013
  ref?: React_2.Ref<HTMLTextAreaElement>;
7546
9014
  }
7547
9015
 
9016
+ /** Text: `root` on the rendered element (your `as`, default `<span>`). */
9017
+ export declare const textClassNames: {
9018
+ readonly root: "wave-text";
9019
+ };
9020
+
7548
9021
  /**
7549
9022
  * The Text's own props (the XOwnProps rule of `PolymorphicProps`: component-specific props only).
7550
9023
  * Every other prop comes from the rendered element (`as`, default `'span'`).
@@ -7619,6 +9092,27 @@ export declare const TimePicker: {
7619
9092
  displayName: string;
7620
9093
  };
7621
9094
 
9095
+ /**
9096
+ * TimePicker: `root` on the outer element; `input` on the `role="combobox"` input; `clearButton`
9097
+ * on the clear button; `expandButton` on the expand button and `expandIcon` on its glyph;
9098
+ * `errorMessage` on the `role="alert"` message; `listbox` on the `role="listbox"` list; `option`
9099
+ * on each option; `checkIcon` on each option's check column; `surface` on the portaled popup;
9100
+ * `emptyMessage` on its status row.
9101
+ */
9102
+ export declare const timePickerClassNames: {
9103
+ readonly root: "wave-time-picker";
9104
+ readonly input: "wave-time-picker__input";
9105
+ readonly clearButton: "wave-time-picker__clear-button";
9106
+ readonly expandButton: "wave-time-picker__expand-button";
9107
+ readonly expandIcon: "wave-time-picker__expand-icon";
9108
+ readonly errorMessage: "wave-time-picker__error-message";
9109
+ readonly listbox: "wave-time-picker__listbox";
9110
+ readonly option: "wave-time-picker__option";
9111
+ readonly checkIcon: "wave-time-picker__check-icon";
9112
+ readonly surface: "wave-time-picker__surface";
9113
+ readonly emptyMessage: "wave-time-picker__empty-message";
9114
+ };
9115
+
7622
9116
  /** Why typed text was not accepted (see {@link TimePickerProps.onInvalidInput}). */
7623
9117
  export declare type TimePickerInvalidReason = 'unparseable' | 'out-of-range';
7624
9118
 
@@ -7788,59 +9282,206 @@ export declare interface TimePickerProps extends Omit<React_2.HTMLAttributes<HTM
7788
9282
  }
7789
9283
 
7790
9284
  /**
7791
- * The visual of a single notification: status icon, visually hidden status text, title, body and an
7792
- * optional dismiss button. Usually rendered by `<Toaster>` through `useToastController()`.
9285
+ * A notification: status icon, visually hidden severity text, title, body, footer and a Dismiss
9286
+ * button. Its parts are direct children: `Toast.Title` (the title row, with an optional
9287
+ * `action`), `Toast.Body` (with an optional `subtitle`) and `Toast.Footer` (a row of actions); a
9288
+ * `Toast.Close` anywhere inside makes its child dismiss the toast. The `title` prop and plain
9289
+ * children are the 0.5 form and render as a Title and a Body.
9290
+ *
9291
+ * Dispatch it with `useToastController().dispatchToast(<Toast>…</Toast>)`, or render it yourself.
7793
9292
  *
7794
- * - **In a Toaster** (dispatched with `useToastController()`): not a live region itself; the
7795
- * Toaster announces it through its permanent live regions.
9293
+ * - **In a Toaster**: not a live region itself; the Toaster announces it once per dispatch through
9294
+ * its permanent live regions (its severity text, then its title, body and the labels of its
9295
+ * actions, never the Dismiss button, or, after the severity text, the dispatch's
9296
+ * `announcement`), politely or, for `error`, assertively, and names its container by the
9297
+ * severity text and title. Every Toast there shows the Dismiss button.
7796
9298
  * - **On its own** (your own container, an inline notice): a live region, as in 0.4 —
7797
9299
  * `role="status"` with `aria-live="polite"`, or `role="alert"` with `aria-live="assertive"` for
7798
9300
  * `error` (override with `role`/`aria-live`). A live region that is added together with its
7799
9301
  * text is not announced by every screen reader, so render the Toast in advance and change its
7800
9302
  * content, or dispatch it through a Toaster.
9303
+ *
9304
+ * Sub-components are also exported under flat names (`ToastTitle`, `ToastBody`, `ToastFooter`,
9305
+ * `ToastClose`): React Server Components import those, because dotted access (`Toast.Title`)
9306
+ * needs a client file.
7801
9307
  */
7802
9308
  export declare const Toast: {
7803
- ({ status, title, statusLabel, onDismiss, dismissLabel, className, children, ref, ...rest }: ToastProps): React_2.JSX.Element;
9309
+ ({ status, title, statusLabel, icon, onDismiss, dismissLabel, className, children, ref, ...rest }: ToastProps): JSX.Element;
9310
+ displayName: string;
9311
+ } & {
9312
+ Title: {
9313
+ ({ action, className, children, ref, ...rest }: ToastTitleProps): JSX.Element;
9314
+ displayName: string;
9315
+ };
9316
+ Body: {
9317
+ ({ subtitle, id: idProp, className, children, ref, ...rest }: ToastBodyProps): JSX.Element;
9318
+ displayName: string;
9319
+ };
9320
+ Footer: {
9321
+ ({ className, ref, ...rest }: ToastFooterProps): JSX.Element;
9322
+ displayName: string;
9323
+ };
9324
+ Close: {
9325
+ ({ children, asChild, ref, ...rest }: ToastCloseProps): ReactNode;
9326
+ displayName: string;
9327
+ };
9328
+ };
9329
+
9330
+ /**
9331
+ * The body text and an optional `subtitle`, which describe the toast. Your `id` is the id the
9332
+ * toast's description points at (a generated one otherwise).
9333
+ *
9334
+ * Also exported as `ToastBody` (import the flat name from React Server Components).
9335
+ */
9336
+ export declare const ToastBody: {
9337
+ ({ subtitle, id: idProp, className, children, ref, ...rest }: ToastBodyProps): React_2.JSX.Element;
9338
+ displayName: string;
9339
+ };
9340
+
9341
+ /**
9342
+ * Toast.Body: `root` on the body element (also the one plain children render); `subtitle` on the
9343
+ * `subtitle` line inside it.
9344
+ */
9345
+ export declare const toastBodyClassNames: {
9346
+ readonly root: "wave-toast-body";
9347
+ readonly subtitle: "wave-toast-body__subtitle";
9348
+ };
9349
+
9350
+ /** Properties for the ToastBody sub-component. */
9351
+ export declare interface ToastBodyProps extends React_2.HTMLAttributes<HTMLDivElement> {
9352
+ /** A secondary line under the body text. */
9353
+ subtitle?: React_2.ReactNode;
9354
+ /** Ref to the body element. */
9355
+ ref?: React_2.Ref<HTMLDivElement>;
9356
+ }
9357
+
9358
+ /**
9359
+ * Toast: `root` on the toast; `icon` on the status icon span (or your `icon` slot); `content` on
9360
+ * the text column that holds the title, body and footer; `dismissButton` on the Dismiss button.
9361
+ */
9362
+ export declare const toastClassNames: {
9363
+ readonly root: "wave-toast";
9364
+ readonly icon: "wave-toast__icon";
9365
+ readonly content: "wave-toast__content";
9366
+ readonly dismissButton: "wave-toast__dismiss-button";
9367
+ };
9368
+
9369
+ /**
9370
+ * Makes its single child dismiss the toast: it calls the Toast's `onDismiss` (when there is one),
9371
+ * then, inside the Toaster, dismisses the toast. Your `onClick` runs first; `preventDefault()`
9372
+ * keeps the toast. Works in dispatched content with or without a `Toast`. Fluent's `ToastTrigger`.
9373
+ *
9374
+ * Also exported as `ToastClose` (import the flat name from React Server Components).
9375
+ */
9376
+ export declare const ToastClose: {
9377
+ ({ children, asChild, ref, ...rest }: ToastCloseProps): React_2.ReactNode;
7804
9378
  displayName: string;
7805
9379
  };
7806
9380
 
9381
+ /** Properties for the ToastClose sub-component (as `DialogCloseProps`). */
9382
+ export declare interface ToastCloseProps extends Omit<React_2.HTMLAttributes<HTMLElement>, 'children'> {
9383
+ /** The element that dismisses the toast; a single element gets a composed `onClick`, a function the props. */
9384
+ children: React_2.ReactNode | ((props: ToastCloseRenderProps) => React_2.ReactNode);
9385
+ /** `false` renders a wrapper `<span>` that dismisses on click. @default true */
9386
+ asChild?: boolean;
9387
+ /** Ref to the close element (the child, or the wrapper span). */
9388
+ ref?: React_2.Ref<HTMLElement>;
9389
+ }
9390
+
9391
+ /** Props a `Toast.Close` puts on its element (and passes to a render-prop child), as `DialogCloseRenderProps`. */
9392
+ export declare interface ToastCloseRenderProps extends React_2.HTMLAttributes<HTMLElement> {
9393
+ onClick: React_2.MouseEventHandler<HTMLElement>;
9394
+ /** A callback ref, so the props spread onto any element type. */
9395
+ ref: React_2.RefCallback<HTMLElement>;
9396
+ }
9397
+
7807
9398
  /** The toast API returned by {@link useToastController}. */
7808
9399
  export declare interface ToastController {
7809
9400
  /**
7810
- * Shows a toast and returns its id (`options.toastId`, or a generated one). A toast with the same
7811
- * id is replaced. Beyond the Toaster's `limit`, the toast waits in a queue until it can be shown.
9401
+ * Shows a toast and returns its id. `dispatchToast(content, options?)` shows your content,
9402
+ * usually a `<Toast>` with parts; `dispatchToast(options)` builds a toast from text (0.5). A
9403
+ * plain object is read as options; anything else (an element, a portal, a string) is content. A
9404
+ * toast with the same id is replaced (revived while it exits); beyond the Toaster's `limit` the
9405
+ * toast waits in a queue. Fluent's `dispatchToast(content, options)` returns nothing.
7812
9406
  */
7813
- dispatchToast: (options: ToastOptions) => string;
9407
+ dispatchToast: {
9408
+ (content: React_2.ReactNode, options?: ToastDispatchOptions): string;
9409
+ (options: ToastOptions): string;
9410
+ };
7814
9411
  /**
7815
- * Removes the toast with this id (shown or waiting) and cancels its timer. Unknown ids are
7816
- * ignored.
9412
+ * Dismisses the toast with this id and cancels its timer: a shown toast exits (it stays, inert,
9413
+ * until an exit motion of yours ends), a waiting one is removed. Unknown ids are ignored.
7817
9414
  */
7818
9415
  dismissToast: (id: string) => void;
7819
- /** Removes every toast, shown and queued, and cancels their timers. */
9416
+ /**
9417
+ * Dismisses every toast and cancels their timers: shown toasts exit (as `dismissToast`), queued
9418
+ * ones are removed.
9419
+ */
7820
9420
  dismissAllToasts: () => void;
7821
9421
  }
7822
9422
 
9423
+ /** Options of `dispatchToast(content, options)`, the form that shows your own React content. */
9424
+ export declare interface ToastDispatchOptions {
9425
+ /** As `ToastOptions.toastId`: dispatching again with the id of a shown or exiting toast replaces it. */
9426
+ toastId?: string;
9427
+ /**
9428
+ * Auto-dismiss timeout in milliseconds, as `ToastOptions.timeout`. A toast that holds an action
9429
+ * (an interactive element besides its Dismiss button) stays until it is dismissed unless you
9430
+ * pass one: people using a screen reader, a switch or voice control need time to reach it.
9431
+ * @default 5000, or no timeout for a toast with an action
9432
+ */
9433
+ timeout?: number;
9434
+ /**
9435
+ * Severity of content that renders no `Toast`: the announcement's politeness (`error` is
9436
+ * assertive), its spoken prefix and the container's name. A rendered `Toast` uses its own
9437
+ * `status`; a different value passed here warns in development.
9438
+ * @default 'info'
9439
+ */
9440
+ status?: Status;
9441
+ /** Visually hidden severity text for content that renders no `Toast` (as `Toast.statusLabel`). */
9442
+ statusLabel?: string;
9443
+ /**
9444
+ * Text announced instead of the toast's title, body and action labels (the severity text still
9445
+ * comes first), for a toast whose visible text is no good announcement, such as a progress toast.
9446
+ */
9447
+ announcement?: string;
9448
+ }
9449
+
7823
9450
  /**
7824
9451
  * Provides {@link useToastController} to its children and shows the dispatched toasts.
7825
9452
  *
7826
- * - **Wrap the app** in `<Toaster>`; components below it call `useToastController()`.
9453
+ * - **Wrap the app** in `<Toaster>`; components below it call `useToastController()`, and code
9454
+ * outside components (a query-cache callback, a server-event handler) dispatches through a
9455
+ * handle from `createToaster()` bound with `toaster`, which also runs several Toasters side by
9456
+ * side (one handle each).
9457
+ * - **Two ways to dispatch:** `dispatchToast(<Toast>…</Toast>)` shows your content, usually a
9458
+ * `Toast` with `Toast.Title`, `Toast.Body` and `Toast.Footer`; `dispatchToast({ title, body })`
9459
+ * builds a toast from text. Both return the toast's id. Content without a `Toast` takes its
9460
+ * severity from the options (`status`, `statusLabel`) and shows no Dismiss button (add a
9461
+ * `Toast.Close`).
7827
9462
  * - The toasts render in a portal (the `toast` layer, above dialogs) inside a region labelled
7828
9463
  * "Notifications" (override with `aria-label`). The region is allow-listed for modals
7829
9464
  * (`data-wave-focus-trap-allow`): it stays reachable by Tab and exposed to assistive technology
7830
9465
  * while a Dialog or Drawer is open, and clicking a toast never dismisses the overlay below.
7831
9466
  * - Two permanent, visually hidden live regions (polite, and assertive for `error`) announce every
7832
- * toast; the toasts themselves are not live regions. Each message stays in its live region for
7833
- * 2 seconds (or until its toast goes), so browsing the region later meets the text only once.
9467
+ * toast once per dispatch, read from what it renders after it mounts: the severity text, then
9468
+ * the title, the body and the labels of its actions (never the Dismiss button) or, instead of
9469
+ * those, the dispatch's `announcement`.
9470
+ * The toasts themselves are not live regions. Each message stays in its live region for 2
9471
+ * seconds (or until its toast goes), so browsing the region later meets the text only once.
7834
9472
  * - While an open modal panel covers the toasts' corner (a Drawer on the same side), the toasts
7835
9473
  * move beside it, so they never hide its focused controls (WCAG 2.4.11). Without room beside it
7836
9474
  * (a full-width panel on a narrow screen) they keep their corner.
7837
- * - Timers pause while a toast is hovered or focused and while the window is in the background
7838
- * (it has lost focus, or the page is not shown, as in a background tab).
7839
- * When a toast that contains focus goes away, focus moves to the next toast (or the previous one
7840
- * when the last toast goes), or back to the element that was focused before focus entered the
7841
- * toasts once no toast is left (kept across the moves between toasts and while another window
7842
- * is active; forgotten once focus has returned to it, and when focus leaves the toasts for
7843
- * another element or for the page body).
9475
+ * - Timers pause while the pointer or focus is anywhere in the toast region, a menu or popover
9476
+ * opened from a toast included (someone reading or operating one toast is reading the stack),
9477
+ * and while the window is in the background (it has lost focus, or the page is not shown, as in
9478
+ * a background tab). When a toast that contains focus goes away, focus moves to the next toast
9479
+ * (or the previous one), or back to the element that was focused before focus entered the
9480
+ * toasts once no toast is left.
9481
+ * - **Keyboard:** `shortcuts.focus` names a key press that moves focus to the newest toast (use a
9482
+ * modifier, WCAG 2.1.4); Escape in the toast region dismisses every toast and returns focus to
9483
+ * where it was before focus entered the toasts (a tooltip or menu of a toast closes first, and a
9484
+ * Dialog below stays open); Delete or Backspace dismisses the focused toast.
7844
9485
  * - Each toast's dismiss button is named "Dismiss"; pass `dismissLabel` to `dispatchToast` for
7845
9486
  * other languages.
7846
9487
  * - `limit` caps how many toasts show at once: the others wait in a queue, in dispatch order,
@@ -7853,10 +9494,27 @@ export declare interface ToastController {
7853
9494
  * </Toaster>
7854
9495
  */
7855
9496
  export declare const Toaster: {
7856
- ({ position, limit: limitProp, className, style, children, onFocus, onBlur, ref, ...rest }: ToasterProps): React_2.JSX.Element;
9497
+ ({ position, limit: limitProp, shortcuts, toaster: handle, className, style, children, onFocus, onBlur, onKeyDown, onPointerEnter, onPointerLeave, onPointerOver, ref, ...rest }: ToasterProps): React_2.JSX.Element;
7857
9498
  displayName: string;
7858
9499
  };
7859
9500
 
9501
+ /**
9502
+ * Toaster: `root` on the portaled toast region; `toast` on the `role="group"` container the
9503
+ * Toaster renders around each toast.
9504
+ */
9505
+ export declare const toasterClassNames: {
9506
+ readonly root: "wave-toaster";
9507
+ readonly toast: "wave-toaster__toast";
9508
+ };
9509
+
9510
+ /**
9511
+ * A toast controller that code outside React components can call (a query-cache callback, a
9512
+ * server-event handler, a shared helper). Bind it to one Toaster with `<Toaster toaster={handle}>`;
9513
+ * toasts dispatched through it render there. One handle per Toaster is also how an app runs
9514
+ * several Toasters (Fluent's `toasterId`).
9515
+ */
9516
+ export declare type ToasterHandle = ToastController;
9517
+
7860
9518
  /** Properties for the Toaster container component. */
7861
9519
  export declare interface ToasterProps extends React_2.HTMLAttributes<HTMLDivElement> {
7862
9520
  /**
@@ -7868,15 +9526,56 @@ export declare interface ToasterProps extends React_2.HTMLAttributes<HTMLDivElem
7868
9526
  /**
7869
9527
  * Most toasts shown at once. Further toasts wait in a queue (in dispatch order) and appear when
7870
9528
  * a shown toast goes; a queued toast is not announced and its timer does not run until then.
7871
- * Lowering it never hides a toast that is already shown. A value below 1 counts as 1
7872
- * (development warning); `Infinity` means no limit.
9529
+ * Lowering it never hides a toast that is already shown, and a toast dispatched again with its id
9530
+ * while it exits comes back at once, even when `limit` toasts are already shown. A value below 1
9531
+ * counts as 1 (development warning); `Infinity` means no limit.
7873
9532
  * @default Infinity
7874
9533
  */
7875
9534
  limit?: number;
9535
+ /** Keyboard shortcuts; Escape, Delete and Backspace need none (see the component docs). */
9536
+ shortcuts?: ToasterShortcuts;
9537
+ /**
9538
+ * Binds this Toaster to a handle from `createToaster()`: toasts dispatched through the handle
9539
+ * render here. A handle binds one Toaster: a second Toaster given a bound handle does not bind
9540
+ * (development warning), and does not take the handle over when the first unmounts; the handle
9541
+ * queues again until a Toaster binds it.
9542
+ */
9543
+ toaster?: ToasterHandle;
7876
9544
  /** Ref to the toast region (the portaled `<div role="region">`). */
7877
9545
  ref?: React_2.Ref<HTMLDivElement>;
7878
9546
  }
7879
9547
 
9548
+ /** Keyboard shortcuts of a Toaster (Fluent's shape). */
9549
+ export declare interface ToasterShortcuts {
9550
+ /**
9551
+ * Returns `true` for the key press that moves focus to the most recently dispatched toast, for
9552
+ * example `(event) => event.altKey && event.shiftKey && event.code === 'KeyN'`. Use a modifier
9553
+ * (or let people change or turn off the shortcut): a single-character shortcut fails WCAG 2.1.4.
9554
+ */
9555
+ focus?: (event: KeyboardEvent) => boolean;
9556
+ }
9557
+
9558
+ /**
9559
+ * A row of actions under the body.
9560
+ *
9561
+ * Also exported as `ToastFooter` (import the flat name from React Server Components).
9562
+ */
9563
+ export declare const ToastFooter: {
9564
+ ({ className, ref, ...rest }: ToastFooterProps): React_2.JSX.Element;
9565
+ displayName: string;
9566
+ };
9567
+
9568
+ /** Toast.Footer: `root` on the row of actions. */
9569
+ export declare const toastFooterClassNames: {
9570
+ readonly root: "wave-toast-footer";
9571
+ };
9572
+
9573
+ /** Properties for the ToastFooter sub-component. */
9574
+ export declare interface ToastFooterProps extends React_2.HTMLAttributes<HTMLDivElement> {
9575
+ /** Ref to the footer element. */
9576
+ ref?: React_2.Ref<HTMLDivElement>;
9577
+ }
9578
+
7880
9579
  /** Options for dispatching a toast notification. */
7881
9580
  export declare interface ToastOptions {
7882
9581
  /** Status level controlling the toast color, icon, status text and announcement politeness
@@ -7890,19 +9589,19 @@ export declare interface ToastOptions {
7890
9589
  body?: string;
7891
9590
  /**
7892
9591
  * Auto-dismiss timeout in milliseconds. The countdown starts when the toast is shown (a toast
7893
- * waiting beyond the Toaster's `limit` does not count down) and pauses while the pointer is over
7894
- * the toast, while focus is inside it and while the browser window is in the background (it has
7895
- * lost focus, or the page is not shown, as in a background tab, also when the Toaster mounts
7896
- * there). `0` (or any value that is not a positive finite number) keeps the toast until it is
7897
- * dismissed.
9592
+ * waiting beyond the Toaster's `limit` does not count down) and pauses while the pointer or
9593
+ * focus is anywhere in the toast region (a menu or popover opened from a toast included) and
9594
+ * while the browser window is in the background (it has lost focus, or the page is not shown, as
9595
+ * in a background tab, also when the Toaster mounts there). `0` (or any value that is not a
9596
+ * positive finite number) keeps the toast until it is dismissed.
7898
9597
  * @default 5000
7899
9598
  */
7900
9599
  timeout?: number;
7901
9600
  /**
7902
9601
  * Identifier of the toast. `dispatchToast` returns it (a generated one when omitted). Dispatching
7903
- * again with the id of a toast that is still shown replaces that toast (content and timer); with
7904
- * the id of a toast that waits beyond the Toaster's `limit`, it replaces its options and the toast
7905
- * keeps its place in the queue.
9602
+ * again with the id of a toast that is shown, or still exiting after its dismissal, replaces or
9603
+ * revives that toast (content and timer); with the id of a toast that waits beyond the Toaster's
9604
+ * `limit`, it replaces its options and the toast keeps its place in the queue.
7906
9605
  */
7907
9606
  toastId?: string;
7908
9607
  /**
@@ -7929,14 +9628,27 @@ export declare interface ToastProps extends React_2.HTMLAttributes<HTMLDivElemen
7929
9628
  * @default 'info'
7930
9629
  */
7931
9630
  status?: Status;
7932
- /** Title text displayed in the toast. */
9631
+ /**
9632
+ * Title text (the 0.5 form; renders as a `Toast.Title`). A `Toast.Title` among the children wins
9633
+ * over it (development warning).
9634
+ */
7933
9635
  title?: string;
7934
9636
  /**
7935
9637
  * Visually hidden status text read before the toast (`'Info:'`, `'Success:'`, `'Warning:'`,
7936
9638
  * `'Error:'` by default). Pass a translation for other languages, or `''` to omit it.
7937
9639
  */
7938
9640
  statusLabel?: string;
7939
- /** Called when the dismiss button is activated. Passing it renders the dismiss button. */
9641
+ /**
9642
+ * Replaces the status icon (decorative, `aria-hidden`). Only `undefined` keeps the default;
9643
+ * `null`, or anything that renders nothing, shows no icon (the status-icon slot rule, as
9644
+ * `MessageBar.icon`). Fluent's `ToastTitle` `media`.
9645
+ */
9646
+ icon?: Slot<'span'>;
9647
+ /**
9648
+ * Called when the Dismiss button or a `Toast.Close` is activated; passing it renders the button.
9649
+ * Inside the Toaster every Toast shows the button and it dismisses the toast (your `onDismiss`
9650
+ * runs first). A timeout, Escape, Delete and `dismissToast` do not call it.
9651
+ */
7940
9652
  onDismiss?: () => void;
7941
9653
  /**
7942
9654
  * Accessible name of the dismiss button. Pass a translation for other languages.
@@ -7947,6 +9659,35 @@ export declare interface ToastProps extends React_2.HTMLAttributes<HTMLDivElemen
7947
9659
  ref?: React_2.Ref<HTMLDivElement>;
7948
9660
  }
7949
9661
 
9662
+ /**
9663
+ * The title row: the title text (which names the toast) and an optional `action` at its end. A
9664
+ * direct child of Toast, or dispatched content of a Toaster.
9665
+ *
9666
+ * Also exported as `ToastTitle` (import the flat name from React Server Components).
9667
+ */
9668
+ export declare const ToastTitle: {
9669
+ ({ action, className, children, ref, ...rest }: ToastTitleProps): React_2.JSX.Element;
9670
+ displayName: string;
9671
+ };
9672
+
9673
+ /**
9674
+ * Toast.Title: `root` on the title row (also the one the `title` prop renders); `label` on the
9675
+ * title text, which names the toast; `action` on the `action` slot at the row's end.
9676
+ */
9677
+ export declare const toastTitleClassNames: {
9678
+ readonly root: "wave-toast-title";
9679
+ readonly label: "wave-toast-title__label";
9680
+ readonly action: "wave-toast-title__action";
9681
+ };
9682
+
9683
+ /** Properties for the ToastTitle sub-component. */
9684
+ export declare interface ToastTitleProps extends React_2.HTMLAttributes<HTMLDivElement> {
9685
+ /** Content at the end of the title row, such as a link or a button (often in `Toast.Close`). */
9686
+ action?: Slot<'span'>;
9687
+ /** Ref to the title row. */
9688
+ ref?: React_2.Ref<HTMLDivElement>;
9689
+ }
9690
+
7950
9691
  /**
7951
9692
  * A button that switches between pressed and unpressed, e.g. Bold in a text toolbar. Built on
7952
9693
  * {@link Button}: same appearances, sizes, `type="button"` default, decorative icon slot and
@@ -7967,10 +9708,19 @@ export declare interface ToastProps extends React_2.HTMLAttributes<HTMLDivElemen
7967
9708
  * <ToggleButton role="checkbox" isAccessible icon={<GridIcon />} aria-label="Grid" />
7968
9709
  */
7969
9710
  export declare const ToggleButton: {
7970
- ({ pressed, defaultPressed, onPressedChange, appearance, size, disabled, disabledFocusable, isAccessible, className, onClick, ...props }: ToggleButtonProps): React_2.JSX.Element;
9711
+ ({ pressed, defaultPressed, onPressedChange, appearance, size, disabled, disabledFocusable, isAccessible, icon, className, onClick, ...props }: ToggleButtonProps): React_2.JSX.Element;
7971
9712
  displayName: string;
7972
9713
  };
7973
9714
 
9715
+ /**
9716
+ * ToggleButton (also carries Button's root and icon classes): `root` on the `<button>`; `icon` on
9717
+ * Button's icon span.
9718
+ */
9719
+ export declare const toggleButtonClassNames: {
9720
+ readonly root: "wave-toggle-button";
9721
+ readonly icon: "wave-toggle-button__icon";
9722
+ };
9723
+
7974
9724
  /** Properties for the ToggleButton component. */
7975
9725
  export declare interface ToggleButtonProps extends Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
7976
9726
  /** Controlled pressed state. */
@@ -8078,7 +9828,7 @@ export declare interface ToggleButtonProps extends Omit<React_2.ButtonHTMLAttrib
8078
9828
  export declare const Toolbar: PolymorphicComponent<"div", ToolbarOwnProps> & {
8079
9829
  Button: PolymorphicComponent<"button", ToolbarButtonOwnProps>;
8080
9830
  ToggleButton: {
8081
- ({ name, value, appearance, size, onClick, ...rest }: ToolbarToggleButtonProps): React_2.JSX.Element;
9831
+ ({ name, value, appearance, size, icon, className, onClick, ...rest }: ToolbarToggleButtonProps): React_2.JSX.Element;
8082
9832
  displayName: string;
8083
9833
  };
8084
9834
  RadioGroup: {
@@ -8086,7 +9836,7 @@ export declare const Toolbar: PolymorphicComponent<"div", ToolbarOwnProps> & {
8086
9836
  displayName: string;
8087
9837
  };
8088
9838
  RadioButton: {
8089
- ({ name, value, appearance, size, onClick, ...rest }: ToolbarRadioButtonProps): React_2.JSX.Element;
9839
+ ({ name, value, appearance, size, icon, className, onClick, ...rest }: ToolbarRadioButtonProps): React_2.JSX.Element;
8090
9840
  displayName: string;
8091
9841
  };
8092
9842
  Group: {
@@ -8111,6 +9861,15 @@ export declare const Toolbar: PolymorphicComponent<"div", ToolbarOwnProps> & {
8111
9861
  */
8112
9862
  export declare const ToolbarButton: PolymorphicComponent<'button', ToolbarButtonOwnProps>;
8113
9863
 
9864
+ /**
9865
+ * Toolbar.Button (also carries Button's root and icon classes): `root` on the rendered element;
9866
+ * `icon` on Button's icon span (the icon box of `vertical`).
9867
+ */
9868
+ export declare const toolbarButtonClassNames: {
9869
+ readonly root: "wave-toolbar-button";
9870
+ readonly icon: "wave-toolbar-button__icon";
9871
+ };
9872
+
8114
9873
  /** Toolbar.Button's own props: Button's, plus `vertical`. Default appearance `'subtle'`. */
8115
9874
  export declare interface ToolbarButtonOwnProps extends ButtonOwnProps {
8116
9875
  /** The icon above the label (a 24 px icon box and a caption-size label). @default false */
@@ -8120,6 +9879,11 @@ export declare interface ToolbarButtonOwnProps extends ButtonOwnProps {
8120
9879
  /** Props of {@link ToolbarButton} rendered as `C` (default `'button'`), including `ref`. */
8121
9880
  export declare type ToolbarButtonProps<C extends React_2.ElementType = 'button'> = PolymorphicProps<C, ToolbarButtonOwnProps>;
8122
9881
 
9882
+ /** Toolbar: `root` on the `role="toolbar"` element (your `as`, default `<div>`). */
9883
+ export declare const toolbarClassNames: {
9884
+ readonly root: "wave-toolbar";
9885
+ };
9886
+
8123
9887
  /**
8124
9888
  * A separator between groups, drawn across the toolbar (vertical in a horizontal toolbar):
8125
9889
  * `role="separator"` with `aria-orientation`. It is not focusable, so the arrow keys pass it.
@@ -8131,6 +9895,11 @@ export declare const ToolbarDivider: {
8131
9895
  displayName: string;
8132
9896
  };
8133
9897
 
9898
+ /** Toolbar.Divider: `root` on the `role="separator"` element. */
9899
+ export declare const toolbarDividerClassNames: {
9900
+ readonly root: "wave-toolbar-divider";
9901
+ };
9902
+
8134
9903
  /** Properties for Toolbar.Divider. */
8135
9904
  export declare interface ToolbarDividerProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'children'> {
8136
9905
  /** Ref to the separator element. */
@@ -8154,6 +9923,11 @@ export declare const ToolbarGroup: {
8154
9923
  displayName: string;
8155
9924
  };
8156
9925
 
9926
+ /** Toolbar.Group: `root` on the group element. */
9927
+ export declare const toolbarGroupClassNames: {
9928
+ readonly root: "wave-toolbar-group";
9929
+ };
9930
+
8157
9931
  /** Properties for Toolbar.Group. */
8158
9932
  export declare interface ToolbarGroupProps extends React_2.HTMLAttributes<HTMLDivElement> {
8159
9933
  /** Ref to the group element. */
@@ -8216,10 +9990,19 @@ export declare type ToolbarProps<C extends React_2.ElementType = 'div'> = Polymo
8216
9990
  * </Toolbar.RadioGroup>
8217
9991
  */
8218
9992
  export declare const ToolbarRadioButton: {
8219
- ({ name, value, appearance, size, onClick, ...rest }: ToolbarRadioButtonProps): React_2.JSX.Element;
9993
+ ({ name, value, appearance, size, icon, className, onClick, ...rest }: ToolbarRadioButtonProps): React_2.JSX.Element;
8220
9994
  displayName: string;
8221
9995
  };
8222
9996
 
9997
+ /**
9998
+ * Toolbar.RadioButton (also carries the root and icon classes of Button and ToggleButton):
9999
+ * `root` on the `role="radio"` button; `icon` on the icon span.
10000
+ */
10001
+ export declare const toolbarRadioButtonClassNames: {
10002
+ readonly root: "wave-toolbar-radio-button";
10003
+ readonly icon: "wave-toolbar-radio-button__icon";
10004
+ };
10005
+
8223
10006
  /** Properties for Toolbar.RadioButton: one choice of a `Toolbar.RadioGroup`. */
8224
10007
  export declare interface ToolbarRadioButtonProps extends Omit<ToggleButtonProps, 'pressed' | 'defaultPressed' | 'onPressedChange' | 'name' | 'value' | 'role'> {
8225
10008
  /** The group: a key of the Toolbar's `checkedValues`; radio buttons of one `name` are exclusive. */
@@ -8253,6 +10036,11 @@ export declare const ToolbarRadioGroup: {
8253
10036
  displayName: string;
8254
10037
  };
8255
10038
 
10039
+ /** Toolbar.RadioGroup: `root` on the `role="radiogroup"` element. */
10040
+ export declare const toolbarRadioGroupClassNames: {
10041
+ readonly root: "wave-toolbar-radio-group";
10042
+ };
10043
+
8256
10044
  /** Properties for Toolbar.RadioGroup. */
8257
10045
  export declare interface ToolbarRadioGroupProps extends React_2.HTMLAttributes<HTMLDivElement> {
8258
10046
  /** Ref to the group element. */
@@ -8274,10 +10062,19 @@ export declare interface ToolbarRadioGroupProps extends React_2.HTMLAttributes<H
8274
10062
  * </Toolbar>
8275
10063
  */
8276
10064
  export declare const ToolbarToggleButton: {
8277
- ({ name, value, appearance, size, onClick, ...rest }: ToolbarToggleButtonProps): React_2.JSX.Element;
10065
+ ({ name, value, appearance, size, icon, className, onClick, ...rest }: ToolbarToggleButtonProps): React_2.JSX.Element;
8278
10066
  displayName: string;
8279
10067
  };
8280
10068
 
10069
+ /**
10070
+ * Toolbar.ToggleButton (also carries the root and icon classes of Button and ToggleButton):
10071
+ * `root` on the `<button>`; `icon` on the icon span.
10072
+ */
10073
+ export declare const toolbarToggleButtonClassNames: {
10074
+ readonly root: "wave-toolbar-toggle-button";
10075
+ readonly icon: "wave-toolbar-toggle-button__icon";
10076
+ };
10077
+
8281
10078
  /** Properties for Toolbar.ToggleButton: ToggleButton's, bound to the Toolbar's `checkedValues`. */
8282
10079
  export declare interface ToolbarToggleButtonProps extends Omit<ToggleButtonProps, 'pressed' | 'defaultPressed' | 'onPressedChange' | 'name' | 'value'> {
8283
10080
  /** The group: a key of the Toolbar's `checkedValues`. */
@@ -8336,6 +10133,12 @@ export declare const Tooltip: {
8336
10133
  /** Color treatment of a tooltip (`TooltipProps.appearance`). */
8337
10134
  export declare type TooltipAppearance = 'inverted' | 'normal';
8338
10135
 
10136
+ /** Tooltip: `root` on the span around your child; `content` on the portaled tooltip. */
10137
+ export declare const tooltipClassNames: {
10138
+ readonly root: "wave-tooltip";
10139
+ readonly content: "wave-tooltip__content";
10140
+ };
10141
+
8339
10142
  /** Properties for the Tooltip component. */
8340
10143
  export declare interface TooltipProps extends Omit<React_2.HTMLAttributes<HTMLSpanElement>, 'content'> {
8341
10144
  /** Content to display inside the tooltip (short, non-interactive text). */
@@ -8413,30 +10216,68 @@ export declare interface TooltipProps extends Omit<React_2.HTMLAttributes<HTMLSp
8413
10216
 
8414
10217
  /**
8415
10218
  * A hierarchical list (WAI-ARIA Tree View pattern) with a single tab stop: Up/Down move between
8416
- * visible items, Home/End to the first/last, Right expands or moves to the first child, Left
8417
- * collapses or moves to the parent (both mirrored in RTL), Enter/Space activate (and toggle a
8418
- * parent), `*` expands the siblings, and typing jumps to an item by its text.
10219
+ * visible items, Home/End to the first/last, Right expands or moves to the first child (or into
10220
+ * the row's actions, see below), Left collapses or moves to the parent (both mirrored in RTL),
10221
+ * Enter activates (and toggles a parent), and so does Space unless the tree has checkboxes, `*`
10222
+ * expands the siblings, and typing jumps to an item by its text.
8419
10223
  *
8420
10224
  * Keyboard focus enters at the `selected` item, else the first item; while focus is inside, the
8421
10225
  * tab stop follows it, so Shift+Tab leaves the tree.
8422
10226
  *
10227
+ * `selectionMode="multiple"` draws a checkbox on every item, bound to `checkedItems`: Space
10228
+ * toggles the focused item's check, a click on the checkbox toggles it, and a click elsewhere on
10229
+ * the row activates the item (as Enter does). Checks cascade: checking an item checks every item
10230
+ * nested in it, and an item shows checked when all of its nested items are checked, mixed when
10231
+ * some are. `onCheckedItemsChange` receives every checked item in tree order (fully checked parents
10232
+ * included), followed by listed values that match no item, and `details` (`value`, `checked`,
10233
+ * `event`).
10234
+ *
10235
+ * Row content: `actions` (buttons at the end of the row, in a toolbar named by the item, shown on
10236
+ * hover and focus, and always where there is no hover or colors are forced), `aside` (a count or a
10237
+ * badge that describes the item), `iconAfter` and `expandIcon`. Tab from the focused item enters
10238
+ * its actions and Shift+Tab returns. Keys and clicks on the actions never activate or check the
10239
+ * item. With `navigationMode="treegrid"`, Right (Left in right-to-left layouts) moves from an
10240
+ * item into its actions and Left returns, the actions take no Tab stop, and on an open parent Right
10241
+ * moves into its actions rather than to its first child (Down does); the roles stay `tree` and
10242
+ * `treeitem`.
10243
+ *
8423
10244
  * Items are `Tree.Item` elements; nested items are written in their parent's children (directly,
8424
10245
  * in Fragments, or returned by a render function), not rendered by a component of their own.
8425
- * Every item needs a `value` that is unique within the Tree.
10246
+ * Every item needs a `value` that is unique within the Tree. `Tree.ItemPersonaLayout` lays out a
10247
+ * person (media, name and description) as an item's label.
8426
10248
  *
8427
- * `Tree.Item` is also exported as `TreeItem` for React Server Components, which cannot use the
8428
- * dotted form.
10249
+ * `Tree.Item` and `Tree.ItemPersonaLayout` are also exported as `TreeItem` and
10250
+ * `TreeItemPersonaLayout` for React Server Components, which cannot use the dotted form.
8429
10251
  */
8430
10252
  export declare const Tree: {
8431
- ({ expandedItems, defaultExpandedItems, onExpandedItemsChange, onItemSelect, selected, current, className, children, onKeyDown, onKeyDownCapture, onFocus, onBlur, ref, ...rest }: TreeProps): React_2.JSX.Element;
10253
+ ({ expandedItems, defaultExpandedItems, onExpandedItemsChange, onItemSelect, selected, current, selectionMode, navigationMode, checkedItems, defaultCheckedItems, onCheckedItemsChange, className, children, onKeyDown, onKeyDownCapture, onFocus, onBlur, ref, ...rest }: TreeProps): JSX.Element;
8432
10254
  displayName: string;
8433
10255
  } & {
8434
10256
  Item: {
8435
- ({ value, icon, leaf, className, children, onClick, onKeyDown, onFocus, ref, ...props }: TreeItemProps): React_2.JSX.Element;
10257
+ ({ value, icon, iconAfter, expandIcon, aside, actions, leaf, className, children, onClick, onKeyDown, onFocus, onBlur, ref, ...props }: TreeItemProps): JSX.Element;
10258
+ displayName: string;
10259
+ };
10260
+ ItemPersonaLayout: {
10261
+ ({ media, description, className, children, ref, ...rest }: TreeItemPersonaLayoutProps): JSX.Element;
8436
10262
  displayName: string;
8437
10263
  };
8438
10264
  };
8439
10265
 
10266
+ /** The second argument of `onCheckedItemsChange`. */
10267
+ export declare interface TreeCheckedItemsChangeDetails {
10268
+ /** The item that was toggled. */
10269
+ value: string;
10270
+ /** Its new state (a toggle never leaves it mixed). */
10271
+ checked: boolean;
10272
+ /** The DOM event of the toggle: a keyboard event for Space, a mouse event for a click. */
10273
+ event: Event;
10274
+ }
10275
+
10276
+ /** Tree: `root` on the `role="tree"` element. */
10277
+ export declare const treeClassNames: {
10278
+ readonly root: "wave-tree";
10279
+ };
10280
+
8440
10281
  /**
8441
10282
  * One node of a Tree. Text and other content are the label; nested `Tree.Item` children form its
8442
10283
  * child group, which is shown while the item is expanded.
@@ -8445,25 +10286,87 @@ export declare const Tree: {
8445
10286
  * Fragments, or returned by a render function (`{node.children.map(renderNode)}`). A component
8446
10287
  * that renders `Tree.Item` itself (a recursive `<NodeView node={child} />`) is not recognised:
8447
10288
  * its output becomes part of the label, so the parent cannot expand (a development warning names
8448
- * this). Render data-driven trees with a render function instead.
10289
+ * this). Render data-driven trees with a render function instead. The checks of a
10290
+ * `selectionMode="multiple"` tree cascade by the same rule, so an item that such a component
10291
+ * renders is not checked with its parent.
8449
10292
  *
8450
10293
  * `ref` and every other prop land on the `role="treeitem"` element, which contains the label row
8451
10294
  * and the child group. Its `onClick` receives only clicks on its own row (not on its child group
8452
10295
  * or nested items) and its `onKeyDown` only keys pressed while focus is on it or in its row; both
8453
- * run before the built-in behaviour (call `event.preventDefault()` to skip it). Its other event
8454
- * handlers (`onFocus`, `onDoubleClick`, `onContextMenu` and the rest) are not filtered: as DOM
8455
- * events bubble, they also receive events from its child group and nested items (compare
8456
- * `event.target` with `event.currentTarget` to tell them apart).
10296
+ * run before the built-in behaviour (call `event.preventDefault()` to skip it). In a checkbox
10297
+ * tree, a click on the item's checkbox toggles its check and is not passed to `onClick`, and
10298
+ * neither is a click on its actions; `onKeyDown` receives no keys pressed in the actions. Its
10299
+ * other event handlers (`onFocus`, `onDoubleClick`, `onContextMenu` and the rest) are not
10300
+ * filtered: as DOM events bubble, they also receive events from its child group and nested items
10301
+ * (compare `event.target` with `event.currentTarget` to tell them apart).
10302
+ *
10303
+ * `actions` render in a toolbar at the end of the row, named by the item; keys and clicks on them
10304
+ * belong to them and never activate or check the item. `aside` sits before them and describes the
10305
+ * item.
8457
10306
  *
8458
10307
  * The item is named by its label (`aria-labelledby`), not by its icon or nested items; an
8459
10308
  * `aria-label` or `aria-labelledby` prop replaces that name. Typeahead matches the label text too
8460
10309
  * (a `data-roving-text` prop replaces it).
8461
10310
  */
8462
10311
  export declare const TreeItem: {
8463
- ({ value, icon, leaf, className, children, onClick, onKeyDown, onFocus, ref, ...props }: TreeItemProps): React_2.JSX.Element;
10312
+ ({ value, icon, iconAfter, expandIcon, aside, actions, leaf, className, children, onClick, onKeyDown, onFocus, onBlur, ref, ...props }: TreeItemProps): React_2.JSX.Element;
10313
+ displayName: string;
10314
+ };
10315
+
10316
+ /**
10317
+ * Tree.Item: `root` on the `role="treeitem"` element; `row` on its row; `expandIcon` on the
10318
+ * chevron (or your `expandIcon`); `indicator` on the checkbox of a multi-select tree or the radio
10319
+ * of a single-select one; `icon` on the icon span; `label` on the label span; `iconAfter` on the
10320
+ * icon after the label; `aside` on the aside content; `actions` on the row's actions toolbar;
10321
+ * `group` on the `role="group"` element of its nested items.
10322
+ */
10323
+ export declare const treeItemClassNames: {
10324
+ readonly root: "wave-tree-item";
10325
+ readonly row: "wave-tree-item__row";
10326
+ readonly expandIcon: "wave-tree-item__expand-icon";
10327
+ readonly indicator: "wave-tree-item__indicator";
10328
+ readonly icon: "wave-tree-item__icon";
10329
+ readonly label: "wave-tree-item__label";
10330
+ readonly iconAfter: "wave-tree-item__icon-after";
10331
+ readonly aside: "wave-tree-item__aside";
10332
+ readonly actions: "wave-tree-item__actions";
10333
+ readonly group: "wave-tree-item__group";
10334
+ };
10335
+
10336
+ /**
10337
+ * Lays out an item's label as a person: `media`, the name (children) and a `description` under
10338
+ * it. Use it as a Tree.Item's label content: the item is named by the name and described by the
10339
+ * description. Also exported as `TreeItemPersonaLayout` (Fluent's name; import the flat name from
10340
+ * React Server Components).
10341
+ */
10342
+ export declare const TreeItemPersonaLayout: {
10343
+ ({ media, description, className, children, ref, ...rest }: TreeItemPersonaLayoutProps): React_2.JSX.Element;
8464
10344
  displayName: string;
8465
10345
  };
8466
10346
 
10347
+ /**
10348
+ * Tree.ItemPersonaLayout: `root` on the layout span; `media` on the picture; `main` on the name;
10349
+ * `description` on the description line.
10350
+ */
10351
+ export declare const treeItemPersonaLayoutClassNames: {
10352
+ readonly root: "wave-tree-item-persona-layout";
10353
+ readonly media: "wave-tree-item-persona-layout__media";
10354
+ readonly main: "wave-tree-item-persona-layout__main";
10355
+ readonly description: "wave-tree-item-persona-layout__description";
10356
+ };
10357
+
10358
+ /** Properties for the TreeItemPersonaLayout sub-component (Fluent's `TreeItemPersonaLayout`). */
10359
+ export declare interface TreeItemPersonaLayoutProps extends React_2.HTMLAttributes<HTMLSpanElement> {
10360
+ /**
10361
+ * The person's picture, usually an Avatar (`size="small"`, 32 px, fits a row). The name is shown
10362
+ * next to it, so make it decorative (`<Avatar decorative … />`).
10363
+ */
10364
+ media?: React_2.ReactNode;
10365
+ /** A second line under the name; it describes the item. */
10366
+ description?: React_2.ReactNode;
10367
+ ref?: React_2.Ref<HTMLSpanElement>;
10368
+ }
10369
+
8467
10370
  /** Properties for the TreeItem sub-component. */
8468
10371
  export declare interface TreeItemProps extends React_2.HTMLAttributes<HTMLDivElement> {
8469
10372
  /** Unique value identifying this tree item. */
@@ -8474,6 +10377,34 @@ export declare interface TreeItemProps extends React_2.HTMLAttributes<HTMLDivEle
8474
10377
  * icon (`''`, `0`) or a list of nothing renders no span.
8475
10378
  */
8476
10379
  icon?: Slot<'span'>;
10380
+ /** Icon after the label (decorative, `aria-hidden`; a falsy value renders nothing, as `icon`). */
10381
+ iconAfter?: Slot<'span'>;
10382
+ /**
10383
+ * Replaces the expand chevron (decorative). `null`/`undefined` keep the chevron; `false`, or
10384
+ * anything that renders nothing, hides it (`aria-expanded` still reports the state). Not rotated.
10385
+ */
10386
+ expandIcon?: Slot<'span'>;
10387
+ /**
10388
+ * Non-interactive content at the end of the row, such as a count or a badge. It describes the item
10389
+ * (`aria-describedby`); it hides while the actions show on hover or focus.
10390
+ */
10391
+ aside?: React_2.ReactNode;
10392
+ /**
10393
+ * Buttons at the end of the row (a toolbar named by the item's label). Shown while the row is
10394
+ * hovered or the item or its actions have focus, and always in forced colors and without hover
10395
+ * (touch). Tab reaches them from the focused item (`navigationMode="tree"`), or the arrow keys do
10396
+ * (`"treegrid"`). Keys and clicks on them never activate or check the item.
10397
+ *
10398
+ * They also stay shown while a Menu, Popover or Dialog rendered inside them holds focus or its
10399
+ * trigger among them is expanded, so its focus return reaches the action. A dialog your app
10400
+ * renders elsewhere and opens from an action through state (a "Delete…" menu item that opens a
10401
+ * confirm Dialog) closes after the actions have hidden again (on devices with hover, outside
10402
+ * forced colors): a hidden action cannot take focus, so focus returns to the nearest element
10403
+ * that can, normally the item. Render such a Dialog inside `actions` (its `Dialog.Trigger`
10404
+ * there, or the controlled Dialog next to the Menu that opens it) to return focus to the action;
10405
+ * `finalFocusRef` cannot name it, since it is still hidden when the dialog closes.
10406
+ */
10407
+ actions?: React_2.ReactNode;
8477
10408
  /**
8478
10409
  * Renders the item as a leaf even when it has nested `Tree.Item`s: they are not rendered, and
8479
10410
  * the item has no `aria-expanded` and does not expand. An item is expandable only while it has
@@ -8499,17 +10430,48 @@ export declare interface TreeProps extends React_2.HTMLAttributes<HTMLDivElement
8499
10430
  /** Called with the new list of expanded item values when an item expands or collapses. */
8500
10431
  onExpandedItemsChange?: (expandedItems: string[]) => void;
8501
10432
  /**
8502
- * Called with an item's value every time it is activated (click, Enter or Space), also when the
8503
- * same item is activated again.
10433
+ * Called with an item's value every time it is activated (a click on its row, Enter, or Space
10434
+ * unless the tree has checkboxes), also when the same item is activated again.
8504
10435
  */
8505
10436
  onItemSelect?: (value: string) => void;
8506
10437
  /**
8507
10438
  * Value of the selected item. When set (also to `null`), every item carries `aria-selected`, and
8508
- * the selected item is where keyboard focus enters the tree.
10439
+ * the selected item is where keyboard focus enters the tree. It has no effect with
10440
+ * `selectionMode="multiple"` (a development warning): items carry `aria-checked` instead. With
10441
+ * `selectionMode="single"` every item carries `aria-selected` even while it is not set (a
10442
+ * development warning: the radios need it).
8509
10443
  */
8510
10444
  selected?: string | null;
8511
10445
  /** Value of the current item (for example the open page): it gets `aria-current="true"`. */
8512
10446
  current?: string | null;
10447
+ /**
10448
+ * How items are selected. `'none'`: activation only (0.7; `selected` highlights one item).
10449
+ * `'single'`: a radio indicator on every item for `selected`/`onItemSelect`. `'multiple'`: a
10450
+ * checkbox on every item, bound to `checkedItems`; checking an item checks its descendants, and a
10451
+ * parent shows checked, mixed or unchecked from them. Fluent's `'multiselect'` is `'multiple'`.
10452
+ * @default 'none'
10453
+ */
10454
+ selectionMode?: 'none' | SelectionMode_2;
10455
+ /** Controlled checked items (`selectionMode="multiple"`); see the cascade rule in the component docs. */
10456
+ checkedItems?: readonly string[];
10457
+ /**
10458
+ * Initially checked items (uncontrolled).
10459
+ * @default []
10460
+ */
10461
+ defaultCheckedItems?: readonly string[];
10462
+ /**
10463
+ * Called with every checked item (in tree order) when a check changes (Fluent's `onCheckedChange`).
10464
+ * WaveUI always passes `details`; it is typed optional until 1.0.
10465
+ */
10466
+ onCheckedItemsChange?: (checkedItems: string[], details?: TreeCheckedItemsChangeDetails) => void;
10467
+ /**
10468
+ * `'tree'`: Tab from a focused item enters its actions. `'treegrid'`: the "next" arrow
10469
+ * (ArrowRight, ArrowLeft in RTL) moves into an item's actions and "previous" returns; on an
10470
+ * expanded parent "next" no longer moves to the first child (ArrowDown does). The roles stay
10471
+ * `tree` and `treeitem` (Fluent's `navigationMode`).
10472
+ * @default 'tree'
10473
+ */
10474
+ navigationMode?: 'tree' | 'treegrid';
8513
10475
  /** Ref to the `role="tree"` element. */
8514
10476
  ref?: React_2.Ref<HTMLDivElement>;
8515
10477
  }
@@ -8843,7 +10805,10 @@ export declare interface UsePresenceResult {
8843
10805
  * `input[type=hidden]` is no item.
8844
10806
  * - **Tab stop** (`tabStop`): `'active'` — the enabled `activeValue` item, else the first enabled
8845
10807
  * item; `'last-focused'` — the last focused enabled item, else the `'active'` rule. A nested
8846
- * composite or a control that uses the arrow keys itself holds it only when no other item can.
10808
+ * composite or a control that uses the arrow keys itself holds it only when no other item can;
10809
+ * `'none'` — no item: every item is `tabIndex=-1` (a nested composite keeps its own tab stop;
10810
+ * mark it `data-roving-transparent` to join the group's arrow order), and focus reaches the
10811
+ * items only through the keys or a script.
8847
10812
  * - **Keys** are ignored when another handler already called `preventDefault()`; with Meta; with
8848
10813
  * Alt or Ctrl, except a single character typed with AltGr (Ctrl+Alt on Windows), which is
8849
10814
  * typeahead text (arrows, Home, End and Space with Ctrl+Alt stay ignored); and when they start
@@ -8935,8 +10900,12 @@ export declare interface UseRovingTabIndexOptions {
8935
10900
  * 'active' — APG Toolbar (and the static Menu). Either way a nested composite or a control that
8936
10901
  * uses the arrow keys itself (text field, select, slider, spin button, editable combobox) holds
8937
10902
  * it only when no other item can: arrows pressed there never lead back to the other items, so
8938
- * focusing one keeps the tab stop on the last focused other item. */
8939
- tabStop?: 'active' | 'last-focused';
10903
+ * focusing one keeps the tab stop on the last focused other item. 'none': no item holds it
10904
+ * (every item gets tabIndex -1; a nested composite keeps its own tab stop, and one marked
10905
+ * `data-roving-transparent` joins the group's arrow order), for a composite reached only by
10906
+ * the arrow keys of an enclosing widget or by a script (a tree row's actions); the keys,
10907
+ * `focusValue`, `focusFirst` and `focusLast` keep working. */
10908
+ tabStop?: 'active' | 'last-focused' | 'none';
8940
10909
  /** true ⇒ the hook writes tabIndex 0/-1 onto item elements itself and assigns
8941
10910
  * data-roving-value="auto-<n>" to items that lack one. For containers that do not render their
8942
10911
  * items (Toolbar children, Menu items, Tree rows). Default false (items call getTabIndex).
@@ -8977,9 +10946,10 @@ export declare interface UseRovingTabIndexResult {
8977
10946
  }
8978
10947
 
8979
10948
  /**
8980
- * Returns the {@link ToastController} of the enclosing `<Toaster>`: `dispatchToast(options)` shows
8981
- * a toast and returns its id, `dismissToast(id)` removes it, `dismissAllToasts()` removes every
8982
- * toast.
10949
+ * Returns the {@link ToastController} of the enclosing `<Toaster>`: `dispatchToast(content,
10950
+ * options?)` shows your content (usually a `<Toast>` with parts) and `dispatchToast(options)` a
10951
+ * toast built from text; both return the toast's id. `dismissToast(id)` dismisses one toast,
10952
+ * `dismissAllToasts()` every toast.
8983
10953
  *
8984
10954
  * Must be called inside `<Toaster>`, which provides the controller to its children — wrap the app
8985
10955
  * (or the part of it that shows toasts) in `<Toaster>`; a sibling `<Toaster />` does not work.
@@ -8989,7 +10959,19 @@ export declare interface UseRovingTabIndexResult {
8989
10959
  * @example
8990
10960
  * function SaveButton() {
8991
10961
  * const { dispatchToast } = useToastController();
8992
- * return <Button onClick={() => dispatchToast({ status: 'success', title: 'Saved' })}>Save</Button>;
10962
+ * return (
10963
+ * <Button
10964
+ * onClick={() =>
10965
+ * dispatchToast(
10966
+ * <Toast status="success">
10967
+ * <Toast.Title>Saved</Toast.Title>
10968
+ * </Toast>,
10969
+ * )
10970
+ * }
10971
+ * >
10972
+ * Save
10973
+ * </Button>
10974
+ * );
8993
10975
  * }
8994
10976
  * // <Toaster><App /></Toaster>
8995
10977
  */
@@ -9062,6 +11044,11 @@ export declare const WaveProvider: {
9062
11044
  displayName: string;
9063
11045
  };
9064
11046
 
11047
+ /** WaveProvider: `root` on the themed element (the existing `wave-root` scope class). */
11048
+ export declare const waveProviderClassNames: {
11049
+ readonly root: "wave-root";
11050
+ };
11051
+
9065
11052
  /** Props accepted by {@link WaveProvider}. */
9066
11053
  export declare interface WaveProviderProps extends React_2.HTMLAttributes<HTMLDivElement> {
9067
11054
  /**