@octanejs/aria 0.0.40 → 0.0.41

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 (416) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/README.md +20 -7
  3. package/UPSTREAM.md +108 -0
  4. package/package.json +10 -6
  5. package/src/calendar/useCalendar.tsx +36 -0
  6. package/src/calendar/useCalendarBase.tsx +142 -0
  7. package/src/calendar/useCalendarCell.tsx +416 -0
  8. package/src/calendar/useCalendarGrid.tsx +202 -0
  9. package/src/calendar/useCalendarHeading.tsx +85 -0
  10. package/src/calendar/useCalendarMonthPicker.tsx +92 -0
  11. package/src/calendar/useCalendarYearPicker.tsx +127 -0
  12. package/src/calendar/useRangeCalendar.tsx +121 -0
  13. package/src/calendar/utils.tsx +183 -0
  14. package/src/color/useColorArea.tsx +599 -0
  15. package/src/color/useColorAreaGradient.tsx +157 -0
  16. package/src/color/useColorChannelField.tsx +53 -0
  17. package/src/color/useColorField.tsx +170 -0
  18. package/src/color/useColorSlider.tsx +177 -0
  19. package/src/color/useColorSwatch.tsx +83 -0
  20. package/src/color/useColorWheel.tsx +401 -0
  21. package/src/compat/react.ts +111 -0
  22. package/src/components/Calendar.tsx +842 -0
  23. package/src/components/ColorArea.tsx +120 -0
  24. package/src/components/ColorField.tsx +304 -0
  25. package/src/components/ColorPicker.tsx +86 -0
  26. package/src/components/ColorSlider.tsx +144 -0
  27. package/src/components/ColorSwatch.tsx +72 -0
  28. package/src/components/ColorSwatchPicker.tsx +176 -0
  29. package/src/components/ColorThumb.tsx +140 -0
  30. package/src/components/ColorWheel.tsx +163 -0
  31. package/src/components/DateField.tsx +580 -0
  32. package/src/components/DatePicker.tsx +386 -0
  33. package/src/components/DropZone.tsx +181 -0
  34. package/src/components/FileTrigger.tsx +96 -0
  35. package/src/components/GridLayout.tsx +33 -0
  36. package/src/components/HiddenDateInput.tsx +169 -0
  37. package/src/components/TableLayout.tsx +39 -0
  38. package/src/components/Toast.tsx +336 -0
  39. package/src/components/Virtualizer.tsx +219 -0
  40. package/src/components/index.ts +257 -7
  41. package/src/components/useDragAndDrop.tsx +221 -0
  42. package/src/components/utils.ts +12 -89
  43. package/src/datepicker/useDateField.tsx +272 -0
  44. package/src/datepicker/useDatePicker.tsx +229 -0
  45. package/src/datepicker/useDatePickerGroup.tsx +147 -0
  46. package/src/datepicker/useDateRangePicker.tsx +288 -0
  47. package/src/datepicker/useDateSegment.tsx +439 -0
  48. package/src/datepicker/useDisplayNames.tsx +53 -0
  49. package/src/dnd/DragManager.tsx +718 -0
  50. package/src/dnd/DragPreview.tsx +100 -0
  51. package/src/dnd/DropTargetKeyboardNavigation.tsx +317 -0
  52. package/src/dnd/ListDropTargetDelegate.tsx +215 -0
  53. package/src/dnd/constants.tsx +93 -0
  54. package/src/dnd/useAutoScroll.tsx +116 -0
  55. package/src/dnd/useClipboard.tsx +160 -0
  56. package/src/dnd/useDrag.tsx +437 -0
  57. package/src/dnd/useDraggableCollection.tsx +35 -0
  58. package/src/dnd/useDraggableItem.tsx +168 -0
  59. package/src/dnd/useDrop.tsx +518 -0
  60. package/src/dnd/useDropIndicator.tsx +129 -0
  61. package/src/dnd/useDroppableCollection.tsx +808 -0
  62. package/src/dnd/useDroppableItem.tsx +99 -0
  63. package/src/dnd/useVirtualDrop.tsx +52 -0
  64. package/src/dnd/utils.tsx +430 -0
  65. package/src/intl/calendar/ar-AE.json +14 -0
  66. package/src/intl/calendar/bg-BG.json +14 -0
  67. package/src/intl/calendar/cs-CZ.json +14 -0
  68. package/src/intl/calendar/da-DK.json +14 -0
  69. package/src/intl/calendar/de-DE.json +14 -0
  70. package/src/intl/calendar/el-GR.json +14 -0
  71. package/src/intl/calendar/en-US.json +14 -0
  72. package/src/intl/calendar/es-ES.json +14 -0
  73. package/src/intl/calendar/et-EE.json +14 -0
  74. package/src/intl/calendar/fi-FI.json +14 -0
  75. package/src/intl/calendar/fr-FR.json +14 -0
  76. package/src/intl/calendar/he-IL.json +14 -0
  77. package/src/intl/calendar/hr-HR.json +14 -0
  78. package/src/intl/calendar/hu-HU.json +14 -0
  79. package/src/intl/calendar/index.ts +73 -0
  80. package/src/intl/calendar/it-IT.json +14 -0
  81. package/src/intl/calendar/ja-JP.json +14 -0
  82. package/src/intl/calendar/ko-KR.json +14 -0
  83. package/src/intl/calendar/lt-LT.json +14 -0
  84. package/src/intl/calendar/lv-LV.json +14 -0
  85. package/src/intl/calendar/nb-NO.json +14 -0
  86. package/src/intl/calendar/nl-NL.json +14 -0
  87. package/src/intl/calendar/pl-PL.json +14 -0
  88. package/src/intl/calendar/pt-BR.json +14 -0
  89. package/src/intl/calendar/pt-PT.json +14 -0
  90. package/src/intl/calendar/ro-RO.json +14 -0
  91. package/src/intl/calendar/ru-RU.json +14 -0
  92. package/src/intl/calendar/sk-SK.json +14 -0
  93. package/src/intl/calendar/sl-SI.json +14 -0
  94. package/src/intl/calendar/sr-SP.json +14 -0
  95. package/src/intl/calendar/sv-SE.json +14 -0
  96. package/src/intl/calendar/tr-TR.json +14 -0
  97. package/src/intl/calendar/uk-UA.json +14 -0
  98. package/src/intl/calendar/zh-CN.json +14 -0
  99. package/src/intl/calendar/zh-TW.json +14 -0
  100. package/src/intl/color/ar-AE.json +8 -0
  101. package/src/intl/color/bg-BG.json +8 -0
  102. package/src/intl/color/cs-CZ.json +8 -0
  103. package/src/intl/color/da-DK.json +8 -0
  104. package/src/intl/color/de-DE.json +8 -0
  105. package/src/intl/color/el-GR.json +8 -0
  106. package/src/intl/color/en-US.json +8 -0
  107. package/src/intl/color/es-ES.json +8 -0
  108. package/src/intl/color/et-EE.json +8 -0
  109. package/src/intl/color/fi-FI.json +8 -0
  110. package/src/intl/color/fr-FR.json +8 -0
  111. package/src/intl/color/he-IL.json +8 -0
  112. package/src/intl/color/hr-HR.json +8 -0
  113. package/src/intl/color/hu-HU.json +8 -0
  114. package/src/intl/color/index.ts +73 -0
  115. package/src/intl/color/it-IT.json +8 -0
  116. package/src/intl/color/ja-JP.json +8 -0
  117. package/src/intl/color/ko-KR.json +8 -0
  118. package/src/intl/color/lt-LT.json +8 -0
  119. package/src/intl/color/lv-LV.json +8 -0
  120. package/src/intl/color/nb-NO.json +8 -0
  121. package/src/intl/color/nl-NL.json +8 -0
  122. package/src/intl/color/pl-PL.json +8 -0
  123. package/src/intl/color/pt-BR.json +8 -0
  124. package/src/intl/color/pt-PT.json +8 -0
  125. package/src/intl/color/ro-RO.json +8 -0
  126. package/src/intl/color/ru-RU.json +8 -0
  127. package/src/intl/color/sk-SK.json +8 -0
  128. package/src/intl/color/sl-SI.json +8 -0
  129. package/src/intl/color/sr-SP.json +8 -0
  130. package/src/intl/color/sv-SE.json +8 -0
  131. package/src/intl/color/tr-TR.json +8 -0
  132. package/src/intl/color/uk-UA.json +8 -0
  133. package/src/intl/color/zh-CN.json +8 -0
  134. package/src/intl/color/zh-TW.json +8 -0
  135. package/src/intl/datepicker/ar-AE.json +18 -0
  136. package/src/intl/datepicker/bg-BG.json +18 -0
  137. package/src/intl/datepicker/cs-CZ.json +18 -0
  138. package/src/intl/datepicker/da-DK.json +18 -0
  139. package/src/intl/datepicker/de-DE.json +18 -0
  140. package/src/intl/datepicker/el-GR.json +18 -0
  141. package/src/intl/datepicker/en-US.json +18 -0
  142. package/src/intl/datepicker/es-ES.json +18 -0
  143. package/src/intl/datepicker/et-EE.json +18 -0
  144. package/src/intl/datepicker/fi-FI.json +18 -0
  145. package/src/intl/datepicker/fr-FR.json +18 -0
  146. package/src/intl/datepicker/he-IL.json +18 -0
  147. package/src/intl/datepicker/hr-HR.json +18 -0
  148. package/src/intl/datepicker/hu-HU.json +18 -0
  149. package/src/intl/datepicker/index.ts +73 -0
  150. package/src/intl/datepicker/it-IT.json +18 -0
  151. package/src/intl/datepicker/ja-JP.json +18 -0
  152. package/src/intl/datepicker/ko-KR.json +18 -0
  153. package/src/intl/datepicker/lt-LT.json +18 -0
  154. package/src/intl/datepicker/lv-LV.json +18 -0
  155. package/src/intl/datepicker/nb-NO.json +18 -0
  156. package/src/intl/datepicker/nl-NL.json +18 -0
  157. package/src/intl/datepicker/pl-PL.json +18 -0
  158. package/src/intl/datepicker/pt-BR.json +18 -0
  159. package/src/intl/datepicker/pt-PT.json +18 -0
  160. package/src/intl/datepicker/ro-RO.json +18 -0
  161. package/src/intl/datepicker/ru-RU.json +18 -0
  162. package/src/intl/datepicker/sk-SK.json +18 -0
  163. package/src/intl/datepicker/sl-SI.json +18 -0
  164. package/src/intl/datepicker/sr-SP.json +18 -0
  165. package/src/intl/datepicker/sv-SE.json +18 -0
  166. package/src/intl/datepicker/tr-TR.json +18 -0
  167. package/src/intl/datepicker/uk-UA.json +18 -0
  168. package/src/intl/datepicker/zh-CN.json +18 -0
  169. package/src/intl/datepicker/zh-TW.json +18 -0
  170. package/src/intl/dnd/ar-AE.json +29 -0
  171. package/src/intl/dnd/bg-BG.json +29 -0
  172. package/src/intl/dnd/cs-CZ.json +29 -0
  173. package/src/intl/dnd/da-DK.json +29 -0
  174. package/src/intl/dnd/de-DE.json +29 -0
  175. package/src/intl/dnd/el-GR.json +29 -0
  176. package/src/intl/dnd/en-US.json +29 -0
  177. package/src/intl/dnd/es-ES.json +29 -0
  178. package/src/intl/dnd/et-EE.json +29 -0
  179. package/src/intl/dnd/fi-FI.json +29 -0
  180. package/src/intl/dnd/fr-FR.json +29 -0
  181. package/src/intl/dnd/he-IL.json +29 -0
  182. package/src/intl/dnd/hr-HR.json +29 -0
  183. package/src/intl/dnd/hu-HU.json +29 -0
  184. package/src/intl/dnd/index.ts +73 -0
  185. package/src/intl/dnd/it-IT.json +29 -0
  186. package/src/intl/dnd/ja-JP.json +29 -0
  187. package/src/intl/dnd/ko-KR.json +29 -0
  188. package/src/intl/dnd/lt-LT.json +29 -0
  189. package/src/intl/dnd/lv-LV.json +29 -0
  190. package/src/intl/dnd/nb-NO.json +29 -0
  191. package/src/intl/dnd/nl-NL.json +29 -0
  192. package/src/intl/dnd/pl-PL.json +29 -0
  193. package/src/intl/dnd/pt-BR.json +29 -0
  194. package/src/intl/dnd/pt-PT.json +29 -0
  195. package/src/intl/dnd/ro-RO.json +29 -0
  196. package/src/intl/dnd/ru-RU.json +29 -0
  197. package/src/intl/dnd/sk-SK.json +29 -0
  198. package/src/intl/dnd/sl-SI.json +29 -0
  199. package/src/intl/dnd/sr-SP.json +29 -0
  200. package/src/intl/dnd/sv-SE.json +29 -0
  201. package/src/intl/dnd/tr-TR.json +29 -0
  202. package/src/intl/dnd/uk-UA.json +29 -0
  203. package/src/intl/dnd/zh-CN.json +29 -0
  204. package/src/intl/dnd/zh-TW.json +29 -0
  205. package/src/intl/react-aria-components/ar-AE.json +6 -0
  206. package/src/intl/react-aria-components/bg-BG.json +6 -0
  207. package/src/intl/react-aria-components/cs-CZ.json +6 -0
  208. package/src/intl/react-aria-components/da-DK.json +6 -0
  209. package/src/intl/react-aria-components/de-DE.json +6 -0
  210. package/src/intl/react-aria-components/el-GR.json +6 -0
  211. package/src/intl/react-aria-components/en-US.json +6 -0
  212. package/src/intl/react-aria-components/es-ES.json +6 -0
  213. package/src/intl/react-aria-components/et-EE.json +6 -0
  214. package/src/intl/react-aria-components/fi-FI.json +6 -0
  215. package/src/intl/react-aria-components/fr-FR.json +6 -0
  216. package/src/intl/react-aria-components/he-IL.json +6 -0
  217. package/src/intl/react-aria-components/hr-HR.json +6 -0
  218. package/src/intl/react-aria-components/hu-HU.json +6 -0
  219. package/src/intl/react-aria-components/index.ts +73 -0
  220. package/src/intl/react-aria-components/it-IT.json +6 -0
  221. package/src/intl/react-aria-components/ja-JP.json +6 -0
  222. package/src/intl/react-aria-components/ko-KR.json +6 -0
  223. package/src/intl/react-aria-components/lt-LT.json +6 -0
  224. package/src/intl/react-aria-components/lv-LV.json +6 -0
  225. package/src/intl/react-aria-components/nb-NO.json +6 -0
  226. package/src/intl/react-aria-components/nl-NL.json +6 -0
  227. package/src/intl/react-aria-components/pl-PL.json +6 -0
  228. package/src/intl/react-aria-components/pt-BR.json +6 -0
  229. package/src/intl/react-aria-components/pt-PT.json +6 -0
  230. package/src/intl/react-aria-components/ro-RO.json +6 -0
  231. package/src/intl/react-aria-components/ru-RU.json +6 -0
  232. package/src/intl/react-aria-components/sk-SK.json +6 -0
  233. package/src/intl/react-aria-components/sl-SI.json +6 -0
  234. package/src/intl/react-aria-components/sr-SP.json +6 -0
  235. package/src/intl/react-aria-components/sv-SE.json +6 -0
  236. package/src/intl/react-aria-components/tr-TR.json +6 -0
  237. package/src/intl/react-aria-components/uk-UA.json +6 -0
  238. package/src/intl/react-aria-components/zh-CN.json +6 -0
  239. package/src/intl/react-aria-components/zh-TW.json +6 -0
  240. package/src/intl/stately-color/ar-AE.json +39 -0
  241. package/src/intl/stately-color/bg-BG.json +39 -0
  242. package/src/intl/stately-color/cs-CZ.json +39 -0
  243. package/src/intl/stately-color/da-DK.json +39 -0
  244. package/src/intl/stately-color/de-DE.json +39 -0
  245. package/src/intl/stately-color/el-GR.json +39 -0
  246. package/src/intl/stately-color/en-US.json +39 -0
  247. package/src/intl/stately-color/es-ES.json +39 -0
  248. package/src/intl/stately-color/et-EE.json +39 -0
  249. package/src/intl/stately-color/fi-FI.json +39 -0
  250. package/src/intl/stately-color/fr-FR.json +39 -0
  251. package/src/intl/stately-color/he-IL.json +39 -0
  252. package/src/intl/stately-color/hr-HR.json +39 -0
  253. package/src/intl/stately-color/hu-HU.json +39 -0
  254. package/src/intl/stately-color/index.ts +73 -0
  255. package/src/intl/stately-color/it-IT.json +39 -0
  256. package/src/intl/stately-color/ja-JP.json +39 -0
  257. package/src/intl/stately-color/ko-KR.json +39 -0
  258. package/src/intl/stately-color/lt-LT.json +39 -0
  259. package/src/intl/stately-color/lv-LV.json +39 -0
  260. package/src/intl/stately-color/nb-NO.json +39 -0
  261. package/src/intl/stately-color/nl-NL.json +39 -0
  262. package/src/intl/stately-color/pl-PL.json +39 -0
  263. package/src/intl/stately-color/pt-BR.json +39 -0
  264. package/src/intl/stately-color/pt-PT.json +39 -0
  265. package/src/intl/stately-color/ro-RO.json +39 -0
  266. package/src/intl/stately-color/ru-RU.json +39 -0
  267. package/src/intl/stately-color/sk-SK.json +39 -0
  268. package/src/intl/stately-color/sl-SI.json +39 -0
  269. package/src/intl/stately-color/sr-SP.json +39 -0
  270. package/src/intl/stately-color/sv-SE.json +39 -0
  271. package/src/intl/stately-color/tr-TR.json +39 -0
  272. package/src/intl/stately-color/uk-UA.json +39 -0
  273. package/src/intl/stately-color/zh-CN.json +39 -0
  274. package/src/intl/stately-color/zh-TW.json +39 -0
  275. package/src/intl/toast/ar-AE.json +4 -0
  276. package/src/intl/toast/bg-BG.json +4 -0
  277. package/src/intl/toast/cs-CZ.json +4 -0
  278. package/src/intl/toast/da-DK.json +4 -0
  279. package/src/intl/toast/de-DE.json +4 -0
  280. package/src/intl/toast/el-GR.json +4 -0
  281. package/src/intl/toast/en-US.json +4 -0
  282. package/src/intl/toast/es-ES.json +4 -0
  283. package/src/intl/toast/et-EE.json +4 -0
  284. package/src/intl/toast/fi-FI.json +4 -0
  285. package/src/intl/toast/fr-FR.json +4 -0
  286. package/src/intl/toast/he-IL.json +4 -0
  287. package/src/intl/toast/hr-HR.json +4 -0
  288. package/src/intl/toast/hu-HU.json +4 -0
  289. package/src/intl/toast/index.ts +73 -0
  290. package/src/intl/toast/it-IT.json +4 -0
  291. package/src/intl/toast/ja-JP.json +4 -0
  292. package/src/intl/toast/ko-KR.json +4 -0
  293. package/src/intl/toast/lt-LT.json +4 -0
  294. package/src/intl/toast/lv-LV.json +4 -0
  295. package/src/intl/toast/nb-NO.json +4 -0
  296. package/src/intl/toast/nl-NL.json +4 -0
  297. package/src/intl/toast/pl-PL.json +4 -0
  298. package/src/intl/toast/pt-BR.json +4 -0
  299. package/src/intl/toast/pt-PT.json +4 -0
  300. package/src/intl/toast/ro-RO.json +4 -0
  301. package/src/intl/toast/ru-RU.json +4 -0
  302. package/src/intl/toast/sk-SK.json +4 -0
  303. package/src/intl/toast/sl-SI.json +4 -0
  304. package/src/intl/toast/sr-SP.json +4 -0
  305. package/src/intl/toast/sv-SE.json +4 -0
  306. package/src/intl/toast/tr-TR.json +4 -0
  307. package/src/intl/toast/uk-UA.json +4 -0
  308. package/src/intl/toast/zh-CN.json +4 -0
  309. package/src/intl/toast/zh-TW.json +4 -0
  310. package/src/landmark/useLandmark.tsx +569 -0
  311. package/src/stately/calendar/types.tsx +239 -0
  312. package/src/stately/calendar/useCalendarState.tsx +527 -0
  313. package/src/stately/calendar/useRangeCalendarState.tsx +323 -0
  314. package/src/stately/calendar/utils.tsx +175 -0
  315. package/src/stately/color/Color.tsx +889 -0
  316. package/src/stately/color/types.tsx +82 -0
  317. package/src/stately/color/useColor.tsx +30 -0
  318. package/src/stately/color/useColorAreaState.tsx +255 -0
  319. package/src/stately/color/useColorChannelFieldState.tsx +86 -0
  320. package/src/stately/color/useColorFieldState.tsx +220 -0
  321. package/src/stately/color/useColorPickerState.tsx +31 -0
  322. package/src/stately/color/useColorSliderState.tsx +143 -0
  323. package/src/stately/color/useColorWheelState.tsx +225 -0
  324. package/src/stately/data/useAsyncList.tsx +382 -0
  325. package/src/stately/data/useListData.tsx +447 -0
  326. package/src/stately/data/useTreeData.tsx +603 -0
  327. package/src/stately/datepicker/IncompleteDate.tsx +427 -0
  328. package/src/stately/datepicker/placeholders.tsx +116 -0
  329. package/src/stately/datepicker/types.tsx +169 -0
  330. package/src/stately/datepicker/useDateFieldState.tsx +564 -0
  331. package/src/stately/datepicker/useDatePickerState.tsx +244 -0
  332. package/src/stately/datepicker/useDateRangePickerState.tsx +397 -0
  333. package/src/stately/datepicker/useTimeFieldState.tsx +123 -0
  334. package/src/stately/datepicker/utils.tsx +316 -0
  335. package/src/stately/dnd/useDraggableCollectionState.tsx +191 -0
  336. package/src/stately/dnd/useDroppableCollectionState.tsx +288 -0
  337. package/src/stately/layout/GridLayout.tsx +449 -0
  338. package/src/stately/layout/ListLayout.tsx +872 -0
  339. package/src/stately/layout/TableLayout.tsx +793 -0
  340. package/src/stately/layout/WaterfallLayout.tsx +399 -0
  341. package/src/stately/toast/useToastState.tsx +219 -0
  342. package/src/stately/virtualizer/Layout.tsx +105 -0
  343. package/src/stately/virtualizer/LayoutInfo.tsx +127 -0
  344. package/src/stately/virtualizer/OverscanManager.tsx +56 -0
  345. package/src/stately/virtualizer/Point.tsx +47 -0
  346. package/src/stately/virtualizer/Rect.tsx +194 -0
  347. package/src/stately/virtualizer/ReusableView.tsx +101 -0
  348. package/src/stately/virtualizer/Size.tsx +48 -0
  349. package/src/stately/virtualizer/Virtualizer.tsx +408 -0
  350. package/src/stately/virtualizer/types.tsx +48 -0
  351. package/src/stately/virtualizer/useVirtualizerState.tsx +138 -0
  352. package/src/stately/virtualizer/utils.tsx +32 -0
  353. package/src/textfield/useTextField.ts +3 -0
  354. package/src/toast/useToast.tsx +105 -0
  355. package/src/toast/useToastRegion.tsx +223 -0
  356. package/src/upstream-exports/react-aria/I18nProvider.tsx +17 -0
  357. package/src/upstream-exports/react-aria/ListDropTargetDelegate.tsx +15 -0
  358. package/src/upstream-exports/react-aria/PortalProvider.tsx +19 -0
  359. package/src/upstream-exports/react-aria/SSRProvider.tsx +15 -0
  360. package/src/upstream-exports/react-aria/VisuallyHidden.tsx +15 -0
  361. package/src/upstream-exports/react-aria/filterDOMProps.tsx +3 -0
  362. package/src/upstream-exports/react-aria/mergeProps.tsx +14 -0
  363. package/src/upstream-exports/react-aria/private/dnd/DragManager.tsx +3 -0
  364. package/src/upstream-exports/react-aria/private/interactions/PressResponder.tsx +3 -0
  365. package/src/upstream-exports/react-aria/private/utils/isFocusable.tsx +3 -0
  366. package/src/upstream-exports/react-aria/private/utils/shadowdom/DOMFunctions.tsx +8 -0
  367. package/src/upstream-exports/react-aria/private/utils/useId.tsx +3 -0
  368. package/src/upstream-exports/react-aria/private/utils/useLabels.tsx +3 -0
  369. package/src/upstream-exports/react-aria/private/virtualizer/ScrollView.tsx +3 -0
  370. package/src/upstream-exports/react-aria/private/virtualizer/VirtualizerItem.tsx +3 -0
  371. package/src/upstream-exports/react-aria/useButton.tsx +22 -0
  372. package/src/upstream-exports/react-aria/useCalendar.tsx +37 -0
  373. package/src/upstream-exports/react-aria/useClipboard.tsx +23 -0
  374. package/src/upstream-exports/react-aria/useColorArea.tsx +19 -0
  375. package/src/upstream-exports/react-aria/useColorField.tsx +20 -0
  376. package/src/upstream-exports/react-aria/useColorSlider.tsx +19 -0
  377. package/src/upstream-exports/react-aria/useColorSwatch.tsx +15 -0
  378. package/src/upstream-exports/react-aria/useColorWheel.tsx +19 -0
  379. package/src/upstream-exports/react-aria/useDateField.tsx +23 -0
  380. package/src/upstream-exports/react-aria/useDatePicker.tsx +17 -0
  381. package/src/upstream-exports/react-aria/useDateRangePicker.tsx +24 -0
  382. package/src/upstream-exports/react-aria/useDraggableCollection.tsx +31 -0
  383. package/src/upstream-exports/react-aria/useDrop.tsx +33 -0
  384. package/src/upstream-exports/react-aria/useDroppableCollection.tsx +47 -0
  385. package/src/upstream-exports/react-aria/useFocusRing.tsx +16 -0
  386. package/src/upstream-exports/react-aria/useHover.tsx +17 -0
  387. package/src/upstream-exports/react-aria/useLocalizedStringFormatter.tsx +19 -0
  388. package/src/upstream-exports/react-aria/useObjectRef.tsx +14 -0
  389. package/src/upstream-exports/react-aria/useRangeCalendar.tsx +38 -0
  390. package/src/upstream-exports/react-aria/useTimeField.tsx +23 -0
  391. package/src/upstream-exports/react-aria/useToast.tsx +18 -0
  392. package/src/upstream-exports/react-stately/Color.tsx +23 -0
  393. package/src/upstream-exports/react-stately/private/form/useFormValidationState.tsx +11 -0
  394. package/src/upstream-exports/react-stately/useCalendarState.tsx +24 -0
  395. package/src/upstream-exports/react-stately/useColorAreaState.tsx +24 -0
  396. package/src/upstream-exports/react-stately/useColorFieldState.tsx +22 -0
  397. package/src/upstream-exports/react-stately/useColorPickerState.tsx +25 -0
  398. package/src/upstream-exports/react-stately/useColorSliderState.tsx +25 -0
  399. package/src/upstream-exports/react-stately/useColorWheelState.tsx +24 -0
  400. package/src/upstream-exports/react-stately/useDateFieldState.tsx +29 -0
  401. package/src/upstream-exports/react-stately/useDatePickerState.tsx +25 -0
  402. package/src/upstream-exports/react-stately/useDateRangePickerState.tsx +26 -0
  403. package/src/upstream-exports/react-stately/useDraggableCollectionState.tsx +19 -0
  404. package/src/upstream-exports/react-stately/useDroppableCollectionState.tsx +19 -0
  405. package/src/upstream-exports/react-stately/useRangeCalendarState.tsx +27 -0
  406. package/src/upstream-exports/react-stately/useTimeFieldState.tsx +26 -0
  407. package/src/upstream-exports/react-stately/useToastState.tsx +21 -0
  408. package/src/upstream-exports/react-stately/useVirtualizerState.tsx +22 -0
  409. package/src/utils/useLoadMore.tsx +89 -0
  410. package/src/virtualizer/ScrollView.tsx +401 -0
  411. package/src/virtualizer/Virtualizer.tsx +147 -0
  412. package/src/virtualizer/VirtualizerItem.tsx +108 -0
  413. package/src/virtualizer/useVirtualizerItem.tsx +57 -0
  414. package/src/virtualizer/utils.tsx +105 -0
  415. package/LICENSE +0 -21
  416. package/src/components/useDragAndDrop.ts +0 -164
