reka-ui 2.8.2 → 2.9.1

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 (644) 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 +8 -5
  10. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  11. package/dist/Calendar/CalendarCellTrigger.js +9 -6
  12. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  13. package/dist/Calendar/CalendarGrid.cjs +3 -3
  14. package/dist/Calendar/CalendarGrid.cjs.map +1 -1
  15. package/dist/Calendar/CalendarGrid.js +4 -4
  16. package/dist/Calendar/CalendarGrid.js.map +1 -1
  17. package/dist/Calendar/CalendarNext.cjs +7 -3
  18. package/dist/Calendar/CalendarNext.cjs.map +1 -1
  19. package/dist/Calendar/CalendarNext.js +7 -3
  20. package/dist/Calendar/CalendarNext.js.map +1 -1
  21. package/dist/Calendar/CalendarPrev.cjs +7 -3
  22. package/dist/Calendar/CalendarPrev.cjs.map +1 -1
  23. package/dist/Calendar/CalendarPrev.js +7 -3
  24. package/dist/Calendar/CalendarPrev.js.map +1 -1
  25. package/dist/Checkbox/CheckboxGroupRoot.cjs +1 -1
  26. package/dist/Checkbox/CheckboxGroupRoot.js +1 -1
  27. package/dist/Checkbox/CheckboxRoot.cjs +21 -10
  28. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  29. package/dist/Checkbox/CheckboxRoot.js +21 -10
  30. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  31. package/dist/ColorArea/ColorAreaArea.cjs +143 -0
  32. package/dist/ColorArea/ColorAreaArea.cjs.map +1 -0
  33. package/dist/ColorArea/ColorAreaArea.js +137 -0
  34. package/dist/ColorArea/ColorAreaArea.js.map +1 -0
  35. package/dist/ColorArea/ColorAreaRoot.cjs +240 -0
  36. package/dist/ColorArea/ColorAreaRoot.cjs.map +1 -0
  37. package/dist/ColorArea/ColorAreaRoot.js +228 -0
  38. package/dist/ColorArea/ColorAreaRoot.js.map +1 -0
  39. package/dist/ColorArea/ColorAreaThumb.cjs +91 -0
  40. package/dist/ColorArea/ColorAreaThumb.cjs.map +1 -0
  41. package/dist/ColorArea/ColorAreaThumb.js +85 -0
  42. package/dist/ColorArea/ColorAreaThumb.js.map +1 -0
  43. package/dist/ColorArea/utils.cjs +32 -0
  44. package/dist/ColorArea/utils.cjs.map +1 -0
  45. package/dist/ColorArea/utils.js +21 -0
  46. package/dist/ColorArea/utils.js.map +1 -0
  47. package/dist/ColorField/ColorFieldInput.cjs +140 -0
  48. package/dist/ColorField/ColorFieldInput.cjs.map +1 -0
  49. package/dist/ColorField/ColorFieldInput.js +134 -0
  50. package/dist/ColorField/ColorFieldInput.js.map +1 -0
  51. package/dist/ColorField/ColorFieldRoot.cjs +281 -0
  52. package/dist/ColorField/ColorFieldRoot.cjs.map +1 -0
  53. package/dist/ColorField/ColorFieldRoot.js +269 -0
  54. package/dist/ColorField/ColorFieldRoot.js.map +1 -0
  55. package/dist/ColorSlider/ColorSliderRoot.cjs +230 -0
  56. package/dist/ColorSlider/ColorSliderRoot.cjs.map +1 -0
  57. package/dist/ColorSlider/ColorSliderRoot.js +218 -0
  58. package/dist/ColorSlider/ColorSliderRoot.js.map +1 -0
  59. package/dist/ColorSlider/ColorSliderThumb.cjs +66 -0
  60. package/dist/ColorSlider/ColorSliderThumb.cjs.map +1 -0
  61. package/dist/ColorSlider/ColorSliderThumb.js +60 -0
  62. package/dist/ColorSlider/ColorSliderThumb.js.map +1 -0
  63. package/dist/ColorSlider/ColorSliderTrack.cjs +55 -0
  64. package/dist/ColorSlider/ColorSliderTrack.cjs.map +1 -0
  65. package/dist/ColorSlider/ColorSliderTrack.js +49 -0
  66. package/dist/ColorSlider/ColorSliderTrack.js.map +1 -0
  67. package/dist/ColorSwatch/ColorSwatch.cjs +106 -0
  68. package/dist/ColorSwatch/ColorSwatch.cjs.map +1 -0
  69. package/dist/ColorSwatch/ColorSwatch.js +100 -0
  70. package/dist/ColorSwatch/ColorSwatch.js.map +1 -0
  71. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.cjs +78 -0
  72. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.cjs.map +1 -0
  73. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.js +66 -0
  74. package/dist/ColorSwatchPicker/ColorSwatchPickerItem.js.map +1 -0
  75. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.cjs +40 -0
  76. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.cjs.map +1 -0
  77. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.js +34 -0
  78. package/dist/ColorSwatchPicker/ColorSwatchPickerItemIndicator.js.map +1 -0
  79. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.cjs +43 -0
  80. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.cjs.map +1 -0
  81. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.js +37 -0
  82. package/dist/ColorSwatchPicker/ColorSwatchPickerItemSwatch.js.map +1 -0
  83. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.cjs +110 -0
  84. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.cjs.map +1 -0
  85. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.js +104 -0
  86. package/dist/ColorSwatchPicker/ColorSwatchPickerRoot.js.map +1 -0
  87. package/dist/Combobox/ComboboxContent.cjs +4 -0
  88. package/dist/Combobox/ComboboxContent.cjs.map +1 -1
  89. package/dist/Combobox/ComboboxContent.js +4 -0
  90. package/dist/Combobox/ComboboxContent.js.map +1 -1
  91. package/dist/Combobox/ComboboxContentImpl.cjs +9 -2
  92. package/dist/Combobox/ComboboxContentImpl.cjs.map +1 -1
  93. package/dist/Combobox/ComboboxContentImpl.js +9 -2
  94. package/dist/Combobox/ComboboxContentImpl.js.map +1 -1
  95. package/dist/Combobox/ComboboxInput.cjs +10 -1
  96. package/dist/Combobox/ComboboxInput.cjs.map +1 -1
  97. package/dist/Combobox/ComboboxInput.js +10 -1
  98. package/dist/Combobox/ComboboxInput.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/DateRangeField/DateRangeFieldRoot.cjs +1 -1
  104. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  105. package/dist/DateRangeField/DateRangeFieldRoot.js +1 -1
  106. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  107. package/dist/DismissableLayer/utils.cjs +1 -0
  108. package/dist/DismissableLayer/utils.cjs.map +1 -1
  109. package/dist/DismissableLayer/utils.js +1 -0
  110. package/dist/DismissableLayer/utils.js.map +1 -1
  111. package/dist/DropdownMenu/DropdownMenuFilter.cjs +134 -0
  112. package/dist/DropdownMenu/DropdownMenuFilter.cjs.map +1 -0
  113. package/dist/DropdownMenu/DropdownMenuFilter.js +128 -0
  114. package/dist/DropdownMenu/DropdownMenuFilter.js.map +1 -0
  115. package/dist/Listbox/ListboxRoot.cjs +1 -1
  116. package/dist/Listbox/ListboxRoot.js +1 -1
  117. package/dist/Listbox/ListboxVirtualizer.cjs +1 -1
  118. package/dist/Listbox/ListboxVirtualizer.js +1 -1
  119. package/dist/Menu/MenuContentImpl.cjs +44 -4
  120. package/dist/Menu/MenuContentImpl.cjs.map +1 -1
  121. package/dist/Menu/MenuContentImpl.js +44 -4
  122. package/dist/Menu/MenuContentImpl.js.map +1 -1
  123. package/dist/Menu/MenuGroup.cjs +13 -2
  124. package/dist/Menu/MenuGroup.cjs.map +1 -1
  125. package/dist/Menu/MenuGroup.js +8 -3
  126. package/dist/Menu/MenuGroup.js.map +1 -1
  127. package/dist/Menu/MenuItemImpl.cjs +11 -5
  128. package/dist/Menu/MenuItemImpl.cjs.map +1 -1
  129. package/dist/Menu/MenuItemImpl.js +12 -6
  130. package/dist/Menu/MenuItemImpl.js.map +1 -1
  131. package/dist/Menu/MenuLabel.cjs +4 -2
  132. package/dist/Menu/MenuLabel.cjs.map +1 -1
  133. package/dist/Menu/MenuLabel.js +5 -3
  134. package/dist/Menu/MenuLabel.js.map +1 -1
  135. package/dist/Menu/MenuSubContent.cjs +8 -2
  136. package/dist/Menu/MenuSubContent.cjs.map +1 -1
  137. package/dist/Menu/MenuSubContent.js +9 -3
  138. package/dist/Menu/MenuSubContent.js.map +1 -1
  139. package/dist/Menu/MenuSubTrigger.cjs +7 -0
  140. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  141. package/dist/Menu/MenuSubTrigger.js +8 -1
  142. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  143. package/dist/MonthPicker/MonthPickerCell.cjs +59 -0
  144. package/dist/MonthPicker/MonthPickerCell.cjs.map +1 -0
  145. package/dist/MonthPicker/MonthPickerCell.js +53 -0
  146. package/dist/MonthPicker/MonthPickerCell.js.map +1 -0
  147. package/dist/MonthPicker/MonthPickerCellTrigger.cjs +197 -0
  148. package/dist/MonthPicker/MonthPickerCellTrigger.cjs.map +1 -0
  149. package/dist/MonthPicker/MonthPickerCellTrigger.js +191 -0
  150. package/dist/MonthPicker/MonthPickerCellTrigger.js.map +1 -0
  151. package/dist/MonthPicker/MonthPickerGrid.cjs +59 -0
  152. package/dist/MonthPicker/MonthPickerGrid.cjs.map +1 -0
  153. package/dist/MonthPicker/MonthPickerGrid.js +53 -0
  154. package/dist/MonthPicker/MonthPickerGrid.js.map +1 -0
  155. package/dist/MonthPicker/MonthPickerGridBody.cjs +41 -0
  156. package/dist/MonthPicker/MonthPickerGridBody.cjs.map +1 -0
  157. package/dist/MonthPicker/MonthPickerGridBody.js +35 -0
  158. package/dist/MonthPicker/MonthPickerGridBody.js.map +1 -0
  159. package/dist/MonthPicker/MonthPickerGridRow.cjs +41 -0
  160. package/dist/MonthPicker/MonthPickerGridRow.cjs.map +1 -0
  161. package/dist/MonthPicker/MonthPickerGridRow.js +35 -0
  162. package/dist/MonthPicker/MonthPickerGridRow.js.map +1 -0
  163. package/dist/MonthPicker/MonthPickerHeader.cjs +41 -0
  164. package/dist/MonthPicker/MonthPickerHeader.cjs.map +1 -0
  165. package/dist/MonthPicker/MonthPickerHeader.js +35 -0
  166. package/dist/MonthPicker/MonthPickerHeader.js.map +1 -0
  167. package/dist/MonthPicker/MonthPickerHeading.cjs +48 -0
  168. package/dist/MonthPicker/MonthPickerHeading.cjs.map +1 -0
  169. package/dist/MonthPicker/MonthPickerHeading.js +42 -0
  170. package/dist/MonthPicker/MonthPickerHeading.js.map +1 -0
  171. package/dist/MonthPicker/MonthPickerNext.cjs +68 -0
  172. package/dist/MonthPicker/MonthPickerNext.cjs.map +1 -0
  173. package/dist/MonthPicker/MonthPickerNext.js +62 -0
  174. package/dist/MonthPicker/MonthPickerNext.js.map +1 -0
  175. package/dist/MonthPicker/MonthPickerPrev.cjs +68 -0
  176. package/dist/MonthPicker/MonthPickerPrev.cjs.map +1 -0
  177. package/dist/MonthPicker/MonthPickerPrev.js +62 -0
  178. package/dist/MonthPicker/MonthPickerPrev.js.map +1 -0
  179. package/dist/MonthPicker/MonthPickerRoot.cjs +281 -0
  180. package/dist/MonthPicker/MonthPickerRoot.cjs.map +1 -0
  181. package/dist/MonthPicker/MonthPickerRoot.js +269 -0
  182. package/dist/MonthPicker/MonthPickerRoot.js.map +1 -0
  183. package/dist/MonthPicker/useMonthPicker.cjs +148 -0
  184. package/dist/MonthPicker/useMonthPicker.cjs.map +1 -0
  185. package/dist/MonthPicker/useMonthPicker.js +136 -0
  186. package/dist/MonthPicker/useMonthPicker.js.map +1 -0
  187. package/dist/MonthRangePicker/MonthRangePickerCell.cjs +59 -0
  188. package/dist/MonthRangePicker/MonthRangePickerCell.cjs.map +1 -0
  189. package/dist/MonthRangePicker/MonthRangePickerCell.js +53 -0
  190. package/dist/MonthRangePicker/MonthRangePickerCell.js.map +1 -0
  191. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.cjs +258 -0
  192. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.cjs.map +1 -0
  193. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.js +252 -0
  194. package/dist/MonthRangePicker/MonthRangePickerCellTrigger.js.map +1 -0
  195. package/dist/MonthRangePicker/MonthRangePickerGrid.cjs +59 -0
  196. package/dist/MonthRangePicker/MonthRangePickerGrid.cjs.map +1 -0
  197. package/dist/MonthRangePicker/MonthRangePickerGrid.js +53 -0
  198. package/dist/MonthRangePicker/MonthRangePickerGrid.js.map +1 -0
  199. package/dist/MonthRangePicker/MonthRangePickerGridBody.cjs +41 -0
  200. package/dist/MonthRangePicker/MonthRangePickerGridBody.cjs.map +1 -0
  201. package/dist/MonthRangePicker/MonthRangePickerGridBody.js +35 -0
  202. package/dist/MonthRangePicker/MonthRangePickerGridBody.js.map +1 -0
  203. package/dist/MonthRangePicker/MonthRangePickerGridRow.cjs +41 -0
  204. package/dist/MonthRangePicker/MonthRangePickerGridRow.cjs.map +1 -0
  205. package/dist/MonthRangePicker/MonthRangePickerGridRow.js +35 -0
  206. package/dist/MonthRangePicker/MonthRangePickerGridRow.js.map +1 -0
  207. package/dist/MonthRangePicker/MonthRangePickerHeader.cjs +41 -0
  208. package/dist/MonthRangePicker/MonthRangePickerHeader.cjs.map +1 -0
  209. package/dist/MonthRangePicker/MonthRangePickerHeader.js +35 -0
  210. package/dist/MonthRangePicker/MonthRangePickerHeader.js.map +1 -0
  211. package/dist/MonthRangePicker/MonthRangePickerHeading.cjs +48 -0
  212. package/dist/MonthRangePicker/MonthRangePickerHeading.cjs.map +1 -0
  213. package/dist/MonthRangePicker/MonthRangePickerHeading.js +42 -0
  214. package/dist/MonthRangePicker/MonthRangePickerHeading.js.map +1 -0
  215. package/dist/MonthRangePicker/MonthRangePickerNext.cjs +68 -0
  216. package/dist/MonthRangePicker/MonthRangePickerNext.cjs.map +1 -0
  217. package/dist/MonthRangePicker/MonthRangePickerNext.js +62 -0
  218. package/dist/MonthRangePicker/MonthRangePickerNext.js.map +1 -0
  219. package/dist/MonthRangePicker/MonthRangePickerPrev.cjs +68 -0
  220. package/dist/MonthRangePicker/MonthRangePickerPrev.cjs.map +1 -0
  221. package/dist/MonthRangePicker/MonthRangePickerPrev.js +62 -0
  222. package/dist/MonthRangePicker/MonthRangePickerPrev.js.map +1 -0
  223. package/dist/MonthRangePicker/MonthRangePickerRoot.cjs +347 -0
  224. package/dist/MonthRangePicker/MonthRangePickerRoot.cjs.map +1 -0
  225. package/dist/MonthRangePicker/MonthRangePickerRoot.js +335 -0
  226. package/dist/MonthRangePicker/MonthRangePickerRoot.js.map +1 -0
  227. package/dist/MonthRangePicker/useRangeMonthPicker.cjs +128 -0
  228. package/dist/MonthRangePicker/useRangeMonthPicker.cjs.map +1 -0
  229. package/dist/MonthRangePicker/useRangeMonthPicker.js +122 -0
  230. package/dist/MonthRangePicker/useRangeMonthPicker.js.map +1 -0
  231. package/dist/NavigationMenu/NavigationMenuItem.js +3 -3
  232. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  233. package/dist/NumberField/NumberFieldRoot.cjs +3 -2
  234. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  235. package/dist/NumberField/NumberFieldRoot.js +3 -2
  236. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  237. package/dist/Progress/ProgressRoot.cjs.map +1 -1
  238. package/dist/Progress/ProgressRoot.js.map +1 -1
  239. package/dist/RadioGroup/RadioGroupRoot.cjs +1 -1
  240. package/dist/RadioGroup/RadioGroupRoot.js +1 -1
  241. package/dist/RangeCalendar/RangeCalendarGrid.cjs +3 -3
  242. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  243. package/dist/RangeCalendar/RangeCalendarGrid.js +4 -4
  244. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  245. package/dist/RangeCalendar/RangeCalendarNext.cjs +9 -5
  246. package/dist/RangeCalendar/RangeCalendarNext.cjs.map +1 -1
  247. package/dist/RangeCalendar/RangeCalendarNext.js +9 -5
  248. package/dist/RangeCalendar/RangeCalendarNext.js.map +1 -1
  249. package/dist/RangeCalendar/RangeCalendarPrev.cjs +9 -5
  250. package/dist/RangeCalendar/RangeCalendarPrev.cjs.map +1 -1
  251. package/dist/RangeCalendar/RangeCalendarPrev.js +9 -5
  252. package/dist/RangeCalendar/RangeCalendarPrev.js.map +1 -1
  253. package/dist/RangeCalendar/RangeCalendarRoot.cjs +1 -1
  254. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  255. package/dist/RangeCalendar/RangeCalendarRoot.js +1 -1
  256. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  257. package/dist/RangeCalendar/useRangeCalendar.cjs +9 -13
  258. package/dist/RangeCalendar/useRangeCalendar.cjs.map +1 -1
  259. package/dist/RangeCalendar/useRangeCalendar.js +9 -13
  260. package/dist/RangeCalendar/useRangeCalendar.js.map +1 -1
  261. package/dist/Splitter/SplitterGroup.cjs +156 -36
  262. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  263. package/dist/Splitter/SplitterGroup.js +156 -36
  264. package/dist/Splitter/SplitterGroup.js.map +1 -1
  265. package/dist/Splitter/SplitterPanel.cjs +7 -2
  266. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  267. package/dist/Splitter/SplitterPanel.js +7 -2
  268. package/dist/Splitter/SplitterPanel.js.map +1 -1
  269. package/dist/Switch/SwitchRoot.cjs +23 -9
  270. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  271. package/dist/Switch/SwitchRoot.js +23 -9
  272. package/dist/Switch/SwitchRoot.js.map +1 -1
  273. package/dist/Switch/SwitchThumb.cjs +1 -1
  274. package/dist/Switch/SwitchThumb.cjs.map +1 -1
  275. package/dist/Switch/SwitchThumb.js +1 -1
  276. package/dist/Switch/SwitchThumb.js.map +1 -1
  277. package/dist/TimeField/TimeFieldRoot.cjs +1 -1
  278. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  279. package/dist/TimeField/TimeFieldRoot.js +1 -1
  280. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  281. package/dist/TimeRangeField/TimeRangeFieldInput.cjs +102 -0
  282. package/dist/TimeRangeField/TimeRangeFieldInput.cjs.map +1 -0
  283. package/dist/TimeRangeField/TimeRangeFieldInput.js +96 -0
  284. package/dist/TimeRangeField/TimeRangeFieldInput.js.map +1 -0
  285. package/dist/TimeRangeField/TimeRangeFieldRoot.cjs +402 -0
  286. package/dist/TimeRangeField/TimeRangeFieldRoot.cjs.map +1 -0
  287. package/dist/TimeRangeField/TimeRangeFieldRoot.js +390 -0
  288. package/dist/TimeRangeField/TimeRangeFieldRoot.js.map +1 -0
  289. package/dist/Toast/FocusProxy.cjs +0 -1
  290. package/dist/Toast/FocusProxy.cjs.map +1 -1
  291. package/dist/Toast/FocusProxy.js +0 -1
  292. package/dist/Toast/FocusProxy.js.map +1 -1
  293. package/dist/Toast/ToastAnnounce.cjs +4 -1
  294. package/dist/Toast/ToastAnnounce.cjs.map +1 -1
  295. package/dist/Toast/ToastAnnounce.js +4 -1
  296. package/dist/Toast/ToastAnnounce.js.map +1 -1
  297. package/dist/Toast/ToastRootImpl.cjs +1 -5
  298. package/dist/Toast/ToastRootImpl.cjs.map +1 -1
  299. package/dist/Toast/ToastRootImpl.js +1 -5
  300. package/dist/Toast/ToastRootImpl.js.map +1 -1
  301. package/dist/ToggleGroup/ToggleGroupRoot.cjs +1 -1
  302. package/dist/ToggleGroup/ToggleGroupRoot.js +1 -1
  303. package/dist/Tooltip/TooltipContent.cjs +1 -2
  304. package/dist/Tooltip/TooltipContent.cjs.map +1 -1
  305. package/dist/Tooltip/TooltipContent.js +1 -2
  306. package/dist/Tooltip/TooltipContent.js.map +1 -1
  307. package/dist/Tooltip/TooltipContentImpl.cjs +25 -18
  308. package/dist/Tooltip/TooltipContentImpl.cjs.map +1 -1
  309. package/dist/Tooltip/TooltipContentImpl.js +25 -18
  310. package/dist/Tooltip/TooltipContentImpl.js.map +1 -1
  311. package/dist/Tooltip/TooltipProvider.cjs +7 -2
  312. package/dist/Tooltip/TooltipProvider.cjs.map +1 -1
  313. package/dist/Tooltip/TooltipProvider.js +7 -2
  314. package/dist/Tooltip/TooltipProvider.js.map +1 -1
  315. package/dist/YearPicker/YearPickerCell.cjs +59 -0
  316. package/dist/YearPicker/YearPickerCell.cjs.map +1 -0
  317. package/dist/YearPicker/YearPickerCell.js +53 -0
  318. package/dist/YearPicker/YearPickerCell.js.map +1 -0
  319. package/dist/YearPicker/YearPickerCellTrigger.cjs +197 -0
  320. package/dist/YearPicker/YearPickerCellTrigger.cjs.map +1 -0
  321. package/dist/YearPicker/YearPickerCellTrigger.js +191 -0
  322. package/dist/YearPicker/YearPickerCellTrigger.js.map +1 -0
  323. package/dist/YearPicker/YearPickerGrid.cjs +59 -0
  324. package/dist/YearPicker/YearPickerGrid.cjs.map +1 -0
  325. package/dist/YearPicker/YearPickerGrid.js +53 -0
  326. package/dist/YearPicker/YearPickerGrid.js.map +1 -0
  327. package/dist/YearPicker/YearPickerGridBody.cjs +41 -0
  328. package/dist/YearPicker/YearPickerGridBody.cjs.map +1 -0
  329. package/dist/YearPicker/YearPickerGridBody.js +35 -0
  330. package/dist/YearPicker/YearPickerGridBody.js.map +1 -0
  331. package/dist/YearPicker/YearPickerGridRow.cjs +41 -0
  332. package/dist/YearPicker/YearPickerGridRow.cjs.map +1 -0
  333. package/dist/YearPicker/YearPickerGridRow.js +35 -0
  334. package/dist/YearPicker/YearPickerGridRow.js.map +1 -0
  335. package/dist/YearPicker/YearPickerHeader.cjs +41 -0
  336. package/dist/YearPicker/YearPickerHeader.cjs.map +1 -0
  337. package/dist/YearPicker/YearPickerHeader.js +35 -0
  338. package/dist/YearPicker/YearPickerHeader.js.map +1 -0
  339. package/dist/YearPicker/YearPickerHeading.cjs +48 -0
  340. package/dist/YearPicker/YearPickerHeading.cjs.map +1 -0
  341. package/dist/YearPicker/YearPickerHeading.js +42 -0
  342. package/dist/YearPicker/YearPickerHeading.js.map +1 -0
  343. package/dist/YearPicker/YearPickerNext.cjs +68 -0
  344. package/dist/YearPicker/YearPickerNext.cjs.map +1 -0
  345. package/dist/YearPicker/YearPickerNext.js +62 -0
  346. package/dist/YearPicker/YearPickerNext.js.map +1 -0
  347. package/dist/YearPicker/YearPickerPrev.cjs +68 -0
  348. package/dist/YearPicker/YearPickerPrev.cjs.map +1 -0
  349. package/dist/YearPicker/YearPickerPrev.js +62 -0
  350. package/dist/YearPicker/YearPickerPrev.js.map +1 -0
  351. package/dist/YearPicker/YearPickerRoot.cjs +287 -0
  352. package/dist/YearPicker/YearPickerRoot.cjs.map +1 -0
  353. package/dist/YearPicker/YearPickerRoot.js +275 -0
  354. package/dist/YearPicker/YearPickerRoot.js.map +1 -0
  355. package/dist/YearPicker/useYearPicker.cjs +180 -0
  356. package/dist/YearPicker/useYearPicker.cjs.map +1 -0
  357. package/dist/YearPicker/useYearPicker.js +168 -0
  358. package/dist/YearPicker/useYearPicker.js.map +1 -0
  359. package/dist/YearRangePicker/YearRangePickerCell.cjs +59 -0
  360. package/dist/YearRangePicker/YearRangePickerCell.cjs.map +1 -0
  361. package/dist/YearRangePicker/YearRangePickerCell.js +53 -0
  362. package/dist/YearRangePicker/YearRangePickerCell.js.map +1 -0
  363. package/dist/YearRangePicker/YearRangePickerCellTrigger.cjs +256 -0
  364. package/dist/YearRangePicker/YearRangePickerCellTrigger.cjs.map +1 -0
  365. package/dist/YearRangePicker/YearRangePickerCellTrigger.js +250 -0
  366. package/dist/YearRangePicker/YearRangePickerCellTrigger.js.map +1 -0
  367. package/dist/YearRangePicker/YearRangePickerGrid.cjs +59 -0
  368. package/dist/YearRangePicker/YearRangePickerGrid.cjs.map +1 -0
  369. package/dist/YearRangePicker/YearRangePickerGrid.js +53 -0
  370. package/dist/YearRangePicker/YearRangePickerGrid.js.map +1 -0
  371. package/dist/YearRangePicker/YearRangePickerGridBody.cjs +41 -0
  372. package/dist/YearRangePicker/YearRangePickerGridBody.cjs.map +1 -0
  373. package/dist/YearRangePicker/YearRangePickerGridBody.js +35 -0
  374. package/dist/YearRangePicker/YearRangePickerGridBody.js.map +1 -0
  375. package/dist/YearRangePicker/YearRangePickerGridRow.cjs +41 -0
  376. package/dist/YearRangePicker/YearRangePickerGridRow.cjs.map +1 -0
  377. package/dist/YearRangePicker/YearRangePickerGridRow.js +35 -0
  378. package/dist/YearRangePicker/YearRangePickerGridRow.js.map +1 -0
  379. package/dist/YearRangePicker/YearRangePickerHeader.cjs +41 -0
  380. package/dist/YearRangePicker/YearRangePickerHeader.cjs.map +1 -0
  381. package/dist/YearRangePicker/YearRangePickerHeader.js +35 -0
  382. package/dist/YearRangePicker/YearRangePickerHeader.js.map +1 -0
  383. package/dist/YearRangePicker/YearRangePickerHeading.cjs +48 -0
  384. package/dist/YearRangePicker/YearRangePickerHeading.cjs.map +1 -0
  385. package/dist/YearRangePicker/YearRangePickerHeading.js +42 -0
  386. package/dist/YearRangePicker/YearRangePickerHeading.js.map +1 -0
  387. package/dist/YearRangePicker/YearRangePickerNext.cjs +68 -0
  388. package/dist/YearRangePicker/YearRangePickerNext.cjs.map +1 -0
  389. package/dist/YearRangePicker/YearRangePickerNext.js +62 -0
  390. package/dist/YearRangePicker/YearRangePickerNext.js.map +1 -0
  391. package/dist/YearRangePicker/YearRangePickerPrev.cjs +68 -0
  392. package/dist/YearRangePicker/YearRangePickerPrev.cjs.map +1 -0
  393. package/dist/YearRangePicker/YearRangePickerPrev.js +62 -0
  394. package/dist/YearRangePicker/YearRangePickerPrev.js.map +1 -0
  395. package/dist/YearRangePicker/YearRangePickerRoot.cjs +350 -0
  396. package/dist/YearRangePicker/YearRangePickerRoot.cjs.map +1 -0
  397. package/dist/YearRangePicker/YearRangePickerRoot.js +338 -0
  398. package/dist/YearRangePicker/YearRangePickerRoot.js.map +1 -0
  399. package/dist/YearRangePicker/useRangeYearPicker.cjs +128 -0
  400. package/dist/YearRangePicker/useRangeYearPicker.cjs.map +1 -0
  401. package/dist/YearRangePicker/useRangeYearPicker.js +122 -0
  402. package/dist/YearRangePicker/useRangeYearPicker.js.map +1 -0
  403. package/dist/color/channel.cjs +378 -0
  404. package/dist/color/channel.cjs.map +1 -0
  405. package/dist/color/channel.js +349 -0
  406. package/dist/color/channel.js.map +1 -0
  407. package/dist/color/convert.cjs +285 -0
  408. package/dist/color/convert.cjs.map +1 -0
  409. package/dist/color/convert.js +237 -0
  410. package/dist/color/convert.js.map +1 -0
  411. package/dist/color/gradient.cjs +377 -0
  412. package/dist/color/gradient.cjs.map +1 -0
  413. package/dist/color/gradient.js +354 -0
  414. package/dist/color/gradient.js.map +1 -0
  415. package/dist/color/parse.cjs +113 -0
  416. package/dist/color/parse.cjs.map +1 -0
  417. package/dist/color/parse.js +95 -0
  418. package/dist/color/parse.js.map +1 -0
  419. package/dist/color/utils.cjs +112 -0
  420. package/dist/color/utils.cjs.map +1 -0
  421. package/dist/color/utils.js +100 -0
  422. package/dist/color/utils.js.map +1 -0
  423. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs +11 -7
  424. package/dist/composables/useWindowSplitterPanelGroupBehavior.cjs.map +1 -1
  425. package/dist/composables/useWindowSplitterPanelGroupBehavior.js +11 -7
  426. package/dist/composables/useWindowSplitterPanelGroupBehavior.js.map +1 -1
  427. package/dist/constant/components.cjs +87 -1
  428. package/dist/constant/components.cjs.map +1 -1
  429. package/dist/constant/components.js +87 -1
  430. package/dist/constant/components.js.map +1 -1
  431. package/dist/constant.d.cts +12 -1
  432. package/dist/constant.d.cts.map +1 -1
  433. package/dist/constant.d.ts +12 -1
  434. package/dist/constant.d.ts.map +1 -1
  435. package/dist/date/calendar.cjs +41 -0
  436. package/dist/date/calendar.cjs.map +1 -1
  437. package/dist/date/calendar.js +30 -1
  438. package/dist/date/calendar.js.map +1 -1
  439. package/dist/date/comparators.cjs +129 -0
  440. package/dist/date/comparators.cjs.map +1 -1
  441. package/dist/date/comparators.js +76 -1
  442. package/dist/date/comparators.js.map +1 -1
  443. package/dist/date/useDateField.cjs +1 -1
  444. package/dist/date/useDateField.cjs.map +1 -1
  445. package/dist/date/useDateField.js +1 -1
  446. package/dist/date/useDateField.js.map +1 -1
  447. package/dist/date.cjs +11 -0
  448. package/dist/date.d.cts +2 -2
  449. package/dist/date.d.ts +2 -2
  450. package/dist/date.js +3 -3
  451. package/dist/index.cjs +217 -47
  452. package/dist/index.d.cts +3 -8834
  453. package/dist/index.d.ts +3 -8834
  454. package/dist/index.js +117 -48
  455. package/dist/index2.d.cts +58 -2
  456. package/dist/index2.d.cts.map +1 -1
  457. package/dist/index2.d.ts +58 -2
  458. package/dist/index2.d.ts.map +1 -1
  459. package/dist/index3.d.cts +11062 -0
  460. package/dist/index3.d.cts.map +1 -0
  461. package/dist/index3.d.ts +11062 -0
  462. package/dist/index3.d.ts.map +1 -0
  463. package/dist/internal.cjs +81 -0
  464. package/dist/internal.d.cts +20 -0
  465. package/dist/internal.d.cts.map +1 -0
  466. package/dist/internal.d.ts +20 -0
  467. package/dist/internal.d.ts.map +1 -0
  468. package/dist/internal.js +64 -0
  469. package/dist/internal2.cjs +0 -0
  470. package/dist/internal2.js +0 -0
  471. package/dist/namespaced/index.cjs +33 -1
  472. package/dist/namespaced/index.d.cts +32 -4
  473. package/dist/namespaced/index.d.mts +32 -4
  474. package/dist/namespaced/index.mjs +32 -4
  475. package/dist/shared/useArrowNavigation.cjs +4 -2
  476. package/dist/shared/useArrowNavigation.cjs.map +1 -1
  477. package/dist/shared/useArrowNavigation.js +4 -2
  478. package/dist/shared/useArrowNavigation.js.map +1 -1
  479. package/dist/shared/useBodyScrollLock.cjs +1 -0
  480. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  481. package/dist/shared/useBodyScrollLock.js +1 -0
  482. package/dist/shared/useBodyScrollLock.js.map +1 -1
  483. package/dist/shared/useForwardExpose.cjs +6 -2
  484. package/dist/shared/useForwardExpose.cjs.map +1 -1
  485. package/dist/shared/useForwardExpose.js +7 -3
  486. package/dist/shared/useForwardExpose.js.map +1 -1
  487. package/dist/shared/useHideOthers.cjs +1 -1
  488. package/dist/shared/useHideOthers.cjs.map +1 -1
  489. package/dist/shared/useHideOthers.js +1 -1
  490. package/dist/shared/useHideOthers.js.map +1 -1
  491. package/dist/shared/useId.cjs +7 -4
  492. package/dist/shared/useId.cjs.map +1 -1
  493. package/dist/shared/useId.js +7 -4
  494. package/dist/shared/useId.js.map +1 -1
  495. package/dist/utils/callPanelCallbacks.cjs +10 -7
  496. package/dist/utils/callPanelCallbacks.cjs.map +1 -1
  497. package/dist/utils/callPanelCallbacks.js +10 -7
  498. package/dist/utils/callPanelCallbacks.js.map +1 -1
  499. package/dist/utils/storage.cjs +7 -1
  500. package/dist/utils/storage.cjs.map +1 -1
  501. package/dist/utils/storage.js +7 -1
  502. package/dist/utils/storage.js.map +1 -1
  503. package/dist/utils/units.cjs +101 -0
  504. package/dist/utils/units.cjs.map +1 -0
  505. package/dist/utils/units.js +83 -0
  506. package/dist/utils/units.js.map +1 -0
  507. package/package.json +7 -3
  508. package/src/Autocomplete/AutocompleteInput.vue +112 -0
  509. package/src/Autocomplete/AutocompleteRoot.vue +272 -0
  510. package/src/Autocomplete/index.ts +72 -0
  511. package/src/Calendar/CalendarCellTrigger.vue +2 -1
  512. package/src/Calendar/CalendarGrid.vue +6 -1
  513. package/src/Calendar/CalendarNext.vue +8 -2
  514. package/src/Calendar/CalendarPrev.vue +8 -2
  515. package/src/Calendar/CalendarRoot.vue +1 -1
  516. package/src/Checkbox/CheckboxRoot.vue +32 -13
  517. package/src/ColorArea/ColorAreaArea.vue +145 -0
  518. package/src/ColorArea/ColorAreaRoot.vue +255 -0
  519. package/src/ColorArea/ColorAreaThumb.vue +75 -0
  520. package/src/ColorArea/index.ts +14 -0
  521. package/src/ColorArea/utils.ts +24 -0
  522. package/src/ColorField/ColorFieldInput.vue +133 -0
  523. package/src/ColorField/ColorFieldRoot.vue +326 -0
  524. package/src/ColorField/index.ts +10 -0
  525. package/src/ColorSlider/ColorSliderRoot.vue +224 -0
  526. package/src/ColorSlider/ColorSliderThumb.vue +54 -0
  527. package/src/ColorSlider/ColorSliderTrack.vue +36 -0
  528. package/src/ColorSlider/index.ts +14 -0
  529. package/src/ColorSlider/utils.ts +39 -0
  530. package/src/ColorSwatch/ColorSwatch.vue +97 -0
  531. package/src/ColorSwatch/index.ts +4 -0
  532. package/src/ColorSwatchPicker/ColorSwatchPickerItem.vue +60 -0
  533. package/src/ColorSwatchPicker/ColorSwatchPickerItemIndicator.vue +17 -0
  534. package/src/ColorSwatchPicker/ColorSwatchPickerItemSwatch.vue +21 -0
  535. package/src/ColorSwatchPicker/ColorSwatchPickerRoot.vue +50 -0
  536. package/src/ColorSwatchPicker/index.ts +17 -0
  537. package/src/Combobox/ComboboxContentImpl.vue +13 -1
  538. package/src/Combobox/ComboboxInput.vue +19 -0
  539. package/src/DateField/DateFieldRoot.vue +1 -1
  540. package/src/DateRangeField/DateRangeFieldRoot.vue +11 -4
  541. package/src/DismissableLayer/utils.ts +5 -3
  542. package/src/DropdownMenu/DropdownMenuFilter.vue +119 -0
  543. package/src/DropdownMenu/index.ts +5 -0
  544. package/src/Menu/MenuContentImpl.vue +68 -2
  545. package/src/Menu/MenuGroup.vue +12 -0
  546. package/src/Menu/MenuItemImpl.vue +15 -10
  547. package/src/Menu/MenuLabel.vue +7 -1
  548. package/src/Menu/MenuSubContent.vue +14 -3
  549. package/src/Menu/MenuSubTrigger.vue +13 -1
  550. package/src/MonthPicker/MonthPickerCell.vue +30 -0
  551. package/src/MonthPicker/MonthPickerCellTrigger.vue +214 -0
  552. package/src/MonthPicker/MonthPickerGrid.vue +37 -0
  553. package/src/MonthPicker/MonthPickerGridBody.vue +17 -0
  554. package/src/MonthPicker/MonthPickerGridRow.vue +20 -0
  555. package/src/MonthPicker/MonthPickerHeader.vue +17 -0
  556. package/src/MonthPicker/MonthPickerHeading.vue +35 -0
  557. package/src/MonthPicker/MonthPickerNext.vue +52 -0
  558. package/src/MonthPicker/MonthPickerPrev.vue +52 -0
  559. package/src/MonthPicker/MonthPickerRoot.vue +311 -0
  560. package/src/MonthPicker/index.ts +42 -0
  561. package/src/MonthPicker/useMonthPicker.ts +193 -0
  562. package/src/MonthRangePicker/MonthRangePickerCell.vue +30 -0
  563. package/src/MonthRangePicker/MonthRangePickerCellTrigger.vue +309 -0
  564. package/src/MonthRangePicker/MonthRangePickerGrid.vue +37 -0
  565. package/src/MonthRangePicker/MonthRangePickerGridBody.vue +17 -0
  566. package/src/MonthRangePicker/MonthRangePickerGridRow.vue +20 -0
  567. package/src/MonthRangePicker/MonthRangePickerHeader.vue +17 -0
  568. package/src/MonthRangePicker/MonthRangePickerHeading.vue +35 -0
  569. package/src/MonthRangePicker/MonthRangePickerNext.vue +52 -0
  570. package/src/MonthRangePicker/MonthRangePickerPrev.vue +52 -0
  571. package/src/MonthRangePicker/MonthRangePickerRoot.vue +391 -0
  572. package/src/MonthRangePicker/index.ts +42 -0
  573. package/src/MonthRangePicker/useRangeMonthPicker.ts +165 -0
  574. package/src/NumberField/NumberFieldRoot.vue +2 -1
  575. package/src/Progress/ProgressRoot.vue +3 -1
  576. package/src/RangeCalendar/RangeCalendarGrid.vue +6 -1
  577. package/src/RangeCalendar/RangeCalendarNext.vue +10 -4
  578. package/src/RangeCalendar/RangeCalendarPrev.vue +10 -4
  579. package/src/RangeCalendar/RangeCalendarRoot.vue +2 -2
  580. package/src/RangeCalendar/useRangeCalendar.ts +5 -8
  581. package/src/Splitter/SplitterGroup.vue +243 -54
  582. package/src/Splitter/SplitterPanel.vue +11 -6
  583. package/src/Splitter/utils/callPanelCallbacks.ts +16 -8
  584. package/src/Splitter/utils/composables/useWindowSplitterPanelGroupBehavior.ts +16 -6
  585. package/src/Splitter/utils/storage.ts +14 -0
  586. package/src/Splitter/utils/units.ts +161 -0
  587. package/src/Splitter/utils/validation.ts +3 -2
  588. package/src/Switch/SwitchRoot.vue +36 -19
  589. package/src/Switch/SwitchThumb.vue +1 -1
  590. package/src/TimeField/TimeFieldRoot.vue +0 -3
  591. package/src/TimeRangeField/TimeRangeFieldInput.vue +74 -0
  592. package/src/TimeRangeField/TimeRangeFieldRoot.vue +473 -0
  593. package/src/TimeRangeField/index.ts +2 -0
  594. package/src/Toast/FocusProxy.vue +0 -1
  595. package/src/Toast/ToastAnnounce.vue +4 -1
  596. package/src/Toast/ToastRootImpl.vue +0 -4
  597. package/src/Tooltip/TooltipContent.vue +1 -3
  598. package/src/Tooltip/TooltipContentImpl.vue +18 -10
  599. package/src/Tooltip/TooltipProvider.vue +8 -1
  600. package/src/YearPicker/YearPickerCell.vue +30 -0
  601. package/src/YearPicker/YearPickerCellTrigger.vue +218 -0
  602. package/src/YearPicker/YearPickerGrid.vue +37 -0
  603. package/src/YearPicker/YearPickerGridBody.vue +17 -0
  604. package/src/YearPicker/YearPickerGridRow.vue +20 -0
  605. package/src/YearPicker/YearPickerHeader.vue +17 -0
  606. package/src/YearPicker/YearPickerHeading.vue +35 -0
  607. package/src/YearPicker/YearPickerNext.vue +52 -0
  608. package/src/YearPicker/YearPickerPrev.vue +52 -0
  609. package/src/YearPicker/YearPickerRoot.vue +314 -0
  610. package/src/YearPicker/index.ts +42 -0
  611. package/src/YearPicker/useYearPicker.ts +202 -0
  612. package/src/YearRangePicker/YearRangePickerCell.vue +30 -0
  613. package/src/YearRangePicker/YearRangePickerCellTrigger.vue +311 -0
  614. package/src/YearRangePicker/YearRangePickerGrid.vue +37 -0
  615. package/src/YearRangePicker/YearRangePickerGridBody.vue +17 -0
  616. package/src/YearRangePicker/YearRangePickerGridRow.vue +20 -0
  617. package/src/YearRangePicker/YearRangePickerHeader.vue +17 -0
  618. package/src/YearRangePicker/YearRangePickerHeading.vue +35 -0
  619. package/src/YearRangePicker/YearRangePickerNext.vue +52 -0
  620. package/src/YearRangePicker/YearRangePickerPrev.vue +52 -0
  621. package/src/YearRangePicker/YearRangePickerRoot.vue +391 -0
  622. package/src/YearRangePicker/index.ts +42 -0
  623. package/src/YearRangePicker/useRangeYearPicker.ts +165 -0
  624. package/src/date/calendar.ts +29 -0
  625. package/src/date/comparators.ts +97 -0
  626. package/src/index.ts +41 -0
  627. package/src/internal.ts +7 -0
  628. package/src/shared/color/channel.ts +424 -0
  629. package/src/shared/color/convert.ts +293 -0
  630. package/src/shared/color/gradient.ts +347 -0
  631. package/src/shared/color/index.ts +35 -0
  632. package/src/shared/color/parse.ts +140 -0
  633. package/src/shared/color/types.ts +40 -0
  634. package/src/shared/color/utils.ts +143 -0
  635. package/src/shared/date/types.ts +6 -0
  636. package/src/shared/date/useDateField.ts +39 -40
  637. package/src/shared/macro.ts +11 -0
  638. package/src/shared/useArrowNavigation.ts +8 -2
  639. package/src/shared/useBodyScrollLock.ts +2 -0
  640. package/src/shared/useForwardExpose.ts +20 -5
  641. package/src/shared/useHideOthers.ts +2 -1
  642. package/src/shared/useId.ts +6 -7
  643. package/dist/index.d.cts.map +0 -1
  644. package/dist/index.d.ts.map +0 -1
