@react-spectrum/s2 0.11.1 → 0.12.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 (566) hide show
  1. package/dist/Accordion.cjs +3 -3
  2. package/dist/Accordion.css +2 -2
  3. package/dist/Accordion.mjs +3 -3
  4. package/dist/ActionBar.cjs +61 -62
  5. package/dist/ActionBar.cjs.map +1 -1
  6. package/dist/ActionBar.css +62 -66
  7. package/dist/ActionBar.css.map +1 -1
  8. package/dist/ActionBar.mjs +61 -62
  9. package/dist/ActionBar.mjs.map +1 -1
  10. package/dist/ActionButton.cjs +356 -250
  11. package/dist/ActionButton.cjs.map +1 -1
  12. package/dist/ActionButton.css +208 -144
  13. package/dist/ActionButton.css.map +1 -1
  14. package/dist/ActionButton.mjs +357 -251
  15. package/dist/ActionButton.mjs.map +1 -1
  16. package/dist/ActionButtonGroup.cjs +16 -16
  17. package/dist/ActionButtonGroup.css +9 -9
  18. package/dist/ActionButtonGroup.mjs +16 -16
  19. package/dist/Add.cjs +10 -10
  20. package/dist/Add.css +6 -6
  21. package/dist/Add.mjs +10 -10
  22. package/dist/AlertDialog.cjs +3 -3
  23. package/dist/AlertDialog.css +3 -3
  24. package/dist/AlertDialog.mjs +3 -3
  25. package/dist/Asterisk.cjs +6 -6
  26. package/dist/Asterisk.css +4 -4
  27. package/dist/Asterisk.mjs +6 -6
  28. package/dist/Avatar.cjs +20 -16
  29. package/dist/Avatar.cjs.map +1 -1
  30. package/dist/Avatar.css +22 -14
  31. package/dist/Avatar.css.map +1 -1
  32. package/dist/Avatar.mjs +20 -16
  33. package/dist/Avatar.mjs.map +1 -1
  34. package/dist/AvatarGroup.cjs +135 -135
  35. package/dist/AvatarGroup.css +33 -33
  36. package/dist/AvatarGroup.mjs +135 -135
  37. package/dist/Badge.cjs +207 -207
  38. package/dist/Badge.css +127 -127
  39. package/dist/Badge.mjs +207 -207
  40. package/dist/Breadcrumbs.cjs +255 -255
  41. package/dist/Breadcrumbs.css +109 -109
  42. package/dist/Breadcrumbs.mjs +255 -255
  43. package/dist/Button.cjs +356 -354
  44. package/dist/Button.cjs.map +1 -1
  45. package/dist/Button.css +179 -179
  46. package/dist/Button.css.map +1 -1
  47. package/dist/Button.mjs +357 -356
  48. package/dist/Button.mjs.map +1 -1
  49. package/dist/ButtonGroup.cjs +21 -21
  50. package/dist/ButtonGroup.css +15 -15
  51. package/dist/ButtonGroup.mjs +21 -21
  52. package/dist/Calendar.cjs +127 -127
  53. package/dist/Calendar.cjs.map +1 -1
  54. package/dist/Calendar.css +134 -134
  55. package/dist/Calendar.css.map +1 -1
  56. package/dist/Calendar.mjs +127 -127
  57. package/dist/Calendar.mjs.map +1 -1
  58. package/dist/Card.cjs +335 -311
  59. package/dist/Card.cjs.map +1 -1
  60. package/dist/Card.css +213 -213
  61. package/dist/Card.css.map +1 -1
  62. package/dist/Card.mjs +335 -311
  63. package/dist/Card.mjs.map +1 -1
  64. package/dist/CardView.cjs +25 -19
  65. package/dist/CardView.cjs.map +1 -1
  66. package/dist/CardView.css +16 -16
  67. package/dist/CardView.css.map +1 -1
  68. package/dist/CardView.mjs +26 -20
  69. package/dist/CardView.mjs.map +1 -1
  70. package/dist/CenterBaseline.cjs +1 -1
  71. package/dist/CenterBaseline.css +2 -2
  72. package/dist/CenterBaseline.mjs +1 -1
  73. package/dist/Checkbox.cjs +171 -171
  74. package/dist/Checkbox.css +92 -92
  75. package/dist/Checkbox.mjs +171 -171
  76. package/dist/CheckboxGroup.cjs +46 -46
  77. package/dist/CheckboxGroup.css +38 -38
  78. package/dist/CheckboxGroup.mjs +46 -46
  79. package/dist/Checkmark.cjs +12 -12
  80. package/dist/Checkmark.css +8 -8
  81. package/dist/Checkmark.mjs +12 -12
  82. package/dist/Chevron.cjs +12 -12
  83. package/dist/Chevron.css +10 -10
  84. package/dist/Chevron.mjs +12 -12
  85. package/dist/ClearButton.cjs +29 -29
  86. package/dist/ClearButton.css +29 -29
  87. package/dist/ClearButton.mjs +29 -29
  88. package/dist/CloseButton.cjs +55 -55
  89. package/dist/CloseButton.css +46 -46
  90. package/dist/CloseButton.mjs +55 -55
  91. package/dist/ColorArea.cjs +25 -18
  92. package/dist/ColorArea.cjs.map +1 -1
  93. package/dist/ColorArea.css +16 -16
  94. package/dist/ColorArea.css.map +1 -1
  95. package/dist/ColorArea.mjs +26 -19
  96. package/dist/ColorArea.mjs.map +1 -1
  97. package/dist/ColorField.cjs +33 -33
  98. package/dist/ColorField.cjs.map +1 -1
  99. package/dist/ColorField.css +28 -28
  100. package/dist/ColorField.css.map +1 -1
  101. package/dist/ColorField.mjs +33 -33
  102. package/dist/ColorField.mjs.map +1 -1
  103. package/dist/ColorHandle.cjs +27 -27
  104. package/dist/ColorHandle.css +43 -43
  105. package/dist/ColorHandle.mjs +27 -27
  106. package/dist/ColorSlider.cjs +122 -121
  107. package/dist/ColorSlider.cjs.map +1 -1
  108. package/dist/ColorSlider.css +54 -54
  109. package/dist/ColorSlider.css.map +1 -1
  110. package/dist/ColorSlider.mjs +122 -121
  111. package/dist/ColorSlider.mjs.map +1 -1
  112. package/dist/ColorSwatch.cjs +30 -30
  113. package/dist/ColorSwatch.css +29 -29
  114. package/dist/ColorSwatch.mjs +30 -30
  115. package/dist/ColorSwatchPicker.cjs +28 -28
  116. package/dist/ColorSwatchPicker.css +46 -46
  117. package/dist/ColorSwatchPicker.mjs +28 -28
  118. package/dist/ColorWheel.cjs +26 -26
  119. package/dist/ColorWheel.css +17 -17
  120. package/dist/ColorWheel.mjs +26 -26
  121. package/dist/ComboBox.cjs +474 -452
  122. package/dist/ComboBox.cjs.map +1 -1
  123. package/dist/ComboBox.css +213 -185
  124. package/dist/ComboBox.css.map +1 -1
  125. package/dist/ComboBox.mjs +475 -453
  126. package/dist/ComboBox.mjs.map +1 -1
  127. package/dist/ContextualHelp.cjs +36 -33
  128. package/dist/ContextualHelp.cjs.map +1 -1
  129. package/dist/ContextualHelp.css +68 -60
  130. package/dist/ContextualHelp.css.map +1 -1
  131. package/dist/ContextualHelp.mjs +37 -34
  132. package/dist/ContextualHelp.mjs.map +1 -1
  133. package/dist/Cross.cjs +14 -14
  134. package/dist/Cross.css +10 -10
  135. package/dist/Cross.mjs +14 -14
  136. package/dist/CustomDialog.cjs +26 -26
  137. package/dist/CustomDialog.cjs.map +1 -1
  138. package/dist/CustomDialog.css +25 -25
  139. package/dist/CustomDialog.css.map +1 -1
  140. package/dist/CustomDialog.mjs +26 -26
  141. package/dist/CustomDialog.mjs.map +1 -1
  142. package/dist/Dash.cjs +10 -10
  143. package/dist/Dash.css +6 -6
  144. package/dist/Dash.mjs +10 -10
  145. package/dist/DateField.cjs +74 -74
  146. package/dist/DateField.cjs.map +1 -1
  147. package/dist/DateField.css +77 -77
  148. package/dist/DateField.css.map +1 -1
  149. package/dist/DateField.mjs +74 -74
  150. package/dist/DateField.mjs.map +1 -1
  151. package/dist/DatePicker.cjs +194 -191
  152. package/dist/DatePicker.cjs.map +1 -1
  153. package/dist/DatePicker.css +138 -126
  154. package/dist/DatePicker.css.map +1 -1
  155. package/dist/DatePicker.mjs +195 -192
  156. package/dist/DatePicker.mjs.map +1 -1
  157. package/dist/DateRangePicker.cjs +57 -57
  158. package/dist/DateRangePicker.cjs.map +1 -1
  159. package/dist/DateRangePicker.css +60 -60
  160. package/dist/DateRangePicker.css.map +1 -1
  161. package/dist/DateRangePicker.mjs +57 -57
  162. package/dist/DateRangePicker.mjs.map +1 -1
  163. package/dist/Dialog.cjs +17 -17
  164. package/dist/Dialog.cjs.map +1 -1
  165. package/dist/Dialog.css +88 -84
  166. package/dist/Dialog.css.map +1 -1
  167. package/dist/Dialog.mjs +17 -17
  168. package/dist/Dialog.mjs.map +1 -1
  169. package/dist/Disclosure.cjs +128 -147
  170. package/dist/Disclosure.cjs.map +1 -1
  171. package/dist/Disclosure.css +144 -112
  172. package/dist/Disclosure.css.map +1 -1
  173. package/dist/Disclosure.mjs +128 -147
  174. package/dist/Disclosure.mjs.map +1 -1
  175. package/dist/Divider.cjs +26 -26
  176. package/dist/Divider.css +25 -25
  177. package/dist/Divider.mjs +26 -26
  178. package/dist/DropZone.cjs +63 -63
  179. package/dist/DropZone.cjs.map +1 -1
  180. package/dist/DropZone.css +58 -58
  181. package/dist/DropZone.css.map +1 -1
  182. package/dist/DropZone.mjs +63 -63
  183. package/dist/DropZone.mjs.map +1 -1
  184. package/dist/Field.cjs +370 -370
  185. package/dist/Field.cjs.map +1 -1
  186. package/dist/Field.css +146 -142
  187. package/dist/Field.css.map +1 -1
  188. package/dist/Field.mjs +370 -370
  189. package/dist/Field.mjs.map +1 -1
  190. package/dist/Form.cjs +10 -10
  191. package/dist/Form.css +9 -9
  192. package/dist/Form.mjs +10 -10
  193. package/dist/FullscreenDialog.cjs +5 -5
  194. package/dist/FullscreenDialog.cjs.map +1 -1
  195. package/dist/FullscreenDialog.css +93 -93
  196. package/dist/FullscreenDialog.css.map +1 -1
  197. package/dist/FullscreenDialog.mjs +5 -5
  198. package/dist/FullscreenDialog.mjs.map +1 -1
  199. package/dist/IllustratedMessage.cjs +257 -257
  200. package/dist/IllustratedMessage.css +78 -78
  201. package/dist/IllustratedMessage.mjs +257 -257
  202. package/dist/Image.cjs +25 -17
  203. package/dist/Image.cjs.map +1 -1
  204. package/dist/Image.css +14 -14
  205. package/dist/Image.css.map +1 -1
  206. package/dist/Image.mjs +25 -17
  207. package/dist/Image.mjs.map +1 -1
  208. package/dist/InlineAlert.cjs +138 -153
  209. package/dist/InlineAlert.cjs.map +1 -1
  210. package/dist/InlineAlert.css +82 -151
  211. package/dist/InlineAlert.css.map +1 -1
  212. package/dist/InlineAlert.mjs +138 -153
  213. package/dist/InlineAlert.mjs.map +1 -1
  214. package/dist/Link.cjs +55 -55
  215. package/dist/Link.css +46 -46
  216. package/dist/Link.mjs +55 -55
  217. package/dist/LinkOut.cjs +8 -8
  218. package/dist/LinkOut.css +8 -8
  219. package/dist/LinkOut.mjs +8 -8
  220. package/dist/Menu.cjs +529 -501
  221. package/dist/Menu.cjs.map +1 -1
  222. package/dist/Menu.css +195 -191
  223. package/dist/Menu.css.map +1 -1
  224. package/dist/Menu.mjs +529 -502
  225. package/dist/Menu.mjs.map +1 -1
  226. package/dist/Meter.cjs +164 -164
  227. package/dist/Meter.css +93 -93
  228. package/dist/Meter.mjs +164 -164
  229. package/dist/Modal.cjs +90 -70
  230. package/dist/Modal.cjs.map +1 -1
  231. package/dist/Modal.css +76 -60
  232. package/dist/Modal.css.map +1 -1
  233. package/dist/Modal.mjs +90 -70
  234. package/dist/Modal.mjs.map +1 -1
  235. package/dist/NotificationBadge.cjs +59 -59
  236. package/dist/NotificationBadge.css +51 -51
  237. package/dist/NotificationBadge.mjs +59 -59
  238. package/dist/NumberField.cjs +116 -116
  239. package/dist/NumberField.cjs.map +1 -1
  240. package/dist/NumberField.css +100 -100
  241. package/dist/NumberField.css.map +1 -1
  242. package/dist/NumberField.mjs +116 -116
  243. package/dist/NumberField.mjs.map +1 -1
  244. package/dist/Picker.cjs +424 -349
  245. package/dist/Picker.cjs.map +1 -1
  246. package/dist/Picker.css +200 -180
  247. package/dist/Picker.css.map +1 -1
  248. package/dist/Picker.mjs +428 -353
  249. package/dist/Picker.mjs.map +1 -1
  250. package/dist/Popover.cjs +120 -116
  251. package/dist/Popover.cjs.map +1 -1
  252. package/dist/Popover.css +86 -82
  253. package/dist/Popover.css.map +1 -1
  254. package/dist/Popover.mjs +121 -118
  255. package/dist/Popover.mjs.map +1 -1
  256. package/dist/ProgressBar.cjs +174 -174
  257. package/dist/ProgressBar.css +101 -101
  258. package/dist/ProgressBar.mjs +174 -174
  259. package/dist/ProgressCircle.cjs +32 -32
  260. package/dist/ProgressCircle.css +24 -24
  261. package/dist/ProgressCircle.mjs +32 -32
  262. package/dist/Provider.cjs +11 -11
  263. package/dist/Provider.cjs.map +1 -1
  264. package/dist/Provider.css +13 -13
  265. package/dist/Provider.css.map +1 -1
  266. package/dist/Provider.mjs +11 -11
  267. package/dist/Provider.mjs.map +1 -1
  268. package/dist/Radio.cjs +155 -155
  269. package/dist/Radio.css +79 -79
  270. package/dist/Radio.mjs +155 -155
  271. package/dist/RadioGroup.cjs +43 -43
  272. package/dist/RadioGroup.css +38 -38
  273. package/dist/RadioGroup.mjs +43 -43
  274. package/dist/RangeCalendar.cjs +8 -8
  275. package/dist/RangeCalendar.cjs.map +1 -1
  276. package/dist/RangeCalendar.css +10 -10
  277. package/dist/RangeCalendar.css.map +1 -1
  278. package/dist/RangeCalendar.mjs +8 -8
  279. package/dist/RangeCalendar.mjs.map +1 -1
  280. package/dist/RangeSlider.cjs.map +1 -1
  281. package/dist/RangeSlider.mjs.map +1 -1
  282. package/dist/SearchField.cjs +43 -43
  283. package/dist/SearchField.cjs.map +1 -1
  284. package/dist/SearchField.css +46 -46
  285. package/dist/SearchField.css.map +1 -1
  286. package/dist/SearchField.mjs +43 -43
  287. package/dist/SearchField.mjs.map +1 -1
  288. package/dist/SegmentedControl.cjs +193 -224
  289. package/dist/SegmentedControl.cjs.map +1 -1
  290. package/dist/SegmentedControl.css +146 -118
  291. package/dist/SegmentedControl.css.map +1 -1
  292. package/dist/SegmentedControl.mjs +196 -227
  293. package/dist/SegmentedControl.mjs.map +1 -1
  294. package/dist/SelectBoxGroup.cjs +161 -159
  295. package/dist/SelectBoxGroup.cjs.map +1 -1
  296. package/dist/SelectBoxGroup.css +123 -123
  297. package/dist/SelectBoxGroup.css.map +1 -1
  298. package/dist/SelectBoxGroup.mjs +161 -159
  299. package/dist/SelectBoxGroup.mjs.map +1 -1
  300. package/dist/Slider.cjs +300 -300
  301. package/dist/Slider.css +151 -151
  302. package/dist/Slider.mjs +300 -300
  303. package/dist/StatusLight.cjs +126 -126
  304. package/dist/StatusLight.css +61 -61
  305. package/dist/StatusLight.mjs +126 -126
  306. package/dist/Switch.cjs +163 -163
  307. package/dist/Switch.css +74 -74
  308. package/dist/Switch.mjs +163 -163
  309. package/dist/TableView.cjs +340 -328
  310. package/dist/TableView.cjs.map +1 -1
  311. package/dist/TableView.css +176 -172
  312. package/dist/TableView.css.map +1 -1
  313. package/dist/TableView.mjs +340 -328
  314. package/dist/TableView.mjs.map +1 -1
  315. package/dist/Tabs.cjs +150 -190
  316. package/dist/Tabs.cjs.map +1 -1
  317. package/dist/Tabs.css +128 -100
  318. package/dist/Tabs.css.map +1 -1
  319. package/dist/Tabs.mjs +153 -193
  320. package/dist/Tabs.mjs.map +1 -1
  321. package/dist/TabsPicker.cjs +169 -161
  322. package/dist/TabsPicker.cjs.map +1 -1
  323. package/dist/TabsPicker.css +116 -124
  324. package/dist/TabsPicker.css.map +1 -1
  325. package/dist/TabsPicker.mjs +170 -162
  326. package/dist/TabsPicker.mjs.map +1 -1
  327. package/dist/TagGroup.cjs +226 -218
  328. package/dist/TagGroup.cjs.map +1 -1
  329. package/dist/TagGroup.css +147 -147
  330. package/dist/TagGroup.css.map +1 -1
  331. package/dist/TagGroup.mjs +226 -218
  332. package/dist/TagGroup.mjs.map +1 -1
  333. package/dist/TextField.cjs +65 -63
  334. package/dist/TextField.cjs.map +1 -1
  335. package/dist/TextField.css +58 -54
  336. package/dist/TextField.css.map +1 -1
  337. package/dist/TextField.mjs +65 -63
  338. package/dist/TextField.mjs.map +1 -1
  339. package/dist/TimeField.cjs +53 -53
  340. package/dist/TimeField.cjs.map +1 -1
  341. package/dist/TimeField.css +48 -48
  342. package/dist/TimeField.css.map +1 -1
  343. package/dist/TimeField.mjs +53 -53
  344. package/dist/TimeField.mjs.map +1 -1
  345. package/dist/Toast.cjs +120 -120
  346. package/dist/Toast.css +108 -108
  347. package/dist/Toast.mjs +120 -120
  348. package/dist/ToggleButton.cjs +3 -3
  349. package/dist/ToggleButton.css +12 -12
  350. package/dist/ToggleButton.mjs +3 -3
  351. package/dist/Tooltip.cjs +84 -83
  352. package/dist/Tooltip.cjs.map +1 -1
  353. package/dist/Tooltip.css +74 -70
  354. package/dist/Tooltip.css.map +1 -1
  355. package/dist/Tooltip.mjs +84 -83
  356. package/dist/Tooltip.mjs.map +1 -1
  357. package/dist/TreeView.cjs +150 -148
  358. package/dist/TreeView.cjs.map +1 -1
  359. package/dist/TreeView.css +147 -147
  360. package/dist/TreeView.css.map +1 -1
  361. package/dist/TreeView.mjs +151 -149
  362. package/dist/TreeView.mjs.map +1 -1
  363. package/dist/ar-AE.cjs +5 -0
  364. package/dist/ar-AE.cjs.map +1 -1
  365. package/dist/ar-AE.mjs +5 -0
  366. package/dist/ar-AE.mjs.map +1 -1
  367. package/dist/bg-BG.cjs +5 -0
  368. package/dist/bg-BG.cjs.map +1 -1
  369. package/dist/bg-BG.mjs +5 -0
  370. package/dist/bg-BG.mjs.map +1 -1
  371. package/dist/cs-CZ.cjs +5 -0
  372. package/dist/cs-CZ.cjs.map +1 -1
  373. package/dist/cs-CZ.mjs +5 -0
  374. package/dist/cs-CZ.mjs.map +1 -1
  375. package/dist/da-DK.cjs +5 -0
  376. package/dist/da-DK.cjs.map +1 -1
  377. package/dist/da-DK.mjs +5 -0
  378. package/dist/da-DK.mjs.map +1 -1
  379. package/dist/de-DE.cjs +5 -0
  380. package/dist/de-DE.cjs.map +1 -1
  381. package/dist/de-DE.mjs +5 -0
  382. package/dist/de-DE.mjs.map +1 -1
  383. package/dist/el-GR.cjs +5 -0
  384. package/dist/el-GR.cjs.map +1 -1
  385. package/dist/el-GR.mjs +5 -0
  386. package/dist/el-GR.mjs.map +1 -1
  387. package/dist/en-US.cjs +21 -16
  388. package/dist/en-US.cjs.map +1 -1
  389. package/dist/en-US.mjs +21 -16
  390. package/dist/en-US.mjs.map +1 -1
  391. package/dist/es-ES.cjs +5 -0
  392. package/dist/es-ES.cjs.map +1 -1
  393. package/dist/es-ES.mjs +5 -0
  394. package/dist/es-ES.mjs.map +1 -1
  395. package/dist/et-EE.cjs +5 -0
  396. package/dist/et-EE.cjs.map +1 -1
  397. package/dist/et-EE.mjs +5 -0
  398. package/dist/et-EE.mjs.map +1 -1
  399. package/dist/fi-FI.cjs +5 -0
  400. package/dist/fi-FI.cjs.map +1 -1
  401. package/dist/fi-FI.mjs +5 -0
  402. package/dist/fi-FI.mjs.map +1 -1
  403. package/dist/fr-FR.cjs +5 -0
  404. package/dist/fr-FR.cjs.map +1 -1
  405. package/dist/fr-FR.mjs +5 -0
  406. package/dist/fr-FR.mjs.map +1 -1
  407. package/dist/he-IL.cjs +5 -0
  408. package/dist/he-IL.cjs.map +1 -1
  409. package/dist/he-IL.mjs +5 -0
  410. package/dist/he-IL.mjs.map +1 -1
  411. package/dist/hr-HR.cjs +5 -0
  412. package/dist/hr-HR.cjs.map +1 -1
  413. package/dist/hr-HR.mjs +5 -0
  414. package/dist/hr-HR.mjs.map +1 -1
  415. package/dist/hu-HU.cjs +5 -0
  416. package/dist/hu-HU.cjs.map +1 -1
  417. package/dist/hu-HU.mjs +5 -0
  418. package/dist/hu-HU.mjs.map +1 -1
  419. package/dist/it-IT.cjs +5 -0
  420. package/dist/it-IT.cjs.map +1 -1
  421. package/dist/it-IT.mjs +5 -0
  422. package/dist/it-IT.mjs.map +1 -1
  423. package/dist/ja-JP.cjs +5 -0
  424. package/dist/ja-JP.cjs.map +1 -1
  425. package/dist/ja-JP.mjs +5 -0
  426. package/dist/ja-JP.mjs.map +1 -1
  427. package/dist/ko-KR.cjs +5 -0
  428. package/dist/ko-KR.cjs.map +1 -1
  429. package/dist/ko-KR.mjs +5 -0
  430. package/dist/ko-KR.mjs.map +1 -1
  431. package/dist/lt-LT.cjs +5 -0
  432. package/dist/lt-LT.cjs.map +1 -1
  433. package/dist/lt-LT.mjs +5 -0
  434. package/dist/lt-LT.mjs.map +1 -1
  435. package/dist/lv-LV.cjs +5 -0
  436. package/dist/lv-LV.cjs.map +1 -1
  437. package/dist/lv-LV.mjs +5 -0
  438. package/dist/lv-LV.mjs.map +1 -1
  439. package/dist/main.cjs +2 -0
  440. package/dist/main.cjs.map +1 -1
  441. package/dist/module.mjs +3 -3
  442. package/dist/module.mjs.map +1 -1
  443. package/dist/nb-NO.cjs +5 -0
  444. package/dist/nb-NO.cjs.map +1 -1
  445. package/dist/nb-NO.mjs +5 -0
  446. package/dist/nb-NO.mjs.map +1 -1
  447. package/dist/nl-NL.cjs +5 -0
  448. package/dist/nl-NL.cjs.map +1 -1
  449. package/dist/nl-NL.mjs +5 -0
  450. package/dist/nl-NL.mjs.map +1 -1
  451. package/dist/pl-PL.cjs +5 -0
  452. package/dist/pl-PL.cjs.map +1 -1
  453. package/dist/pl-PL.mjs +5 -0
  454. package/dist/pl-PL.mjs.map +1 -1
  455. package/dist/pt-BR.cjs +5 -0
  456. package/dist/pt-BR.cjs.map +1 -1
  457. package/dist/pt-BR.mjs +5 -0
  458. package/dist/pt-BR.mjs.map +1 -1
  459. package/dist/pt-PT.cjs +5 -0
  460. package/dist/pt-PT.cjs.map +1 -1
  461. package/dist/pt-PT.mjs +5 -0
  462. package/dist/pt-PT.mjs.map +1 -1
  463. package/dist/ro-RO.cjs +5 -0
  464. package/dist/ro-RO.cjs.map +1 -1
  465. package/dist/ro-RO.mjs +5 -0
  466. package/dist/ro-RO.mjs.map +1 -1
  467. package/dist/ru-RU.cjs +5 -0
  468. package/dist/ru-RU.cjs.map +1 -1
  469. package/dist/ru-RU.mjs +5 -0
  470. package/dist/ru-RU.mjs.map +1 -1
  471. package/dist/sk-SK.cjs +5 -0
  472. package/dist/sk-SK.cjs.map +1 -1
  473. package/dist/sk-SK.mjs +5 -0
  474. package/dist/sk-SK.mjs.map +1 -1
  475. package/dist/sl-SI.cjs +5 -0
  476. package/dist/sl-SI.cjs.map +1 -1
  477. package/dist/sl-SI.mjs +5 -0
  478. package/dist/sl-SI.mjs.map +1 -1
  479. package/dist/sr-SP.cjs +5 -0
  480. package/dist/sr-SP.cjs.map +1 -1
  481. package/dist/sr-SP.mjs +5 -0
  482. package/dist/sr-SP.mjs.map +1 -1
  483. package/dist/sv-SE.cjs +5 -0
  484. package/dist/sv-SE.cjs.map +1 -1
  485. package/dist/sv-SE.mjs +5 -0
  486. package/dist/sv-SE.mjs.map +1 -1
  487. package/dist/tr-TR.cjs +5 -0
  488. package/dist/tr-TR.cjs.map +1 -1
  489. package/dist/tr-TR.mjs +5 -0
  490. package/dist/tr-TR.mjs.map +1 -1
  491. package/dist/types.d.ts +147 -87
  492. package/dist/types.d.ts.map +1 -1
  493. package/dist/uk-UA.cjs +5 -0
  494. package/dist/uk-UA.cjs.map +1 -1
  495. package/dist/uk-UA.mjs +5 -0
  496. package/dist/uk-UA.mjs.map +1 -1
  497. package/dist/zh-CN.cjs +5 -0
  498. package/dist/zh-CN.cjs.map +1 -1
  499. package/dist/zh-CN.mjs +5 -0
  500. package/dist/zh-CN.mjs.map +1 -1
  501. package/dist/zh-TW.cjs +5 -0
  502. package/dist/zh-TW.cjs.map +1 -1
  503. package/dist/zh-TW.mjs +5 -0
  504. package/dist/zh-TW.mjs.map +1 -1
  505. package/icons/Icon.cjs +10 -10
  506. package/icons/Icon.css +9 -9
  507. package/icons/Icon.mjs +10 -10
  508. package/icons/Skeleton.cjs +2 -2
  509. package/icons/Skeleton.css +6 -6
  510. package/icons/Skeleton.mjs +2 -2
  511. package/package.json +20 -20
  512. package/page.css +7 -7
  513. package/src/ActionBar.tsx +5 -3
  514. package/src/ActionButton.tsx +112 -32
  515. package/src/Avatar.tsx +4 -1
  516. package/src/Button.tsx +27 -28
  517. package/src/Calendar.tsx +3 -0
  518. package/src/Card.tsx +22 -7
  519. package/src/CardView.tsx +9 -1
  520. package/src/ColorArea.tsx +10 -2
  521. package/src/ColorField.tsx +3 -2
  522. package/src/ColorSlider.tsx +3 -2
  523. package/src/ComboBox.tsx +69 -44
  524. package/src/ContextualHelp.tsx +36 -32
  525. package/src/CustomDialog.tsx +1 -1
  526. package/src/DateField.tsx +4 -0
  527. package/src/DatePicker.tsx +28 -20
  528. package/src/DateRangePicker.tsx +5 -1
  529. package/src/Dialog.tsx +6 -3
  530. package/src/Disclosure.tsx +20 -16
  531. package/src/DropZone.tsx +5 -2
  532. package/src/Field.tsx +4 -1
  533. package/src/FullscreenDialog.tsx +1 -1
  534. package/src/Image.tsx +30 -8
  535. package/src/InlineAlert.tsx +10 -27
  536. package/src/Menu.tsx +57 -45
  537. package/src/Modal.tsx +99 -74
  538. package/src/NumberField.tsx +3 -2
  539. package/src/Picker.tsx +114 -51
  540. package/src/Popover.tsx +57 -35
  541. package/src/Provider.tsx +1 -1
  542. package/src/RangeCalendar.tsx +3 -0
  543. package/src/RangeSlider.tsx +3 -0
  544. package/src/SearchField.tsx +2 -1
  545. package/src/SegmentedControl.tsx +16 -44
  546. package/src/SelectBoxGroup.tsx +21 -23
  547. package/src/TableView.tsx +7 -6
  548. package/src/Tabs.tsx +34 -70
  549. package/src/TabsPicker.tsx +35 -26
  550. package/src/TagGroup.tsx +44 -36
  551. package/src/TextField.tsx +11 -6
  552. package/src/TimeField.tsx +4 -0
  553. package/src/Tooltip.tsx +3 -0
  554. package/src/TreeView.tsx +2 -2
  555. package/src/index.ts +3 -2
  556. package/src/page.macro.ts +2 -2
  557. package/src/style-utils.ts +4 -3
  558. package/style/__tests__/style-macro.test.js +56 -56
  559. package/style/dist/spectrum-theme.cjs +36 -6
  560. package/style/dist/spectrum-theme.cjs.map +1 -1
  561. package/style/dist/spectrum-theme.mjs +36 -6
  562. package/style/dist/spectrum-theme.mjs.map +1 -1
  563. package/style/dist/types.d.ts +1 -0
  564. package/style/dist/types.d.ts.map +1 -1
  565. package/style/spectrum-theme.ts +10 -8
  566. package/style/tokens.ts +10 -0
