reka-ui 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. package/dist/Autocomplete/AutocompleteInput.cjs +128 -0
  2. package/dist/Autocomplete/AutocompleteInput.cjs.map +1 -0
  3. package/dist/Autocomplete/AutocompleteInput.js +122 -0
  4. package/dist/Autocomplete/AutocompleteInput.js.map +1 -0
  5. package/dist/Autocomplete/AutocompleteRoot.cjs +258 -0
  6. package/dist/Autocomplete/AutocompleteRoot.cjs.map +1 -0
  7. package/dist/Autocomplete/AutocompleteRoot.js +246 -0
  8. package/dist/Autocomplete/AutocompleteRoot.js.map +1 -0
  9. package/dist/Calendar/CalendarCellTrigger.cjs +12 -6
  10. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  11. package/dist/Calendar/CalendarCellTrigger.js +13 -7
  12. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  13. package/dist/Calendar/CalendarNext.cjs +7 -3
  14. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  15. package/dist/Calendar/CalendarNext.js +7 -3
  16. package/dist/Calendar/CalendarNext.js.map +1 -1
  17. package/dist/Calendar/CalendarPrev.cjs +7 -3
  18. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  19. package/dist/Calendar/CalendarPrev.js +7 -3
  20. package/dist/Calendar/CalendarPrev.js.map +1 -1
  21. package/dist/Calendar/CalendarRoot.cjs +12 -7
  22. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  23. package/dist/Calendar/CalendarRoot.js +13 -8
  24. package/dist/Calendar/CalendarRoot.js.map +1 -1
  25. package/dist/Calendar/useCalendar.cjs +32 -2
  26. package/dist/Calendar/useCalendar.cjs.map +1 -1
  27. package/dist/Calendar/useCalendar.js +33 -3
  28. package/dist/Calendar/useCalendar.js.map +1 -1
  29. package/dist/Checkbox/CheckboxGroupRoot.cjs +1 -1
  30. package/dist/Checkbox/CheckboxGroupRoot.js +1 -1
  31. package/dist/Checkbox/CheckboxRoot.cjs +21 -10
  32. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  33. package/dist/Checkbox/CheckboxRoot.js +21 -10
  34. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  35. package/dist/ColorArea/ColorAreaArea.cjs +143 -0
  36. package/dist/ColorArea/ColorAreaArea.cjs.map +1 -0
  37. package/dist/ColorArea/ColorAreaArea.js +137 -0
  38. package/dist/ColorArea/ColorAreaArea.js.map +1 -0
  39. package/dist/ColorArea/ColorAreaRoot.cjs +240 -0
  40. package/dist/ColorArea/ColorAreaRoot.cjs.map +1 -0
  41. package/dist/ColorArea/ColorAreaRoot.js +228 -0
  42. package/dist/ColorArea/ColorAreaRoot.js.map +1 -0
  43. package/dist/ColorArea/ColorAreaThumb.cjs +91 -0
  44. package/dist/ColorArea/ColorAreaThumb.cjs.map +1 -0
  45. package/dist/ColorArea/ColorAreaThumb.js +85 -0
  46. package/dist/ColorArea/ColorAreaThumb.js.map +1 -0
  47. package/dist/ColorArea/utils.cjs +32 -0
  48. package/dist/ColorArea/utils.cjs.map +1 -0
  49. package/dist/ColorArea/utils.js +21 -0
  50. package/dist/ColorArea/utils.js.map +1 -0
  51. package/dist/ColorField/ColorFieldInput.cjs +140 -0
  52. package/dist/ColorField/ColorFieldInput.cjs.map +1 -0
  53. package/dist/ColorField/ColorFieldInput.js +134 -0
  54. package/dist/ColorField/ColorFieldInput.js.map +1 -0
  55. package/dist/ColorField/ColorFieldRoot.cjs +281 -0
  56. package/dist/ColorField/ColorFieldRoot.cjs.map +1 -0
  57. package/dist/ColorField/ColorFieldRoot.js +269 -0
  58. package/dist/ColorField/ColorFieldRoot.js.map +1 -0
  59. package/dist/ColorSlider/ColorSliderRoot.cjs +230 -0
  60. package/dist/ColorSlider/ColorSliderRoot.cjs.map +1 -0
  61. package/dist/ColorSlider/ColorSliderRoot.js +218 -0
  62. package/dist/ColorSlider/ColorSliderRoot.js.map +1 -0
  63. package/dist/ColorSlider/ColorSliderThumb.cjs +66 -0
  64. package/dist/ColorSlider/ColorSliderThumb.cjs.map +1 -0
  65. package/dist/ColorSlider/ColorSliderThumb.js +60 -0
  66. package/dist/ColorSlider/ColorSliderThumb.js.map +1 -0
  67. package/dist/ColorSlider/ColorSliderTrack.cjs +55 -0
  68. package/dist/ColorSlider/ColorSliderTrack.cjs.map +1 -0
  69. package/dist/ColorSlider/ColorSliderTrack.js +49 -0
  70. package/dist/ColorSlider/ColorSliderTrack.js.map +1 -0
  71. package/dist/ColorSwatch/ColorSwatch.cjs +106 -0
  72. package/dist/ColorSwatch/ColorSwatch.cjs.map +1 -0
  73. package/dist/ColorSwatch/ColorSwatch.js +100 -0
  74. package/dist/ColorSwatch/ColorSwatch.js.map +1 -0
  75. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.cjs +78 -0
  76. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.cjs.map +1 -0
  77. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.js +66 -0
  78. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.js.map +1 -0
  79. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.cjs +40 -0
  80. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.cjs.map +1 -0
  81. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.js +34 -0
  82. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.js.map +1 -0
  83. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.cjs +43 -0
  84. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.cjs.map +1 -0
  85. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.js +37 -0
  86. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.js.map +1 -0
  87. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.cjs +110 -0
  88. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.cjs.map +1 -0
  89. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.js +104 -0
  90. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.js.map +1 -0
  91. package/dist/Combobox/ComboboxContent.cjs +4 -0
  92. package/dist/Combobox/ComboboxContent.cjs.map +1 -1
  93. package/dist/Combobox/ComboboxContent.js +4 -0
  94. package/dist/Combobox/ComboboxContent.js.map +1 -1
  95. package/dist/Combobox/ComboboxContentImpl.cjs +11 -3
  96. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  97. package/dist/Combobox/ComboboxContentImpl.js +11 -3
  98. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  99. package/dist/Combobox/ComboboxRoot.cjs +7 -1
  100. package/dist/Combobox/ComboboxRoot.js +2 -2
  101. package/dist/DateField/DateFieldRoot.cjs +1 -1
  102. package/dist/DateField/DateFieldRoot.js +1 -1
  103. package/dist/DatePicker/DatePickerRoot.cjs +4 -3
  104. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  105. package/dist/DatePicker/DatePickerRoot.js +4 -3
  106. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  107. package/dist/DateRangeField/DateRangeFieldRoot.cjs +1 -1
  108. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  109. package/dist/DateRangeField/DateRangeFieldRoot.js +1 -1
  110. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  111. package/dist/DateRangePicker/DateRangePickerRoot.cjs +4 -3
  112. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  113. package/dist/DateRangePicker/DateRangePickerRoot.js +5 -4
  114. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  115. package/dist/DismissableLayer/utils.cjs.map +1 -1
  116. package/dist/DismissableLayer/utils.js.map +1 -1
  117. package/dist/DropdownMenu/DropdownMenuFilter.cjs +134 -0
  118. package/dist/DropdownMenu/DropdownMenuFilter.cjs.map +1 -0
  119. package/dist/DropdownMenu/DropdownMenuFilter.js +128 -0
  120. package/dist/DropdownMenu/DropdownMenuFilter.js.map +1 -0
  121. package/dist/Listbox/ListboxRoot.cjs +1 -1
  122. package/dist/Listbox/ListboxRoot.js +1 -1
  123. package/dist/Listbox/ListboxVirtualizer.cjs +1 -1
  124. package/dist/Listbox/ListboxVirtualizer.js +1 -1
  125. package/dist/Menu/MenuContentImpl.cjs +44 -4
  126. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  127. package/dist/Menu/MenuContentImpl.js +44 -4
  128. package/dist/Menu/MenuContentImpl.js.map +1 -1
  129. package/dist/Menu/MenuItemImpl.cjs +8 -3
  130. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  131. package/dist/Menu/MenuItemImpl.js +9 -4
  132. package/dist/Menu/MenuItemImpl.js.map +1 -1
  133. package/dist/Menu/MenuSubContent.cjs +8 -2
  134. package/dist/Menu/MenuSubContent.cjs.map +1 -1
  135. package/dist/Menu/MenuSubContent.js +9 -3
  136. package/dist/Menu/MenuSubContent.js.map +1 -1
  137. package/dist/Menu/MenuSubTrigger.cjs +7 -0
  138. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  139. package/dist/Menu/MenuSubTrigger.js +8 -1
  140. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  141. package/dist/MonthPicker/MonthPickerCell.cjs +59 -0
  142. package/dist/MonthPicker/MonthPickerCell.cjs.map +1 -0
  143. package/dist/MonthPicker/MonthPickerCell.js +53 -0
  144. package/dist/MonthPicker/MonthPickerCell.js.map +1 -0
  145. package/dist/MonthPicker/MonthPickerCellTrigger.cjs +197 -0
  146. package/dist/MonthPicker/MonthPickerCellTrigger.cjs.map +1 -0
  147. package/dist/MonthPicker/MonthPickerCellTrigger.js +191 -0
  148. package/dist/MonthPicker/MonthPickerCellTrigger.js.map +1 -0
  149. package/dist/MonthPicker/MonthPickerGrid.cjs +59 -0
  150. package/dist/MonthPicker/MonthPickerGrid.cjs.map +1 -0
  151. package/dist/MonthPicker/MonthPickerGrid.js +53 -0
  152. package/dist/MonthPicker/MonthPickerGrid.js.map +1 -0
  153. package/dist/MonthPicker/MonthPickerGridBody.cjs +41 -0
  154. package/dist/MonthPicker/MonthPickerGridBody.cjs.map +1 -0
  155. package/dist/MonthPicker/MonthPickerGridBody.js +35 -0
  156. package/dist/MonthPicker/MonthPickerGridBody.js.map +1 -0
  157. package/dist/MonthPicker/MonthPickerGridRow.cjs +41 -0
  158. package/dist/MonthPicker/MonthPickerGridRow.cjs.map +1 -0
  159. package/dist/MonthPicker/MonthPickerGridRow.js +35 -0
  160. package/dist/MonthPicker/MonthPickerGridRow.js.map +1 -0
  161. package/dist/MonthPicker/MonthPickerHeader.cjs +41 -0
  162. package/dist/MonthPicker/MonthPickerHeader.cjs.map +1 -0
  163. package/dist/MonthPicker/MonthPickerHeader.js +35 -0
  164. package/dist/MonthPicker/MonthPickerHeader.js.map +1 -0
  165. package/dist/MonthPicker/MonthPickerHeading.cjs +48 -0
  166. package/dist/MonthPicker/MonthPickerHeading.cjs.map +1 -0
  167. package/dist/MonthPicker/MonthPickerHeading.js +42 -0
  168. package/dist/MonthPicker/MonthPickerHeading.js.map +1 -0
  169. package/dist/MonthPicker/MonthPickerNext.cjs +68 -0
  170. package/dist/MonthPicker/MonthPickerNext.cjs.map +1 -0
  171. package/dist/MonthPicker/MonthPickerNext.js +62 -0
  172. package/dist/MonthPicker/MonthPickerNext.js.map +1 -0
  173. package/dist/MonthPicker/MonthPickerPrev.cjs +68 -0
  174. package/dist/MonthPicker/MonthPickerPrev.cjs.map +1 -0
  175. package/dist/MonthPicker/MonthPickerPrev.js +62 -0
  176. package/dist/MonthPicker/MonthPickerPrev.js.map +1 -0
  177. package/dist/MonthPicker/MonthPickerRoot.cjs +281 -0
  178. package/dist/MonthPicker/MonthPickerRoot.cjs.map +1 -0
  179. package/dist/MonthPicker/MonthPickerRoot.js +269 -0
  180. package/dist/MonthPicker/MonthPickerRoot.js.map +1 -0
  181. package/dist/MonthPicker/useMonthPicker.cjs +148 -0
  182. package/dist/MonthPicker/useMonthPicker.cjs.map +1 -0
  183. package/dist/MonthPicker/useMonthPicker.js +136 -0
  184. package/dist/MonthPicker/useMonthPicker.js.map +1 -0
  185. package/dist/MonthRangePicker/MonthRangePickerCell.cjs +59 -0
  186. package/dist/MonthRangePicker/MonthRangePickerCell.cjs.map +1 -0
  187. package/dist/MonthRangePicker/MonthRangePickerCell.js +53 -0
  188. package/dist/MonthRangePicker/MonthRangePickerCell.js.map +1 -0
  189. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.cjs +258 -0
  190. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.cjs.map +1 -0
  191. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.js +252 -0
  192. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.js.map +1 -0
  193. package/dist/MonthRangePicker/MonthRangePickerGrid.cjs +59 -0
  194. package/dist/MonthRangePicker/MonthRangePickerGrid.cjs.map +1 -0
  195. package/dist/MonthRangePicker/MonthRangePickerGrid.js +53 -0
  196. package/dist/MonthRangePicker/MonthRangePickerGrid.js.map +1 -0
  197. package/dist/MonthRangePicker/MonthRangePickerGridBody.cjs +41 -0
  198. package/dist/MonthRangePicker/MonthRangePickerGridBody.cjs.map +1 -0
  199. package/dist/MonthRangePicker/MonthRangePickerGridBody.js +35 -0
  200. package/dist/MonthRangePicker/MonthRangePickerGridBody.js.map +1 -0
  201. package/dist/MonthRangePicker/MonthRangePickerGridRow.cjs +41 -0
  202. package/dist/MonthRangePicker/MonthRangePickerGridRow.cjs.map +1 -0
  203. package/dist/MonthRangePicker/MonthRangePickerGridRow.js +35 -0
  204. package/dist/MonthRangePicker/MonthRangePickerGridRow.js.map +1 -0
  205. package/dist/MonthRangePicker/MonthRangePickerHeader.cjs +41 -0
  206. package/dist/MonthRangePicker/MonthRangePickerHeader.cjs.map +1 -0
  207. package/dist/MonthRangePicker/MonthRangePickerHeader.js +35 -0
  208. package/dist/MonthRangePicker/MonthRangePickerHeader.js.map +1 -0
  209. package/dist/MonthRangePicker/MonthRangePickerHeading.cjs +48 -0
  210. package/dist/MonthRangePicker/MonthRangePickerHeading.cjs.map +1 -0
  211. package/dist/MonthRangePicker/MonthRangePickerHeading.js +42 -0
  212. package/dist/MonthRangePicker/MonthRangePickerHeading.js.map +1 -0
  213. package/dist/MonthRangePicker/MonthRangePickerNext.cjs +68 -0
  214. package/dist/MonthRangePicker/MonthRangePickerNext.cjs.map +1 -0
  215. package/dist/MonthRangePicker/MonthRangePickerNext.js +62 -0
  216. package/dist/MonthRangePicker/MonthRangePickerNext.js.map +1 -0
  217. package/dist/MonthRangePicker/MonthRangePickerPrev.cjs +68 -0
  218. package/dist/MonthRangePicker/MonthRangePickerPrev.cjs.map +1 -0
  219. package/dist/MonthRangePicker/MonthRangePickerPrev.js +62 -0
  220. package/dist/MonthRangePicker/MonthRangePickerPrev.js.map +1 -0
  221. package/dist/MonthRangePicker/MonthRangePickerRoot.cjs +347 -0
  222. package/dist/MonthRangePicker/MonthRangePickerRoot.cjs.map +1 -0
  223. package/dist/MonthRangePicker/MonthRangePickerRoot.js +335 -0
  224. package/dist/MonthRangePicker/MonthRangePickerRoot.js.map +1 -0
  225. package/dist/MonthRangePicker/useRangeMonthPicker.cjs +128 -0
  226. package/dist/MonthRangePicker/useRangeMonthPicker.cjs.map +1 -0
  227. package/dist/MonthRangePicker/useRangeMonthPicker.js +122 -0
  228. package/dist/MonthRangePicker/useRangeMonthPicker.js.map +1 -0
  229. package/dist/NavigationMenu/NavigationMenuItem.js +3 -3
  230. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  231. package/dist/NumberField/NumberFieldRoot.cjs +3 -2
  232. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  233. package/dist/NumberField/NumberFieldRoot.js +3 -2
  234. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  235. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  236. package/dist/Progress/ProgressRoot.js.map +1 -1
  237. package/dist/RadioGroup/RadioGroupRoot.cjs +1 -1
  238. package/dist/RadioGroup/RadioGroupRoot.js +1 -1
  239. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +8 -2
  240. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  241. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +8 -2
  242. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  243. package/dist/RangeCalendar/RangeCalendarGrid.cjs +2 -1
  244. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  245. package/dist/RangeCalendar/RangeCalendarGrid.js +2 -1
  246. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  247. package/dist/RangeCalendar/RangeCalendarNext.cjs +9 -5
  248. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  249. package/dist/RangeCalendar/RangeCalendarNext.js +9 -5
  250. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  251. package/dist/RangeCalendar/RangeCalendarPrev.cjs +9 -5
  252. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  253. package/dist/RangeCalendar/RangeCalendarPrev.js +9 -5
  254. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  255. package/dist/RangeCalendar/RangeCalendarRoot.cjs +31 -17
  256. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  257. package/dist/RangeCalendar/RangeCalendarRoot.js +32 -18
  258. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  259. package/dist/RangeCalendar/useRangeCalendar.cjs +35 -6
  260. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  261. package/dist/RangeCalendar/useRangeCalendar.js +35 -6
  262. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  263. package/dist/Splitter/SplitterGroup.cjs +136 -26
  264. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  265. package/dist/Splitter/SplitterGroup.js +136 -26
  266. package/dist/Splitter/SplitterGroup.js.map +1 -1
  267. package/dist/Splitter/SplitterPanel.cjs +7 -2
  268. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  269. package/dist/Splitter/SplitterPanel.js +7 -2
  270. package/dist/Splitter/SplitterPanel.js.map +1 -1
  271. package/dist/Switch/SwitchRoot.cjs +23 -9
  272. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  273. package/dist/Switch/SwitchRoot.js +23 -9
  274. package/dist/Switch/SwitchRoot.js.map +1 -1
  275. package/dist/Switch/SwitchThumb.cjs +1 -1
  276. package/dist/Switch/SwitchThumb.cjs.map +1 -1
  277. package/dist/Switch/SwitchThumb.js +1 -1
  278. package/dist/Switch/SwitchThumb.js.map +1 -1
  279. package/dist/TimeField/TimeFieldRoot.cjs +1 -1
  280. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  281. package/dist/TimeField/TimeFieldRoot.js +1 -1
  282. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  283. package/dist/TimeRangeField/TimeRangeFieldInput.cjs +102 -0
  284. package/dist/TimeRangeField/TimeRangeFieldInput.cjs.map +1 -0
  285. package/dist/TimeRangeField/TimeRangeFieldInput.js +96 -0
  286. package/dist/TimeRangeField/TimeRangeFieldInput.js.map +1 -0
  287. package/dist/TimeRangeField/TimeRangeFieldRoot.cjs +402 -0
  288. package/dist/TimeRangeField/TimeRangeFieldRoot.cjs.map +1 -0
  289. package/dist/TimeRangeField/TimeRangeFieldRoot.js +390 -0
  290. package/dist/TimeRangeField/TimeRangeFieldRoot.js.map +1 -0
  291. package/dist/Toast/ToastAnnounce.cjs +4 -1
  292. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  293. package/dist/Toast/ToastAnnounce.js +4 -1
  294. package/dist/Toast/ToastAnnounce.js.map +1 -1
  295. package/dist/ToggleGroup/ToggleGroupRoot.cjs +1 -1
  296. package/dist/ToggleGroup/ToggleGroupRoot.js +1 -1
  297. package/dist/Tooltip/TooltipContent.cjs +1 -2
  298. package/dist/Tooltip/TooltipContent.cjs.map +1 -1
  299. package/dist/Tooltip/TooltipContent.js +1 -2
  300. package/dist/Tooltip/TooltipContent.js.map +1 -1
  301. package/dist/Tooltip/TooltipContentImpl.cjs +25 -18
  302. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  303. package/dist/Tooltip/TooltipContentImpl.js +25 -18
  304. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  305. package/dist/Tooltip/TooltipProvider.cjs +7 -2
  306. package/dist/Tooltip/TooltipProvider.cjs.map +1 -1
  307. package/dist/Tooltip/TooltipProvider.js +7 -2
  308. package/dist/Tooltip/TooltipProvider.js.map +1 -1
  309. package/dist/YearPicker/YearPickerCell.cjs +59 -0
  310. package/dist/YearPicker/YearPickerCell.cjs.map +1 -0
  311. package/dist/YearPicker/YearPickerCell.js +53 -0
  312. package/dist/YearPicker/YearPickerCell.js.map +1 -0
  313. package/dist/YearPicker/YearPickerCellTrigger.cjs +197 -0
  314. package/dist/YearPicker/YearPickerCellTrigger.cjs.map +1 -0
  315. package/dist/YearPicker/YearPickerCellTrigger.js +191 -0
  316. package/dist/YearPicker/YearPickerCellTrigger.js.map +1 -0
  317. package/dist/YearPicker/YearPickerGrid.cjs +59 -0
  318. package/dist/YearPicker/YearPickerGrid.cjs.map +1 -0
  319. package/dist/YearPicker/YearPickerGrid.js +53 -0
  320. package/dist/YearPicker/YearPickerGrid.js.map +1 -0
  321. package/dist/YearPicker/YearPickerGridBody.cjs +41 -0
  322. package/dist/YearPicker/YearPickerGridBody.cjs.map +1 -0
  323. package/dist/YearPicker/YearPickerGridBody.js +35 -0
  324. package/dist/YearPicker/YearPickerGridBody.js.map +1 -0
  325. package/dist/YearPicker/YearPickerGridRow.cjs +41 -0
  326. package/dist/YearPicker/YearPickerGridRow.cjs.map +1 -0
  327. package/dist/YearPicker/YearPickerGridRow.js +35 -0
  328. package/dist/YearPicker/YearPickerGridRow.js.map +1 -0
  329. package/dist/YearPicker/YearPickerHeader.cjs +41 -0
  330. package/dist/YearPicker/YearPickerHeader.cjs.map +1 -0
  331. package/dist/YearPicker/YearPickerHeader.js +35 -0
  332. package/dist/YearPicker/YearPickerHeader.js.map +1 -0
  333. package/dist/YearPicker/YearPickerHeading.cjs +48 -0
  334. package/dist/YearPicker/YearPickerHeading.cjs.map +1 -0
  335. package/dist/YearPicker/YearPickerHeading.js +42 -0
  336. package/dist/YearPicker/YearPickerHeading.js.map +1 -0
  337. package/dist/YearPicker/YearPickerNext.cjs +68 -0
  338. package/dist/YearPicker/YearPickerNext.cjs.map +1 -0
  339. package/dist/YearPicker/YearPickerNext.js +62 -0
  340. package/dist/YearPicker/YearPickerNext.js.map +1 -0
  341. package/dist/YearPicker/YearPickerPrev.cjs +68 -0
  342. package/dist/YearPicker/YearPickerPrev.cjs.map +1 -0
  343. package/dist/YearPicker/YearPickerPrev.js +62 -0
  344. package/dist/YearPicker/YearPickerPrev.js.map +1 -0
  345. package/dist/YearPicker/YearPickerRoot.cjs +287 -0
  346. package/dist/YearPicker/YearPickerRoot.cjs.map +1 -0
  347. package/dist/YearPicker/YearPickerRoot.js +275 -0
  348. package/dist/YearPicker/YearPickerRoot.js.map +1 -0
  349. package/dist/YearPicker/useYearPicker.cjs +180 -0
  350. package/dist/YearPicker/useYearPicker.cjs.map +1 -0
  351. package/dist/YearPicker/useYearPicker.js +168 -0
  352. package/dist/YearPicker/useYearPicker.js.map +1 -0
  353. package/dist/YearRangePicker/YearRangePickerCell.cjs +59 -0
  354. package/dist/YearRangePicker/YearRangePickerCell.cjs.map +1 -0
  355. package/dist/YearRangePicker/YearRangePickerCell.js +53 -0
  356. package/dist/YearRangePicker/YearRangePickerCell.js.map +1 -0
  357. package/dist/YearRangePicker/YearRangePickerCellTrigger.cjs +256 -0
  358. package/dist/YearRangePicker/YearRangePickerCellTrigger.cjs.map +1 -0
  359. package/dist/YearRangePicker/YearRangePickerCellTrigger.js +250 -0
  360. package/dist/YearRangePicker/YearRangePickerCellTrigger.js.map +1 -0
  361. package/dist/YearRangePicker/YearRangePickerGrid.cjs +59 -0
  362. package/dist/YearRangePicker/YearRangePickerGrid.cjs.map +1 -0
  363. package/dist/YearRangePicker/YearRangePickerGrid.js +53 -0
  364. package/dist/YearRangePicker/YearRangePickerGrid.js.map +1 -0
  365. package/dist/YearRangePicker/YearRangePickerGridBody.cjs +41 -0
  366. package/dist/YearRangePicker/YearRangePickerGridBody.cjs.map +1 -0
  367. package/dist/YearRangePicker/YearRangePickerGridBody.js +35 -0
  368. package/dist/YearRangePicker/YearRangePickerGridBody.js.map +1 -0
  369. package/dist/YearRangePicker/YearRangePickerGridRow.cjs +41 -0
  370. package/dist/YearRangePicker/YearRangePickerGridRow.cjs.map +1 -0
  371. package/dist/YearRangePicker/YearRangePickerGridRow.js +35 -0
  372. package/dist/YearRangePicker/YearRangePickerGridRow.js.map +1 -0
  373. package/dist/YearRangePicker/YearRangePickerHeader.cjs +41 -0
  374. package/dist/YearRangePicker/YearRangePickerHeader.cjs.map +1 -0
  375. package/dist/YearRangePicker/YearRangePickerHeader.js +35 -0
  376. package/dist/YearRangePicker/YearRangePickerHeader.js.map +1 -0
  377. package/dist/YearRangePicker/YearRangePickerHeading.cjs +48 -0
  378. package/dist/YearRangePicker/YearRangePickerHeading.cjs.map +1 -0
  379. package/dist/YearRangePicker/YearRangePickerHeading.js +42 -0
  380. package/dist/YearRangePicker/YearRangePickerHeading.js.map +1 -0
  381. package/dist/YearRangePicker/YearRangePickerNext.cjs +68 -0
  382. package/dist/YearRangePicker/YearRangePickerNext.cjs.map +1 -0
  383. package/dist/YearRangePicker/YearRangePickerNext.js +62 -0
  384. package/dist/YearRangePicker/YearRangePickerNext.js.map +1 -0
  385. package/dist/YearRangePicker/YearRangePickerPrev.cjs +68 -0
  386. package/dist/YearRangePicker/YearRangePickerPrev.cjs.map +1 -0
  387. package/dist/YearRangePicker/YearRangePickerPrev.js +62 -0
  388. package/dist/YearRangePicker/YearRangePickerPrev.js.map +1 -0
  389. package/dist/YearRangePicker/YearRangePickerRoot.cjs +350 -0
  390. package/dist/YearRangePicker/YearRangePickerRoot.cjs.map +1 -0
  391. package/dist/YearRangePicker/YearRangePickerRoot.js +338 -0
  392. package/dist/YearRangePicker/YearRangePickerRoot.js.map +1 -0
  393. package/dist/YearRangePicker/useRangeYearPicker.cjs +128 -0
  394. package/dist/YearRangePicker/useRangeYearPicker.cjs.map +1 -0
  395. package/dist/YearRangePicker/useRangeYearPicker.js +122 -0
  396. package/dist/YearRangePicker/useRangeYearPicker.js.map +1 -0
  397. package/dist/color/channel.cjs +378 -0
  398. package/dist/color/channel.cjs.map +1 -0
  399. package/dist/color/channel.js +349 -0
  400. package/dist/color/channel.js.map +1 -0
  401. package/dist/color/convert.cjs +285 -0
  402. package/dist/color/convert.cjs.map +1 -0
  403. package/dist/color/convert.js +237 -0
  404. package/dist/color/convert.js.map +1 -0
  405. package/dist/color/gradient.cjs +377 -0
  406. package/dist/color/gradient.cjs.map +1 -0
  407. package/dist/color/gradient.js +354 -0
  408. package/dist/color/gradient.js.map +1 -0
  409. package/dist/color/parse.cjs +113 -0
  410. package/dist/color/parse.cjs.map +1 -0
  411. package/dist/color/parse.js +95 -0
  412. package/dist/color/parse.js.map +1 -0
  413. package/dist/color/utils.cjs +112 -0
  414. package/dist/color/utils.cjs.map +1 -0
  415. package/dist/color/utils.js +100 -0
  416. package/dist/color/utils.js.map +1 -0
  417. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs +11 -7
  418. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs.map +1 -1
  419. package/dist/composables/useWindowSplitterPanelGroupBehavior.js +11 -7
  420. package/dist/composables/useWindowSplitterPanelGroupBehavior.js.map +1 -1
  421. package/dist/constant/components.cjs +87 -1
  422. package/dist/constant/components.cjs.map +1 -1
  423. package/dist/constant/components.js +87 -1
  424. package/dist/constant/components.js.map +1 -1
  425. package/dist/constant.d.cts +12 -1
  426. package/dist/constant.d.cts.map +1 -1
  427. package/dist/constant.d.ts +12 -1
  428. package/dist/constant.d.ts.map +1 -1
  429. package/dist/date/calendar.cjs +70 -9
  430. package/dist/date/calendar.cjs.map +1 -1
  431. package/dist/date/calendar.js +54 -11
  432. package/dist/date/calendar.js.map +1 -1
  433. package/dist/date/comparators.cjs +129 -0
  434. package/dist/date/comparators.cjs.map +1 -1
  435. package/dist/date/comparators.js +76 -1
  436. package/dist/date/comparators.js.map +1 -1
  437. package/dist/date/useDateField.cjs +1 -2
  438. package/dist/date/useDateField.cjs.map +1 -1
  439. package/dist/date/useDateField.js +1 -2
  440. package/dist/date/useDateField.js.map +1 -1
  441. package/dist/date.cjs +12 -0
  442. package/dist/date.d.cts +2 -2
  443. package/dist/date.d.ts +2 -2
  444. package/dist/date.js +3 -3
  445. package/dist/index.cjs +216 -46
  446. package/dist/index.d.cts +3 -8829
  447. package/dist/index.d.ts +3 -8829
  448. package/dist/index.js +116 -47
  449. package/dist/index2.d.cts +66 -3
  450. package/dist/index2.d.cts.map +1 -1
  451. package/dist/index2.d.ts +66 -3
  452. package/dist/index2.d.ts.map +1 -1
  453. package/dist/index3.d.cts +11061 -0
  454. package/dist/index3.d.cts.map +1 -0
  455. package/dist/index3.d.ts +11061 -0
  456. package/dist/index3.d.ts.map +1 -0
  457. package/dist/internal.cjs +81 -0
  458. package/dist/internal.d.cts +22 -0
  459. package/dist/internal.d.cts.map +1 -0
  460. package/dist/internal.d.ts +22 -0
  461. package/dist/internal.d.ts.map +1 -0
  462. package/dist/internal.js +64 -0
  463. package/dist/internal2.cjs +0 -0
  464. package/dist/internal2.js +0 -0
  465. package/dist/namespaced/index.cjs +33 -1
  466. package/dist/namespaced/index.d.cts +32 -4
  467. package/dist/namespaced/index.d.mts +32 -4
  468. package/dist/namespaced/index.mjs +32 -4
  469. package/dist/shared/useArrowNavigation.cjs +4 -2
  470. package/dist/shared/useArrowNavigation.cjs.map +1 -1
  471. package/dist/shared/useArrowNavigation.js +4 -2
  472. package/dist/shared/useArrowNavigation.js.map +1 -1
  473. package/dist/shared/useForwardExpose.cjs +7 -3
  474. package/dist/shared/useForwardExpose.cjs.map +1 -1
  475. package/dist/shared/useForwardExpose.js +8 -4
  476. package/dist/shared/useForwardExpose.js.map +1 -1
  477. package/dist/shared/useId.cjs +7 -4
  478. package/dist/shared/useId.cjs.map +1 -1
  479. package/dist/shared/useId.js +7 -4
  480. package/dist/shared/useId.js.map +1 -1
  481. package/dist/utils/storage.cjs +7 -1
  482. package/dist/utils/storage.cjs.map +1 -1
  483. package/dist/utils/storage.js +7 -1
  484. package/dist/utils/storage.js.map +1 -1
  485. package/dist/utils/units.cjs +101 -0
  486. package/dist/utils/units.cjs.map +1 -0
  487. package/dist/utils/units.js +83 -0
  488. package/dist/utils/units.js.map +1 -0
  489. package/package.json +21 -13
  490. package/src/Autocomplete/AutocompleteInput.vue +112 -0
  491. package/src/Autocomplete/AutocompleteRoot.vue +272 -0
  492. package/src/Autocomplete/index.ts +72 -0
  493. package/src/Calendar/CalendarCellTrigger.vue +10 -2
  494. package/src/Calendar/CalendarNext.vue +8 -2
  495. package/src/Calendar/CalendarPrev.vue +8 -2
  496. package/src/Calendar/CalendarRoot.vue +20 -8
  497. package/src/Calendar/useCalendar.ts +43 -3
  498. package/src/Checkbox/CheckboxRoot.vue +32 -13
  499. package/src/ColorArea/ColorAreaArea.vue +145 -0
  500. package/src/ColorArea/ColorAreaRoot.vue +255 -0
  501. package/src/ColorArea/ColorAreaThumb.vue +75 -0
  502. package/src/ColorArea/index.ts +14 -0
  503. package/src/ColorArea/utils.ts +24 -0
  504. package/src/ColorField/ColorFieldInput.vue +133 -0
  505. package/src/ColorField/ColorFieldRoot.vue +326 -0
  506. package/src/ColorField/index.ts +10 -0
  507. package/src/ColorSlider/ColorSliderRoot.vue +224 -0
  508. package/src/ColorSlider/ColorSliderThumb.vue +54 -0
  509. package/src/ColorSlider/ColorSliderTrack.vue +36 -0
  510. package/src/ColorSlider/index.ts +14 -0
  511. package/src/ColorSlider/utils.ts +39 -0
  512. package/src/ColorSwatch/ColorSwatch.vue +97 -0
  513. package/src/ColorSwatch/index.ts +4 -0
  514. package/src/ColorSwatchPicker/ColorSwatchPickerItem.vue +60 -0
  515. package/src/ColorSwatchPicker/ColorSwatchPickerItemIndicator.vue +17 -0
  516. package/src/ColorSwatchPicker/ColorSwatchPickerItemSwatch.vue +21 -0
  517. package/src/ColorSwatchPicker/ColorSwatchPickerRoot.vue +50 -0
  518. package/src/ColorSwatchPicker/index.ts +17 -0
  519. package/src/Combobox/ComboboxContentImpl.vue +14 -1
  520. package/src/DateField/DateFieldRoot.vue +1 -1
  521. package/src/DatePicker/DatePickerRoot.vue +4 -4
  522. package/src/DateRangeField/DateRangeFieldRoot.vue +11 -4
  523. package/src/DateRangePicker/DateRangePickerRoot.vue +5 -5
  524. package/src/DismissableLayer/utils.ts +1 -2
  525. package/src/DropdownMenu/DropdownMenuFilter.vue +119 -0
  526. package/src/DropdownMenu/index.ts +5 -0
  527. package/src/Menu/MenuContentImpl.vue +68 -2
  528. package/src/Menu/MenuItemImpl.vue +11 -6
  529. package/src/Menu/MenuSubContent.vue +14 -3
  530. package/src/Menu/MenuSubTrigger.vue +13 -1
  531. package/src/MonthPicker/MonthPickerCell.vue +30 -0
  532. package/src/MonthPicker/MonthPickerCellTrigger.vue +214 -0
  533. package/src/MonthPicker/MonthPickerGrid.vue +32 -0
  534. package/src/MonthPicker/MonthPickerGridBody.vue +17 -0
  535. package/src/MonthPicker/MonthPickerGridRow.vue +20 -0
  536. package/src/MonthPicker/MonthPickerHeader.vue +17 -0
  537. package/src/MonthPicker/MonthPickerHeading.vue +35 -0
  538. package/src/MonthPicker/MonthPickerNext.vue +52 -0
  539. package/src/MonthPicker/MonthPickerPrev.vue +52 -0
  540. package/src/MonthPicker/MonthPickerRoot.vue +311 -0
  541. package/src/MonthPicker/index.ts +42 -0
  542. package/src/MonthPicker/useMonthPicker.ts +193 -0
  543. package/src/MonthRangePicker/MonthRangePickerCell.vue +30 -0
  544. package/src/MonthRangePicker/MonthRangePickerCellTrigger.vue +309 -0
  545. package/src/MonthRangePicker/MonthRangePickerGrid.vue +32 -0
  546. package/src/MonthRangePicker/MonthRangePickerGridBody.vue +17 -0
  547. package/src/MonthRangePicker/MonthRangePickerGridRow.vue +20 -0
  548. package/src/MonthRangePicker/MonthRangePickerHeader.vue +17 -0
  549. package/src/MonthRangePicker/MonthRangePickerHeading.vue +35 -0
  550. package/src/MonthRangePicker/MonthRangePickerNext.vue +52 -0
  551. package/src/MonthRangePicker/MonthRangePickerPrev.vue +52 -0
  552. package/src/MonthRangePicker/MonthRangePickerRoot.vue +391 -0
  553. package/src/MonthRangePicker/index.ts +42 -0
  554. package/src/MonthRangePicker/useRangeMonthPicker.ts +165 -0
  555. package/src/NumberField/NumberFieldRoot.vue +2 -1
  556. package/src/Progress/ProgressRoot.vue +3 -1
  557. package/src/RadioGroup/RadioGroupRoot.vue +1 -1
  558. package/src/RangeCalendar/RangeCalendarCellTrigger.vue +13 -3
  559. package/src/RangeCalendar/RangeCalendarGrid.vue +1 -0
  560. package/src/RangeCalendar/RangeCalendarNext.vue +10 -4
  561. package/src/RangeCalendar/RangeCalendarPrev.vue +10 -4
  562. package/src/RangeCalendar/RangeCalendarRoot.vue +48 -32
  563. package/src/RangeCalendar/useRangeCalendar.ts +41 -16
  564. package/src/Splitter/SplitterGroup.vue +218 -49
  565. package/src/Splitter/SplitterPanel.vue +11 -6
  566. package/src/Splitter/utils/composables/useWindowSplitterPanelGroupBehavior.ts +16 -6
  567. package/src/Splitter/utils/storage.ts +14 -0
  568. package/src/Splitter/utils/units.ts +161 -0
  569. package/src/Splitter/utils/validation.ts +3 -2
  570. package/src/Switch/SwitchRoot.vue +36 -19
  571. package/src/Switch/SwitchThumb.vue +1 -1
  572. package/src/TimeField/TimeFieldRoot.vue +0 -3
  573. package/src/TimeRangeField/TimeRangeFieldInput.vue +74 -0
  574. package/src/TimeRangeField/TimeRangeFieldRoot.vue +473 -0
  575. package/src/TimeRangeField/index.ts +2 -0
  576. package/src/Toast/ToastAnnounce.vue +4 -1
  577. package/src/Tooltip/TooltipContent.vue +1 -3
  578. package/src/Tooltip/TooltipContentImpl.vue +18 -10
  579. package/src/Tooltip/TooltipProvider.vue +8 -1
  580. package/src/YearPicker/YearPickerCell.vue +30 -0
  581. package/src/YearPicker/YearPickerCellTrigger.vue +218 -0
  582. package/src/YearPicker/YearPickerGrid.vue +32 -0
  583. package/src/YearPicker/YearPickerGridBody.vue +17 -0
  584. package/src/YearPicker/YearPickerGridRow.vue +20 -0
  585. package/src/YearPicker/YearPickerHeader.vue +17 -0
  586. package/src/YearPicker/YearPickerHeading.vue +35 -0
  587. package/src/YearPicker/YearPickerNext.vue +52 -0
  588. package/src/YearPicker/YearPickerPrev.vue +52 -0
  589. package/src/YearPicker/YearPickerRoot.vue +314 -0
  590. package/src/YearPicker/index.ts +42 -0
  591. package/src/YearPicker/useYearPicker.ts +202 -0
  592. package/src/YearRangePicker/YearRangePickerCell.vue +30 -0
  593. package/src/YearRangePicker/YearRangePickerCellTrigger.vue +311 -0
  594. package/src/YearRangePicker/YearRangePickerGrid.vue +32 -0
  595. package/src/YearRangePicker/YearRangePickerGridBody.vue +17 -0
  596. package/src/YearRangePicker/YearRangePickerGridRow.vue +20 -0
  597. package/src/YearRangePicker/YearRangePickerHeader.vue +17 -0
  598. package/src/YearRangePicker/YearRangePickerHeading.vue +35 -0
  599. package/src/YearRangePicker/YearRangePickerNext.vue +52 -0
  600. package/src/YearRangePicker/YearRangePickerPrev.vue +52 -0
  601. package/src/YearRangePicker/YearRangePickerRoot.vue +391 -0
  602. package/src/YearRangePicker/index.ts +42 -0
  603. package/src/YearRangePicker/useRangeYearPicker.ts +165 -0
  604. package/src/date/calendar.ts +71 -18
  605. package/src/date/comparators.ts +97 -0
  606. package/src/index.ts +41 -0
  607. package/src/internal.ts +7 -0
  608. package/src/shared/color/channel.ts +424 -0
  609. package/src/shared/color/convert.ts +293 -0
  610. package/src/shared/color/gradient.ts +347 -0
  611. package/src/shared/color/index.ts +35 -0
  612. package/src/shared/color/parse.ts +140 -0
  613. package/src/shared/color/types.ts +40 -0
  614. package/src/shared/color/utils.ts +143 -0
  615. package/src/shared/date/types.ts +6 -0
  616. package/src/shared/date/useDateField.ts +40 -40
  617. package/src/shared/macro.ts +11 -0
  618. package/src/shared/useArrowNavigation.ts +8 -2
  619. package/src/shared/useForwardExpose.ts +21 -6
  620. package/src/shared/useId.ts +6 -7
  621. package/dist/index.d.cts.map +0 -1
  622. package/dist/index.d.ts.map +0 -1