@@ -0,0 +1,97 @@
1
+ <script lang="ts">
2
+ import type { PrimitiveProps } from '@/Primitive'
3
+ import type { Color } from '@/shared/color'
4
+
5
+ export interface ColorSwatchProps extends PrimitiveProps {
6
+ /**
7
+ * The color to display in the swatch as a hex string or Color object.
8
+ * Example: `#16a372`, `#ff5733`, or `{ space: 'hsl', h: 120, s: 100, l: 50, alpha: 1 }`.
9
+ */
10
+ color?: string | Color
11
+ /**
12
+ * Optional accessible label for the color. If omitted, the color name will be derived from the color value.
13
+ */
14
+ label?: string
15
+ }
16
+ </script>
17
+
18
+ <script setup lang="ts">
19
+ import { computed } from 'vue'
20
+ import { Primitive } from '@/Primitive'
21
+ import { colorToString, getColorContrast, getColorName, normalizeColor } from '@/shared/color'
22
+
23
+ const props = withDefaults(defineProps<ColorSwatchProps>(), { as: 'div', color: '' })
24
+
25
+ const colorString = computed(() => {
26
+ if (!props.color)
27
+ return ''
28
+ if (typeof props.color === 'string') {
29
+ return props.color
30
+ }
31
+ return colorToString(props.color, 'hex')
32
+ })
33
+
34
+ const colorObj = computed(() => {
35
+ if (!props.color)
36
+ return null
37
+ try {
38
+ return normalizeColor(props.color)
39
+ }
40
+ catch {
41
+ return null
42
+ }
43
+ })
44
+
45
+ const alpha = computed(() => colorObj.value?.alpha ?? 0)
46
+ const isNoColor = computed(() => !props.color || alpha.value <= 0)
47
+
48
+ const label = computed(() => {
49
+ if (props.label)
50
+ return props.label
51
+
52
+ // Match React Aria: transparent colors get "transparent" label
53
+ if (!colorObj.value || colorObj.value.alpha === 0)
54
+ return 'transparent'
55
+
56
+ try {
57
+ return getColorName(colorString.value)
58
+ }
59
+ catch {
60
+ return colorString.value || 'transparent'
61
+ }
62
+ })
63
+
64
+ const colorContrast = computed(() => {
65
+ try {
66
+ return getColorContrast(colorString.value)
67
+ }
68
+ catch {
69
+ if (import.meta.env.DEV) {
70
+ console.warn(`WARNING: Unable to resolve contrast color for "${colorString.value}".
71
+ Please check that the color provided is a valid hex color.`)
72
+ }
73
+ return undefined
74
+ }
75
+ })
76
+ </script>
77
+
78
+ <template>
79
+ <Primitive
80
+ role="img"
81
+ :aria-label="label"
82
+ aria-roledescription="color swatch"
83
+ :as-child="asChild"
84
+ :as="as"
85
+ :data-color-contrast="colorContrast"
86
+ :data-no-color="isNoColor ? '' : undefined"
87
+ :style="{
88
+ '--reka-color-swatch-color': colorString,
89
+ '--reka-color-swatch-alpha': String(alpha),
90
+ }"
91
+ >
92
+ <slot
93
+ :color="colorString"
94
+ :alpha="alpha"
95
+ />
96
+ </Primitive>
97
+ </template>
@@ -0,0 +1,4 @@
1
+ export {
2
+ default as ColorSwatch,
3
+ type ColorSwatchProps,
4
+ } from './ColorSwatch.vue'
@@ -0,0 +1,60 @@
1
+ <script lang="ts">
2
+ import type { Ref } from 'vue'
3
+ import type { ListboxItemEmits, ListboxItemProps } from '@/Listbox'
4
+ import { createContext, useForwardPropsEmits } from '@/shared'
5
+
6
+ export interface ColorSwatchPickerItemProps extends ListboxItemProps {
7
+ /**
8
+ * The color to display in the swatch as a hex string.
9
+ * Example: `#16a372` or `#ff5733`.
10
+ */
11
+ value: string
12
+ }
13
+
14
+ export type ColorSwatchPickerItemEmits = ListboxItemEmits
15
+
16
+ export interface ColorSwatchPickerItemContext {
17
+ color: Ref<string>
18
+ }
19
+
20
+ export const [injectColorSwatchPickerItemContext, provideColorSwatchPickerItemContext]
21
+ = createContext<ColorSwatchPickerItemContext>('ColorSwatchPickerItem', 'ColorSwatchPickerItemContext')
22
+ </script>
23
+
24
+ <script setup lang="ts">
25
+ import { computed, toRefs } from 'vue'
26
+ import { ListboxItem } from '@/Listbox'
27
+ import { getColorName } from '@/shared/color'
28
+
29
+ const props = defineProps<ColorSwatchPickerItemProps>()
30
+
31
+ const emits = defineEmits<ColorSwatchPickerItemEmits>()
32
+
33
+ const { value } = toRefs(props)
34
+
35
+ const forwarded = useForwardPropsEmits(props, emits)
36
+
37
+ const colorLabel = computed(() => {
38
+ try {
39
+ return getColorName(value.value)
40
+ }
41
+ catch {
42
+ return value.value
43
+ }
44
+ })
45
+
46
+ provideColorSwatchPickerItemContext({
47
+ color: value,
48
+ })
49
+ </script>
50
+
51
+ <template>
52
+ <ListboxItem
53
+ v-bind="forwarded"
54
+ :aria-label="colorLabel"
55
+ :data-color="value"
56
+ :style="{ '--reka-color-swatch-picker-item-color': value }"
57
+ >
58
+ <slot />
59
+ </ListboxItem>
60
+ </template>
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import type { ListboxItemIndicatorProps } from '@/Listbox'
3
+
4
+ export interface ColorSwatchPickerItemIndicatorProps extends ListboxItemIndicatorProps { }
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ import { ListboxItemIndicator } from '@/Listbox'
9
+
10
+ const props = defineProps<ColorSwatchPickerItemIndicatorProps>()
11
+ </script>
12
+
13
+ <template>
14
+ <ListboxItemIndicator v-bind="props">
15
+ <slot />
16
+ </ListboxItemIndicator>
17
+ </template>
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import type { ColorSwatchProps } from '@/ColorSwatch/ColorSwatch.vue'
3
+
4
+ export interface ColorSwatchPickerItemSwatchProps extends Omit<ColorSwatchProps, 'color'> { }
5
+ </script>
6
+
7
+ <script setup lang="ts">
8
+ import { ColorSwatch } from '@/ColorSwatch'
9
+ import { injectColorSwatchPickerItemContext } from './ColorSwatchPickerItem.vue'
10
+
11
+ const props = defineProps<ColorSwatchPickerItemSwatchProps>()
12
+
13
+ const colorSwatchPickerItemContext = injectColorSwatchPickerItemContext()
14
+ </script>
15
+
16
+ <template>
17
+ <ColorSwatch
18
+ v-bind="props"
19
+ :color="colorSwatchPickerItemContext.color.value"
20
+ />
21
+ </template>
@@ -0,0 +1,50 @@
1
+ <script lang="ts">
2
+ import type { ListboxRootEmits, ListboxRootProps } from '@/Listbox'
3
+ import { useVModel } from '@vueuse/core'
4
+ import { useForwardPropsEmits } from '@/shared'
5
+
6
+ export interface ColorSwatchPickerRootProps extends Omit<ListboxRootProps, 'by'> {
7
+ defaultValue?: string | string[]
8
+ modelValue?: string | string[]
9
+ }
10
+
11
+ export type ColorSwatchPickerRootEmits = ListboxRootEmits
12
+ </script>
13
+
14
+ <script setup lang="ts">
15
+ import { ListboxContent, ListboxRoot } from '@/Listbox'
16
+
17
+ const props = withDefaults(defineProps<ColorSwatchPickerRootProps>(), {
18
+ as: 'div',
19
+ defaultValue: undefined,
20
+ dir: 'ltr',
21
+ disabled: false,
22
+ loop: false,
23
+ orientation: 'horizontal',
24
+ })
25
+
26
+ const emits = defineEmits<ColorSwatchPickerRootEmits>()
27
+
28
+ const modelValue = useVModel(props, 'modelValue', emits, {
29
+ defaultValue: props.defaultValue ?? (props.multiple ? [] : ''),
30
+ // Cast required for VueUse's passive option type; enables passive sync when modelValue is undefined
31
+ passive: (props.modelValue === undefined) as false,
32
+ })
33
+
34
+ const forwarded = useForwardPropsEmits(props, emits)
35
+ </script>
36
+
37
+ <template>
38
+ <ListboxRoot
39
+ v-bind="forwarded"
40
+ v-model="modelValue"
41
+ as-child
42
+ >
43
+ <ListboxContent
44
+ :as-child="asChild"
45
+ :as="as"
46
+ >
47
+ <slot :model-value="modelValue" />
48
+ </ListboxContent>
49
+ </ListboxRoot>
50
+ </template>
@@ -0,0 +1,17 @@
1
+ export {
2
+ default as ColorSwatchPickerItem,
3
+ type ColorSwatchPickerItemProps,
4
+ } from './ColorSwatchPickerItem.vue'
5
+ export {
6
+ default as ColorSwatchPickerItemIndicator,
7
+ type ColorSwatchPickerItemIndicatorProps,
8
+ } from './ColorSwatchPickerItemIndicator.vue'
9
+ export {
10
+ default as ColorSwatchPickerItemSwatch,
11
+ type ColorSwatchPickerItemSwatchProps,
12
+ } from './ColorSwatchPickerItemSwatch.vue'
13
+ export {
14
+ default as ColorSwatchPickerRoot,
15
+ type ColorSwatchPickerRootEmits,
16
+ type ColorSwatchPickerRootProps,
17
+ } from './ColorSwatchPickerRoot.vue'
@@ -17,6 +17,11 @@ export interface ComboboxContentImplProps extends PopperContentProps, Dismissabl
17
17
  position?: 'inline' | 'popper'