@@ -297,20 +297,23 @@ export interface DisclosurePanelProps extends Omit<RACDisclosurePanelProps, 'cla
297
297
 
298
298
  const panelStyles = style({
299
299
  font: 'body',
300
- paddingTop: {
301
- isExpanded: 8
302
- },
303
- paddingBottom: {
304
- isExpanded: 16
305
- },
300
+ height: '--disclosure-panel-height',
301
+ overflow: 'clip',
302
+ transition: {
303
+ default: '[height]',
304
+ '@media (prefers-reduced-motion: reduce)': 'none'
305
+ }
306
+ });
307
+
308
+ const panelInner = style({
309
+ paddingTop: 8,
310
+ paddingBottom: 16,
306
311
  paddingX: {
307
- isExpanded: {
308
- size: {
309
- S: 8,
310
- M: space(9),
311
- L: 12,
312
- XL: space(15)
313
- }
312
+ size: {
313
+ S: 8,
314
+ M: space(9),
315
+ L: 12,
316
+ XL: space(15)
314
317
  }
315
318
  }
316
319
  });
@@ -326,15 +329,16 @@ export const DisclosurePanel = forwardRef(function DisclosurePanel(props: Disclo
326
329
  } = props;
327
330
  const domProps = filterDOMProps(otherProps);
328
331
  let {size} = useSlottedContext(DisclosureContext)!;
329
- let {isExpanded} = useContext(DisclosureStateContext)!;
330
332
  let panelRef = useDOMRef(ref);
331
333
  return (
332
334
  <RACDisclosurePanel
333
335
  {...domProps}
334
336
  ref={panelRef}
335
337
  style={UNSAFE_style}
336
- className={(UNSAFE_className ?? '') + panelStyles({size, isExpanded})}>
337
- {props.children}
338
+ className={(UNSAFE_className ?? '') + panelStyles}>
339
+ <div className={panelInner({size})}>
340
+ {props.children}
341
+ </div>
338
342
  </RACDisclosurePanel>
339
343
  );
340
344
  });