@@ -0,0 +1,133 @@
1
+ <script lang="ts">
2
+ import type { PrimitiveProps } from '@/Primitive'
3
+
4
+ export interface ColorFieldInputProps extends PrimitiveProps {}
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ import { computed, ref } from 'vue'
9
+ import { Primitive } from '@/Primitive'
10
+ import { injectColorFieldRootContext } from './ColorFieldRoot.vue'
11
+
12
+ const props = withDefaults(defineProps<ColorFieldInputProps>(), {
13
+ as: 'input',
14
+ })
15
+
16
+ const rootContext = injectColorFieldRootContext()
17
+
18
+ const isFocused = ref(false)
19
+
20
+ const inputType = computed(() => {
21
+ return rootContext.channel.value ? 'text' : 'text'
22
+ })
23
+
24
+ const inputMode = computed(() => {
25
+ return rootContext.channel.value ? 'numeric' : 'text'
26
+ })
27
+
28
+ function handleInput(event: Event) {
29
+ const target = event.target as HTMLInputElement
30
+ rootContext.updateValue(target.value)
31
+ }
32
+
33
+ function handleBlur() {
34
+ isFocused.value = false
35
+ rootContext.commit()
36
+ }
37
+
38
+ function handleFocus() {
39
+ isFocused.value = true
40
+ }
41
+
42
+ function handleWheel(event: WheelEvent) {
43
+ if (!isFocused.value)
44
+ return
45
+ rootContext.handleWheel(event)
46
+ }
47
+
48
+ function handleKeydown(event: KeyboardEvent) {
49
+ switch (event.key) {
50
+ case 'ArrowUp':
51
+ event.preventDefault()
52
+ rootContext.increment()
53
+ break
54
+ case 'ArrowDown':
55
+ event.preventDefault()
56
+ rootContext.decrement()
57
+ break
58
+ case 'PageUp':
59
+ event.preventDefault()
60
+ rootContext.incrementPage()
61
+ break
62
+ case 'PageDown':
63
+ event.preventDefault()
64
+ rootContext.decrementPage()
65
+ break
66
+ case 'Home':
67
+ event.preventDefault()
68
+ rootContext.decrementToMin()
69
+ break
70
+ case 'End':
71
+ event.preventDefault()
72
+ rootContext.incrementToMax()
73
+ break
74
+ case 'Enter':
75
+ event.preventDefault()
76
+ rootContext.commit()
77
+ break
78
+ }
79
+ }
80
+
81
+ // Handle numeric key validation for channel mode
82
+ function handleBeforeInput(event: InputEvent) {
83
+ if (!rootContext.channel.value)
84
+ return // No validation for hex mode
85
+
86
+ const target = event.target as HTMLInputElement
87
+ const data = event.data
88
+
89
+ // Allow numbers, decimal point, minus sign
90
+ if (data && !/[\d.-]/.test(data)) {
91
+ event.preventDefault()
92
+ return
93
+ }
94
+
95
+ // Check the resulting value would be valid
96
+ const nextValue = target.value.slice(0, target.selectionStart ?? undefined)
97
+ + (data ?? '')
98
+ + target.value.slice(target.selectionEnd ?? undefined)
99
+
100
+ // Allow empty or partial values while typing
101
+ if (nextValue === '-' || nextValue === '.' || nextValue === '-.')
102
+ return
103
+
104
+ const numValue = parseFloat(nextValue)
105
+ if (isNaN(numValue)) {
106
+ event.preventDefault()
107
+ }
108
+ }
109
+ </script>
110
+
111
+ <template>
112
+ <Primitive
113
+ :as-child="asChild"
114
+ :as="as"
115
+ :type="inputType"
116
+ :inputmode="inputMode"
117
+ :value="rootContext.inputValue.value"
118
+ :placeholder="rootContext.placeholder.value"
119
+ :disabled="rootContext.disabled.value"
120
+ :readonly="rootContext.readonly.value"
121
+ :data-disabled="rootContext.disabled.value ? '' : undefined"
122
+ :data-readonly="rootContext.readonly.value ? '' : undefined"
123
+ :aria-invalid="!rootContext.channel.value ? undefined : undefined"
124
+ @input="handleInput"
125
+ @blur="handleBlur"
126
+ @focus="handleFocus"
127
+ @keydown="handleKeydown"
128
+ @wheel="handleWheel"
129
+ @beforeinput="handleBeforeInput"
130
+ >
131
+ <slot />
132
+ </Primitive>
133
+ </template>
@@ -0,0 +1,326 @@
1
+ <script lang="ts">
2
+ import type { Ref } from 'vue'
3
+ import type { PrimitiveProps } from '@/Primitive'
4
+ import type { Color, ColorChannel, ColorSpace } from '@/shared/color'
5
+ import type { FormFieldProps } from '@/shared/types'
6
+ import { createContext, useFormControl, useForwardExpose, useLocale } from '@/shared'
7
+
8
+ export interface ColorFieldRootProps extends PrimitiveProps, FormFieldProps {
9
+ /** The color value (controlled). Can be a hex string or Color object. */
10
+ modelValue?: string | Color
11
+ /** The default color value (uncontrolled). */
12
+ defaultValue?: string | Color
13
+ /** The color space to operate in when displaying a channel. */
14
+ colorSpace?: ColorSpace
15
+ /** The color channel to display. If not provided, displays hex value. */
16
+ channel?: ColorChannel
17
+ /** Placeholder text when the field is empty. */
18
+ placeholder?: string
19
+ /** When `true`, prevents the user from interacting with the field. */
20
+ disabled?: boolean
21
+ /** When `true`, the field is read-only. */
22
+ readonly?: boolean
23
+ /** When `true`, prevents the value from changing on wheel scroll. */
24
+ disableWheelChange?: boolean
25
+ /** The locale to use for number formatting. */
26
+ locale?: string
27
+ /** Custom step value for increment/decrement. Defaults to channel step or 1 for hex. */
28
+ step?: number
29
+ }
30
+
31
+ export type ColorFieldRootEmits = {
32
+ 'update:modelValue': [value: string]
33
+ 'update:color': [value: Color]
34
+ }
35
+
36
+ export interface ColorFieldRootContext {
37
+ color: Ref<Color>
38
+ inputValue: Ref<string>
39
+ channel: Ref<ColorChannel | undefined>
40
+ colorSpace: Ref<ColorSpace>
41
+ disabled: Ref<boolean>
42
+ readonly: Ref<boolean>
43
+ disableWheelChange: Ref<boolean>
44
+ placeholder: Ref<string | undefined>
45
+ updateValue: (value: string) => void
46
+ commit: () => void
47
+ increment: () => void
48
+ decrement: () => void
49
+ incrementToMax: () => void
50
+ decrementToMin: () => void
51
+ incrementPage: () => void
52
+ decrementPage: () => void
53
+ handleWheel: (event: WheelEvent) => void
54
+ }
55
+
56
+ export const [injectColorFieldRootContext, provideColorFieldRootContext]
57
+ = createContext<ColorFieldRootContext>('ColorFieldRoot')
58
+ </script>
59
+
60
+ <script setup lang="ts">
61
+ import { useVModel } from '@vueuse/core'
62
+ import { computed, ref, toRefs, watch } from 'vue'
63
+ import { Primitive } from '@/Primitive'
64
+ import {
65
+ colorToString,
66
+ convertToRgb,
67
+ getChannelRange,
68
+ getChannelValue,
69
+ isValidColor,
70
+ normalizeColor,
71
+ parseColor,
72
+ setChannelValue,
73
+ } from '@/shared/color'
74
+ import { VisuallyHiddenInput } from '@/VisuallyHidden'
75
+
76
+ defineOptions({
77
+ inheritAttrs: false,
78
+ })
79
+
80
+ const props = withDefaults(defineProps<ColorFieldRootProps>(), {
81
+ colorSpace: 'hsl',
82
+ disabled: false,
83
+ readonly: false,
84
+ disableWheelChange: false,
85
+ defaultValue: '#000000',
86
+ as: 'div',
87
+ })
88
+
89
+ const emits = defineEmits<ColorFieldRootEmits>()
90
+
91
+ const { colorSpace, channel, disabled, readonly, disableWheelChange, placeholder, locale: propLocale, step: stepProp } = toRefs(props)
92
+ const { forwardRef, currentElement } = useForwardExpose()
93
+ const isFormControl = useFormControl(currentElement)
94
+ const locale = useLocale(propLocale)
95
+
96
+ // Normalize the model value
97
+ const modelValue = useVModel(props, 'modelValue', emits, {
98
+ defaultValue: props.defaultValue,
99
+ passive: (props.modelValue === undefined) as false,
100
+ })
101
+
102
+ const color = computed({
103
+ get: () => normalizeColor(modelValue.value ?? '#000000'),
104
+ set: (newColor: Color) => {
105
+ const hexString = colorToString(newColor, 'hex')
106
+ modelValue.value = hexString
107
+ emits('update:color', newColor)
108
+ },
109
+ })
110
+
111
+ // Input value for the text field
112
+ const inputValue = ref('')
113
+ const isEditing = ref(false)
114
+
115
+ // Update input value when color changes (unless user is editing)
116
+ watch(() => color.value, (newColor) => {
117
+ if (!isEditing.value) {
118
+ inputValue.value = formatValue(newColor)
119
+ }
120
+ }, { immediate: true })
121
+
122
+ function formatValue(c: Color): string {
123
+ if (channel.value) {
124
+ const value = getChannelValue(c, channel.value)
125
+ if (channel.value === 'alpha') {
126
+ return String(Math.round(value))
127
+ }
128
+ return String(Math.round(value))
129
+ }
130
+ // Hex mode
131
+ return colorToString(c, 'hex')
132
+ }
133
+
134
+ // The effective step size
135
+ const MIN_HEX_INT = 0x000000
136
+ const MAX_HEX_INT = 0xFFFFFF
137
+ const PAGE_STEP_MULTIPLIER = 10
138
+
139
+ function getStep(): number {
140
+ if (stepProp.value != null)
141
+ return stepProp.value
142
+ if (channel.value)
143
+ return getChannelRange(channel.value).step
144
+ // Hex mode: step by 1 in the integer space (like react-spectrum)
145
+ return 1
146
+ }
147
+
148
+ function updateValue(value: string) {
149
+ inputValue.value = value
150
+ }
151
+
152
+ function commit() {
153
+ isEditing.value = false
154
+
155
+ if (channel.value) {
156
+ // Channel mode - parse as number
157
+ const numValue = parseFloat(inputValue.value)
158
+ if (!isNaN(numValue)) {
159
+ const range = getChannelRange(channel.value)
160
+ const clamped = Math.max(range.min, Math.min(range.max, numValue))
161
+ color.value = setChannelValue(color.value, channel.value, clamped)
162
+ }
163
+ // Reset to formatted value
164
+ inputValue.value = formatValue(color.value)
165
+ }
166
+ else {
167
+ // Hex mode - parse as color
168
+ const trimmed = inputValue.value.trim()
169
+ if (isValidColor(trimmed)) {
170
+ color.value = parseColor(trimmed)
171
+ }
172
+ // Reset to formatted value
173
+ inputValue.value = formatValue(color.value)
174
+ }
175
+ }
176
+
177
+ function addHexValue(delta: number) {
178
+ const intDelta = Math.trunc(delta)
179
+ const hexInt = color.value.space === 'rgb'
180
+ ? ((Math.round((color.value as any).r) << 16) | (Math.round((color.value as any).g) << 8) | Math.round((color.value as any).b))
181
+ : (() => {
182
+ const rgb = convertToRgb(color.value)
183
+ return (Math.round(rgb.r) << 16) | (Math.round(rgb.g) << 8) | Math.round(rgb.b)
184
+ })()
185
+ const clamped = Math.min(Math.max(hexInt + intDelta, MIN_HEX_INT), MAX_HEX_INT)
186
+ const hex = `#${clamped.toString(16).padStart(6, '0')}`
187
+ color.value = parseColor(hex)
188
+ inputValue.value = formatValue(color.value)
189
+ }
190
+
191
+ function increment() {
192
+ if (disabled.value || readonly.value)
193
+ return
194
+ const step = getStep()
195
+ if (channel.value) {
196
+ const currentValue = getChannelValue(color.value, channel.value)
197
+ color.value = setChannelValue(color.value, channel.value, currentValue + step)
198
+ inputValue.value = formatValue(color.value)
199
+ }
200
+ else {
201
+ addHexValue(step)
202
+ }
203
+ }
204
+
205
+ function decrement() {
206
+ if (disabled.value || readonly.value)
207
+ return
208
+ const step = getStep()
209
+ if (channel.value) {
210
+ const currentValue = getChannelValue(color.value, channel.value)
211
+ color.value = setChannelValue(color.value, channel.value, currentValue - step)
212
+ inputValue.value = formatValue(color.value)
213
+ }
214
+ else {
215
+ addHexValue(-step)
216
+ }
217
+ }
218
+
219
+ function incrementPage() {
220
+ if (disabled.value || readonly.value)
221
+ return
222
+ const step = getStep() * PAGE_STEP_MULTIPLIER
223
+ if (channel.value) {
224
+ const currentValue = getChannelValue(color.value, channel.value)
225
+ color.value = setChannelValue(color.value, channel.value, currentValue + step)
226
+ inputValue.value = formatValue(color.value)
227
+ }
228
+ else {
229
+ addHexValue(step)
230
+ }
231
+ }
232
+
233
+ function decrementPage() {
234
+ if (disabled.value || readonly.value)
235
+ return
236
+ const step = getStep() * PAGE_STEP_MULTIPLIER
237
+ if (channel.value) {
238
+ const currentValue = getChannelValue(color.value, channel.value)
239
+ color.value = setChannelValue(color.value, channel.value, currentValue - step)
240
+ inputValue.value = formatValue(color.value)
241
+ }
242
+ else {
243
+ addHexValue(-step)
244
+ }
245
+ }
246
+
247
+ function incrementToMax() {
248
+ if (disabled.value || readonly.value)
249
+ return
250
+ if (channel.value) {
251
+ const range = getChannelRange(channel.value)
252
+ color.value = setChannelValue(color.value, channel.value, range.max)
253
+ inputValue.value = formatValue(color.value)
254
+ }
255
+ else {
256
+ addHexValue(MAX_HEX_INT)
257
+ }
258
+ }
259
+
260
+ function decrementToMin() {
261
+ if (disabled.value || readonly.value)
262
+ return
263
+ if (channel.value) {
264
+ const range = getChannelRange(channel.value)
265
+ color.value = setChannelValue(color.value, channel.value, range.min)
266
+ inputValue.value = formatValue(color.value)
267
+ }
268
+ else {
269
+ addHexValue(-MAX_HEX_INT)
270
+ }
271
+ }
272
+
273
+ function handleWheel(event: WheelEvent) {
274
+ if (disableWheelChange.value || disabled.value || readonly.value)
275
+ return
276
+
277
+ event.preventDefault()
278
+
279
+ if (event.deltaY > 0)
280
+ decrement()
281
+ else
282
+ increment()
283
+ }
284
+
285
+ provideColorFieldRootContext({
286
+ color: computed(() => color.value) as Ref<Color>,
287
+ inputValue,
288
+ channel,
289
+ colorSpace,
290
+ disabled,
291
+ readonly,
292
+ disableWheelChange,
293
+ placeholder,
294
+ updateValue,
295
+ commit,
296
+ increment,
297
+ decrement,
298
+ incrementToMax,
299
+ decrementToMin,
300
+ incrementPage,
301
+ decrementPage,
302
+ handleWheel,
303
+ })
304
+ </script>
305
+
306
+ <template>
307
+ <Primitive
308
+ :ref="forwardRef"
309
+ :as="as"
310
+ :as-child="asChild"
311
+ role="group"
312
+ :data-disabled="disabled ? '' : undefined"
313
+ :data-readonly="readonly ? '' : undefined"
314
+ >
315
+ <slot />
316
+
317
+ <VisuallyHiddenInput
318
+ v-if="isFormControl && name"
319
+ type="text"
320
+ :value="colorToString(color, 'hex')"
321
+ :name="name"
322
+ :disabled="disabled"
323
+ :required="required"
324
+ />
325
+ </Primitive>
326
+ </template>
@@ -0,0 +1,10 @@
1
+ export {
2
+ default as ColorFieldInput,
3
+ type ColorFieldInputProps,
4
+ } from './ColorFieldInput.vue'
5
+ export {
6
+ default as ColorFieldRoot,
7
+ type ColorFieldRootEmits,
8
+ type ColorFieldRootProps,
9
+ injectColorFieldRootContext,
10
+ } from './ColorFieldRoot.vue'
@@ -0,0 +1,224 @@
1
+ <script lang="ts">
2
+ import type { ComputedRef, Ref } from 'vue'
3
+ import type { PrimitiveProps } from '@/Primitive'
4
+ import type { Color, ColorChannel, ColorChannel as ColorChannelType, ColorSpace } from '@/shared/color'
5
+ import type { DataOrientation, Direction, FormFieldProps } from '@/shared/types'
6
+ import { createContext, useDirection, useFormControl, useForwardExpose } from '@/shared'
7
+
8
+ export interface ColorSliderRootProps extends PrimitiveProps, FormFieldProps {
9
+ /** The color value (controlled). Can be a hex string or Color object. */
10
+ modelValue?: string | Color
11
+ /** The default color value (uncontrolled). */
12
+ defaultValue?: string | Color
13
+ /** The color space to operate in. */
14
+ colorSpace?: ColorSpace
15
+ /** The color channel that this slider manipulates. */
16
+ channel: ColorChannel
17
+ /** The orientation of the slider. */
18
+ orientation?: DataOrientation
19
+ /** The reading direction of the slider. */
20
+ dir?: Direction
21
+ /** Whether the slider is visually inverted. */
22
+ inverted?: boolean
23
+ /** When `true`, prevents the user from interacting with the slider. */
24
+ disabled?: boolean
25
+ /** Custom step value for increment/decrement. Defaults to the channel's natural step. */
26
+ step?: number
27
+ }
28
+
29
+ export type ColorSliderRootEmits = {
30
+ 'update:modelValue': [value: string | Color]
31
+ 'update:color': [value: Color]
32
+ 'change': [value: string]
33
+ 'changeEnd': [value: string]
34
+ }
35
+
36
+ export interface ColorSliderRootContext {
37
+ color: Ref<Color>
38
+ channelValue: ComputedRef<number>
39
+ channel: Ref<ColorChannel>
40
+ colorSpace: Ref<ColorSpace>
41
+ orientation: Ref<DataOrientation>
42
+ disabled: Ref<boolean>
43
+ inverted: Ref<boolean>
44
+ min: ComputedRef<number>
45
+ max: ComputedRef<number>
46
+ step: ComputedRef<number>
47
+ }
48
+
49
+ export const [injectColorSliderRootContext, provideColorSliderRootContext]
50
+ = createContext<ColorSliderRootContext>('ColorSliderRoot')
51
+ </script>
52
+
53
+ <script setup lang="ts">
54
+ import { useVModel } from '@vueuse/core'
55
+ import { computed, ref, toRefs, watch } from 'vue'
56
+ import { colorToString, convertToHsb, convertToHsl, convertToRgb, getChannelRange, getChannelValue, normalizeColor, setChannelValue } from '@/shared/color'
57
+ import { SliderRoot } from '@/Slider'
58
+ import { VisuallyHiddenInput } from '@/VisuallyHidden'
59
+
60
+ defineOptions({
61
+ inheritAttrs: false,
62
+ })
63
+
64
+ const props = withDefaults(defineProps<ColorSliderRootProps>(), {
65
+ colorSpace: 'hsl',
66
+ orientation: 'horizontal',
67
+ disabled: false,
68
+ inverted: false,
69
+ defaultValue: '#000000',
70
+ as: 'span',
71
+ })
72
+
73
+ const emits = defineEmits<ColorSliderRootEmits>()
74
+
75
+ const { orientation, disabled, inverted, dir: propDir, channel, colorSpace, step: stepProp } = toRefs(props)
76
+ const dir = useDirection(propDir)
77
+ const { forwardRef, currentElement } = useForwardExpose()
78
+ const isFormControl = useFormControl(currentElement)
79
+
80
+ // Normalize the model value to a Color object
81
+ const modelValue = useVModel(props, 'modelValue', emits, {
82
+ defaultValue: props.defaultValue,
83
+ passive: (props.modelValue === undefined) as false,
84
+ })
85
+
86
+ // Convert a color to the native color space for the given channel.
87
+ // This ensures setChannelValue/getChannelValue operate without cross-space round-trips.
88
+ function toNativeSpace(color: Color, ch: ColorChannelType, space: ColorSpace): Color {
89
+ switch (ch) {
90
+ case 'hue':
91
+ case 'lightness':
92
+ return convertToHsl(color)
93
+ case 'saturation':
94
+ return space === 'hsb' ? convertToHsb(color) : convertToHsl(color)
95
+ case 'brightness':
96
+ return convertToHsb(color)
97
+ case 'red':
98
+ case 'green':
99
+ case 'blue':
100
+ return convertToRgb(color)
101
+ case 'alpha':
102
+ return color
103
+ default:
104
+ return color
105
+ }
106
+ }
107
+
108
+ // Internal color ref that preserves color space precision.
109
+ // Convert to the channel's native space to avoid cross-space round-trips during drag.
110
+ const internalColor = ref<Color>(toNativeSpace(normalizeColor(modelValue.value ?? props.defaultValue ?? '#000000'), channel.value, colorSpace.value))
111
+
112
+ // Check if a color is achromatic (hue information is lost in hex round-trips)
113
+ function isAchromatic(color: Color): boolean {
114
+ const hsl = convertToHsl(color)
115
+ return hsl.s === 0 || hsl.l === 0 || hsl.l >= 100
116
+ }
117
+
118
+ // Sync internal color from external modelValue changes (e.g. parent updates)
119
+ watch(() => modelValue.value, (newVal) => {
120
+ if (newVal == null)
121
+ return
122
+ const parsed = normalizeColor(newVal)
123
+ const currentHex = colorToString(internalColor.value, 'hex')
124
+ const newHex = colorToString(parsed, 'hex')
125
+ // Only update if the external value actually changed (avoid overwriting
126
+ // precision during our own drag updates)
127
+ if (currentHex !== newHex) {
128
+ const nativeColor = toNativeSpace(parsed, channel.value, colorSpace.value)
129
+ const currentChannelVal = getChannelValue(internalColor.value, channel.value)
130
+ const newChannelVal = getChannelValue(nativeColor, channel.value)
131
+
132
+ // Preserve this slider's channel value when:
133
+ // 1. Color is achromatic (hue completely lost in hex round-trip)
134
+ // 2. Channel value diff is within 2% of range (8-bit RGB quantization drift)
135
+ // We still update the rest of the color so the track gradient stays correct.
136
+ const range = channelRange.value.max - channelRange.value.min
137
+ const shouldPreserve = (channel.value === 'hue' && isAchromatic(parsed))
138
+ || Math.abs(currentChannelVal - newChannelVal) < range * 0.02
139
+
140
+ if (shouldPreserve) {
141
+ internalColor.value = setChannelValue(nativeColor, channel.value, currentChannelVal)
142
+ }
143
+ else {
144
+ internalColor.value = nativeColor
145
+ }
146
+ }
147
+ })
148
+
149
+ const color = computed({
150
+ get: () => internalColor.value,
151
+ set: (newColor: Color) => {
152
+ internalColor.value = newColor
153
+ const hexString = colorToString(newColor, 'hex')
154
+ modelValue.value = hexString
155
+ emits('update:color', newColor)
156
+ },
157
+ })
158
+
159
+ // Get channel range
160
+ const channelRange = computed(() => getChannelRange(channel.value))
161
+ const min = computed(() => channelRange.value.min)
162
+ const max = computed(() => channelRange.value.max)
163
+ const step = computed(() => stepProp.value ?? channelRange.value.step)
164
+
165
+ // Current channel value
166
+ const channelValue = computed(() => getChannelValue(color.value, channel.value))
167
+
168
+ // Convert channel value to array format for SliderRoot
169
+ const sliderValue = computed({
170
+ get: () => [channelValue.value],
171
+ set: (newValue: number[]) => {
172
+ const clamped = Math.max(min.value, Math.min(max.value, newValue[0]))
173
+ const newColor = setChannelValue(color.value, channel.value, clamped)
174
+ color.value = newColor
175
+ emits('change', colorToString(newColor, 'hex'))
176
+ },
177
+ })
178
+
179
+ function handleValueCommit(values: number[]) {
180
+ emits('changeEnd', colorToString(color.value, 'hex'))
181
+ }
182
+
183
+ provideColorSliderRootContext({
184
+ color: computed(() => color.value) as Ref<Color>,
185
+ channelValue,
186
+ channel,
187
+ colorSpace,
188
+ orientation,
189
+ disabled,
190
+ inverted,
191
+ min,
192
+ max,
193
+ step,
194
+ })
195
+ </script>
196
+
197
+ <template>
198
+ <SliderRoot
199
+ v-bind="$attrs"
200
+ :ref="forwardRef"
201
+ v-model="sliderValue"
202
+ :orientation="orientation"
203
+ :dir="dir"
204
+ :disabled="disabled"
205
+ :inverted="inverted"
206
+ :min="min"
207
+ :max="max"
208
+ :step="step"
209
+ :as="as"
210
+ :as-child="asChild"
211
+ @value-commit="handleValueCommit"
212
+ >
213
+ <slot />
214
+
215
+ <VisuallyHiddenInput
216
+ v-if="isFormControl && name"
217
+ type="text"
218
+ :value="colorToString(color, 'hex')"
219
+ :name="name"
220
+ :disabled="disabled"
221
+ :required="required"
222
+ />
223
+ </SliderRoot>
224
+ </template>