18
18
  /** The document.body will be lock, and scrolling will be disabled. */
19
19
  bodyLock?: boolean
20
+ /**
21
+ * When `true`, hides the content when there are no items matching the filter.
22
+ * @defaultValue false
23
+ */
24
+ hideWhenEmpty?: boolean
20
25
  }
21
26
 
22
27
  export const [injectComboboxContentContext, provideComboboxContentContext]
@@ -42,6 +47,11 @@ const emits = defineEmits<ComboboxContentImplEmits>()
42
47
  const { position } = toRefs(props)
43
48
  const rootContext = injectComboboxRootContext()
44
49
 
50
+ const isEmpty = computed(() => rootContext.ignoreFilter.value
51
+ ? rootContext.allItems.value.size === 0
52
+ : rootContext.filterState.value.count === 0,
53
+ )
54
+
45
55
  const { forwardRef, currentElement } = useForwardExpose()
46
56
  useBodyScrollLock(props.bodyLock)
47
57
  useFocusGuards()
@@ -119,9 +129,11 @@ onUnmounted(() => {
119
129
  :id="rootContext.contentId"
120
130
  :ref="forwardRef"
121
131
  :data-state="rootContext.open.value ? 'open' : 'closed'"
132
+ :data-empty="isEmpty ? '' : undefined"
122
133
  :style="{
123
134
  // flex layout so we can place the scroll buttons properly
124
- display: 'flex',
135
+ // When hideWhenEmpty is true, hide the content when no items match
136
+ display: (props.hideWhenEmpty && isEmpty) ? 'none' : 'flex',
125
137
  flexDirection: 'column',
126
138
  // reset the outline by default as the content MAY get focused
127
139
  outline: 'none',
@@ -60,6 +60,24 @@ function handleFocus() {
60
60
  rootContext.onOpenChange(true)
61
61
  }
62
62
 
63
+ function handleBlur(ev: FocusEvent) {
64
+ if (!rootContext.open.value)
65
+ return
66
+
67
+ const nextFocus = ev.relatedTarget as Element | null
68
+
69
+ // If focus moves to nothing (e.g. click on non-focusable area), let DismissableLayer handle it
70
+ if (!nextFocus)
71
+ return
72
+
73
+ const isInsideRoot = rootContext.parentElement.value?.contains(nextFocus)
74
+ const isInsideContent = document.getElementById(rootContext.contentId)?.contains(nextFocus)
75
+
76
+ if (!isInsideRoot && !isInsideContent) {
77
+ rootContext.onOpenChange(false)
78
+ }
79
+ }
80
+
63
81
  function handleClick() {
64
82
  if (rootContext.openOnClick.value && !rootContext.open.value)
65
83
  rootContext.onOpenChange(true)
@@ -122,6 +140,7 @@ watch(rootContext.filterState, (_newValue, oldValue) => {
122
140
  @input="handleInput"
123
141
  @keydown.down.up.prevent="handleKeyDown"
124
142
  @focus="handleFocus"
143
+ @blur="handleBlur"
125
144
  >
126
145
  <slot />
127
146
  </ListboxFilter>
@@ -44,7 +44,7 @@ export interface DateFieldRootProps extends PrimitiveProps, FormFieldProps {
44
44
  defaultPlaceholder?: DateValue
45
45
  /** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */
46
46
  placeholder?: DateValue
47
- /** The controlled checked state of the calendar. Can be bound as `v-model`. */
47
+ /** The controlled value of the field. Can be bound as `v-model`. */
48
48
  modelValue?: DateValue | null
49
49
  /** The hour cycle used for formatting times. Defaults to the local preference */
50
50
  hourCycle?: HourCycle
@@ -12,15 +12,12 @@ import {
12
12
  hasTime,
13
13
  isBefore,
14
14
  isBeforeOrSame,
15
-
16
15
  } from '@/date'
17
16
  import { createContext, useDateFormatter, useDirection, useKbd, useLocale } from '@/shared'
18
17
  import {
19
18
  createContent,
20
-
21
19
  getDefaultDate,
22
20
  getSegmentElements,
23
-
24
21
  initializeSegmentValues,
25
22
  isSegmentNavigationKey,
26
23
  normalizeDateStep,
@@ -57,7 +54,7 @@ export interface DateRangeFieldRootProps extends PrimitiveProps, FormFieldProps
57
54
  defaultPlaceholder?: DateValue
58
55
  /** The placeholder date, which is used to determine what month to display when no date is selected. This updates as the user navigates the calendar and can be used to programmatically control the calendar view */
59
56
  placeholder?: DateValue
60
- /** The controlled checked state of the calendar. Can be bound as `v-model`. */
57
+ /** The controlled value of the field. Can be bound as `v-model`. */
61
58
  modelValue?: DateRange | null
62
59
  /** The hour cycle used for formatting times. Defaults to the local preference */
63
60
  hourCycle?: HourCycle
@@ -114,6 +111,16 @@ const props = withDefaults(defineProps<DateRangeFieldRootProps>(), {
114
111
  isDateUnavailable: undefined,
115
112
  })
116
113
  const emits = defineEmits<DateRangeFieldRootEmits>()
114
+ defineSlots<{
115
+ default?: (props: {
116
+ /** The current date range of the field */
117
+ modelValue: DateRange | null
118
+ /** The date field segment contents */
119
+ segments: { start: { part: SegmentPart, value: string }[], end: { part: SegmentPart, value: string }[] }
120
+ /** Value if the input is invalid */
121
+ isInvalid: boolean
122
+ }) => any
123
+ }>()
117
124
  const { disabled, readonly, isDateUnavailable: propsIsDateUnavailable, dir: propDir, locale: propLocale } = toRefs(props)
118
125
  const locale = useLocale(propLocale)
119
126
  const dir = useDirection(propDir)
@@ -13,7 +13,10 @@ export const CONTEXT_UPDATE = 'dismissableLayer.update'
13
13
  export const POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside'
14
14
  export const FOCUS_OUTSIDE = 'dismissableLayer.focusOutside'
15
15
 
16
- function isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {
16
+ export function isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {
17
+ if (!(targetElement instanceof Element))
18
+ return false
19
+
17
20
  const targetLayer = targetElement.closest(
18
21
  '[data-dismissable-layer]',
19
22
  )
@@ -28,8 +31,7 @@ function isLayerExist(layerElement: HTMLElement, targetElement: HTMLElement) {
28
31
  layerElement.ownerDocument.querySelectorAll('[data-dismissable-layer]'),
29
32
  )
30
33
 
31
- if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))
32
- ) {
34
+ if (targetLayer && (mainLayer === targetLayer || nodeList.indexOf(mainLayer) < nodeList.indexOf(targetLayer))) {
33
35
  return true
34
36
  }
35
37
  else {
@@ -0,0 +1,119 @@
1
+ <script lang="ts">
2
+ import type { PrimitiveProps } from '@/Primitive'
3
+ import { useVModel } from '@vueuse/core'
4
+ import { computed, onMounted, onUnmounted, ref, watch, watchSyncEffect } from 'vue'
5
+ import { injectMenuContentContext } from '@/Menu/MenuContentImpl.vue'
6
+ import { injectMenuRootContext } from '@/Menu/MenuRoot.vue'
7
+ import { injectMenuSubContext } from '@/Menu/MenuSub.vue'
8
+ import { Primitive, usePrimitiveElement } from '@/Primitive'
9
+
10
+ export interface DropdownMenuFilterProps extends PrimitiveProps {
11
+ /** The controlled value of the filter. Can be binded with v-model. */
12
+ modelValue?: string
13
+ /** Focus on element when mounted. */
14
+ autoFocus?: boolean
15
+ /** When `true`, prevents the user from interacting with item */
16
+ disabled?: boolean
17
+ }
18
+
19
+ export type DropdownMenuFilterEmits = {
20
+ 'update:modelValue': [string]
21
+ }
22
+ </script>
23
+
24
+ <script setup lang="ts">
25
+ const props = withDefaults(defineProps<DropdownMenuFilterProps>(), {
26
+ as: 'input',
27
+ })
28
+ const emits = defineEmits<DropdownMenuFilterEmits>()
29
+
30
+ defineSlots<{
31
+ default?: (props: {
32
+ /** Current input values */
33
+ modelValue: typeof modelValue.value
34
+ }) => any
35
+ }>()
36
+
37
+ const modelValue = useVModel(props, 'modelValue', emits, {
38
+ defaultValue: '',
39
+ passive: (props.modelValue === undefined) as false,
40
+ })
41
+
42
+ const rootContext = injectMenuRootContext()
43
+ const contentContext = injectMenuContentContext()
44
+ const subContext = injectMenuSubContext(null)
45
+
46
+ // Keep searchRef in sync with modelValue changes
47
+ watch(modelValue, (v) => { contentContext.searchRef.value = v ?? '' }, { immediate: true })
48
+
49
+ const { primitiveElement, currentElement } = usePrimitiveElement()
50
+ const disabled = computed(() => props.disabled || false)
51
+
52
+ const activedescendant = ref<string | undefined>()
53
+ watchSyncEffect(() => activedescendant.value = contentContext.highlightedElement.value?.id)
54
+
55
+ onMounted(() => {
56
+ contentContext.onFilterElementChange(currentElement.value)
57
+ setTimeout(() => {
58
+ // make sure all DOM was flush then only capture the focus
59
+ if (props.autoFocus) {
60
+ const isSubmenu = !!subContext
61
+ if (!isSubmenu || rootContext.isUsingKeyboardRef.value)
62
+ currentElement.value?.focus()
63
+ }
64
+ }, 1)
65
+ })
66
+
67
+ onUnmounted(() => {
68
+ contentContext.onFilterElementChange(undefined)
69
+ // Clean up search when unmounting
70
+ contentContext.searchRef.value = ''
71
+ })
72
+
73
+ function handleInput(event: InputEvent) {
74
+ if (disabled.value)
75
+ return
76
+ const target = event.target as HTMLInputElement
77
+ modelValue.value = target.value
78
+ // Update the menu's search ref to help with filtering
79
+ contentContext.searchRef.value = target.value
80
+ }
81
+
82
+ function handleKeyDown(event: KeyboardEvent) {
83
+ if (disabled.value)
84
+ return
85
+ if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
86
+ event.preventDefault()
87
+ contentContext.onKeydownNavigation(event)
88
+ }
89
+ else if (event.key === 'Enter') {
90
+ event.preventDefault()
91
+ contentContext.onKeydownEnter(event)
92
+ }
93
+ // Prevent Escape from bubbling to avoid closing the menu when clearing the filter
94
+ else if (event.key === 'Escape' && modelValue.value) {
95
+ event.stopPropagation()
96
+ modelValue.value = ''
97
+ contentContext.searchRef.value = ''
98
+ }
99
+ }
100
+ </script>
101
+
102
+ <template>
103
+ <Primitive
104
+ ref="primitiveElement"
105
+ :as="as"
106
+ :as-child="asChild"
107
+ :value="modelValue"
108
+ :disabled="disabled ? '' : undefined"
109
+ :data-disabled="disabled ? '' : undefined"
110
+ :aria-disabled="disabled ? true : undefined"
111
+ :aria-activedescendant="activedescendant"
112
+ type="text"
113
+ role="searchbox"
114
+ @input="handleInput"
115
+ @keydown="handleKeyDown"
116
+ >
117
+ <slot :model-value="modelValue" />
118
+ </Primitive>
119
+ </template>
@@ -12,6 +12,11 @@ export {
12
12
  type DropdownMenuContentEmits,
13
13
  type DropdownMenuContentProps,
14
14
  } from './DropdownMenuContent.vue'
15
+ export {
16
+ default as DropdownMenuFilter,
17
+ type DropdownMenuFilterEmits,
18
+ type DropdownMenuFilterProps,
19
+ } from './DropdownMenuFilter.vue'
15
20
  export {
16
21
  default as DropdownMenuGroup,
17
22
  type DropdownMenuGroupProps,
@@ -27,6 +27,12 @@ export interface MenuContentContext {
27
27
  onItemLeave: (event: PointerEvent) => void
28
28
  onTriggerLeave: (event: PointerEvent) => boolean
29
29
  searchRef: Ref<string>
30
+ highlightedElement: Ref<HTMLElement | undefined>
31
+ onKeydownNavigation: (event: KeyboardEvent) => void
32
+ onKeydownEnter: (event: KeyboardEvent) => void
33
+ filterElement: Ref<HTMLElement | undefined>
34
+ onFilterElementChange: (el: HTMLElement | undefined) => void
35
+ activeSubmenuContext: Ref<{ onOpenChange: (open: boolean) => void, trigger: Ref<HTMLElement | undefined> } | undefined>
30
36
  pointerGraceTimerRef: Ref<number>
31
37
  onPointerGraceIntentChange: (intent: GraceIntent | null) => void
32
38
  }
@@ -132,6 +138,43 @@ const rovingFocusGroupRef = ref<InstanceType<typeof RovingFocusGroup>>()
132
138
  const { forwardRef, currentElement: contentElement } = useForwardExpose()
133
139
  const { handleTypeaheadSearch } = useTypeahead()
134
140
 
141
+ const highlightedElement = ref<HTMLElement>()
142
+
143
+ function onKeydownNavigation(event: KeyboardEvent) {
144
+ const el = useArrowNavigation(
145
+ event,
146
+ (highlightedElement.value || getActiveElement()) as HTMLElement,
147
+ contentElement.value,
148
+ {
149
+ loop: loop.value,
150
+ arrowKeyOptions: 'vertical',
151
+ dir: rootContext?.dir.value,
152
+ focus: false,
153
+ attributeName: '[data-reka-collection-item]:not([data-disabled])',
154
+ },
155
+ )
156
+ if (el) {
157
+ highlightedElement.value = el
158
+ el.scrollIntoView({ block: 'nearest' })
159
+ }
160
+ }
161
+
162
+ function onKeydownEnter() {
163
+ if (highlightedElement.value) {
164
+ highlightedElement.value.click()
165
+ }
166
+ }
167
+
168
+ const filterElement = ref<HTMLElement>()
169
+ const activeSubmenuContext = ref<{ onOpenChange: (open: boolean) => void, trigger: Ref<HTMLElement | undefined> }>()
170
+
171
+ watch(highlightedElement, (el) => {
172
+ if (activeSubmenuContext.value && (el === undefined || el !== activeSubmenuContext.value.trigger.value)) {
173
+ activeSubmenuContext.value.onOpenChange(false)
174
+ activeSubmenuContext.value = undefined
175
+ }
176
+ })
177
+
135
178
  watch(contentElement, (el) => {
136
179
  menuContext!.onContentChange(el)
137
180
  })
@@ -169,6 +212,7 @@ function handleKeyDown(event: KeyboardEvent) {
169
212
  const target = event.target as HTMLElement
170
213
  const isKeyDownInside
171
214
  = target.closest('[data-reka-menu-content]') === event.currentTarget
215
+ const isKeyDownInTextField = ['input', 'textarea'].includes(target.tagName.toLowerCase())
172
216
  const isModifierKey = event.ctrlKey || event.altKey || event.metaKey
173
217
  const isCharacterKey = event.key.length === 1
174
218
 
@@ -197,7 +241,7 @@ function handleKeyDown(event: KeyboardEvent) {
197
241
  // menus should not be navigated using tab key so we prevent it
198
242
  if (event.key === 'Tab')
199
243
  event.preventDefault()
200
- if (!isModifierKey && isCharacterKey)
244
+ if (!isModifierKey && isCharacterKey && !isKeyDownInTextField)
201
245
  handleTypeaheadSearch(event.key, collectionItems)
202
246
  }
203
247
 
@@ -240,6 +284,15 @@ function handlePointerMove(event: PointerEvent) {
240
284
  }
241
285
  }
242
286
 
287
+ function handlePointerEnter(event: PointerEvent) {
288
+ if (!isMouseEvent(event))
289
+ return
290
+ // When hovering over a menu content (main or sub), focus its filter element if it exists
291
+ if (filterElement.value) {
292
+ filterElement.value.focus()
293
+ }
294
+ }
295
+
243
296
  provideMenuContentContext({
244
297
  onItemEnter: (event) => {
245
298
  // event.preventDefault() we can't prevent pointerMove event
@@ -251,7 +304,11 @@ provideMenuContentContext({
251
304
  onItemLeave: (event) => {
252
305
  if (isPointerMovingToSubmenu(event))
253
306
  return
254
- contentElement.value?.focus()
307
+
308
+ const isInputFocused = ['INPUT', 'TEXTAREA'].includes(getActiveElement()?.tagName || '')
309
+ if (!isInputFocused)
310
+ contentElement.value?.focus()
311
+
255
312
  currentItemId.value = null
256
313
  },
257
314
  onTriggerLeave: (event) => {
@@ -262,6 +319,14 @@ provideMenuContentContext({
262
319
  return false
263
320
  },
264
321
  searchRef,
322
+ highlightedElement,
323
+ onKeydownNavigation,
324
+ onKeydownEnter,
325
+ filterElement,
326
+ onFilterElementChange: (el) => {
327
+ filterElement.value = el
328
+ },
329
+ activeSubmenuContext,
265
330
  pointerGraceTimerRef,
266
331
  onPointerGraceIntentChange: (intent) => {
267
332
  pointerGraceIntentRef.value = intent
@@ -324,6 +389,7 @@ provideMenuContentContext({
324
389
  @keydown="handleKeyDown"
325
390
  @blur="handleBlur"
326
391
  @pointermove="handlePointerMove"
392
+ @pointerenter="handlePointerEnter"
327
393
  >
328
394
  <slot />
329
395
  </PopperContent>