@react-spectrum/s2 0.5.0 → 0.6.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 (598) hide show
  1. package/dist/Accordion.cjs +5 -8
  2. package/dist/Accordion.cjs.map +1 -1
  3. package/dist/Accordion.css +2 -2
  4. package/dist/Accordion.css.map +1 -1
  5. package/dist/Accordion.mjs +5 -8
  6. package/dist/Accordion.mjs.map +1 -1
  7. package/dist/ActionBar.cjs +264 -0
  8. package/dist/ActionBar.cjs.map +1 -0
  9. package/dist/ActionBar.css +267 -0
  10. package/dist/ActionBar.css.map +1 -0
  11. package/dist/ActionBar.mjs +257 -0
  12. package/dist/ActionBar.mjs.map +1 -0
  13. package/dist/ActionButton.cjs +121 -147
  14. package/dist/ActionButton.cjs.map +1 -1
  15. package/dist/ActionButton.css +133 -153
  16. package/dist/ActionButton.css.map +1 -1
  17. package/dist/ActionButton.mjs +122 -148
  18. package/dist/ActionButton.mjs.map +1 -1
  19. package/dist/ActionButtonGroup.cjs +6 -9
  20. package/dist/ActionButtonGroup.cjs.map +1 -1
  21. package/dist/ActionButtonGroup.css +3 -3
  22. package/dist/ActionButtonGroup.css.map +1 -1
  23. package/dist/ActionButtonGroup.mjs +6 -9
  24. package/dist/ActionButtonGroup.mjs.map +1 -1
  25. package/dist/ActionMenu.cjs +2 -5
  26. package/dist/ActionMenu.cjs.map +1 -1
  27. package/dist/ActionMenu.mjs +2 -5
  28. package/dist/ActionMenu.mjs.map +1 -1
  29. package/dist/AlertDialog.cjs +2 -5
  30. package/dist/AlertDialog.cjs.map +1 -1
  31. package/dist/AlertDialog.css.map +1 -1
  32. package/dist/AlertDialog.mjs +2 -5
  33. package/dist/AlertDialog.mjs.map +1 -1
  34. package/dist/Avatar.cjs +12 -15
  35. package/dist/Avatar.cjs.map +1 -1
  36. package/dist/Avatar.css +11 -11
  37. package/dist/Avatar.css.map +1 -1
  38. package/dist/Avatar.mjs +12 -15
  39. package/dist/Avatar.mjs.map +1 -1
  40. package/dist/AvatarGroup.cjs +99 -102
  41. package/dist/AvatarGroup.cjs.map +1 -1
  42. package/dist/AvatarGroup.css +31 -31
  43. package/dist/AvatarGroup.css.map +1 -1
  44. package/dist/AvatarGroup.mjs +99 -102
  45. package/dist/AvatarGroup.mjs.map +1 -1
  46. package/dist/Badge.cjs +99 -102
  47. package/dist/Badge.cjs.map +1 -1
  48. package/dist/Badge.css +76 -76
  49. package/dist/Badge.css.map +1 -1
  50. package/dist/Badge.mjs +99 -102
  51. package/dist/Badge.mjs.map +1 -1
  52. package/dist/Breadcrumbs.cjs +93 -94
  53. package/dist/Breadcrumbs.cjs.map +1 -1
  54. package/dist/Breadcrumbs.css +70 -64
  55. package/dist/Breadcrumbs.css.map +1 -1
  56. package/dist/Breadcrumbs.mjs +94 -95
  57. package/dist/Breadcrumbs.mjs.map +1 -1
  58. package/dist/Button.cjs +305 -278
  59. package/dist/Button.cjs.map +1 -1
  60. package/dist/Button.css +255 -182
  61. package/dist/Button.css.map +1 -1
  62. package/dist/Button.mjs +307 -280
  63. package/dist/Button.mjs.map +1 -1
  64. package/dist/ButtonGroup.cjs +17 -20
  65. package/dist/ButtonGroup.cjs.map +1 -1
  66. package/dist/ButtonGroup.css +11 -11
  67. package/dist/ButtonGroup.css.map +1 -1
  68. package/dist/ButtonGroup.mjs +18 -21
  69. package/dist/ButtonGroup.mjs.map +1 -1
  70. package/dist/Card.cjs +167 -167
  71. package/dist/Card.css +121 -121
  72. package/dist/Card.mjs +167 -167
  73. package/dist/CardView.cjs +47 -21
  74. package/dist/CardView.cjs.map +1 -1
  75. package/dist/CardView.css +39 -15
  76. package/dist/CardView.css.map +1 -1
  77. package/dist/CardView.mjs +49 -23
  78. package/dist/CardView.mjs.map +1 -1
  79. package/dist/CenterBaseline.cjs +1 -1
  80. package/dist/CenterBaseline.css +2 -2
  81. package/dist/CenterBaseline.mjs +1 -1
  82. package/dist/Checkbox.cjs +58 -62
  83. package/dist/Checkbox.cjs.map +1 -1
  84. package/dist/Checkbox.css +54 -54
  85. package/dist/Checkbox.css.map +1 -1
  86. package/dist/Checkbox.mjs +59 -63
  87. package/dist/Checkbox.mjs.map +1 -1
  88. package/dist/CheckboxGroup.cjs +43 -45
  89. package/dist/CheckboxGroup.cjs.map +1 -1
  90. package/dist/CheckboxGroup.css +32 -32
  91. package/dist/CheckboxGroup.css.map +1 -1
  92. package/dist/CheckboxGroup.mjs +44 -46
  93. package/dist/CheckboxGroup.mjs.map +1 -1
  94. package/dist/ClearButton.cjs +7 -8
  95. package/dist/ClearButton.cjs.map +1 -1
  96. package/dist/ClearButton.css +5 -5
  97. package/dist/ClearButton.css.map +1 -1
  98. package/dist/ClearButton.mjs +7 -8
  99. package/dist/ClearButton.mjs.map +1 -1
  100. package/dist/CloseButton.cjs +40 -53
  101. package/dist/CloseButton.cjs.map +1 -1
  102. package/dist/CloseButton.css +45 -49
  103. package/dist/CloseButton.css.map +1 -1
  104. package/dist/CloseButton.mjs +40 -53
  105. package/dist/CloseButton.mjs.map +1 -1
  106. package/dist/ColorArea.cjs +12 -15
  107. package/dist/ColorArea.cjs.map +1 -1
  108. package/dist/ColorArea.css +10 -10
  109. package/dist/ColorArea.css.map +1 -1
  110. package/dist/ColorArea.mjs +12 -15
  111. package/dist/ColorArea.mjs.map +1 -1
  112. package/dist/ColorField.cjs +31 -34
  113. package/dist/ColorField.cjs.map +1 -1
  114. package/dist/ColorField.css +24 -24
  115. package/dist/ColorField.css.map +1 -1
  116. package/dist/ColorField.mjs +32 -35
  117. package/dist/ColorField.mjs.map +1 -1
  118. package/dist/ColorHandle.cjs +11 -11
  119. package/dist/ColorHandle.css +19 -19
  120. package/dist/ColorHandle.mjs +11 -11
  121. package/dist/ColorSlider.cjs +43 -46
  122. package/dist/ColorSlider.cjs.map +1 -1
  123. package/dist/ColorSlider.css +43 -43
  124. package/dist/ColorSlider.css.map +1 -1
  125. package/dist/ColorSlider.mjs +44 -47
  126. package/dist/ColorSlider.mjs.map +1 -1
  127. package/dist/ColorSwatch.cjs +8 -11
  128. package/dist/ColorSwatch.cjs.map +1 -1
  129. package/dist/ColorSwatch.css +14 -14
  130. package/dist/ColorSwatch.css.map +1 -1
  131. package/dist/ColorSwatch.mjs +9 -12
  132. package/dist/ColorSwatch.mjs.map +1 -1
  133. package/dist/ColorSwatchPicker.cjs +15 -18
  134. package/dist/ColorSwatchPicker.cjs.map +1 -1
  135. package/dist/ColorSwatchPicker.css +33 -33
  136. package/dist/ColorSwatchPicker.css.map +1 -1
  137. package/dist/ColorSwatchPicker.mjs +15 -18
  138. package/dist/ColorSwatchPicker.mjs.map +1 -1
  139. package/dist/ColorWheel.cjs +18 -21
  140. package/dist/ColorWheel.cjs.map +1 -1
  141. package/dist/ColorWheel.css +15 -15
  142. package/dist/ColorWheel.css.map +1 -1
  143. package/dist/ColorWheel.mjs +18 -21
  144. package/dist/ColorWheel.mjs.map +1 -1
  145. package/dist/ComboBox.cjs +61 -61
  146. package/dist/ComboBox.cjs.map +1 -1
  147. package/dist/ComboBox.css +52 -52
  148. package/dist/ComboBox.css.map +1 -1
  149. package/dist/ComboBox.mjs +62 -62
  150. package/dist/ComboBox.mjs.map +1 -1
  151. package/dist/Content.cjs +12 -19
  152. package/dist/Content.cjs.map +1 -1
  153. package/dist/Content.mjs +12 -19
  154. package/dist/Content.mjs.map +1 -1
  155. package/dist/ContextualHelp.cjs +7 -10
  156. package/dist/ContextualHelp.cjs.map +1 -1
  157. package/dist/ContextualHelp.css +23 -23
  158. package/dist/ContextualHelp.css.map +1 -1
  159. package/dist/ContextualHelp.mjs +7 -10
  160. package/dist/ContextualHelp.mjs.map +1 -1
  161. package/dist/CustomDialog.cjs +10 -13
  162. package/dist/CustomDialog.cjs.map +1 -1
  163. package/dist/CustomDialog.css +9 -9
  164. package/dist/CustomDialog.css.map +1 -1
  165. package/dist/CustomDialog.mjs +10 -13
  166. package/dist/CustomDialog.mjs.map +1 -1
  167. package/dist/Dialog.cjs +12 -16
  168. package/dist/Dialog.cjs.map +1 -1
  169. package/dist/Dialog.css +39 -39
  170. package/dist/Dialog.css.map +1 -1
  171. package/dist/Dialog.mjs +12 -16
  172. package/dist/Dialog.mjs.map +1 -1
  173. package/dist/Disclosure.cjs +60 -69
  174. package/dist/Disclosure.cjs.map +1 -1
  175. package/dist/Disclosure.css +49 -49
  176. package/dist/Disclosure.css.map +1 -1
  177. package/dist/Disclosure.mjs +61 -70
  178. package/dist/Disclosure.mjs.map +1 -1
  179. package/dist/Divider.cjs +15 -19
  180. package/dist/Divider.cjs.map +1 -1
  181. package/dist/Divider.css +18 -18
  182. package/dist/Divider.css.map +1 -1
  183. package/dist/Divider.mjs +15 -19
  184. package/dist/Divider.mjs.map +1 -1
  185. package/dist/DropZone.cjs +30 -33
  186. package/dist/DropZone.cjs.map +1 -1
  187. package/dist/DropZone.css +26 -26
  188. package/dist/DropZone.css.map +1 -1
  189. package/dist/DropZone.mjs +30 -33
  190. package/dist/DropZone.mjs.map +1 -1
  191. package/dist/Field.cjs +133 -131
  192. package/dist/Field.cjs.map +1 -1
  193. package/dist/Field.css +76 -84
  194. package/dist/Field.css.map +1 -1
  195. package/dist/Field.mjs +133 -131
  196. package/dist/Field.mjs.map +1 -1
  197. package/dist/Form.cjs +6 -9
  198. package/dist/Form.cjs.map +1 -1
  199. package/dist/Form.css +3 -3
  200. package/dist/Form.css.map +1 -1
  201. package/dist/Form.mjs +6 -9
  202. package/dist/Form.mjs.map +1 -1
  203. package/dist/FullscreenDialog.cjs +7 -10
  204. package/dist/FullscreenDialog.cjs.map +1 -1
  205. package/dist/FullscreenDialog.css +54 -54
  206. package/dist/FullscreenDialog.css.map +1 -1
  207. package/dist/FullscreenDialog.mjs +7 -10
  208. package/dist/FullscreenDialog.mjs.map +1 -1
  209. package/dist/IllustratedMessage.cjs +128 -132
  210. package/dist/IllustratedMessage.cjs.map +1 -1
  211. package/dist/IllustratedMessage.css +58 -58
  212. package/dist/IllustratedMessage.css.map +1 -1
  213. package/dist/IllustratedMessage.mjs +128 -132
  214. package/dist/IllustratedMessage.mjs.map +1 -1
  215. package/dist/Image.cjs +12 -13
  216. package/dist/Image.cjs.map +1 -1
  217. package/dist/Image.css +11 -11
  218. package/dist/Image.css.map +1 -1
  219. package/dist/Image.mjs +13 -14
  220. package/dist/Image.mjs.map +1 -1
  221. package/dist/InlineAlert.cjs +75 -84
  222. package/dist/InlineAlert.cjs.map +1 -1
  223. package/dist/InlineAlert.css +59 -63
  224. package/dist/InlineAlert.css.map +1 -1
  225. package/dist/InlineAlert.mjs +76 -85
  226. package/dist/InlineAlert.mjs.map +1 -1
  227. package/dist/Link.cjs +36 -39
  228. package/dist/Link.cjs.map +1 -1
  229. package/dist/Link.css +42 -42
  230. package/dist/Link.css.map +1 -1
  231. package/dist/Link.mjs +37 -40
  232. package/dist/Link.mjs.map +1 -1
  233. package/dist/Menu.cjs +322 -234
  234. package/dist/Menu.cjs.map +1 -1
  235. package/dist/Menu.css +118 -116
  236. package/dist/Menu.css.map +1 -1
  237. package/dist/Menu.mjs +323 -235
  238. package/dist/Menu.mjs.map +1 -1
  239. package/dist/Meter.cjs +66 -70
  240. package/dist/Meter.cjs.map +1 -1
  241. package/dist/Meter.css +69 -73
  242. package/dist/Meter.css.map +1 -1
  243. package/dist/Meter.mjs +66 -70
  244. package/dist/Meter.mjs.map +1 -1
  245. package/dist/Modal.cjs +36 -45
  246. package/dist/Modal.cjs.map +1 -1
  247. package/dist/Modal.css +48 -72
  248. package/dist/Modal.css.map +1 -1
  249. package/dist/Modal.mjs +37 -46
  250. package/dist/Modal.mjs.map +1 -1
  251. package/dist/NumberField.cjs +66 -69
  252. package/dist/NumberField.cjs.map +1 -1
  253. package/dist/NumberField.css +70 -70
  254. package/dist/NumberField.css.map +1 -1
  255. package/dist/NumberField.mjs +67 -70
  256. package/dist/NumberField.mjs.map +1 -1
  257. package/dist/Picker.cjs +122 -122
  258. package/dist/Picker.cjs.map +1 -1
  259. package/dist/Picker.css +84 -84
  260. package/dist/Picker.css.map +1 -1
  261. package/dist/Picker.mjs +123 -123
  262. package/dist/Picker.mjs.map +1 -1
  263. package/dist/Popover.cjs +47 -69
  264. package/dist/Popover.cjs.map +1 -1
  265. package/dist/Popover.css +55 -126
  266. package/dist/Popover.css.map +1 -1
  267. package/dist/Popover.mjs +48 -70
  268. package/dist/Popover.mjs.map +1 -1
  269. package/dist/ProgressBar.cjs +85 -87
  270. package/dist/ProgressBar.cjs.map +1 -1
  271. package/dist/ProgressBar.css +81 -85
  272. package/dist/ProgressBar.css.map +1 -1
  273. package/dist/ProgressBar.mjs +85 -87
  274. package/dist/ProgressBar.mjs.map +1 -1
  275. package/dist/ProgressCircle.cjs +16 -18
  276. package/dist/ProgressCircle.cjs.map +1 -1
  277. package/dist/ProgressCircle.css +16 -16
  278. package/dist/ProgressCircle.css.map +1 -1
  279. package/dist/ProgressCircle.mjs +16 -18
  280. package/dist/ProgressCircle.mjs.map +1 -1
  281. package/dist/Provider.cjs +5 -5
  282. package/dist/Provider.css +6 -6
  283. package/dist/Provider.mjs +5 -5
  284. package/dist/Radio.cjs +54 -58
  285. package/dist/Radio.cjs.map +1 -1
  286. package/dist/Radio.css +50 -50
  287. package/dist/Radio.css.map +1 -1
  288. package/dist/Radio.mjs +55 -59
  289. package/dist/Radio.mjs.map +1 -1
  290. package/dist/RadioGroup.cjs +39 -43
  291. package/dist/RadioGroup.cjs.map +1 -1
  292. package/dist/RadioGroup.css +32 -32
  293. package/dist/RadioGroup.css.map +1 -1
  294. package/dist/RadioGroup.mjs +40 -44
  295. package/dist/RadioGroup.mjs.map +1 -1
  296. package/dist/RangeSlider.cjs +2 -3
  297. package/dist/RangeSlider.cjs.map +1 -1
  298. package/dist/RangeSlider.mjs +3 -4
  299. package/dist/RangeSlider.mjs.map +1 -1
  300. package/dist/SearchField.cjs +34 -37
  301. package/dist/SearchField.cjs.map +1 -1
  302. package/dist/SearchField.css +30 -30
  303. package/dist/SearchField.css.map +1 -1
  304. package/dist/SearchField.mjs +35 -38
  305. package/dist/SearchField.mjs.map +1 -1
  306. package/dist/SegmentedControl.cjs +67 -73
  307. package/dist/SegmentedControl.cjs.map +1 -1
  308. package/dist/SegmentedControl.css +63 -63
  309. package/dist/SegmentedControl.css.map +1 -1
  310. package/dist/SegmentedControl.mjs +68 -74
  311. package/dist/SegmentedControl.mjs.map +1 -1
  312. package/dist/Slider.cjs +111 -112
  313. package/dist/Slider.cjs.map +1 -1
  314. package/dist/Slider.css +87 -87
  315. package/dist/Slider.css.map +1 -1
  316. package/dist/Slider.mjs +112 -113
  317. package/dist/Slider.mjs.map +1 -1
  318. package/dist/StatusLight.cjs +28 -32
  319. package/dist/StatusLight.cjs.map +1 -1
  320. package/dist/StatusLight.css +26 -26
  321. package/dist/StatusLight.css.map +1 -1
  322. package/dist/StatusLight.mjs +28 -32
  323. package/dist/StatusLight.mjs.map +1 -1
  324. package/dist/Switch.cjs +56 -60
  325. package/dist/Switch.cjs.map +1 -1
  326. package/dist/Switch.css +48 -48
  327. package/dist/Switch.css.map +1 -1
  328. package/dist/Switch.mjs +57 -61
  329. package/dist/Switch.mjs.map +1 -1
  330. package/dist/TableView.cjs +209 -196
  331. package/dist/TableView.cjs.map +1 -1
  332. package/dist/TableView.css +95 -95
  333. package/dist/TableView.css.map +1 -1
  334. package/dist/TableView.mjs +211 -198
  335. package/dist/TableView.mjs.map +1 -1
  336. package/dist/Tabs.cjs +59 -62
  337. package/dist/Tabs.cjs.map +1 -1
  338. package/dist/Tabs.css +42 -42
  339. package/dist/Tabs.css.map +1 -1
  340. package/dist/Tabs.mjs +59 -62
  341. package/dist/Tabs.mjs.map +1 -1
  342. package/dist/TagGroup.cjs +122 -124
  343. package/dist/TagGroup.cjs.map +1 -1
  344. package/dist/TagGroup.css +93 -93
  345. package/dist/TagGroup.css.map +1 -1
  346. package/dist/TagGroup.mjs +122 -124
  347. package/dist/TagGroup.mjs.map +1 -1
  348. package/dist/TextField.cjs +44 -55
  349. package/dist/TextField.cjs.map +1 -1
  350. package/dist/TextField.css +33 -33
  351. package/dist/TextField.css.map +1 -1
  352. package/dist/TextField.mjs +45 -56
  353. package/dist/TextField.mjs.map +1 -1
  354. package/dist/ToggleButton.cjs +6 -9
  355. package/dist/ToggleButton.cjs.map +1 -1
  356. package/dist/ToggleButton.css +7 -7
  357. package/dist/ToggleButton.css.map +1 -1
  358. package/dist/ToggleButton.mjs +6 -9
  359. package/dist/ToggleButton.mjs.map +1 -1
  360. package/dist/ToggleButtonGroup.cjs +2 -5
  361. package/dist/ToggleButtonGroup.cjs.map +1 -1
  362. package/dist/ToggleButtonGroup.mjs +2 -5
  363. package/dist/ToggleButtonGroup.mjs.map +1 -1
  364. package/dist/Tooltip.cjs +48 -48
  365. package/dist/Tooltip.cjs.map +1 -1
  366. package/dist/Tooltip.css +55 -70
  367. package/dist/Tooltip.css.map +1 -1
  368. package/dist/Tooltip.mjs +49 -49
  369. package/dist/Tooltip.mjs.map +1 -1
  370. package/dist/ar-AE.cjs +10 -2
  371. package/dist/ar-AE.cjs.map +1 -1
  372. package/dist/ar-AE.mjs +10 -2
  373. package/dist/ar-AE.mjs.map +1 -1
  374. package/dist/bg-BG.cjs +11 -2
  375. package/dist/bg-BG.cjs.map +1 -1
  376. package/dist/bg-BG.mjs +11 -2
  377. package/dist/bg-BG.mjs.map +1 -1
  378. package/dist/cs-CZ.cjs +7 -2
  379. package/dist/cs-CZ.cjs.map +1 -1
  380. package/dist/cs-CZ.mjs +7 -2
  381. package/dist/cs-CZ.mjs.map +1 -1
  382. package/dist/da-DK.cjs +12 -4
  383. package/dist/da-DK.cjs.map +1 -1
  384. package/dist/da-DK.mjs +12 -4
  385. package/dist/da-DK.mjs.map +1 -1
  386. package/dist/de-DE.cjs +11 -2
  387. package/dist/de-DE.cjs.map +1 -1
  388. package/dist/de-DE.mjs +11 -2
  389. package/dist/de-DE.mjs.map +1 -1
  390. package/dist/el-GR.cjs +11 -2
  391. package/dist/el-GR.cjs.map +1 -1
  392. package/dist/el-GR.mjs +11 -2
  393. package/dist/el-GR.mjs.map +1 -1
  394. package/dist/en-US.cjs +8 -0
  395. package/dist/en-US.cjs.map +1 -1
  396. package/dist/en-US.mjs +8 -0
  397. package/dist/en-US.mjs.map +1 -1
  398. package/dist/es-ES.cjs +11 -2
  399. package/dist/es-ES.cjs.map +1 -1
  400. package/dist/es-ES.mjs +11 -2
  401. package/dist/es-ES.mjs.map +1 -1
  402. package/dist/et-EE.cjs +10 -2
  403. package/dist/et-EE.cjs.map +1 -1
  404. package/dist/et-EE.mjs +10 -2
  405. package/dist/et-EE.mjs.map +1 -1
  406. package/dist/fi-FI.cjs +10 -2
  407. package/dist/fi-FI.cjs.map +1 -1
  408. package/dist/fi-FI.mjs +10 -2
  409. package/dist/fi-FI.mjs.map +1 -1
  410. package/dist/fr-FR.cjs +11 -2
  411. package/dist/fr-FR.cjs.map +1 -1
  412. package/dist/fr-FR.mjs +11 -2
  413. package/dist/fr-FR.mjs.map +1 -1
  414. package/dist/he-IL.cjs +11 -2
  415. package/dist/he-IL.cjs.map +1 -1
  416. package/dist/he-IL.mjs +11 -2
  417. package/dist/he-IL.mjs.map +1 -1
  418. package/dist/hr-HR.cjs +7 -2
  419. package/dist/hr-HR.cjs.map +1 -1
  420. package/dist/hr-HR.mjs +7 -2
  421. package/dist/hr-HR.mjs.map +1 -1
  422. package/dist/hu-HU.cjs +10 -2
  423. package/dist/hu-HU.cjs.map +1 -1
  424. package/dist/hu-HU.mjs +10 -2
  425. package/dist/hu-HU.mjs.map +1 -1
  426. package/dist/it-IT.cjs +11 -2
  427. package/dist/it-IT.cjs.map +1 -1
  428. package/dist/it-IT.mjs +11 -2
  429. package/dist/it-IT.mjs.map +1 -1
  430. package/dist/ja-JP.cjs +10 -2
  431. package/dist/ja-JP.cjs.map +1 -1
  432. package/dist/ja-JP.mjs +10 -2
  433. package/dist/ja-JP.mjs.map +1 -1
  434. package/dist/ko-KR.cjs +12 -4
  435. package/dist/ko-KR.cjs.map +1 -1
  436. package/dist/ko-KR.mjs +12 -4
  437. package/dist/ko-KR.mjs.map +1 -1
  438. package/dist/lt-LT.cjs +9 -4
  439. package/dist/lt-LT.cjs.map +1 -1
  440. package/dist/lt-LT.mjs +9 -4
  441. package/dist/lt-LT.mjs.map +1 -1
  442. package/dist/lv-LV.cjs +11 -3
  443. package/dist/lv-LV.cjs.map +1 -1
  444. package/dist/lv-LV.mjs +11 -3
  445. package/dist/lv-LV.mjs.map +1 -1
  446. package/dist/main.cjs +4 -0
  447. package/dist/main.cjs.map +1 -1
  448. package/dist/module.mjs +3 -1
  449. package/dist/module.mjs.map +1 -1
  450. package/dist/nb-NO.cjs +9 -4
  451. package/dist/nb-NO.cjs.map +1 -1
  452. package/dist/nb-NO.mjs +9 -4
  453. package/dist/nb-NO.mjs.map +1 -1
  454. package/dist/nl-NL.cjs +10 -2
  455. package/dist/nl-NL.cjs.map +1 -1
  456. package/dist/nl-NL.mjs +10 -2
  457. package/dist/nl-NL.mjs.map +1 -1
  458. package/dist/pl-PL.cjs +8 -3
  459. package/dist/pl-PL.cjs.map +1 -1
  460. package/dist/pl-PL.mjs +8 -3
  461. package/dist/pl-PL.mjs.map +1 -1
  462. package/dist/pt-BR.cjs +11 -2
  463. package/dist/pt-BR.cjs.map +1 -1
  464. package/dist/pt-BR.mjs +11 -2
  465. package/dist/pt-BR.mjs.map +1 -1
  466. package/dist/pt-PT.cjs +11 -2
  467. package/dist/pt-PT.cjs.map +1 -1
  468. package/dist/pt-PT.mjs +11 -2
  469. package/dist/pt-PT.mjs.map +1 -1
  470. package/dist/ro-RO.cjs +12 -3
  471. package/dist/ro-RO.cjs.map +1 -1
  472. package/dist/ro-RO.mjs +12 -3
  473. package/dist/ro-RO.mjs.map +1 -1
  474. package/dist/ru-RU.cjs +7 -2
  475. package/dist/ru-RU.cjs.map +1 -1
  476. package/dist/ru-RU.mjs +7 -2
  477. package/dist/ru-RU.mjs.map +1 -1
  478. package/dist/sk-SK.cjs +7 -2
  479. package/dist/sk-SK.cjs.map +1 -1
  480. package/dist/sk-SK.mjs +7 -2
  481. package/dist/sk-SK.mjs.map +1 -1
  482. package/dist/sl-SI.cjs +7 -2
  483. package/dist/sl-SI.cjs.map +1 -1
  484. package/dist/sl-SI.mjs +7 -2
  485. package/dist/sl-SI.mjs.map +1 -1
  486. package/dist/sr-SP.cjs +7 -2
  487. package/dist/sr-SP.cjs.map +1 -1
  488. package/dist/sr-SP.mjs +7 -2
  489. package/dist/sr-SP.mjs.map +1 -1
  490. package/dist/sv-SE.cjs +11 -2
  491. package/dist/sv-SE.cjs.map +1 -1
  492. package/dist/sv-SE.mjs +11 -2
  493. package/dist/sv-SE.mjs.map +1 -1
  494. package/dist/tr-TR.cjs +10 -2
  495. package/dist/tr-TR.cjs.map +1 -1
  496. package/dist/tr-TR.mjs +10 -2
  497. package/dist/tr-TR.mjs.map +1 -1
  498. package/dist/types.d.ts +109 -89
  499. package/dist/types.d.ts.map +1 -1
  500. package/dist/uk-UA.cjs +7 -2
  501. package/dist/uk-UA.cjs.map +1 -1
  502. package/dist/uk-UA.mjs +7 -2
  503. package/dist/uk-UA.mjs.map +1 -1
  504. package/dist/zh-CN.cjs +10 -2
  505. package/dist/zh-CN.cjs.map +1 -1
  506. package/dist/zh-CN.mjs +10 -2
  507. package/dist/zh-CN.mjs.map +1 -1
  508. package/dist/zh-TW.cjs +10 -2
  509. package/dist/zh-TW.cjs.map +1 -1
  510. package/dist/zh-TW.mjs +10 -2
  511. package/dist/zh-TW.mjs.map +1 -1
  512. package/icons/Skeleton.cjs +2 -2
  513. package/icons/Skeleton.css +5 -5
  514. package/icons/Skeleton.mjs +2 -2
  515. package/package.json +20 -21
  516. package/src/Accordion.tsx +5 -8
  517. package/src/ActionBar.tsx +229 -0
  518. package/src/ActionButton.tsx +25 -52
  519. package/src/ActionButtonGroup.tsx +9 -11
  520. package/src/ActionMenu.tsx +5 -8
  521. package/src/AlertDialog.tsx +5 -8
  522. package/src/Avatar.tsx +5 -8
  523. package/src/AvatarGroup.tsx +5 -8
  524. package/src/Badge.tsx +5 -8
  525. package/src/Breadcrumbs.tsx +6 -12
  526. package/src/Button.tsx +197 -154
  527. package/src/ButtonGroup.tsx +5 -8
  528. package/src/CardView.tsx +37 -12
  529. package/src/Checkbox.tsx +6 -9
  530. package/src/CheckboxGroup.tsx +6 -9
  531. package/src/ClearButton.tsx +2 -5
  532. package/src/CloseButton.tsx +21 -31
  533. package/src/ColorArea.tsx +5 -8
  534. package/src/ColorField.tsx +5 -8
  535. package/src/ColorSlider.tsx +5 -8
  536. package/src/ColorSwatch.tsx +5 -8
  537. package/src/ColorSwatchPicker.tsx +5 -8
  538. package/src/ColorWheel.tsx +5 -8
  539. package/src/ComboBox.tsx +7 -9
  540. package/src/Content.tsx +12 -30
  541. package/src/ContextualHelp.tsx +5 -8
  542. package/src/CustomDialog.tsx +5 -8
  543. package/src/Dialog.tsx +6 -9
  544. package/src/Disclosure.tsx +15 -24
  545. package/src/Divider.tsx +16 -25
  546. package/src/DropZone.tsx +5 -8
  547. package/src/Field.tsx +25 -32
  548. package/src/Form.tsx +5 -8
  549. package/src/FullscreenDialog.tsx +5 -8
  550. package/src/IllustratedMessage.tsx +6 -9
  551. package/src/Image.tsx +3 -6
  552. package/src/InlineAlert.tsx +6 -10
  553. package/src/Link.tsx +13 -21
  554. package/src/Menu.tsx +69 -33
  555. package/src/Meter.tsx +13 -23
  556. package/src/Modal.tsx +22 -52
  557. package/src/NumberField.tsx +5 -8
  558. package/src/Picker.tsx +7 -9
  559. package/src/Popover.tsx +30 -104
  560. package/src/ProgressBar.tsx +14 -24
  561. package/src/ProgressCircle.tsx +18 -24
  562. package/src/Radio.tsx +6 -9
  563. package/src/RadioGroup.tsx +6 -9
  564. package/src/RangeSlider.tsx +2 -5
  565. package/src/SearchField.tsx +5 -8
  566. package/src/SegmentedControl.tsx +10 -16
  567. package/src/Slider.tsx +2 -5
  568. package/src/StatusLight.tsx +6 -9
  569. package/src/Switch.tsx +6 -9
  570. package/src/TableView.tsx +53 -50
  571. package/src/Tabs.tsx +5 -8
  572. package/src/TagGroup.tsx +7 -14
  573. package/src/TextField.tsx +20 -28
  574. package/src/ToggleButton.tsx +7 -9
  575. package/src/ToggleButtonGroup.tsx +5 -8
  576. package/src/Tooltip.tsx +30 -51
  577. package/src/bar-utils.ts +3 -10
  578. package/src/index.ts +2 -0
  579. package/src/style-utils.ts +15 -8
  580. package/style/dist/main.cjs +1 -0
  581. package/style/dist/main.cjs.map +1 -1
  582. package/style/dist/module.mjs +2 -2
  583. package/style/dist/module.mjs.map +1 -1
  584. package/style/dist/spectrum-theme.cjs +72 -5
  585. package/style/dist/spectrum-theme.cjs.map +1 -1
  586. package/style/dist/spectrum-theme.mjs +72 -6
  587. package/style/dist/spectrum-theme.mjs.map +1 -1
  588. package/style/dist/style-macro.cjs +13 -1
  589. package/style/dist/style-macro.cjs.map +1 -1
  590. package/style/dist/style-macro.mjs +13 -1
  591. package/style/dist/style-macro.mjs.map +1 -1
  592. package/style/dist/types.d.ts +50 -29
  593. package/style/dist/types.d.ts.map +1 -1
  594. package/style/index.ts +1 -1
  595. package/style/spectrum-theme.ts +72 -7
  596. package/style/style-macro.ts +20 -4
  597. package/style/tokens.ts +30 -0
  598. package/style/types.ts +1 -1