package/src/DropZone.tsx CHANGED
@@ -29,14 +29,17 @@ export interface DropZoneProps extends Omit<RACDropZoneProps, 'className' | 'sty
29
29
  children: ReactNode,
30
30
  /** Whether the drop zone has been filled. */
31
31
  isFilled?: boolean,
32
- /** The message to replace the default banner message that is shown when the drop zone is filled. */
32
+ /**
33
+ * The message to replace the default banner message that is shown when the drop zone is filled.
34
+ * @default 'Drop file to replace'
35
+ */
33
36
  replaceMessage?: string,
34
37
  /**
35
38
  * The size of the DropZone.
36
39
  *
37
40
  * @default 'M'
38
41
  */
39
- size?: 'S' | 'M' | 'L'
42
+ size?: 'S' | 'M' | 'L'
40
43
  }
41
44
 
42
45
  export const DropZoneContext = createContext<ContextValue<Partial<DropZoneProps>, DOMRefValue<HTMLDivElement>>>(null);
package/src/Field.tsx CHANGED
@@ -231,7 +231,10 @@ export const Input = forwardRef(function Input(props: InputProps, ref: Forwarded
231
231
  className={UNSAFE_className + mergeStyles(style({
232
232
  padding: 0,
233
233
  backgroundColor: 'transparent',
234
- color: 'inherit',
234
+ color: {
235
+ default: 'inherit',
236
+ '::placeholder': 'gray-600'
237
+ },
235
238
  fontFamily: 'inherit',
236
239
  fontSize: 'inherit',
237
240
  fontWeight: 'inherit',
@@ -52,7 +52,7 @@ const content = style({
52
52
  overflowY: {
53
53
  default: 'auto',
54
54
  // Make the whole dialog scroll rather than only the content when the height it small.
55
- [`@media (height < ${400 / 16}rem)`]: 'visible'
55
+ [`@container (height < ${400 / 16}rem)`]: 'visible'
56
56
  },
57
57
  font: 'body'
58
58
  });
package/src/Image.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import {ContextValue, SlotProps} from 'react-aria-components';
2
- import {createContext, ForwardedRef, forwardRef, HTMLAttributeReferrerPolicy, ReactNode, useCallback, useContext, useMemo, useReducer, useRef, version} from 'react';
2
+ import {createContext, ForwardedRef, forwardRef, HTMLAttributeReferrerPolicy, JSX, ReactNode, useCallback, useContext, useMemo, useReducer, useRef, version} from 'react';
3
3
  import {DefaultImageGroup, ImageGroup} from './ImageCoordinator';
4
4
  import {loadingStyle, useIsSkeleton, useLoadingAnimation} from './Skeleton';
5
5
  import {mergeStyles} from '../style/runtime';
@@ -42,6 +42,16 @@ export interface ImageProps extends UnsafeStyles, SlotProps {
42
42
  * [See MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#referrerpolicy).
43
43
  */
44
44
  referrerPolicy?: HTMLAttributeReferrerPolicy,
45
+ /**
46
+ * The intrinsic width of the image.
47
+ * [See MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img#width).
48
+ */
49
+ width?: number,
50
+ /**
51
+ * The intrinsic height of the image.
52
+ * [See MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img#height).
53
+ */
54
+ height?: number,
45
55
  /** Spectrum-defined styles, returned by the `style()` macro. */
46
56
  styles?: StyleString,
47
57
  /** A function that is called to render a fallback when the image fails to load. */
@@ -133,7 +143,10 @@ const imgStyles = style({
133
143
  transitionDuration: 500
134
144
  });
135
145
 
136
- export const Image = forwardRef(function Image(props: ImageProps, domRef: ForwardedRef<HTMLDivElement>) {
146
+ /**
147
+ * An image with support for skeleton loading and custom error states.
148
+ */
149
+ export const Image = forwardRef(function Image(props: ImageProps, domRef: ForwardedRef<HTMLDivElement>): JSX.Element | null {
137
150
  [props, domRef] = useSpectrumContextProps(props, domRef, ImageContext);
138
151
 
139
152
  let {
@@ -152,7 +165,9 @@ export const Image = forwardRef(function Image(props: ImageProps, domRef: Forwar
152
165
  fetchPriority,
153
166
  loading,
154
167
  referrerPolicy,
155
- slot
168
+ slot,
169
+ width,
170
+ height
156
171
  } = props;
157
172
  let hidden = (props as ImageContextValue).hidden;
158
173
 
@@ -198,10 +213,15 @@ export const Image = forwardRef(function Image(props: ImageProps, domRef: Forwar
198
213
  }
199
214
 
200
215
  // If the image is already loaded, update state immediately instead of waiting for onLoad.
201
- if (state === 'loading' && imgRef.current?.complete) {
202
- // Queue a microtask so we don't hit React's update limit.
203
- // TODO: is this necessary?
204
- queueMicrotask(onLoad);
216
+ let img = imgRef.current;
217
+ if (state === 'loading' && img?.complete) {
218
+ if (img.naturalWidth === 0 && img.naturalHeight === 0) {
219
+ // Queue a microtask so we don't hit React's update limit.
220
+ // TODO: is this necessary?
221
+ queueMicrotask(onError);
222
+ } else {
223
+ queueMicrotask(onLoad);
224
+ }
205
225
  }
206
226
 
207
227
  animation(domRef.current);
@@ -234,13 +254,15 @@ export const Image = forwardRef(function Image(props: ImageProps, domRef: Forwar
234
254
  decoding={decoding}
235
255
  loading={loading}
236
256
  referrerPolicy={referrerPolicy}
257
+ width={width}
258
+ height={height}
237
259
  ref={imgRef}
238
260
  onLoad={onLoad}
239
261
  onError={onError}
240
262
  className={imgStyles({isRevealed, isTransitioning})} />
241
263
  )}
242
264
  </div>
243
- ), [slot, hidden, domRef, UNSAFE_style, UNSAFE_className, styles, isAnimating, errorState, src, alt, crossOrigin, decoding, fetchPriority, loading, referrerPolicy, onLoad, onError, isRevealed, isTransitioning]);
265
+ ), [slot, hidden, domRef, UNSAFE_style, UNSAFE_className, styles, isAnimating, errorState, src, alt, crossOrigin, decoding, fetchPriority, loading, referrerPolicy, width, height, onLoad, onError, isRevealed, isTransitioning]);
244
266
  });
245
267
 
246
268
  function getFetchPriorityProp(fetchPriority?: 'high' | 'low' | 'auto'): Record<string, string | undefined> {
@@ -121,7 +121,7 @@ const inlineAlert = style<InlineStylesProps & {isFocusVisible?: boolean}>({
121
121
  }, getAllowedOverrides());
122
122
 
123
123
  const icon = style<InlineStylesProps>({
124
- gridArea: 'icon',
124
+ float: 'inline-end',
125
125
  '--iconPrimary': {
126
126
  type: 'fill',
127
127
  value: {
@@ -155,18 +155,6 @@ const icon = style<InlineStylesProps>({
155
155
  }
156
156
  });
157
157
 
158
- const grid = style({
159
- display: 'grid',
160
- columnGap: 24,
161
- gridTemplateColumns: '1fr auto',
162
- gridTemplateRows: 'auto auto auto',
163
- width: 'full',
164
- gridTemplateAreas: [
165
- 'heading icon',
166
- 'content content'
167
- ]
168
- });
169
-
170
158
  let ICONS = {
171
159
  informative: InfoCircle,
172
160
  positive: CheckmarkCircle,
@@ -177,7 +165,6 @@ let ICONS = {
177
165
 
178
166
  const heading = style({
179
167
  marginTop: 0,
180
- gridArea: 'heading',
181
168
  font: 'title-sm',
182
169
  color: {
183
170
  default: 'title',
@@ -193,7 +180,6 @@ const heading = style({
193
180
  });
194
181
 
195
182
  const content = style({
196
- gridArea: 'content',
197
183
  font: 'body-sm',
198
184
  color: {
199
185
  default: 'body',
@@ -256,18 +242,15 @@ export const InlineAlert = /*#__PURE__*/ forwardRef(function InlineAlert(props:
256
242
  fillStyle,
257
243
  isFocusVisible
258
244
  }, props.styles)}>
259
- <div
260
- className={grid}>
261
- <Provider
262
- values={[
263
- [HeadingContext, {styles: heading({fillStyle})}],
264
- [ContentContext, {styles: content({fillStyle})}],
265
- [IconContext, {styles: icon({variant, fillStyle})}]
266
- ]}>
267
- {Icon && <Icon aria-label={iconAlt} />}
268
- {children}
269
- </Provider>
270
- </div>
245
+ <Provider
246
+ values={[
247
+ [HeadingContext, {styles: heading({fillStyle})}],
248
+ [ContentContext, {styles: content({fillStyle})}],
249
+ [IconContext, {styles: icon({variant, fillStyle})}]
250
+ ]}>
251
+ {Icon && <Icon aria-label={iconAlt} />}
252
+ {children}
253
+ </Provider>
271
254
  </div>
272
255
  );
273
256
  });
package/src/Menu.tsx CHANGED
@@ -41,10 +41,10 @@ import {forwardRefType} from './types';
41
41
  import {HeaderContext, HeadingContext, KeyboardContext, Text, TextContext} from './Content';
42
42
  import {IconContext} from './Icon'; // chevron right removed??
43
43
  import {ImageContext} from './Image';
44
+ import {InPopoverContext, Popover, PopoverContext} from './Popover';
44
45
  import LinkOutIcon from '../ui-icons/LinkOut';
45
46
  import {mergeStyles} from '../style/runtime';
46
47
  import {Placement, useLocale} from 'react-aria';
47
- import {PopoverBase} from './Popover';
48
48
  import {PressResponder} from '@react-aria/interactions';
49
49
  import {pressScale} from './pressScale';
50
50
  import {useGlobalListeners} from '@react-aria/utils';
@@ -211,7 +211,7 @@ export let checkmark = style({
211
211
  aspectRatio: 'square'
212
212
  });
213
213
 
214
- let checkbox = style({
214
+ export let checkbox = style({
215
215
  gridArea: 'checkmark',
216
216
  marginEnd: 'text-to-control'
217
217
  });
@@ -320,6 +320,11 @@ let InternalMenuContext = createContext<{size: 'S' | 'M' | 'L' | 'XL', isSubmenu
320
320
 
321
321
  let InternalMenuTriggerContext = createContext<Omit<MenuTriggerProps, 'children'> | null>(null);
322
322
 
323
+ let wrappingDiv = style({
324
+ display: 'flex',
325
+ size: 'full'
326
+ });
327
+
323
328
  /**
324
329
  * Menus display a list of actions or options that a user can choose.
325
330
  */
@@ -335,27 +340,9 @@ export const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T
335
340
  hideLinkOutIcon = false
336
341
  } = props;
337
342
  let ctx = useContext(InternalMenuTriggerContext);
338
- let {align = 'start', direction = 'bottom', shouldFlip} = ctx ?? {};
339
-
340
- // TODO: change offset/crossoffset based on size? scale?
341
- // actual values?
342
- let initialPlacement: Placement;
343
- switch (direction) {
344
- case 'left':
345
- case 'right':
346
- case 'start':
347
- case 'end':
348
- initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;
349
- break;
350
- case 'bottom':
351
- case 'top':
352
- default:
353
- initialPlacement = `${direction} ${align}` as Placement;
354
- }
355
- if (isSubmenu) {
356
- initialPlacement = 'end top' as Placement;
357
- }
343
+ let inPopover = useContext(InPopoverContext);
358
344
 
345
+ let isPopover = (ctx || isSubmenu) && !inPopover;
359
346
  let content = (
360
347
  <InternalMenuContext.Provider value={{size, isSubmenu: true, hideLinkOutIcon}}>
361
348
  <Provider
@@ -370,34 +357,30 @@ export const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T
370
357
  slots: {
371
358
  'description': {styles: description({size})}
372
359
  }
373
- }]
360
+ }],
361
+ [InPopoverContext, false]
374
362
  ]}>
375
363
  <AriaMenu
376
364
  {...props}
377
- className={menu({size, isPopover: !!ctx || isSubmenu}, ctx ? null : styles)}>
365
+ className={menu({size, isPopover}, isPopover ? null : styles)}>
378
366
  {children}
379
367
  </AriaMenu>
380
368
  </Provider>
381
369
  </InternalMenuContext.Provider>
382
370
  );
383
371
 
384
- if (ctx || isSubmenu) {
372
+ if (isPopover) {
385
373
  return (
386
- <PopoverBase
374
+ <Popover
387
375
  ref={ref}
388
- hideArrow
389
- placement={initialPlacement}
390
- shouldFlip={shouldFlip}
391
- // For submenus, the offset from the edge of the popover should be 10px.
392
- // Subtract 8px for the padding around the parent menu.
393
- offset={isSubmenu ? -2 : 8}
394
- // Offset by padding + border so that the first item in a submenu lines up with the parent menu item.
395
- crossOffset={isSubmenu ? -9 : 0}
396
- UNSAFE_style={UNSAFE_style}
397
- UNSAFE_className={UNSAFE_className}
398
- styles={styles}>
399
- {content}
400
- </PopoverBase>
376
+ padding="none"
377
+ hideArrow>
378
+ <div
379
+ style={UNSAFE_style}
380
+ className={(UNSAFE_className || '') + wrappingDiv}>
381
+ {content}
382
+ </div>
383
+ </Popover>
401
384
  );
402
385
  }
403
386
 
@@ -564,6 +547,21 @@ function MenuTrigger(props: MenuTriggerProps): ReactNode {
564
547
  }, {once: true, capture: true});
565
548
  };
566
549
 
550
+ let {align = 'start', direction = 'bottom', shouldFlip} = props;
551
+ let placement: Placement;
552
+ switch (direction) {
553
+ case 'left':
554
+ case 'right':
555
+ case 'start':
556
+ case 'end':
557
+ placement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;
558
+ break;
559
+ case 'bottom':
560
+ case 'top':
561
+ default:
562
+ placement = `${direction} ${align}` as Placement;
563
+ }
564
+
567
565
  return (
568
566
  <InternalMenuTriggerContext.Provider
569
567
  value={{
@@ -571,18 +569,32 @@ function MenuTrigger(props: MenuTriggerProps): ReactNode {
571
569
  direction: props.direction,
572
570
  shouldFlip: props.shouldFlip
573
571
  }}>
574
- <AriaMenuTrigger {...props}>
575
- <PressResponder onPressStart={onPressStart} isPressed={isPressed}>
576
- {props.children}
577
- </PressResponder>
578
- </AriaMenuTrigger>
572
+ <PopoverContext.Provider value={{hideArrow: true, offset: 8, crossOffset: 0, placement, shouldFlip}}>
573
+ <AriaMenuTrigger {...props}>
574
+ <PressResponder onPressStart={onPressStart} isPressed={isPressed}>
575
+ {props.children}
576
+ </PressResponder>
577
+ </AriaMenuTrigger>
578
+ </PopoverContext.Provider>
579
579
  </InternalMenuTriggerContext.Provider>
580
580
  );
581
581
  }
582
582
 
583
583
  export interface SubmenuTriggerProps extends Omit<AriaSubmenuTriggerProps, 'delay'> {}
584
584
 
585
- const SubmenuTrigger = AriaSubmenuTrigger as (props: SubmenuTriggerProps) => JSX.Element | null;
585
+ function SubmenuTrigger(props: SubmenuTriggerProps): JSX.Element {
586
+ // For submenus, the offset from the edge of the popover should be 10px.
587
+ // Subtract 8px for the padding around the parent menu.
588
+ // Offset by padding + border so that the first item in a submenu lines up with the parent menu item.
589
+ return (
590
+ <AriaSubmenuTrigger {...props}>
591
+ {props.children[0]}
592
+ <PopoverContext.Provider value={{hideArrow: true, offset: -2, crossOffset: -8, placement: 'end top'}}>
593
+ {props.children[1]}
594
+ </PopoverContext.Provider>
595
+ </AriaSubmenuTrigger>
596
+ );
597
+ }
586
598
 
587
599
  export {MenuTrigger, SubmenuTrigger};
588
600
 
package/src/Modal.tsx CHANGED
@@ -24,18 +24,18 @@ interface ModalProps extends ModalOverlayProps {
24
24
  *
25
25
  * @default 'M'
26
26
  */
27
- size?: 'S' | 'M' | 'L' | 'fullscreen' | 'fullscreenTakeover'
27
+ size?: 'S' | 'M' | 'L' | 'XL' | 'fullscreen' | 'fullscreenTakeover'
28
28
  }
29
29
 
30
30
  const modalOverlayStyles = style({
31
31
  ...colorScheme(),
32
- position: 'fixed',
33
- inset: 0,
32
+ position: 'absolute',
33
+ top: 0,
34
+ left: 0,
35
+ width: 'full',
36
+ height: '--page-height',
34
37
  isolation: 'isolate',
35
38
  backgroundColor: 'transparent-black-500',
36
- display: 'flex',
37
- alignItems: 'center',
38
- justifyContent: 'center',
39
39
  opacity: {
40
40
  isEntering: 0,
41
41
  isExiting: 0
@@ -47,6 +47,22 @@ const modalOverlayStyles = style({
47
47
  }
48
48
  });
49
49
 
50
+ const modalWrapper = style({
51
+ position: 'sticky',
52
+ top: 0,
53
+ left: 0,
54
+ width: 'full',
55
+ height: '--visual-viewport-height',
56
+ display: 'flex',
57
+ alignItems: {
58
+ default: 'center',
59
+ size: {
60
+ fullscreenTakeover: 'start'
61
+ }
62
+ },
63
+ justifyContent: 'center'
64
+ });
65
+
50
66
  /**
51
67
  * A modal is an overlay element which blocks interaction with elements outside it.
52
68
  */
@@ -68,74 +84,83 @@ export const Modal = forwardRef(function Modal(props: ModalProps, ref: DOMRef<HT
68
84
  <ModalOverlay
69
85
  {...props}
70
86
  className={renderProps => modalOverlayStyles({...renderProps, colorScheme})}>
71
- <RACModal
72
- {...props}
73
- ref={modalRef}
74
- className={renderProps => style({
75
- display: 'flex',
76
- flexDirection: 'column',
77
- borderRadius: {
78
- default: 'xl',
79
- size: {
80
- fullscreenTakeover: 'none'
81
- }
82
- },
83
- width: {
84
- size: {
85
- // Copied from designs, not sure if correct.
86
- S: 400,
87
- M: 480,
88
- L: 640,
89
- fullscreen: 'calc(100% - 40px)',
90
- fullscreenTakeover: 'full'
91
- }
92
- },
93
- height: {
94
- size: {
95
- fullscreen: 'calc(100% - 40px)',
96
- fullscreenTakeover: 'full'
97
- }
98
- },
99
- maxWidth: {
100
- default: '90vw',
101
- size: {
102
- fullscreen: 'none',
103
- fullscreenTakeover: 'none'
104
- }
105
- },
106
- maxHeight: {
107
- default: '90vh',
108
- size: {
109
- fullscreen: 'none',
110
- fullscreenTakeover: 'none'
111
- }
112
- },
113
- '--s2-container-bg': {
114
- type: 'backgroundColor',
115
- value: 'layer-2'
116
- },
117
- backgroundColor: '--s2-container-bg',
118
- opacity: {
119
- isEntering: 0,
120
- isExiting: 0
121
- },
122
- translateY: {
123
- isEntering: 20
124
- },
125
- transition: '[opacity, translate]',
126
- transitionDuration: {
127
- default: 250,
128
- isExiting: 130
129
- },
130
- transitionDelay: {
131
- default: 160,
132
- isExiting: 0
133
- },
134
- // Transparent outline for WHCM.
135
- outlineStyle: 'solid',
136
- outlineWidth: 1,
137
- outlineColor: 'transparent'
138
- })({...renderProps, size: props.size})} />
87
+ <div className={modalWrapper({size: props.size})} style={{containerType: 'size'} as any}>
88
+ <RACModal
89
+ {...props}
90
+ ref={modalRef}
91
+ className={renderProps => style({
92
+ display: 'flex',
93
+ flexDirection: 'column',
94
+ borderRadius: {
95
+ default: 'xl',
96
+ size: {
97
+ fullscreenTakeover: 'none'
98
+ }
99
+ },
100
+ width: {
101
+ size: {
102
+ // Copied from designs, not sure if correct.
103
+ S: 400,
104
+ M: 480,
105
+ L: 640,
106
+ XL: 960,
107
+ fullscreen: 'calc(100% - 40px)',
108
+ fullscreenTakeover: 'full'
109
+ }
110
+ },
111
+ height: {
112
+ size: {
113
+ fullscreen: 'calc(100% - 40px)',
114
+ fullscreenTakeover: 'full'
115
+ }
116
+ },
117
+ maxWidth: {
118
+ default: '90vw',
119
+ size: {
120
+ fullscreen: 'none',
121
+ fullscreenTakeover: 'none'
122
+ }
123
+ },
124
+ maxHeight: {
125
+ default: '90%',
126
+ size: {
127
+ fullscreen: 'none',
128
+ fullscreenTakeover: 'none'
129
+ }
130
+ },
131
+ paddingBottom: {
132
+ size: {
133
+ // Extend background behind the iOS Safari toolbar and keyboard.
134
+ fullscreenTakeover: '[100vh]'
135
+ }
136
+ },
137
+ '--s2-container-bg': {
138
+ type: 'backgroundColor',
139
+ value: 'layer-2'
140
+ },
141
+ backgroundColor: '--s2-container-bg',
142
+ opacity: {
143
+ isEntering: 0,
144
+ isExiting: 0
145
+ },
146
+ translateY: {
147
+ isEntering: 20
148
+ },
149
+ transition: '[opacity, translate]',
150
+ transitionDuration: {
151
+ default: 250,
152
+ isExiting: 130
153
+ },
154
+ transitionDelay: {
155
+ default: 160,
156
+ isExiting: 0
157
+ },
158
+ // Transparent outline for WHCM.
159
+ outlineStyle: 'solid',
160
+ outlineWidth: 1,
161
+ outlineColor: 'transparent'
162
+ })({...renderProps, size: props.size})} />
163
+ </div>
139
164
  </ModalOverlay>
140
165
  );
141
166
  });
@@ -19,6 +19,7 @@ import {
19
19
  ButtonRenderProps,
20
20
  ContextValue,
21
21
  InputContext,
22
+ InputProps,
22
23
  useContextProps
23
24
  } from 'react-aria-components';
24
25
  import {baseColor, space, style} from '../style' with {type: 'macro'};
@@ -40,7 +41,8 @@ export interface NumberFieldProps extends
40
41
  Omit<AriaNumberFieldProps, 'children' | 'className' | 'style' | keyof GlobalDOMAttributes>,
41
42
  StyleProps,
42
43
  SpectrumLabelableProps,
43
- HelpTextProps {
44
+ HelpTextProps,
45
+ Pick<InputProps, 'placeholder'> {
44
46
  /**
45
47
  * Whether to hide the increment and decrement buttons.
46
48
  * @default false
@@ -173,7 +175,6 @@ export const NumberField = forwardRef(function NumberField(props: NumberFieldPro
173
175
  }
174
176
  }));
175
177
 
176
-
177
178
  return (
178
179
  <AriaNumberField
179
180
  ref={domRef}