@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,120 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/ColorArea.tsx).
3
+ import { AriaColorAreaProps, useColorArea } from '../upstream-exports/react-aria/useColorArea';
4
+ import {
5
+ ClassNameOrFunction,
6
+ ContextValue,
7
+ dom,
8
+ Provider,
9
+ RenderProps,
10
+ SlotProps,
11
+ useContextProps,
12
+ useRenderProps,
13
+ } from './utils';
14
+ import {
15
+ ColorAreaState,
16
+ useColorAreaState,
17
+ } from '../upstream-exports/react-stately/useColorAreaState';
18
+ import { filterDOMProps } from '../upstream-exports/react-aria/filterDOMProps';
19
+ import { GlobalDOMAttributes } from '@react-types/shared';
20
+ import { InternalColorThumbContext } from './ColorThumb';
21
+ import { mergeProps } from '../upstream-exports/react-aria/mergeProps';
22
+ import React, { createContext, ForwardedRef, forwardRef, useRef } from '../compat/react';
23
+
24
+ export interface ColorAreaRenderProps {
25
+ /**
26
+ * Whether the color area is disabled.
27
+ *
28
+ * @selector [data-disabled]
29
+ */
30
+ isDisabled: boolean;
31
+ /**
32
+ * State of the color area.
33
+ */
34
+ state: ColorAreaState;
35
+ }
36
+
37
+ export interface ColorAreaProps
38
+ extends
39
+ AriaColorAreaProps,
40
+ RenderProps<ColorAreaRenderProps>,
41
+ SlotProps,
42
+ GlobalDOMAttributes<HTMLDivElement> {
43
+ /**
44
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
45
+ * element. A function may be provided to compute the class based on component state.
46
+ *
47
+ * @default 'react-aria-ColorArea'
48
+ */
49
+ className?: ClassNameOrFunction<ColorAreaRenderProps>;
50
+ }
51
+
52
+ export const ColorAreaContext =
53
+ createContext<ContextValue<Partial<ColorAreaProps>, HTMLDivElement>>(null);
54
+ export const ColorAreaStateContext = createContext<ColorAreaState | null>(null);
55
+
56
+ /**
57
+ * A color area allows users to adjust two channels of an RGB, HSL or HSB color value against a
58
+ * two-dimensional gradient background.
59
+ */
60
+ export const ColorArea = forwardRef(function ColorArea(
61
+ props: ColorAreaProps,
62
+ ref: ForwardedRef<HTMLDivElement>,
63
+ ) {
64
+ [props, ref] = useContextProps(props, ref, ColorAreaContext);
65
+ let inputXRef = useRef(null);
66
+ let inputYRef = useRef(null);
67
+
68
+ let state = useColorAreaState(props);
69
+ let { colorAreaProps, xInputProps, yInputProps, thumbProps } = useColorArea(
70
+ {
71
+ ...props,
72
+ inputXRef,
73
+ inputYRef,
74
+ containerRef: ref,
75
+ },
76
+ state,
77
+ );
78
+
79
+ let renderProps = useRenderProps({
80
+ ...props,
81
+ defaultClassName: 'react-aria-ColorArea',
82
+ defaultStyle: colorAreaProps.style,
83
+ values: {
84
+ state,
85
+ isDisabled: props.isDisabled || false,
86
+ },
87
+ });
88
+
89
+ let DOMProps = filterDOMProps(props, { global: true });
90
+ delete DOMProps.id;
91
+
92
+ return (
93
+ <dom.div
94
+ ref={ref}
95
+ {...mergeProps(DOMProps, colorAreaProps, renderProps)}
96
+ slot={props.slot || undefined}
97
+ data-disabled={props.isDisabled || undefined}
98
+ >
99
+ <Provider
100
+ values={[
101
+ [ColorAreaStateContext, state],
102
+ [
103
+ InternalColorThumbContext,
104
+ {
105
+ state,
106
+ thumbProps,
107
+ inputXRef,
108
+ xInputProps,
109
+ inputYRef,
110
+ yInputProps,
111
+ isDisabled: props.isDisabled,
112
+ },
113
+ ],
114
+ ]}
115
+ >
116
+ {renderProps.children}
117
+ </Provider>
118
+ </dom.div>
119
+ );
120
+ });
@@ -0,0 +1,304 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/ColorField.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
+
15
+ import {
16
+ AriaColorFieldProps,
17
+ useColorChannelField,
18
+ useColorField,
19
+ } from '../upstream-exports/react-aria/useColorField';
20
+
21
+ import {
22
+ ClassNameOrFunction,
23
+ ContextValue,
24
+ dom,
25
+ Provider,
26
+ RACValidation,
27
+ removeDataAttributes,
28
+ RenderProps,
29
+ SlotProps,
30
+ useContextProps,
31
+ useRenderProps,
32
+ useSlot,
33
+ } from './utils';
34
+ import { ColorChannel, ColorSpace } from '../upstream-exports/react-stately/Color';
35
+ import {
36
+ ColorFieldState,
37
+ useColorChannelFieldState,
38
+ useColorFieldState,
39
+ } from '../upstream-exports/react-stately/useColorFieldState';
40
+ import { FieldErrorContext } from './FieldError';
41
+ import { filterDOMProps } from '../upstream-exports/react-aria/filterDOMProps';
42
+ import { GlobalDOMAttributes, InputDOMProps, ValidationResult } from '@react-types/shared';
43
+ import { GroupContext } from './Group';
44
+ import { InputContext } from './Input';
45
+ import { LabelContext } from './Label';
46
+ import React, {
47
+ createContext,
48
+ ForwardedRef,
49
+ forwardRef,
50
+ HTMLAttributes,
51
+ InputHTMLAttributes,
52
+ LabelHTMLAttributes,
53
+ Ref,
54
+ useRef,
55
+ } from '../compat/react';
56
+ import { TextContext } from './Text';
57
+ import { useLocale } from '../upstream-exports/react-aria/I18nProvider';
58
+
59
+ export interface ColorFieldRenderProps {
60
+ /**
61
+ * Whether the color field is disabled.
62
+ *
63
+ * @selector [data-disabled]
64
+ */
65
+ isDisabled: boolean;
66
+ /**
67
+ * Whether the color field is invalid.
68
+ *
69
+ * @selector [data-invalid]
70
+ */
71
+ isInvalid: boolean;
72
+ /**
73
+ * Whether the color field is read only.
74
+ *
75
+ * @selector [data-readonly]
76
+ */
77
+ isReadOnly: boolean;
78
+ /**
79
+ * Whether the color field is required.
80
+ *
81
+ * @selector [data-required]
82
+ */
83
+ isRequired: boolean;
84
+ /**
85
+ * The color channel that this field edits, or "hex" if no `channel` prop is set.
86
+ *
87
+ * @selector [data-channel="hex | hue | saturation | ..."]
88
+ */
89
+ channel: ColorChannel | 'hex';
90
+ /**
91
+ * State of the color field.
92
+ */
93
+ state: ColorFieldState;
94
+ }
95
+
96
+ export interface ColorFieldProps
97
+ extends
98
+ Omit<
99
+ AriaColorFieldProps,
100
+ | 'label'
101
+ | 'placeholder'
102
+ | 'description'
103
+ | 'errorMessage'
104
+ | 'validationState'
105
+ | 'validationBehavior'
106
+ >,
107
+ RACValidation,
108
+ InputDOMProps,
109
+ RenderProps<ColorFieldRenderProps>,
110
+ SlotProps,
111
+ GlobalDOMAttributes<HTMLDivElement> {
112
+ /**
113
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
114
+ * element. A function may be provided to compute the class based on component state.
115
+ *
116
+ * @default 'react-aria-ColorField'
117
+ */
118
+ className?: ClassNameOrFunction<ColorFieldRenderProps>;
119
+ /**
120
+ * The color channel that this field edits. If not provided,
121
+ * the color is edited as a hex value.
122
+ */
123
+ channel?: ColorChannel;
124
+ /**
125
+ * The color space that the color field operates in if a `channel` prop is provided.
126
+ * If no `channel` is provided, the color field always displays the color as an RGB hex value.
127
+ */
128
+ colorSpace?: ColorSpace;
129
+ }
130
+
131
+ export const ColorFieldContext = createContext<ContextValue<ColorFieldProps, HTMLDivElement>>(null);
132
+ export const ColorFieldStateContext = createContext<ColorFieldState | null>(null);
133
+
134
+ /**
135
+ * A color field allows users to edit a hex color or individual color channel value.
136
+ */
137
+ export const ColorField = forwardRef(function ColorField(
138
+ props: ColorFieldProps,
139
+ ref: ForwardedRef<HTMLDivElement>,
140
+ ) {
141
+ [props, ref] = useContextProps(props, ref, ColorFieldContext);
142
+ if (props.channel) {
143
+ return <ColorChannelField {...props} channel={props.channel} forwardedRef={ref} />;
144
+ } else {
145
+ return <HexColorField {...props} forwardedRef={ref} />;
146
+ }
147
+ });
148
+
149
+ interface ColorChannelFieldProps extends Omit<ColorFieldProps, 'channel'> {
150
+ channel: ColorChannel;
151
+ forwardedRef: ForwardedRef<HTMLDivElement>;
152
+ }
153
+
154
+ function ColorChannelField(props: ColorChannelFieldProps) {
155
+ let { locale } = useLocale();
156
+ let state = useColorChannelFieldState({
157
+ ...props,
158
+ locale,
159
+ });
160
+
161
+ let inputRef = useRef<HTMLInputElement>(null);
162
+ let [labelRef, label] = useSlot(!props['aria-label'] && !props['aria-labelledby']);
163
+ let { labelProps, inputProps, descriptionProps, errorMessageProps, ...validation } =
164
+ useColorChannelField(
165
+ {
166
+ ...removeDataAttributes(props),
167
+ label,
168
+ validationBehavior: props.validationBehavior ?? 'native',
169
+ },
170
+ state,
171
+ inputRef,
172
+ );
173
+
174
+ return (
175
+ <>
176
+ {useChildren(
177
+ props,
178
+ state,
179
+ props.forwardedRef,
180
+ inputProps,
181
+ inputRef,
182
+ labelProps,
183
+ labelRef,
184
+ descriptionProps,
185
+ errorMessageProps,
186
+ validation,
187
+ )}
188
+ {props.name && (
189
+ <input
190
+ type="hidden"
191
+ name={props.name}
192
+ form={props.form}
193
+ value={isNaN(state.numberValue) ? '' : state.numberValue}
194
+ />
195
+ )}
196
+ </>
197
+ );
198
+ }
199
+
200
+ interface HexColorFieldProps extends ColorFieldProps {
201
+ forwardedRef: ForwardedRef<HTMLDivElement>;
202
+ }
203
+
204
+ function HexColorField(props: HexColorFieldProps) {
205
+ let state = useColorFieldState({
206
+ ...props,
207
+ validationBehavior: props.validationBehavior ?? 'native',
208
+ });
209
+
210
+ let inputRef = useRef<HTMLInputElement>(null);
211
+ let [labelRef, label] = useSlot(!props['aria-label'] && !props['aria-labelledby']);
212
+ let { labelProps, inputProps, descriptionProps, errorMessageProps, ...validation } =
213
+ useColorField(
214
+ {
215
+ ...removeDataAttributes(props),
216
+ label,
217
+ validationBehavior: props.validationBehavior ?? 'native',
218
+ },
219
+ state,
220
+ inputRef,
221
+ );
222
+
223
+ return useChildren(
224
+ props,
225
+ state,
226
+ props.forwardedRef,
227
+ inputProps,
228
+ inputRef,
229
+ labelProps,
230
+ labelRef,
231
+ descriptionProps,
232
+ errorMessageProps,
233
+ validation,
234
+ );
235
+ }
236
+
237
+ function useChildren(
238
+ props: ColorFieldProps,
239
+ state: ColorFieldState,
240
+ ref: ForwardedRef<HTMLDivElement>,
241
+ inputProps: InputHTMLAttributes<HTMLElement>,
242
+ inputRef: Ref<HTMLInputElement>,
243
+ labelProps: LabelHTMLAttributes<HTMLLabelElement>,
244
+ labelRef: Ref<HTMLLabelElement>,
245
+ descriptionProps: HTMLAttributes<HTMLElement>,
246
+ errorMessageProps: HTMLAttributes<HTMLElement>,
247
+ validation: ValidationResult,
248
+ ) {
249
+ let renderProps = useRenderProps({
250
+ ...props,
251
+ values: {
252
+ state,
253
+ channel: props.channel || 'hex',
254
+ isDisabled: props.isDisabled || false,
255
+ isInvalid: validation.isInvalid || false,
256
+ isReadOnly: props.isReadOnly || false,
257
+ isRequired: props.isRequired || false,
258
+ },
259
+ defaultClassName: 'react-aria-ColorField',
260
+ });
261
+
262
+ let DOMProps = filterDOMProps(props, { global: true });
263
+ delete DOMProps.id;
264
+
265
+ return (
266
+ <Provider
267
+ values={[
268
+ [ColorFieldStateContext, state],
269
+ [InputContext, { ...inputProps, ref: inputRef }],
270
+ [LabelContext, { ...labelProps, ref: labelRef }],
271
+ [
272
+ GroupContext,
273
+ {
274
+ role: 'presentation',
275
+ isInvalid: validation.isInvalid,
276
+ isDisabled: props.isDisabled || false,
277
+ },
278
+ ],
279
+ [
280
+ TextContext,
281
+ {
282
+ slots: {
283
+ description: descriptionProps,
284
+ errorMessage: errorMessageProps,
285
+ },
286
+ },
287
+ ],
288
+ [FieldErrorContext, validation],
289
+ ]}
290
+ >
291
+ <dom.div
292
+ {...DOMProps}
293
+ {...renderProps}
294
+ ref={ref}
295
+ slot={props.slot || undefined}
296
+ data-channel={props.channel || 'hex'}
297
+ data-disabled={props.isDisabled || undefined}
298
+ data-invalid={validation.isInvalid || undefined}
299
+ data-readonly={props.isReadOnly || undefined}
300
+ data-required={props.isRequired || undefined}
301
+ />
302
+ </Provider>
303
+ );
304
+ }
@@ -0,0 +1,86 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/ColorPicker.tsx).
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
+ ChildrenOrFunction,
17
+ Provider,
18
+ SlotProps,
19
+ SlottedContextValue,
20
+ useRenderProps,
21
+ useSlottedContext,
22
+ } from './utils';
23
+ import { Color } from '../upstream-exports/react-stately/Color';
24
+
25
+ import { ColorAreaContext } from './ColorArea';
26
+
27
+ import { ColorFieldContext } from './ColorField';
28
+ import {
29
+ ColorPickerState,
30
+ ColorPickerProps as StatelyColorPickerProps,
31
+ useColorPickerState,
32
+ } from '../upstream-exports/react-stately/useColorPickerState';
33
+ import { ColorSliderContext } from './ColorSlider';
34
+ import { ColorSwatchContext } from './ColorSwatch';
35
+ import { ColorSwatchPickerContext } from './ColorSwatchPicker';
36
+ import { ColorWheelContext } from './ColorWheel';
37
+ import { mergeProps } from '../upstream-exports/react-aria/mergeProps';
38
+ import React, { createContext, JSX } from '../compat/react';
39
+
40
+ export interface ColorPickerRenderProps {
41
+ /** The currently selected color. */
42
+ color: Color;
43
+ }
44
+
45
+ export interface ColorPickerProps extends StatelyColorPickerProps, SlotProps {
46
+ /**
47
+ * The children of the component. A function may be provided to alter the children based on
48
+ * component state.
49
+ */
50
+ children: ChildrenOrFunction<ColorPickerRenderProps>;
51
+ }
52
+
53
+ export const ColorPickerContext = createContext<SlottedContextValue<ColorPickerProps>>(null);
54
+ export const ColorPickerStateContext = createContext<ColorPickerState | null>(null);
55
+
56
+ /**
57
+ * A ColorPicker synchronizes a color value between multiple React Aria color components.
58
+ * It simplifies building color pickers with customizable layouts via composition.
59
+ */
60
+ export function ColorPicker(props: ColorPickerProps): JSX.Element {
61
+ let ctx = useSlottedContext(ColorPickerContext, props.slot);
62
+ props = mergeProps(ctx, props);
63
+ let state = useColorPickerState(props);
64
+ let renderProps = useRenderProps({
65
+ ...props,
66
+ values: {
67
+ color: state.color,
68
+ },
69
+ });
70
+
71
+ return (
72
+ <Provider
73
+ values={[
74
+ [ColorPickerStateContext, state],
75
+ [ColorSliderContext, { value: state.color, onChange: state.setColor }],
76
+ [ColorAreaContext, { value: state.color, onChange: state.setColor }],
77
+ [ColorWheelContext, { value: state.color, onChange: state.setColor }],
78
+ [ColorFieldContext, { value: state.color, onChange: state.setColor }],
79
+ [ColorSwatchContext, { color: state.color }],
80
+ [ColorSwatchPickerContext, { value: state.color, onChange: state.setColor }],
81
+ ]}
82
+ >
83
+ {renderProps.children}
84
+ </Provider>
85
+ );
86
+ }
@@ -0,0 +1,144 @@
1
+ /** @jsxImportSource octane */
2
+ // Ported from adobe/react-spectrum@1c84a49a1faf50b571c84e00bcf9c60b22ddd03e (packages/react-aria-components/src/ColorSlider.tsx).
3
+ import { useRef } from 'octane';
4
+ import {
5
+ AriaColorSliderProps,
6
+ useColorSlider,
7
+ } from '../upstream-exports/react-aria/useColorSlider';
8
+ import {
9
+ ClassNameOrFunction,
10
+ ContextValue,
11
+ dom,
12
+ Provider,
13
+ RenderProps,
14
+ SlotProps,
15
+ useContextProps,
16
+ useRenderProps,
17
+ useSlot,
18
+ } from './utils';
19
+ import {
20
+ ColorSliderState,
21
+ useColorSliderState,
22
+ } from '../upstream-exports/react-stately/useColorSliderState';
23
+ import { filterDOMProps } from '../upstream-exports/react-aria/filterDOMProps';
24
+ import { GlobalDOMAttributes } from '@react-types/shared';
25
+ import { InternalColorThumbContext } from './ColorThumb';
26
+ import { LabelContext } from './Label';
27
+ import { Orientation } from '@react-types/shared';
28
+ import React, { createContext, ForwardedRef, forwardRef } from '../compat/react';
29
+ import { SliderOutputContext, SliderStateContext, SliderTrackContext } from './Slider';
30
+ import { useLocale } from '../upstream-exports/react-aria/I18nProvider';
31
+
32
+ export interface ColorSliderRenderProps {
33
+ /**
34
+ * The orientation of the color slider.
35
+ *
36
+ * @selector [data-orientation="horizontal | vertical"]
37
+ */
38
+ orientation: Orientation;
39
+ /**
40
+ * Whether the color slider is disabled.
41
+ *
42
+ * @selector [data-disabled]
43
+ */
44
+ isDisabled: boolean;
45
+ /**
46
+ * State of the color slider.
47
+ */
48
+ state: ColorSliderState;
49
+ }
50
+
51
+ export interface ColorSliderProps
52
+ extends
53
+ Omit<AriaColorSliderProps, 'label'>,
54
+ RenderProps<ColorSliderRenderProps>,
55
+ SlotProps,
56
+ GlobalDOMAttributes<HTMLDivElement> {
57
+ /**
58
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the
59
+ * element. A function may be provided to compute the class based on component state.
60
+ *
61
+ * @default 'react-aria-ColorSlider'
62
+ */
63
+ className?: ClassNameOrFunction<ColorSliderRenderProps>;
64
+ }
65
+
66
+ export const ColorSliderContext =
67
+ createContext<ContextValue<Partial<ColorSliderProps>, HTMLDivElement>>(null);
68
+ export const ColorSliderStateContext = createContext<ColorSliderState | null>(null);
69
+
70
+ /**
71
+ * A color slider allows users to adjust an individual channel of a color value.
72
+ */
73
+ export const ColorSlider = forwardRef(function ColorSlider(
74
+ props: ColorSliderProps,
75
+ ref: ForwardedRef<HTMLDivElement>,
76
+ ) {
77
+ [props, ref] = useContextProps(props, ref, ColorSliderContext);
78
+ let { locale } = useLocale();
79
+ let state = useColorSliderState({ ...props, locale });
80
+ let trackRef = useRef(null);
81
+ let inputRef = useRef(null);
82
+
83
+ let [labelRef, label] = useSlot(!props['aria-label'] && !props['aria-labelledby']);
84
+ let { trackProps, thumbProps, inputProps, labelProps, outputProps } = useColorSlider(
85
+ {
86
+ ...props,
87
+ label,
88
+ trackRef,
89
+ inputRef,
90
+ },
91
+ state,
92
+ );
93
+
94
+ let renderProps = useRenderProps({
95
+ ...props,
96
+ values: {
97
+ orientation: state.orientation,
98
+ isDisabled: state.isDisabled,
99
+ state,
100
+ },
101
+ defaultClassName: 'react-aria-ColorSlider',
102
+ });
103
+
104
+ let DOMProps = filterDOMProps(props, { global: true });
105
+ delete DOMProps.id;
106
+
107
+ return (
108
+ <Provider
109
+ values={[
110
+ [ColorSliderStateContext, state],
111
+ [SliderStateContext, state],
112
+ [SliderTrackContext, { ...trackProps, ref: trackRef }],
113
+ [SliderOutputContext, outputProps],
114
+ [
115
+ LabelContext,
116
+ {
117
+ ...labelProps,
118
+ ref: labelRef,
119
+ children: state.value.getChannelName(props.channel, locale),
120
+ },
121
+ ],
122
+ [
123
+ InternalColorThumbContext,
124
+ {
125
+ state,
126
+ thumbProps,
127
+ inputXRef: inputRef,
128
+ xInputProps: inputProps,
129
+ isDisabled: props.isDisabled,
130
+ },
131
+ ],
132
+ ]}
133
+ >
134
+ <dom.div
135
+ {...DOMProps}
136
+ {...renderProps}
137
+ ref={ref}
138
+ slot={props.slot || undefined}
139
+ data-orientation={state.orientation}
140
+ data-disabled={state.isDisabled || undefined}
141
+ />
142
+ </Provider>
143
+ );
144
+ });