@@ -97,7 +97,8 @@ const wrapper = style<BreadcrumbsStyleProps>({
97
97
 
98
98
  const InternalBreadcrumbsContext = createContext<BreadcrumbsProps<any>>({});
99
99
 
100
- function Breadcrumbs<T extends object>(props: BreadcrumbsProps<T>, ref: DOMRef<HTMLOListElement>) {
100
+ /** Breadcrumbs show hierarchy and navigational context for a user’s location within an application. */
101
+ export const Breadcrumbs = /*#__PURE__*/ (forwardRef as forwardRefType)(function Breadcrumbs<T extends object>(props: BreadcrumbsProps<T>, ref: DOMRef<HTMLOListElement>) {
101
102
  [props, ref] = useSpectrumContextProps(props, ref, BreadcrumbsContext);
102
103
  let domRef = useDOMRef(ref);
103
104
  let {
@@ -129,7 +130,7 @@ function Breadcrumbs<T extends object>(props: BreadcrumbsProps<T>, ref: DOMRef<H
129
130
  </CollapsingCollection>
130
131
  </Provider>
131
132
  );
132
- }
133
+ });
133
134
 
134
135
  let BreadcrumbMenu = (props: {items: Array<Node<any>>, onAction: BreadcrumbsProps<unknown>['onAction']}) => {
135
136
  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2');
@@ -162,10 +163,6 @@ let BreadcrumbMenu = (props: {items: Array<Node<any>>, onAction: BreadcrumbsProp
162
163
  );
163
164
  };
164
165
 
165
- /** Breadcrumbs show hierarchy and navigational context for a user’s location within an application. */
166
- let _Breadcrumbs = /*#__PURE__*/ (forwardRef as forwardRefType)(Breadcrumbs);
167
- export {_Breadcrumbs as Breadcrumbs};
168
-
169
166
  let HiddenBreadcrumbs = function (props: {listRef: RefObject<HTMLDivElement | null>, items: Array<Node<any>>, size: string}) {
170
167
  let {listRef, items, size} = props;
171
168
  return (
@@ -296,7 +293,8 @@ export interface BreadcrumbProps extends Omit<AriaBreadcrumbItemProps, 'children
296
293
  children?: ReactNode
297
294
  }
298
295
 
299
- function Breadcrumb({children, ...props}: BreadcrumbProps, ref: DOMRef<HTMLLIElement>) {
296
+ /** An individual Breadcrumb for Breadcrumbs. */
297
+ export const Breadcrumb = /*#__PURE__*/ (forwardRef as forwardRefType)(function Breadcrumb({children, ...props}: BreadcrumbProps, ref: DOMRef<HTMLLIElement>) {
300
298
  let {href, target, rel, download, ping, referrerPolicy} = props;
301
299
  let {size = 'M'} = useContext(InternalBreadcrumbsContext) ?? {};
302
300
  let domRef = useDOMRef(ref);
@@ -351,11 +349,7 @@ function Breadcrumb({children, ...props}: BreadcrumbProps, ref: DOMRef<HTMLLIEle
351
349
  }}
352
350
  </AriaBreadcrumb>
353
351
  );
354
- }
355
-
356
- /** An individual Breadcrumb for Breadcrumbs. */
357
- let _Breadcrumb = /*#__PURE__*/ (forwardRef as forwardRefType)(Breadcrumb);
358
- export {_Breadcrumb as Breadcrumb};
352
+ });
359
353
 
360
354
  // Context for passing the count for the custom renderer
361
355
  let CollapseContext = createContext<{
package/src/Button.tsx CHANGED
@@ -10,10 +10,10 @@
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
12
 
13
- import {baseColor, focusRing, fontRelative, style} from '../style' with {type: 'macro'};
13
+ import {baseColor, focusRing, fontRelative, linearGradient, style} from '../style' with {type: 'macro'};
14
14
  import {ButtonRenderProps, ContextValue, Link, LinkProps, OverlayTriggerStateContext, Provider, Button as RACButton, ButtonProps as RACButtonProps} from 'react-aria-components';
15
15
  import {centerBaseline} from './CenterBaseline';
16
- import {centerPadding, getAllowedOverrides, StyleProps} from './style-utils' with {type: 'macro'};
16
+ import {centerPadding, getAllowedOverrides, staticColor, StyleProps} from './style-utils' with {type: 'macro'};
17
17
  import {createContext, forwardRef, ReactNode, useContext, useEffect, useState} from 'react';
18
18
  import {FocusableRef, FocusableRefValue} from '@react-types/shared';
19
19
  import {IconContext} from './Icon';
@@ -34,7 +34,7 @@ interface ButtonStyleProps {
34
34
  *
35
35
  * @default 'primary'
36
36
  */
37
- variant?: 'primary' | 'secondary' | 'accent' | 'negative',
37
+ variant?: 'primary' | 'secondary' | 'accent' | 'negative' | 'premium' | 'genai',
38
38
  /**
39
39
  * The background style of the Button.
40
40
  *
@@ -48,7 +48,7 @@ interface ButtonStyleProps {
48
48
  */
49
49
  size?: 'S' | 'M' | 'L' | 'XL',
50
50
  /** The static color style to apply. Useful when the Button appears over a color background. */
51
- staticColor?: 'white' | 'black'
51
+ staticColor?: 'white' | 'black' | 'auto'
52
52
  }
53
53
 
54
54
  export interface ButtonProps extends Omit<RACButtonProps, 'className' | 'style' | 'children' | 'onHover' | 'onHoverStart' | 'onHoverEnd' | 'onHoverChange'>, StyleProps, ButtonStyleProps {
@@ -65,8 +65,9 @@ export const ButtonContext = createContext<ContextValue<ButtonProps, FocusableRe
65
65
  export const LinkButtonContext = createContext<ContextValue<ButtonProps, FocusableRefValue<HTMLAnchorElement>>>(null);
66
66
 
67
67
  const iconOnly = ':has([slot=icon]):not(:has([data-rsp-slot=text]))';
68
- const button = style<ButtonRenderProps & ButtonStyleProps>({
68
+ const button = style<ButtonRenderProps & ButtonStyleProps & {isStaticColor: boolean}>({
69
69
  ...focusRing(),
70
+ ...staticColor(),
70
71
  position: 'relative',
71
72
  display: 'flex',
72
73
  alignItems: {
@@ -101,6 +102,10 @@ const button = style<ButtonRenderProps & ButtonStyleProps>({
101
102
  fillStyle: {
102
103
  fill: 0,
103
104
  outline: 2
105
+ },
106
+ variant: {
107
+ premium: 0,
108
+ genai: 0
104
109
  }
105
110
  },
106
111
  '--labelPadding': {
@@ -120,21 +125,12 @@ const button = style<ButtonRenderProps & ButtonStyleProps>({
120
125
  secondary: baseColor('gray-300')
121
126
  },
122
127
  isDisabled: 'disabled',
123
- staticColor: {
124
- white: {
125
- variant: {
126
- primary: baseColor('transparent-white-800'),
127
- secondary: baseColor('transparent-white-300')
128
- },
129
- isDisabled: 'transparent-white-300'
128
+ isStaticColor: {
129
+ variant: {
130
+ primary: baseColor('transparent-overlay-800'),
131
+ secondary: baseColor('transparent-overlay-300')
130
132
  },
131
- black: {
132
- variant: {
133
- primary: baseColor('transparent-black-800'),
134
- secondary: baseColor('transparent-black-300')
135
- },
136
- isDisabled: 'transparent-black-300'
137
- }
133
+ isDisabled: 'transparent-overlay-300'
138
134
  },
139
135
  forcedColors: {
140
136
  default: 'ButtonBorder',
@@ -149,52 +145,56 @@ const button = style<ButtonRenderProps & ButtonStyleProps>({
149
145
  primary: 'neutral',
150
146
  secondary: baseColor('gray-100'),
151
147
  accent: 'accent',
152
- negative: 'negative'
148
+ negative: 'negative',
149
+ premium: 'gray-100',
150
+ genai: 'gray-100'
153
151
  },
154
152
  isDisabled: 'disabled'
155
153
  },
156
154
  outline: {
155
+ variant: {
156
+ premium: 'gray-100',
157
+ genai: 'gray-100'
158
+ },
157
159
  default: 'transparent',
158
160
  isHovered: 'gray-100',
159
161
  isPressed: 'gray-100',
160
162
  isFocusVisible: 'gray-100',
161
- isDisabled: 'transparent'
163
+ isDisabled: {
164
+ default: 'transparent',
165
+ variant: {
166
+ premium: 'gray-100',
167
+ genai: 'gray-100'
168
+ }
169
+ }
162
170
  }
163
171
  },
164
- staticColor: {
165
- white: {
166
- fillStyle: {
167
- fill: {
168
- variant: {
169
- primary: baseColor('transparent-white-800'),
170
- secondary: baseColor('transparent-white-100')
171
- },
172
- isDisabled: 'transparent-white-100'
172
+ isStaticColor: {
173
+ fillStyle: {
174
+ fill: {
175
+ variant: {
176
+ primary: baseColor('transparent-overlay-800'),
177
+ secondary: baseColor('transparent-overlay-100'),
178
+ premium: 'transparent-overlay-100',
179
+ genai: 'transparent-overlay-100'
173
180
  },
174
- outline: {
175
- default: 'transparent',
176
- isHovered: 'transparent-white-100',
177
- isPressed: 'transparent-white-100',
178
- isFocusVisible: 'transparent-white-100',
179
- isDisabled: 'transparent'
180
- }
181
- }
182
- },
183
- black: {
184
- fillStyle: {
185
- fill: {
186
- variant: {
187
- primary: baseColor('transparent-black-800'),
188
- secondary: baseColor('transparent-black-100')
189
- },
190
- isDisabled: 'transparent-black-100'
181
+ isDisabled: 'transparent-overlay-100'
182
+ },
183
+ outline: {
184
+ variant: {
185
+ premium: 'transparent-overlay-100',
186
+ genai: 'transparent-overlay-100'
191
187
  },
192
- outline: {
188
+ default: 'transparent',
189
+ isHovered: 'transparent-overlay-100',
190
+ isPressed: 'transparent-overlay-100',
191
+ isFocusVisible: 'transparent-overlay-100',
192
+ isDisabled: {
193
193
  default: 'transparent',
194
- isHovered: 'transparent-black-100',
195
- isPressed: 'transparent-black-100',
196
- isFocusVisible: 'transparent-black-100',
197
- isDisabled: 'transparent'
194
+ variant: {
195
+ premium: 'transparent-overlay-100',
196
+ genai: 'transparent-overlay-100'
197
+ }
198
198
  }
199
199
  }
200
200
  }
@@ -217,40 +217,40 @@ const button = style<ButtonRenderProps & ButtonStyleProps>({
217
217
  primary: 'gray-25',
218
218
  secondary: 'neutral',
219
219
  accent: 'white',
220
- negative: 'white'
220
+ negative: 'white',
221
+ premium: 'white',
222
+ genai: 'white'
221
223
  },
222
224
  isDisabled: 'disabled'
223
225
  },
224
226
  outline: {
225
227
  default: 'neutral',
228
+ variant: {
229
+ premium: 'white',
230
+ genai: 'white'
231
+ },
226
232
  isDisabled: 'disabled'
227
233
  }
228
234
  },
229
- staticColor: {
230
- white: {
231
- fillStyle: {
232
- fill: {
233
- variant: {
234
- primary: 'black',
235
- secondary: baseColor('transparent-white-800')
236
- }
237
- },
238
- outline: baseColor('transparent-white-800')
235
+ isStaticColor: {
236
+ fillStyle: {
237
+ fill: {
238
+ variant: {
239
+ primary: 'auto',
240
+ secondary: baseColor('transparent-overlay-800'),
241
+ premium: 'white',
242
+ genai: 'white'
243
+ }
239
244
  },
240
- isDisabled: 'transparent-white-400'
241
- },
242
- black: {
243
- fillStyle: {
244
- fill: {
245
- variant: {
246
- primary: 'white',
247
- secondary: baseColor('transparent-black-800')
248
- }
245
+ outline: {
246
+ variant: {
247
+ premium: 'white',
248
+ genai: 'white'
249
249
  },
250
- outline: baseColor('transparent-black-800')
251
- },
252
- isDisabled: 'transparent-black-400'
253
- }
250
+ default: baseColor('transparent-overlay-800')
251
+ }
252
+ },
253
+ isDisabled: 'transparent-overlay-400'
254
254
  },
255
255
  forcedColors: {
256
256
  fillStyle: {
@@ -271,17 +271,55 @@ const button = style<ButtonRenderProps & ButtonStyleProps>({
271
271
  },
272
272
  outlineColor: {
273
273
  default: 'focus-ring',
274
- staticColor: {
275
- white: 'white',
276
- black: 'black'
277
- },
274
+ isStaticColor: 'transparent-overlay-1000',
278
275
  forcedColors: 'Highlight'
279
276
  },
280
277
  forcedColorAdjust: 'none',
281
278
  disableTapHighlight: true
282
279
  }, getAllowedOverrides());
283
280
 
284
- function Button(props: ButtonProps, ref: FocusableRef<HTMLButtonElement>) {
281
+ // Put the gradient background on a separate element from the button to work around a Safari
282
+ // bug where transitions of custom properties cause layout flickering if any properties use rems. 🤣
283
+ // https://bugs.webkit.org/show_bug.cgi?id=285622
284
+ const gradient = style({
285
+ position: 'absolute',
286
+ inset: 0,
287
+ zIndex: -1,
288
+ transition: 'default',
289
+ borderRadius: '[inherit]',
290
+ backgroundImage: {
291
+ variant: {
292
+ premium: {
293
+ default: linearGradient('to bottom right', ['fuchsia-900', 0], ['indigo-900', 66], ['blue-900', 100]),
294
+ isHovered: linearGradient('to bottom right', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100]),
295
+ isPressed: linearGradient('to bottom right', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100]),
296
+ isFocusVisible: linearGradient('to bottom right', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100])
297
+ },
298
+ genai: {
299
+ default: linearGradient('to bottom right', ['red-900', 0], ['magenta-900', 33], ['indigo-900', 100]),
300
+ isHovered: linearGradient('to bottom right', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100]),
301
+ isPressed: linearGradient('to bottom right', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100]),
302
+ isFocusVisible: linearGradient('to bottom right', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100])
303
+ }
304
+ },
305
+ isDisabled: 'none',
306
+ forcedColors: 'none'
307
+ },
308
+ // Force gradient colors to remain static between light and dark theme.
309
+ colorScheme: {
310
+ variant: {
311
+ premium: 'light',
312
+ genai: 'light'
313
+ }
314
+ }
315
+ });
316
+
317
+ /**
318
+ * Buttons allow users to perform an action.
319
+ * They have multiple styles for various needs, and are ideal for calling attention to
320
+ * where a user needs to do something in order to move forward in a flow.
321
+ */
322
+ export const Button = forwardRef(function Button(props: ButtonProps, ref: FocusableRef<HTMLButtonElement>) {
285
323
  [props, ref] = useSpectrumContextProps(props, ref, ButtonContext);
286
324
  props = useFormProps(props);
287
325
  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2');
@@ -327,80 +365,90 @@ function Button(props: ButtonProps, ref: FocusableRef<HTMLButtonElement>) {
327
365
  variant,
328
366
  fillStyle,
329
367
  size,
330
- staticColor
368
+ staticColor,
369
+ isStaticColor: !!staticColor
331
370
  }, props.styles)}>
332
- <Provider
333
- values={[
334
- [SkeletonContext, null],
335
- [TextContext, {
336
- styles: style({
337
- paddingY: '--labelPadding',
338
- order: 1,
339
- opacity: {
340
- default: 1,
341
- isProgressVisible: 0
342
- }
343
- })({isProgressVisible}),
344
- // @ts-ignore data-attributes allowed on all JSX elements, but adding to DOMProps has been problematic in the past
345
- 'data-rsp-slot': 'text'
346
- }],
347
- [IconContext, {
348
- render: centerBaseline({slot: 'icon', styles: style({order: 0})}),
349
- styles: style({
350
- size: fontRelative(20),
351
- marginStart: '--iconMargin',
352
- flexShrink: 0,
353
- opacity: {
354
- default: 1,
355
- isProgressVisible: 0
356
- }
357
- })({isProgressVisible})
358
- }]
359
- ]}>
360
- {typeof props.children === 'string' ? <Text>{props.children}</Text> : props.children}
361
- {isPending &&
362
- <div
363
- className={style({
364
- position: 'absolute',
365
- top: '[50%]',
366
- left: '[50%]',
367
- transform: 'translate(-50%, -50%)',
368
- opacity: {
369
- default: 0,
370
- isProgressVisible: 1
371
- }
372
- })({isProgressVisible, isPending})}>
373
- <ProgressCircle
374
- isIndeterminate
375
- aria-label={stringFormatter.format('button.pending')}
376
- size="S"
377
- staticColor={staticColor}
378
- styles={style({
379
- size: {
371
+ {(renderProps) => (<>
372
+ {variant === 'genai' || variant === 'premium'
373
+ ? (
374
+ <span
375
+ className={gradient({
376
+ ...renderProps,
377
+ // Retain hover styles when an overlay is open.
378
+ isHovered: renderProps.isHovered || overlayTriggerState?.isOpen || false,
379
+ isDisabled: renderProps.isDisabled || isProgressVisible,
380
+ variant
381
+ })} />
382
+ )
383
+ : null}
384
+ <Provider
385
+ values={[
386
+ [SkeletonContext, null],
387
+ [TextContext, {
388
+ styles: style({
389
+ paddingY: '--labelPadding',
390
+ order: 1,
391
+ opacity: {
392
+ default: 1,
393
+ isProgressVisible: 0
394
+ }
395
+ })({isProgressVisible}),
396
+ // @ts-ignore data-attributes allowed on all JSX elements, but adding to DOMProps has been problematic in the past
397
+ 'data-rsp-slot': 'text'
398
+ }],
399
+ [IconContext, {
400
+ render: centerBaseline({slot: 'icon', styles: style({order: 0})}),
401
+ styles: style({
402
+ size: fontRelative(20),
403
+ marginStart: '--iconMargin',
404
+ flexShrink: 0,
405
+ opacity: {
406
+ default: 1,
407
+ isProgressVisible: 0
408
+ }
409
+ })({isProgressVisible})
410
+ }]
411
+ ]}>
412
+ {typeof props.children === 'string' ? <Text>{props.children}</Text> : props.children}
413
+ {isPending &&
414
+ <div
415
+ className={style({
416
+ position: 'absolute',
417
+ top: '[50%]',
418
+ left: '[50%]',
419
+ transform: 'translate(-50%, -50%)',
420
+ opacity: {
421
+ default: 0,
422
+ isProgressVisible: 1
423
+ }
424
+ })({isProgressVisible, isPending})}>
425
+ <ProgressCircle
426
+ isIndeterminate
427
+ aria-label={stringFormatter.format('button.pending')}
428
+ size="S"
429
+ staticColor={staticColor}
430
+ styles={style({
380
431
  size: {
381
- S: 14,
382
- M: 18,
383
- L: 20,
384
- XL: 24
432
+ size: {
433
+ S: 14,
434
+ M: 18,
435
+ L: 20,
436
+ XL: 24
437
+ }
385
438
  }
386
- }
387
- })({size})} />
388
- </div>
389
- }
390
- </Provider>
439
+ })({size})} />
440
+ </div>
441
+ }
442
+ </Provider>
443
+ </>)}
391
444
  </RACButton>
392
445
  );
393
- }
446
+ });
394
447
 
395
448
  /**
396
- * Buttons allow users to perform an action.
397
- * They have multiple styles for various needs, and are ideal for calling attention to
398
- * where a user needs to do something in order to move forward in a flow.
449
+ * A LinkButton combines the functionality of a link with the appearance of a button. Useful for allowing users to navigate to another page.
399
450
  */
400
- let _Button = forwardRef(Button);
401
- export {_Button as Button};
402
-
403
- function LinkButton(props: LinkButtonProps, ref: FocusableRef<HTMLAnchorElement>) {
451
+ export const LinkButton = forwardRef(function LinkButton(props: LinkButtonProps, ref: FocusableRef<HTMLAnchorElement>) {
404
452
  [props, ref] = useSpectrumContextProps(props, ref, LinkButtonContext);
405
453
  props = useFormProps(props);
406
454
  let domRef = useFocusableRef(ref);
@@ -419,6 +467,7 @@ function LinkButton(props: LinkButtonProps, ref: FocusableRef<HTMLAnchorElement>
419
467
  fillStyle: props.fillStyle || 'fill',
420
468
  size: props.size || 'M',
421
469
  staticColor: props.staticColor,
470
+ isStaticColor: !!props.staticColor,
422
471
  isPending: false
423
472
  }, props.styles)}>
424
473
  <Provider
@@ -438,10 +487,4 @@ function LinkButton(props: LinkButtonProps, ref: FocusableRef<HTMLAnchorElement>
438
487
  </Provider>
439
488
  </Link>
440
489
  );
441
- }
442
-
443
- /**
444
- * A LinkButton combines the functionality of a link with the appearance of a button. Useful for allowing users to navigate to another page.
445
- */
446
- let _LinkButton = forwardRef(LinkButton);
447
- export {_LinkButton as LinkButton};
490
+ });
@@ -101,7 +101,10 @@ const buttongroup = style<ButtonGroupStyleProps>({
101
101
  }
102
102
  }, getAllowedOverrides());
103
103
 
104
- function ButtonGroup(props: ButtonGroupProps, ref: DOMRef<HTMLDivElement>) {
104
+ /**
105
+ * ButtonGroup handles overflow for a grouping of buttons whose actions are related to each other.
106
+ */
107
+ export const ButtonGroup = forwardRef(function ButtonGroup(props: ButtonGroupProps, ref: DOMRef<HTMLDivElement>) {
105
108
  [props, ref] = useSpectrumContextProps(props, ref, ButtonGroupContext);
106
109
  let domRef = useDOMRef(ref);
107
110
  let {
@@ -178,10 +181,4 @@ function ButtonGroup(props: ButtonGroupProps, ref: DOMRef<HTMLDivElement>) {
178
181
  </Provider>
179
182
  </div>
180
183
  );
181
- }
182
-
183
- /**
184
- * ButtonGroup handles overflow for a grouping of buttons whose actions are related to each other.
185
- */
186
- const _ButtonGroup = forwardRef(ButtonGroup);
187
- export {_ButtonGroup as ButtonGroup};
184
+ });
package/src/CardView.tsx CHANGED
@@ -19,12 +19,13 @@ import {
19
19
  UNSTABLE_Virtualizer
20
20
  } from 'react-aria-components';
21
21
  import {CardContext, InternalCardViewContext} from './Card';
22
- import {createContext, forwardRef, useMemo, useState} from 'react';
22
+ import {createContext, forwardRef, ReactElement, useMemo, useRef, useState} from 'react';
23
23
  import {DOMRef, DOMRefValue, forwardRefType, Key, LayoutDelegate, LoadingState, Node} from '@react-types/shared';
24
24
  import {focusRing, style} from '../style' with {type: 'macro'};
25
25
  import {getAllowedOverrides, StylesPropWithHeight, UnsafeStyles} from './style-utils' with {type: 'macro'};
26
26
  import {ImageCoordinator} from './ImageCoordinator';
27
27
  import {InvalidationContext, Layout, LayoutInfo, Rect, Size} from '@react-stately/virtualizer';
28
+ import {useActionBarContainer} from './ActionBar';
28
29
  import {useDOMRef} from '@react-spectrum/utils';
29
30
  import {useEffectEvent, useLayoutEffect, useLoadMore, useResizeObserver} from '@react-aria/utils';
30
31
  import {useSpectrumContextProps} from './useSpectrumContextProps';
@@ -60,7 +61,9 @@ export interface CardViewProps<T> extends Omit<GridListProps<T>, 'layout' | 'key
60
61
  /** Handler that is called when more items should be loaded, e.g. while scrolling near the bottom. */
61
62
  onLoadMore?: () => void,
62
63
  /** Spectrum-defined styles, returned by the `style()` macro. */
63
- styles?: StylesPropWithHeight
64
+ styles?: StylesPropWithHeight,
65
+ /** Provides the ActionBar to render when cards are selected in the CardView. */
66
+ renderActionBar?: (selectedKeys: 'all' | Set<Key>) => ReactElement
64
67
  }
65
68
 
66
69
  class FlexibleGridLayout<T extends object> extends Layout<Node<T>, GridLayoutOptions> {
@@ -514,6 +517,7 @@ const cardViewStyles = style({
514
517
  display: {
515
518
  isEmpty: 'flex'
516
519
  },
520
+ boxSizing: 'border-box',
517
521
  flexDirection: 'column',
518
522
  alignItems: 'center',
519
523
  justifyContent: 'center',
@@ -529,10 +533,12 @@ const cardViewStyles = style({
529
533
 
530
534
  export const CardViewContext = createContext<ContextValue<CardViewProps<any>, DOMRefValue<HTMLDivElement>>>(null);
531
535
 
532
- function CardView<T extends object>(props: CardViewProps<T>, ref: DOMRef<HTMLDivElement>) {
536
+ export const CardView = /*#__PURE__*/ (forwardRef as forwardRefType)(function CardView<T extends object>(props: CardViewProps<T>, ref: DOMRef<HTMLDivElement>) {
533
537
  [props, ref] = useSpectrumContextProps(props, ref, CardViewContext);
534
538
  let {children, layout: layoutName = 'grid', size: sizeProp = 'M', density = 'regular', variant = 'primary', selectionStyle = 'checkbox', UNSAFE_className = '', UNSAFE_style, styles, ...otherProps} = props;
535
539
  let domRef = useDOMRef(ref);
540
+ let innerRef = useRef(null);
541
+ let scrollRef = props.renderActionBar ? innerRef : domRef;
536
542
  let layout = useMemo(() => {
537
543
  return layoutName === 'waterfall' ? new WaterfallLayout() : new FlexibleGridLayout();
538
544
  }, [layoutName]);
@@ -540,7 +546,7 @@ function CardView<T extends object>(props: CardViewProps<T>, ref: DOMRef<HTMLDiv
540
546
  // This calculates the maximum t-shirt size where at least two columns fit in the available width.
541
547
  let [maxSizeIndex, setMaxSizeIndex] = useState(SIZES.length - 1);
542
548
  let updateSize = useEffectEvent(() => {
543
- let w = domRef.current?.clientWidth ?? 0;
549
+ let w = scrollRef.current?.clientWidth ?? 0;
544
550
  let i = SIZES.length - 1;
545
551
  while (i > 0) {
546
552
  let opts = layoutOptions[SIZES[i]][density];
@@ -553,7 +559,7 @@ function CardView<T extends object>(props: CardViewProps<T>, ref: DOMRef<HTMLDiv
553
559
  });
554
560
 
555
561
  useResizeObserver({
556
- ref: domRef,
562
+ ref: scrollRef,
557
563
  box: 'border-box',
558
564
  onResize: updateSize
559
565
  });
@@ -570,23 +576,32 @@ function CardView<T extends object>(props: CardViewProps<T>, ref: DOMRef<HTMLDiv
570
576
  isLoading: props.loadingState !== 'idle' && props.loadingState !== 'error',
571
577
  items: props.items, // TODO: ideally this would be the collection. items won't exist for static collections, or those using <Collection>
572
578
  onLoadMore: props.onLoadMore
573
- }, domRef);
579
+ }, scrollRef);
574
580
 
575
581
  let ctx = useMemo(() => ({size, variant}), [size, variant]);
576
582
 
577
- return (
583
+ let {selectedKeys, onSelectionChange, actionBar, actionBarHeight} = useActionBarContainer({...props, scrollRef});
584
+
585
+ let cardView = (
578
586
  <UNSTABLE_Virtualizer layout={layout} layoutOptions={options}>
579
587
  <InternalCardViewContext.Provider value={GridListItem}>
580
588
  <CardContext.Provider value={ctx}>
581
589
  <ImageCoordinator>
582
590
  <AriaGridList
583
- ref={domRef}
591
+ ref={scrollRef}
584
592
  {...otherProps}
585
593
  layout="grid"
586
594
  selectionBehavior={selectionStyle === 'highlight' ? 'replace' : 'toggle'}
595
+ selectedKeys={selectedKeys}
596
+ defaultSelectedKeys={undefined}
597
+ onSelectionChange={onSelectionChange}
587
598
  style={{
588
599
  ...UNSAFE_style,
589
- scrollPadding: options.minSpace.height
600
+ // Add padding at the bottom when the action bar is visible so users can scroll to the last items.
601
+ // Also add scroll padding so keyboard navigating preserves the padding.
602
+ paddingBottom: actionBarHeight > 0 ? actionBarHeight + options.minSpace.height : 0,
603
+ scrollPadding: options.minSpace.height,
604
+ scrollPaddingBottom: actionBarHeight + options.minSpace.height
590
605
  }}
591
606
  className={renderProps => UNSAFE_className + cardViewStyles({...renderProps, isLoading: props.loadingState === 'loading'}, styles)}>
592
607
  {children}
@@ -596,7 +611,17 @@ function CardView<T extends object>(props: CardViewProps<T>, ref: DOMRef<HTMLDiv
596
611
  </InternalCardViewContext.Provider>
597
612
  </UNSTABLE_Virtualizer>
598
613
  );
599
- }
600
614
 
601
- const _CardView = /*#__PURE__*/ (forwardRef as forwardRefType)(CardView);
602
- export {_CardView as CardView};
615
+ // Add extra wrapper if there is an action bar so we can position relative to it.
616
+ // ActionBar cannot be inside the GridList due to ARIA and focus management requirements.
617
+ if (props.renderActionBar) {
618
+ return (
619
+ <div ref={domRef} className={style({position: 'relative', overflow: 'clip', size: 'fit'})}>
620
+ {cardView}
621
+ {actionBar}
622
+ </div>
623
+ );
624
+ }
625
+
626
+ return cardView;
627
+ });