@@ -0,0 +1,169 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/HiddenDateInput.tsx).
3
+ /*
4
+ * Copyright 2025 Adobe. All rights reserved.
5
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License. You may obtain a copy
7
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under
10
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
11
+ * OF ANY KIND, either express or implied. See the License for the specific language
12
+ * governing permissions and limitations under the License.
13
+ */
14
+
15
+ import {
16
+ CalendarDate,
17
+ CalendarDateTime,
18
+ parseDate,
19
+ parseDateTime,
20
+ toCalendarDate,
21
+ toCalendarDateTime,
22
+ toLocalTimeZone,
23
+ } from '@internationalized/date';
24
+ import {
25
+ DateFieldState,
26
+ DateSegmentType,
27
+ } from '../upstream-exports/react-stately/useDateFieldState';
28
+ import { DatePickerState } from '../upstream-exports/react-stately/useDatePickerState';
29
+ import { getEventTarget } from '../upstream-exports/react-aria/private/utils/shadowdom/DOMFunctions';
30
+ import React, { ReactNode } from '../compat/react';
31
+ import { useVisuallyHidden } from '../upstream-exports/react-aria/VisuallyHidden';
32
+
33
+ interface AriaHiddenDateInputProps {
34
+ /**
35
+ * Describes the type of autocomplete functionality the input should provide if any. See
36
+ * [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefautocomplete).
37
+ */
38
+ autoComplete?: string;
39
+ /** HTML form input name. */
40
+ name?: string;
41
+ /** Sets the disabled state of the input. */
42
+ isDisabled?: boolean;
43
+ }
44
+
45
+ interface HiddenDateInputProps extends AriaHiddenDateInputProps {
46
+ /**
47
+ * State for the input.
48
+ */
49
+ state: DateFieldState | DatePickerState;
50
+ }
51
+
52
+ export interface HiddenDateAria {
53
+ /** Props for the container element. */
54
+ containerProps: React.HTMLAttributes<HTMLDivElement>;
55
+ /** Props for the hidden input element. */
56
+ inputProps: React.InputHTMLAttributes<HTMLInputElement>;
57
+ }
58
+
59
+ const dateSegments = ['day', 'month', 'year'];
60
+ const granularityMap: Record<string, number> = { hour: 1, minute: 2, second: 3 };
61
+
62
+ export function useHiddenDateInput(
63
+ props: HiddenDateInputProps,
64
+ state: DateFieldState | DatePickerState,
65
+ ): HiddenDateAria {
66
+ let { autoComplete, isDisabled, name } = props;
67
+ let { visuallyHiddenProps } = useVisuallyHidden({
68
+ style: {
69
+ // Prevent page scrolling.
70
+ position: 'fixed',
71
+ top: 0,
72
+ left: 0,
73
+ },
74
+ });
75
+
76
+ let inputStep = 60;
77
+ if (state.granularity === 'second') {
78
+ inputStep = 1;
79
+ } else if (state.granularity === 'hour') {
80
+ inputStep = 3600;
81
+ }
82
+
83
+ let dateValue = '';
84
+ if (state.value) {
85
+ if (state.granularity === 'day') {
86
+ dateValue = toCalendarDate(state.value).toString();
87
+ } else {
88
+ dateValue = toCalendarDateTime(
89
+ 'timeZone' in state.value ? toLocalTimeZone(state.value) : state.value,
90
+ ).toString();
91
+ }
92
+ }
93
+
94
+ let inputType = state.granularity === 'day' ? 'date' : 'datetime-local';
95
+
96
+ let timeSegments = ['hour', 'minute', 'second'];
97
+ // Depending on the granularity, we only want to validate certain time segments
98
+ let end = 0;
99
+ if (timeSegments.includes(state.granularity)) {
100
+ end = granularityMap[state.granularity];
101
+ timeSegments = timeSegments.slice(0, end);
102
+ }
103
+
104
+ return {
105
+ containerProps: {
106
+ ...visuallyHiddenProps,
107
+ 'aria-hidden': true,
108
+ // @ts-ignore
109
+ ['data-react-aria-prevent-focus']: true,
110
+ // @ts-ignore
111
+ ['data-a11y-ignore']: 'aria-hidden-focus',
112
+ },
113
+ inputProps: {
114
+ tabIndex: -1,
115
+ autoComplete,
116
+ disabled: isDisabled,
117
+ type: inputType,
118
+ // We set the form prop to an empty string to prevent the hidden date input's value from being submitted
119
+ form: '',
120
+ name,
121
+ step: inputStep,
122
+ value: dateValue,
123
+ // React's synthetic onChange follows the native input event for date controls.
124
+ // Octane has no synthetic layer, so wire the equivalent event directly.
125
+ onInput: (e: React.ChangeEvent<HTMLInputElement>) => {
126
+ let targetString = e.currentTarget.value.toString();
127
+ if (targetString) {
128
+ try {
129
+ let targetValue: CalendarDateTime | CalendarDate = parseDateTime(targetString);
130
+ if (state.granularity === 'day') {
131
+ targetValue = parseDate(targetString);
132
+ }
133
+ // We check to to see if setSegment exists in the state since it only exists in DateFieldState and not DatePickerState.
134
+ // The setValue method has different behavior depending on if it's coming from DateFieldState or DatePickerState.
135
+ // In DateFieldState, setValue firsts checks to make sure that each segment is filled before committing the newValue
136
+ // which is why in the code below we first set each segment to validate it before committing the new value.
137
+ // However, in DatePickerState, since we have to be able to commit values from the Calendar popover, we are also able to
138
+ // set a new value when the field itself is empty.
139
+ if ('setSegment' in state) {
140
+ for (let type in targetValue) {
141
+ // eslint-disable-next-line max-depth
142
+ if (dateSegments.includes(type)) {
143
+ state.setSegment(type as DateSegmentType, (targetValue as any)[type]);
144
+ }
145
+ // eslint-disable-next-line max-depth
146
+ if (timeSegments.includes(type)) {
147
+ state.setSegment(type as DateSegmentType, (targetValue as any)[type]);
148
+ }
149
+ }
150
+ }
151
+ state.setValue(targetValue);
152
+ } catch {
153
+ // ignore
154
+ }
155
+ }
156
+ },
157
+ },
158
+ };
159
+ }
160
+
161
+ export function HiddenDateInput(props: HiddenDateInputProps): ReactNode | null {
162
+ let { state } = props;
163
+ let { containerProps, inputProps } = useHiddenDateInput({ ...props }, state);
164
+ return (
165
+ <div {...containerProps} data-testid="hidden-dateinput-container">
166
+ <input {...inputProps} />
167
+ </div>
168
+ );
169
+ }
@@ -0,0 +1,39 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/TableLayout.ts).
3
+ /*
4
+ * Copyright 2024 Adobe. All rights reserved.
5
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License. You may obtain a copy
7
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under
10
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
11
+ * OF ANY KIND, either express or implied. See the License for the specific language
12
+ * governing permissions and limitations under the License.
13
+ */
14
+
15
+ import {
16
+ TableLayout as BaseTableLayout,
17
+ TableLayoutProps,
18
+ } from '../upstream-exports/react-stately/useVirtualizerState';
19
+ import { LayoutOptionsDelegate } from './Virtualizer';
20
+ import { TableColumnResizeStateContext } from './Table';
21
+ import { useContext, useMemo } from '../compat/react';
22
+
23
+ export class TableLayout<T, O extends TableLayoutProps = TableLayoutProps>
24
+ extends BaseTableLayout<T, O>
25
+ implements LayoutOptionsDelegate<TableLayoutProps>
26
+ {
27
+ // Invalidate the layout whenever the column widths change.
28
+ useLayoutOptions(): TableLayoutProps {
29
+ // This is not a React class component, just a regular class.
30
+ /* eslint-disable react-hooks/rules-of-hooks */
31
+ let colResizeState = useContext(TableColumnResizeStateContext);
32
+ return useMemo(
33
+ () => ({
34
+ columnWidths: colResizeState?.columnWidths,
35
+ }),
36
+ [colResizeState?.columnWidths],
37
+ );
38
+ }
39
+ }
@@ -0,0 +1,336 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/Toast.tsx).
3
+ /*
4
+ * Copyright 2025 Adobe. All rights reserved.
5
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License. You may obtain a copy
7
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under
10
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
11
+ * OF ANY KIND, either express or implied. See the License for the specific language
12
+ * governing permissions and limitations under the License.
13
+ */
14
+
15
+ import {
16
+ AriaToastProps,
17
+ AriaToastRegionProps,
18
+ useToast,
19
+ useToastRegion,
20
+ } from '../upstream-exports/react-aria/useToast';
21
+
22
+ import { ButtonContext } from './Button';
23
+ import {
24
+ ClassNameOrFunction,
25
+ ContextValue,
26
+ DEFAULT_SLOT,
27
+ dom,
28
+ DOMRenderProps,
29
+ Provider,
30
+ RenderProps,
31
+ StyleRenderProps,
32
+ useContextProps,
33
+ useRenderProps,
34
+ } from './utils';
35
+ import { createPortal, isChildrenBlock } from 'octane';
36
+ import { filterDOMProps } from '../upstream-exports/react-aria/filterDOMProps';
37
+ import { forwardRefType, GlobalDOMAttributes } from '@react-types/shared';
38
+ import { mergeProps } from '../upstream-exports/react-aria/mergeProps';
39
+ import {
40
+ QueuedToast,
41
+ ToastQueue,
42
+ ToastState,
43
+ useToastQueue,
44
+ } from '../upstream-exports/react-stately/useToastState';
45
+ import React, {
46
+ createContext,
47
+ ForwardedRef,
48
+ forwardRef,
49
+ HTMLAttributes,
50
+ JSX,
51
+ ReactElement,
52
+ ReactNode,
53
+ useContext,
54
+ } from '../compat/react';
55
+ import { TextContext } from './Text';
56
+ import { useFocusRing } from '../upstream-exports/react-aria/useFocusRing';
57
+ import { useHover } from '../upstream-exports/react-aria/useHover';
58
+ import { useIsSSR } from '../upstream-exports/react-aria/SSRProvider';
59
+ import { useLocale } from '../upstream-exports/react-aria/I18nProvider';
60
+ import { useObjectRef } from '../upstream-exports/react-aria/useObjectRef';
61
+ import { useUNSAFE_PortalContext } from '../upstream-exports/react-aria/PortalProvider';
62
+
63
+ const ToastStateContext = createContext<ToastState<any> | null>(null);
64
+
65
+ export interface ToastRegionRenderProps<T> {
66
+ /** A list of all currently visible toasts. */
67
+ visibleToasts: QueuedToast<T>[];
68
+ /**
69
+ * Whether the toast region is currently hovered with a mouse.
70
+ *
71
+ * @selector [data-hovered]
72
+ */
73
+ isHovered: boolean;
74
+ /**
75
+ * Whether the toast region is currently focused.
76
+ *
77
+ * @selector [data-focused]
78
+ */
79
+ isFocused: boolean;
80
+ /**
81
+ * Whether the toast region is keyboard focused.
82
+ *
83
+ * @selector [data-focus-visible]
84
+ */
85
+ isFocusVisible: boolean;
86
+ }
87
+
88
+ export interface ToastRegionProps<T>
89
+ extends
90
+ AriaToastRegionProps,
91
+ StyleRenderProps<ToastRegionRenderProps<T>>,
92
+ GlobalDOMAttributes<HTMLDivElement> {
93
+ /**
94
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
95
+ * element. A function may be provided to compute the class based on component state.
96
+ *
97
+ * @default 'react-aria-ToastRegion'
98
+ */
99
+ className?: ClassNameOrFunction<ToastRegionRenderProps<T>>;
100
+ /** The queue of toasts to display. */
101
+ queue: ToastQueue<T>;
102
+ /** A function to render each toast, or children containing a `<ToastList>`. */
103
+ children: ReactNode | ((renderProps: { toast: QueuedToast<T> }) => ReactElement);
104
+ }
105
+
106
+ /**
107
+ * A ToastRegion displays one or more toast notifications.
108
+ */
109
+ const ToastRegion = /*#__PURE__*/ (forwardRef as any)(function ToastRegion<T>(
110
+ props: ToastRegionProps<T>,
111
+ ref: ForwardedRef<HTMLDivElement>,
112
+ ): JSX.Element | null {
113
+ let isSSR = useIsSSR();
114
+ let state = useToastQueue(props.queue);
115
+ let objectRef = useObjectRef(ref);
116
+ let { regionProps } = useToastRegion(props, state, objectRef);
117
+
118
+ let { focusProps, isFocused, isFocusVisible } = useFocusRing();
119
+ let { hoverProps, isHovered } = useHover({});
120
+ let renderProps = useRenderProps({
121
+ ...props,
122
+ children: undefined,
123
+ defaultClassName: 'react-aria-ToastRegion',
124
+ values: {
125
+ visibleToasts: state.visibleToasts,
126
+ isHovered,
127
+ isFocused,
128
+ isFocusVisible,
129
+ },
130
+ });
131
+
132
+ let { direction } = useLocale();
133
+ let portalContainer;
134
+ let { getContainer } = useUNSAFE_PortalContext();
135
+ if (!isSSR) {
136
+ portalContainer = document.body;
137
+ if (getContainer) {
138
+ portalContainer = getContainer();
139
+ }
140
+ }
141
+
142
+ let DOMProps = filterDOMProps(props, { global: true });
143
+
144
+ let region = (
145
+ <ToastStateContext.Provider value={state}>
146
+ <dom.div
147
+ {...mergeProps(DOMProps, renderProps, regionProps, focusProps, hoverProps)}
148
+ dir={direction}
149
+ ref={objectRef}
150
+ data-hovered={isHovered || undefined}
151
+ data-focused={isFocused || undefined}
152
+ data-focus-visible={isFocusVisible || undefined}
153
+ >
154
+ {typeof props.children === 'function' && !isChildrenBlock(props.children) ? (
155
+ <ToastList
156
+ {...props}
157
+ render={undefined}
158
+ className={undefined}
159
+ style={{ display: 'contents' }}
160
+ >
161
+ {props.children}
162
+ </ToastList>
163
+ ) : (
164
+ props.children
165
+ )}
166
+ </dom.div>
167
+ </ToastStateContext.Provider>
168
+ );
169
+
170
+ return state.visibleToasts.length > 0 && portalContainer
171
+ ? createPortal(region, portalContainer)
172
+ : null;
173
+ });
174
+
175
+ export interface ToastListProps<T>
176
+ extends
177
+ Omit<ToastRegionProps<T>, 'queue' | 'children' | 'render'>,
178
+ DOMRenderProps<'ol', ToastRegionRenderProps<T>> {
179
+ /** A function to render each toast. */
180
+ children: (renderProps: { toast: QueuedToast<T> }) => ReactElement;
181
+ }
182
+
183
+ const ToastList = /*#__PURE__*/ (forwardRef as any)(function ToastList<T>(
184
+ props: ToastListProps<T>,
185
+ ref: ForwardedRef<HTMLOListElement>,
186
+ ) {
187
+ let state = useContext(ToastStateContext)!;
188
+ let { hoverProps, isHovered } = useHover({});
189
+ let renderProps = useRenderProps({
190
+ ...props,
191
+ children: undefined,
192
+ defaultClassName: 'react-aria-ToastList',
193
+ values: {
194
+ visibleToasts: state.visibleToasts,
195
+ isFocused: false,
196
+ isFocusVisible: false,
197
+ isHovered,
198
+ },
199
+ });
200
+
201
+ return (
202
+ <dom.ol {...hoverProps} {...renderProps} ref={ref}>
203
+ {state.visibleToasts.map((toast) => (
204
+ <li key={toast.key} style={{ display: 'contents' }}>
205
+ {props.children({ toast })}
206
+ </li>
207
+ ))}
208
+ </dom.ol>
209
+ );
210
+ });
211
+
212
+ export interface ToastRenderProps<T> {
213
+ /**
214
+ * The toast object to display.
215
+ */
216
+ toast: QueuedToast<T>;
217
+ /**
218
+ * Whether the toast is currently focused.
219
+ *
220
+ * @selector [data-focused]
221
+ */
222
+ isFocused: boolean;
223
+ /**
224
+ * Whether the toast is keyboard focused.
225
+ *
226
+ * @selector [data-focus-visible]
227
+ */
228
+ isFocusVisible: boolean;
229
+ }
230
+
231
+ export interface ToastProps<T>
232
+ extends AriaToastProps<T>, RenderProps<ToastRenderProps<T>>, GlobalDOMAttributes<HTMLDivElement> {
233
+ /**
234
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
235
+ * element. A function may be provided to compute the class based on component state.
236
+ *
237
+ * @default 'react-aria-Toast'
238
+ */
239
+ className?: ClassNameOrFunction<ToastRenderProps<T>>;
240
+ }
241
+
242
+ /**
243
+ * A Toast displays a brief, temporary notification of actions, errors, or other events in an
244
+ * application.
245
+ */
246
+ const Toast = /*#__PURE__*/ (forwardRef as any)(function Toast<T>(
247
+ props: ToastProps<T>,
248
+ ref: ForwardedRef<HTMLDivElement>,
249
+ ) {
250
+ let state = useContext(ToastStateContext)!;
251
+ let objectRef = useObjectRef(ref);
252
+ let { toastProps, contentProps, titleProps, descriptionProps, closeButtonProps } = useToast(
253
+ props,
254
+ state,
255
+ objectRef,
256
+ );
257
+
258
+ let { focusProps, isFocused, isFocusVisible } = useFocusRing();
259
+ let renderProps = useRenderProps({
260
+ ...props,
261
+ defaultClassName: 'react-aria-Toast',
262
+ values: {
263
+ toast: props.toast,
264
+ isFocused,
265
+ isFocusVisible,
266
+ },
267
+ });
268
+
269
+ let DOMProps = filterDOMProps(props, { global: true });
270
+
271
+ return (
272
+ <dom.div
273
+ {...mergeProps(DOMProps, renderProps, toastProps, focusProps)}
274
+ ref={objectRef}
275
+ data-focused={isFocused || undefined}
276
+ data-focus-visible={isFocusVisible || undefined}
277
+ >
278
+ <Provider
279
+ values={[
280
+ [ToastContentContext, contentProps],
281
+ [
282
+ TextContext,
283
+ {
284
+ slots: {
285
+ [DEFAULT_SLOT]: {},
286
+ title: titleProps,
287
+ description: descriptionProps,
288
+ },
289
+ },
290
+ ],
291
+ [
292
+ ButtonContext,
293
+ {
294
+ slots: {
295
+ [DEFAULT_SLOT]: {},
296
+ close: closeButtonProps,
297
+ },
298
+ },
299
+ ],
300
+ ]}
301
+ >
302
+ {renderProps.children}
303
+ </Provider>
304
+ </dom.div>
305
+ );
306
+ });
307
+
308
+ export interface ToastContentProps
309
+ extends HTMLAttributes<HTMLElement>, DOMRenderProps<'div', undefined> {}
310
+
311
+ export const ToastContentContext = createContext<
312
+ ContextValue<HTMLAttributes<HTMLElement>, HTMLDivElement>
313
+ >({});
314
+
315
+ /**
316
+ * ToastContent wraps the main content of a toast notification.
317
+ */
318
+ export const ToastContent = /*#__PURE__*/ forwardRef(function ToastContent(
319
+ props: ToastContentProps,
320
+ ref: ForwardedRef<HTMLDivElement>,
321
+ ) {
322
+ [props, ref] = useContextProps(props, ref, ToastContentContext);
323
+ return (
324
+ <dom.div render={props.render} className="react-aria-ToastContent" {...props} ref={ref}>
325
+ {props.children}
326
+ </dom.div>
327
+ );
328
+ });
329
+
330
+ export {
331
+ Toast as UNSTABLE_Toast,
332
+ ToastList as UNSTABLE_ToastList,
333
+ ToastRegion as UNSTABLE_ToastRegion,
334
+ ToastContent as UNSTABLE_ToastContent,
335
+ ToastStateContext as UNSTABLE_ToastStateContext,
336
+ };