@octanejs/aria 0.0.39 → 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,580 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/DateField.tsx).
3
+ /*
4
+ * Copyright 2022 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
+ import {
15
+ AriaDateFieldProps,
16
+ useDateField,
17
+ useDateSegment,
18
+ } from '../upstream-exports/react-aria/useDateField';
19
+ import { AriaTimeFieldProps, useTimeField } from '../upstream-exports/react-aria/useTimeField';
20
+ import {
21
+ ClassNameOrFunction,
22
+ ContextValue,
23
+ dom,
24
+ Provider,
25
+ RACValidation,
26
+ removeDataAttributes,
27
+ RenderProps,
28
+ SlotProps,
29
+ StyleRenderProps,
30
+ useContextProps,
31
+ useRenderProps,
32
+ useSlot,
33
+ useSlottedContext,
34
+ } from './utils';
35
+ import { createCalendar } from '@internationalized/date';
36
+ import {
37
+ DateFieldState,
38
+ DateSegmentType,
39
+ DateValue,
40
+ DateSegment as IDateSegment,
41
+ useDateFieldState,
42
+ } from '../upstream-exports/react-stately/useDateFieldState';
43
+ import { FieldErrorContext } from './FieldError';
44
+ import { filterDOMProps } from '../upstream-exports/react-aria/filterDOMProps';
45
+ import { FormContext } from './Form';
46
+ import { forwardRefType, GlobalDOMAttributes } from '@react-types/shared';
47
+ import { Group, GroupContext } from './Group';
48
+ import { HiddenDateInput } from './HiddenDateInput';
49
+ import { HoverEvents } from '@react-types/shared';
50
+ import { Input, InputContext } from './Input';
51
+ import { LabelContext } from './Label';
52
+ import { mergeProps } from '../upstream-exports/react-aria/mergeProps';
53
+ import React, {
54
+ cloneElement,
55
+ createContext,
56
+ ForwardedRef,
57
+ forwardRef,
58
+ JSX,
59
+ ReactElement,
60
+ useContext,
61
+ useRef,
62
+ } from '../compat/react';
63
+ import { TextContext } from './Text';
64
+ import {
65
+ TimeFieldState,
66
+ useTimeFieldState,
67
+ } from '../upstream-exports/react-stately/useTimeFieldState';
68
+ import { TimeValue } from '../upstream-exports/react-stately/useTimeFieldState';
69
+ import { useFocusRing } from '../upstream-exports/react-aria/useFocusRing';
70
+ import { useHover } from '../upstream-exports/react-aria/useHover';
71
+ import { useLocale } from '../upstream-exports/react-aria/I18nProvider';
72
+ import { useObjectRef } from '../upstream-exports/react-aria/useObjectRef';
73
+
74
+ export interface DateFieldRenderProps {
75
+ /**
76
+ * State of the date field.
77
+ */
78
+ state: DateFieldState;
79
+ /**
80
+ * Whether the date field is invalid.
81
+ *
82
+ * @selector [data-invalid]
83
+ */
84
+ isInvalid: boolean;
85
+ /**
86
+ * Whether the date field is disabled.
87
+ *
88
+ * @selector [data-disabled]
89
+ */
90
+ isDisabled: boolean;
91
+ /**
92
+ * Whether the date field is read only.
93
+ *
94
+ * @selector [data-readonly]
95
+ */
96
+ isReadOnly: boolean;
97
+ /**
98
+ * Whether the date field is required.
99
+ *
100
+ * @selector [data-required]
101
+ */
102
+ isRequired: boolean;
103
+ }
104
+ export interface DateFieldProps<T extends DateValue>
105
+ extends
106
+ Omit<
107
+ AriaDateFieldProps<T>,
108
+ 'label' | 'description' | 'errorMessage' | 'validationState' | 'validationBehavior'
109
+ >,
110
+ RACValidation,
111
+ RenderProps<DateFieldRenderProps>,
112
+ SlotProps,
113
+ GlobalDOMAttributes<HTMLDivElement> {
114
+ /**
115
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
116
+ * element. A function may be provided to compute the class based on component state.
117
+ *
118
+ * @default 'react-aria-DateField'
119
+ */
120
+ className?: ClassNameOrFunction<DateFieldRenderProps>;
121
+ }
122
+ export interface TimeFieldProps<T extends TimeValue>
123
+ extends
124
+ Omit<
125
+ AriaTimeFieldProps<T>,
126
+ 'label' | 'description' | 'errorMessage' | 'validationState' | 'validationBehavior'
127
+ >,
128
+ RACValidation,
129
+ RenderProps<DateFieldRenderProps>,
130
+ SlotProps,
131
+ GlobalDOMAttributes<HTMLDivElement> {
132
+ /**
133
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
134
+ * element. A function may be provided to compute the class based on component state.
135
+ *
136
+ * @default 'react-aria-TimeField'
137
+ */
138
+ className?: ClassNameOrFunction<DateFieldRenderProps>;
139
+ }
140
+
141
+ export const DateFieldContext =
142
+ createContext<ContextValue<DateFieldProps<any>, HTMLDivElement>>(null);
143
+ export const TimeFieldContext =
144
+ createContext<ContextValue<TimeFieldProps<any>, HTMLDivElement>>(null);
145
+ export const DateFieldStateContext = createContext<DateFieldState | null>(null);
146
+ export const TimeFieldStateContext = createContext<TimeFieldState | null>(null);
147
+
148
+ /**
149
+ * A date field allows users to enter and edit date and time values using a keyboard.
150
+ * Each part of a date value is displayed in an individually editable segment.
151
+ */
152
+ export const DateField = /*#__PURE__*/ (forwardRef as any)(function DateField<T extends DateValue>(
153
+ props: DateFieldProps<T>,
154
+ ref: ForwardedRef<HTMLDivElement>,
155
+ ) {
156
+ [props, ref] = useContextProps(props, ref, DateFieldContext);
157
+ let { validationBehavior: formValidationBehavior } = useSlottedContext(FormContext) || {};
158
+ let validationBehavior = props.validationBehavior ?? formValidationBehavior ?? 'native';
159
+ let { locale } = useLocale();
160
+ let state = useDateFieldState({
161
+ ...props,
162
+ locale,
163
+ createCalendar,
164
+ validationBehavior,
165
+ });
166
+
167
+ let fieldRef = useRef<HTMLDivElement>(null);
168
+ let [labelRef, label] = useSlot(!props['aria-label'] && !props['aria-labelledby']);
169
+ let inputRef = useRef<HTMLInputElement>(null);
170
+ let { labelProps, fieldProps, inputProps, descriptionProps, errorMessageProps, ...validation } =
171
+ useDateField(
172
+ {
173
+ ...removeDataAttributes(props),
174
+ label,
175
+ inputRef,
176
+ validationBehavior,
177
+ },
178
+ state,
179
+ fieldRef,
180
+ );
181
+
182
+ let renderProps = useRenderProps({
183
+ ...removeDataAttributes(props),
184
+ values: {
185
+ state,
186
+ isInvalid: state.isInvalid,
187
+ isDisabled: state.isDisabled,
188
+ isReadOnly: state.isReadOnly,
189
+ isRequired: props.isRequired || false,
190
+ },
191
+ defaultClassName: 'react-aria-DateField',
192
+ });
193
+
194
+ let DOMProps = filterDOMProps(props, { global: true });
195
+ delete DOMProps.id;
196
+
197
+ return (
198
+ <Provider
199
+ values={[
200
+ [DateFieldStateContext, state],
201
+ [
202
+ GroupContext,
203
+ {
204
+ ...fieldProps,
205
+ ref: fieldRef,
206
+ isInvalid: state.isInvalid,
207
+ isDisabled: state.isDisabled,
208
+ },
209
+ ],
210
+ [InputContext, { ...inputProps, ref: inputRef }],
211
+ [LabelContext, { ...labelProps, ref: labelRef, elementType: 'span' }],
212
+ [
213
+ TextContext,
214
+ {
215
+ slots: {
216
+ description: descriptionProps,
217
+ errorMessage: errorMessageProps,
218
+ },
219
+ },
220
+ ],
221
+ [FieldErrorContext, validation],
222
+ ]}
223
+ >
224
+ <dom.div
225
+ {...DOMProps}
226
+ {...renderProps}
227
+ ref={ref}
228
+ slot={props.slot || undefined}
229
+ data-invalid={state.isInvalid || undefined}
230
+ data-disabled={state.isDisabled || undefined}
231
+ data-readonly={state.isReadOnly || undefined}
232
+ data-required={props.isRequired || undefined}
233
+ />
234
+ <HiddenDateInput
235
+ autoComplete={props.autoComplete}
236
+ name={props.name}
237
+ isDisabled={props.isDisabled}
238
+ state={state}
239
+ />
240
+ </Provider>
241
+ );
242
+ });
243
+
244
+ /**
245
+ * A time field allows users to enter and edit time values using a keyboard.
246
+ * Each part of a time value is displayed in an individually editable segment.
247
+ */
248
+ export const TimeField = /*#__PURE__*/ (forwardRef as any)(function TimeField<T extends TimeValue>(
249
+ props: TimeFieldProps<T>,
250
+ ref: ForwardedRef<HTMLDivElement>,
251
+ ) {
252
+ [props, ref] = useContextProps(props, ref, TimeFieldContext);
253
+ let { validationBehavior: formValidationBehavior } = useSlottedContext(FormContext) || {};
254
+ let validationBehavior = props.validationBehavior ?? formValidationBehavior ?? 'native';
255
+ let { locale } = useLocale();
256
+ let state = useTimeFieldState({
257
+ ...props,
258
+ locale,
259
+ validationBehavior,
260
+ });
261
+
262
+ let fieldRef = useRef<HTMLDivElement>(null);
263
+ let [labelRef, label] = useSlot(!props['aria-label'] && !props['aria-labelledby']);
264
+ let inputRef = useRef<HTMLInputElement>(null);
265
+ let { labelProps, fieldProps, inputProps, descriptionProps, errorMessageProps, ...validation } =
266
+ useTimeField(
267
+ {
268
+ ...removeDataAttributes(props),
269
+ label,
270
+ inputRef,
271
+ validationBehavior,
272
+ },
273
+ state,
274
+ fieldRef,
275
+ );
276
+
277
+ let renderProps = useRenderProps({
278
+ ...props,
279
+ values: {
280
+ state,
281
+ isInvalid: state.isInvalid,
282
+ isDisabled: state.isDisabled,
283
+ isReadOnly: state.isReadOnly,
284
+ isRequired: props.isRequired || false,
285
+ },
286
+ defaultClassName: 'react-aria-TimeField',
287
+ });
288
+
289
+ let DOMProps = filterDOMProps(props, { global: true });
290
+ delete DOMProps.id;
291
+
292
+ return (
293
+ <Provider
294
+ values={[
295
+ [TimeFieldStateContext, state],
296
+ [
297
+ GroupContext,
298
+ {
299
+ ...fieldProps,
300
+ ref: fieldRef,
301
+ isInvalid: state.isInvalid,
302
+ isDisabled: state.isDisabled,
303
+ },
304
+ ],
305
+ [InputContext, { ...inputProps, ref: inputRef }],
306
+ [LabelContext, { ...labelProps, ref: labelRef, elementType: 'span' }],
307
+ [
308
+ TextContext,
309
+ {
310
+ slots: {
311
+ description: descriptionProps,
312
+ errorMessage: errorMessageProps,
313
+ },
314
+ },
315
+ ],
316
+ [FieldErrorContext, validation],
317
+ ]}
318
+ >
319
+ <dom.div
320
+ {...DOMProps}
321
+ {...renderProps}
322
+ ref={ref}
323
+ slot={props.slot || undefined}
324
+ data-invalid={state.isInvalid || undefined}
325
+ data-disabled={state.isDisabled || undefined}
326
+ data-readonly={state.isReadOnly || undefined}
327
+ data-required={props.isRequired || undefined}
328
+ />
329
+ </Provider>
330
+ );
331
+ });
332
+
333
+ export interface DateInputRenderProps {
334
+ /**
335
+ * Whether the date input is currently hovered with a mouse.
336
+ *
337
+ * @selector [data-hovered]
338
+ */
339
+ isHovered: boolean;
340
+ /**
341
+ * Whether an element within the date input is focused, either via a mouse or keyboard.
342
+ *
343
+ * @selector [data-focus-within]
344
+ */
345
+ isFocusWithin: boolean;
346
+ /**
347
+ * Whether an element within the date input is keyboard focused.
348
+ *
349
+ * @selector [data-focus-visible]
350
+ */
351
+ isFocusVisible: boolean;
352
+ /**
353
+ * Whether the date input is disabled.
354
+ *
355
+ * @selector [data-disabled]
356
+ */
357
+ isDisabled: boolean;
358
+
359
+ /**
360
+ * Whether the date input is invalid.
361
+ *
362
+ * @selector [data-invalid]
363
+ */
364
+ isInvalid: boolean;
365
+ }
366
+
367
+ export interface DateInputProps
368
+ extends SlotProps, StyleRenderProps<DateInputRenderProps>, GlobalDOMAttributes<HTMLDivElement> {
369
+ /**
370
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
371
+ * element. A function may be provided to compute the class based on component state.
372
+ *
373
+ * @default 'react-aria-DateInput'
374
+ */
375
+ className?: ClassNameOrFunction<DateInputRenderProps>;
376
+ children: (segment: IDateSegment) => ReactElement;
377
+ }
378
+
379
+ /**
380
+ * A date input groups the editable date segments within a date field.
381
+ */
382
+ export const DateInput = /*#__PURE__*/ (forwardRef as any)(function DateInput(
383
+ props: DateInputProps,
384
+ ref: ForwardedRef<HTMLDivElement>,
385
+ ): JSX.Element {
386
+ // If state is provided by DateField/TimeField, just render.
387
+ // Otherwise (e.g. in DatePicker), we need to call hooks and create state ourselves.
388
+ let dateFieldState = useContext(DateFieldStateContext);
389
+ let timeFieldState = useContext(TimeFieldStateContext);
390
+ return dateFieldState || timeFieldState ? (
391
+ <DateInputInner {...props} ref={ref} />
392
+ ) : (
393
+ <DateInputStandalone {...props} ref={ref} />
394
+ );
395
+ });
396
+
397
+ const DateInputStandalone = forwardRef(
398
+ (props: DateInputProps, ref: ForwardedRef<HTMLDivElement>) => {
399
+ let [dateFieldProps, fieldRef] = useContextProps(
400
+ { slot: props.slot } as DateFieldProps<any>,
401
+ ref,
402
+ DateFieldContext,
403
+ );
404
+ let { locale } = useLocale();
405
+ let state = useDateFieldState({
406
+ ...dateFieldProps,
407
+ locale,
408
+ createCalendar,
409
+ });
410
+
411
+ let inputRef = useRef<HTMLInputElement>(null);
412
+ let { fieldProps, inputProps } = useDateField({ ...dateFieldProps, inputRef }, state, fieldRef);
413
+
414
+ return (
415
+ <Provider
416
+ values={[
417
+ [DateFieldStateContext, state],
418
+ [InputContext, { ...inputProps, ref: inputRef }],
419
+ [
420
+ GroupContext,
421
+ {
422
+ ...fieldProps,
423
+ ref: fieldRef,
424
+ isInvalid: state.isInvalid,
425
+ isDisabled: state.isDisabled,
426
+ },
427
+ ],
428
+ ]}
429
+ >
430
+ <DateInputInner {...props} />
431
+ </Provider>
432
+ );
433
+ },
434
+ );
435
+
436
+ const DateInputInner = forwardRef((props: DateInputProps, ref: ForwardedRef<HTMLDivElement>) => {
437
+ let { className, children } = props;
438
+ let dateFieldState = useContext(DateFieldStateContext);
439
+ let timeFieldState = useContext(TimeFieldStateContext);
440
+ let state = dateFieldState ?? timeFieldState!;
441
+
442
+ return (
443
+ <>
444
+ <Group
445
+ {...props}
446
+ ref={ref}
447
+ slot={props.slot || undefined}
448
+ className={className ?? 'react-aria-DateInput'}
449
+ isReadOnly={state.isReadOnly}
450
+ isInvalid={state.isInvalid}
451
+ isDisabled={state.isDisabled}
452
+ >
453
+ {state.segments.map((segment, i) => cloneElement(children(segment), { key: i }))}
454
+ </Group>
455
+ <Input className="" />
456
+ </>
457
+ );
458
+ });
459
+
460
+ export interface DateSegmentRenderProps extends Omit<IDateSegment, 'isEditable'> {
461
+ /**
462
+ * Whether the segment is currently hovered with a mouse.
463
+ *
464
+ * @selector [data-hovered]
465
+ */
466
+ isHovered: boolean;
467
+ /**
468
+ * Whether the segment is focused, either via a mouse or keyboard.
469
+ *
470
+ * @selector [data-focused]
471
+ */
472
+ isFocused: boolean;
473
+ /**
474
+ * Whether the segment is keyboard focused.
475
+ *
476
+ * @selector [data-focus-visible]
477
+ */
478
+ isFocusVisible: boolean;
479
+ /**
480
+ * Whether the value is a placeholder.
481
+ *
482
+ * @selector [data-placeholder]
483
+ */
484
+ isPlaceholder: boolean;
485
+ /**
486
+ * Whether the segment is read only.
487
+ *
488
+ * @selector [data-readonly]
489
+ */
490
+ isReadOnly: boolean;
491
+ /**
492
+ * Whether the date field is disabled.
493
+ *
494
+ * @selector [data-disabled]
495
+ */
496
+ isDisabled: boolean;
497
+ /**
498
+ * Whether the date field is in an invalid state.
499
+ *
500
+ * @selector [data-invalid]
501
+ */
502
+ isInvalid: boolean;
503
+ /**
504
+ * The type of segment. Values include `literal`, `year`, `month`, `day`, etc.
505
+ *
506
+ * @selector [data-type="..."]
507
+ */
508
+ type: DateSegmentType;
509
+ }
510
+
511
+ export interface DateSegmentProps
512
+ extends
513
+ RenderProps<DateSegmentRenderProps, 'span'>,
514
+ HoverEvents,
515
+ GlobalDOMAttributes<HTMLSpanElement> {
516
+ /**
517
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
518
+ * element. A function may be provided to compute the class based on component state.
519
+ *
520
+ * @default 'react-aria-DateSegment'
521
+ */
522
+ className?: ClassNameOrFunction<DateSegmentRenderProps>;
523
+ segment: IDateSegment;
524
+ }
525
+
526
+ /**
527
+ * A date segment displays an individual unit of a date and time, and allows users to edit
528
+ * the value by typing or using the arrow keys to increment and decrement.
529
+ */
530
+ export const DateSegment = /*#__PURE__*/ (forwardRef as any)(function DateSegment(
531
+ { segment, ...otherProps }: DateSegmentProps,
532
+ ref: ForwardedRef<HTMLSpanElement>,
533
+ ) {
534
+ let dateFieldState = useContext(DateFieldStateContext);
535
+ let timeFieldState = useContext(TimeFieldStateContext);
536
+ let state = dateFieldState ?? timeFieldState!;
537
+ let domRef = useObjectRef(ref);
538
+ let { segmentProps } = useDateSegment(segment, state, domRef);
539
+ let { focusProps, isFocused, isFocusVisible } = useFocusRing();
540
+ let { hoverProps, isHovered } = useHover({
541
+ ...otherProps,
542
+ isDisabled: state.isDisabled || segment.type === 'literal',
543
+ });
544
+ let renderProps = useRenderProps({
545
+ ...otherProps,
546
+ values: {
547
+ ...segment,
548
+ isReadOnly: state.isReadOnly,
549
+ isInvalid: state.isInvalid,
550
+ isDisabled: state.isDisabled,
551
+ isHovered,
552
+ isFocused,
553
+ isFocusVisible,
554
+ },
555
+ defaultChildren: segment.text,
556
+ defaultClassName: 'react-aria-DateSegment',
557
+ });
558
+
559
+ return (
560
+ <dom.span
561
+ {...mergeProps(
562
+ filterDOMProps(otherProps, { global: true }),
563
+ segmentProps,
564
+ focusProps,
565
+ hoverProps,
566
+ )}
567
+ {...renderProps}
568
+ style={segmentProps.style}
569
+ ref={domRef}
570
+ data-placeholder={segment.isPlaceholder || undefined}
571
+ data-invalid={state.isInvalid || undefined}
572
+ data-readonly={state.isReadOnly || undefined}
573
+ data-disabled={state.isDisabled || undefined}
574
+ data-type={segment.type}
575
+ data-hovered={isHovered || undefined}
576
+ data-focused={isFocused || undefined}
577
+ data-focus-visible={isFocusVisible || undefined}
578
+ />
579
+ );
580
+ });