@brumaombra/ui-vintage 0.1.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 (297) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +78 -0
  3. package/dist/AlertDialogTitle.vue_vue_type_script_setup_true_lang-CWCr2erD.js +360 -0
  4. package/dist/AlertDialogTrigger.vue_vue_type_script_setup_true_lang-vNwxOYhM.js +158 -0
  5. package/dist/BackgroundGrid-Cxvbtefm.js +13 -0
  6. package/dist/Busy-B65Nd9ec.js +62 -0
  7. package/dist/BusyIndicator-CnWzSMDb.js +4 -0
  8. package/dist/BusyIndicator.vue_vue_type_script_setup_true_lang-CYeXMI_V.js +66 -0
  9. package/dist/CalendarPrevButton.vue_vue_type_script_setup_true_lang-C-WnFnvj.js +3805 -0
  10. package/dist/Card.vue_vue_type_script_setup_true_lang-6ol3rxy1.js +27 -0
  11. package/dist/CardTitle.vue_vue_type_script_setup_true_lang-DVAd7AWF.js +112 -0
  12. package/dist/Collection-CmOoLBo7.js +76 -0
  13. package/dist/ConfigProvider-D2O0Jles.js +6 -0
  14. package/dist/ConfirmDialog-DEsvF0b_.js +4 -0
  15. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-BAd1l1zF.js +230 -0
  16. package/dist/DashboardShell.vue_vue_type_script_setup_true_lang-CT2SQBXv.js +171 -0
  17. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-D8mev2ha.js +92 -0
  18. package/dist/DialogClose-BNlqG4G2.js +36 -0
  19. package/dist/DialogTitle-DXj0nkXn.js +522 -0
  20. package/dist/DialogTitle.vue_vue_type_script_setup_true_lang-Bw40D4AK.js +174 -0
  21. package/dist/DialogTrigger-CpyKnu11.js +52 -0
  22. package/dist/DialogTrigger.vue_vue_type_script_setup_true_lang-DLrFiCsw.js +141 -0
  23. package/dist/FocusScope-C3mcVwsf.js +454 -0
  24. package/dist/Input.vue_vue_type_script_setup_true_lang-U778IWa0.js +37 -0
  25. package/dist/Label.vue_vue_type_script_setup_true_lang-B_fwvfJ-.js +65 -0
  26. package/dist/MessageDialog-BrowppID.js +4 -0
  27. package/dist/MessageDialog.vue_vue_type_script_setup_true_lang-Ddih5Isd.js +242 -0
  28. package/dist/NativeSelectOption.vue_vue_type_script_setup_true_lang-DS87OTLT.js +73 -0
  29. package/dist/PopoverAnchor.vue_vue_type_script_setup_true_lang-CsfybvZp.js +61 -0
  30. package/dist/PopoverTrigger.vue_vue_type_script_setup_true_lang-KTcg6Jnl.js +798 -0
  31. package/dist/PopperContent-BiM0YLO3.js +2144 -0
  32. package/dist/Primitive-D3IcFg81.js +61 -0
  33. package/dist/SelectValue.vue_vue_type_script_setup_true_lang-DGAI4hw5.js +2124 -0
  34. package/dist/Separator-CFm_M4pb.js +87 -0
  35. package/dist/Separator.vue_vue_type_script_setup_true_lang-COrZ60NR.js +29 -0
  36. package/dist/SheetTitle.vue_vue_type_script_setup_true_lang-DLoXGMbx.js +175 -0
  37. package/dist/SheetTrigger.vue_vue_type_script_setup_true_lang-CE2XJNHy.js +62 -0
  38. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-BSbVyZz7.js +20 -0
  39. package/dist/Slider.vue_vue_type_script_setup_true_lang-D-cAN-4Q.js +802 -0
  40. package/dist/SliderFormComponent.vue_vue_type_script_setup_true_lang-KPzC_Lmr.js +59 -0
  41. package/dist/Switch.vue_vue_type_script_setup_true_lang-BWKCycMm.js +226 -0
  42. package/dist/SwitchFormComponent.vue_vue_type_script_setup_true_lang-XOBEs3pa.js +39 -0
  43. package/dist/Teleport-CuUn4UkG.js +493 -0
  44. package/dist/TooltipProvider.vue_vue_type_script_setup_true_lang-DwIfCQjY.js +28 -0
  45. package/dist/TooltipTrigger.vue_vue_type_script_setup_true_lang-BRyHTWgw.js +1117 -0
  46. package/dist/VisuallyHidden-udQT2Fmo.js +60 -0
  47. package/dist/VisuallyHiddenInput-DLAsRwUw.js +142 -0
  48. package/dist/_plugin-vue_export-helper-1tPrXgE0.js +10 -0
  49. package/dist/alert-dialog.d.ts +2 -0
  50. package/dist/alert-dialog.js +13 -0
  51. package/dist/alert.d.ts +2 -0
  52. package/dist/alert.js +76 -0
  53. package/dist/background-grid.d.ts +6 -0
  54. package/dist/background-grid.js +5 -0
  55. package/dist/busy-indicator.d.ts +2 -0
  56. package/dist/busy-indicator.js +6 -0
  57. package/dist/busy.d.ts +2 -0
  58. package/dist/busy.js +4 -0
  59. package/dist/button.d.ts +2 -0
  60. package/dist/button.js +63 -0
  61. package/dist/calendar.d.ts +2 -0
  62. package/dist/calendar.js +15 -0
  63. package/dist/card.d.ts +2 -0
  64. package/dist/card.js +11 -0
  65. package/dist/check-iejznCzf.js +11 -0
  66. package/dist/chevron-down-DP-oz-sL.js +13 -0
  67. package/dist/clamp-D5Ye0kJT.js +6 -0
  68. package/dist/command.d.ts +2 -0
  69. package/dist/command.js +1122 -0
  70. package/dist/components/background-grid/BackgroundGrid.vue.d.ts +2 -0
  71. package/dist/components/background-grid/index.d.ts +2 -0
  72. package/dist/components/busy-indicator/BusyIndicator.vue.d.ts +2 -0
  73. package/dist/components/busy-indicator/busy-indicator-state.d.ts +15 -0
  74. package/dist/components/busy-indicator/index.d.ts +3 -0
  75. package/dist/components/confirm-dialog/ConfirmDialog.vue.d.ts +2 -0
  76. package/dist/components/confirm-dialog/confirm-dialog-state.d.ts +37 -0
  77. package/dist/components/confirm-dialog/index.d.ts +3 -0
  78. package/dist/components/dashboard-shell/DashboardShell.vue.d.ts +54 -0
  79. package/dist/components/dashboard-shell/index.d.ts +2 -0
  80. package/dist/components/message-dialog/MessageDialog.vue.d.ts +2 -0
  81. package/dist/components/message-dialog/index.d.ts +3 -0
  82. package/dist/components/message-dialog/message-dialog-state.d.ts +28 -0
  83. package/dist/components/slider-form-component/SliderFormComponent.vue.d.ts +23 -0
  84. package/dist/components/slider-form-component/index.d.ts +2 -0
  85. package/dist/components/switch-form-component/SwitchFormComponent.vue.d.ts +12 -0
  86. package/dist/components/switch-form-component/index.d.ts +2 -0
  87. package/dist/components/ui/alert/Alert.vue.d.ts +23 -0
  88. package/dist/components/ui/alert/AlertDescription.vue.d.ts +21 -0
  89. package/dist/components/ui/alert/AlertTitle.vue.d.ts +21 -0
  90. package/dist/components/ui/alert/index.d.ts +8 -0
  91. package/dist/components/ui/alert-dialog/AlertDialog.vue.d.ts +25 -0
  92. package/dist/components/ui/alert-dialog/AlertDialogAction.vue.d.ts +22 -0
  93. package/dist/components/ui/alert-dialog/AlertDialogCancel.vue.d.ts +22 -0
  94. package/dist/components/ui/alert-dialog/AlertDialogContent.vue.d.ts +36 -0
  95. package/dist/components/ui/alert-dialog/AlertDialogDescription.vue.d.ts +22 -0
  96. package/dist/components/ui/alert-dialog/AlertDialogFooter.vue.d.ts +21 -0
  97. package/dist/components/ui/alert-dialog/AlertDialogHeader.vue.d.ts +21 -0
  98. package/dist/components/ui/alert-dialog/AlertDialogTitle.vue.d.ts +22 -0
  99. package/dist/components/ui/alert-dialog/AlertDialogTrigger.vue.d.ts +18 -0
  100. package/dist/components/ui/alert-dialog/index.d.ts +9 -0
  101. package/dist/components/ui/busy/Busy.vue.d.ts +27 -0
  102. package/dist/components/ui/busy/index.d.ts +1 -0
  103. package/dist/components/ui/button/Button.vue.d.ts +27 -0
  104. package/dist/components/ui/button/index.d.ts +7 -0
  105. package/dist/components/ui/calendar/Calendar.vue.d.ts +44 -0
  106. package/dist/components/ui/calendar/CalendarCell.vue.d.ts +22 -0
  107. package/dist/components/ui/calendar/CalendarCellTrigger.vue.d.ts +24 -0
  108. package/dist/components/ui/calendar/CalendarGrid.vue.d.ts +22 -0
  109. package/dist/components/ui/calendar/CalendarGridBody.vue.d.ts +18 -0
  110. package/dist/components/ui/calendar/CalendarGridHead.vue.d.ts +22 -0
  111. package/dist/components/ui/calendar/CalendarGridRow.vue.d.ts +22 -0
  112. package/dist/components/ui/calendar/CalendarHeadCell.vue.d.ts +22 -0
  113. package/dist/components/ui/calendar/CalendarHeader.vue.d.ts +22 -0
  114. package/dist/components/ui/calendar/CalendarHeading.vue.d.ts +28 -0
  115. package/dist/components/ui/calendar/CalendarNextButton.vue.d.ts +22 -0
  116. package/dist/components/ui/calendar/CalendarPrevButton.vue.d.ts +22 -0
  117. package/dist/components/ui/calendar/index.d.ts +13 -0
  118. package/dist/components/ui/card/Card.vue.d.ts +21 -0
  119. package/dist/components/ui/card/CardAction.vue.d.ts +21 -0
  120. package/dist/components/ui/card/CardContent.vue.d.ts +21 -0
  121. package/dist/components/ui/card/CardDescription.vue.d.ts +21 -0
  122. package/dist/components/ui/card/CardFooter.vue.d.ts +21 -0
  123. package/dist/components/ui/card/CardHeader.vue.d.ts +21 -0
  124. package/dist/components/ui/card/CardTitle.vue.d.ts +21 -0
  125. package/dist/components/ui/card/index.d.ts +7 -0
  126. package/dist/components/ui/command/Command.vue.d.ts +40 -0
  127. package/dist/components/ui/command/CommandDialog.vue.d.ts +32 -0
  128. package/dist/components/ui/command/CommandEmpty.vue.d.ts +22 -0
  129. package/dist/components/ui/command/CommandGroup.vue.d.ts +23 -0
  130. package/dist/components/ui/command/CommandInput.vue.d.ts +7 -0
  131. package/dist/components/ui/command/CommandItem.vue.d.ts +30 -0
  132. package/dist/components/ui/command/CommandList.vue.d.ts +22 -0
  133. package/dist/components/ui/command/CommandSeparator.vue.d.ts +22 -0
  134. package/dist/components/ui/command/CommandShortcut.vue.d.ts +21 -0
  135. package/dist/components/ui/command/index.d.ts +90 -0
  136. package/dist/components/ui/date-picker/DatePicker.vue.d.ts +19 -0
  137. package/dist/components/ui/date-picker/index.d.ts +2 -0
  138. package/dist/components/ui/dialog/Dialog.vue.d.ts +25 -0
  139. package/dist/components/ui/dialog/DialogClose.vue.d.ts +18 -0
  140. package/dist/components/ui/dialog/DialogContent.vue.d.ts +39 -0
  141. package/dist/components/ui/dialog/DialogDescription.vue.d.ts +22 -0
  142. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +24 -0
  143. package/dist/components/ui/dialog/DialogHeader.vue.d.ts +21 -0
  144. package/dist/components/ui/dialog/DialogOverlay.vue.d.ts +22 -0
  145. package/dist/components/ui/dialog/DialogScrollContent.vue.d.ts +36 -0
  146. package/dist/components/ui/dialog/DialogTitle.vue.d.ts +22 -0
  147. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts +18 -0
  148. package/dist/components/ui/dialog/index.d.ts +10 -0
  149. package/dist/components/ui/field/Field.vue.d.ts +23 -0
  150. package/dist/components/ui/field/FieldContent.vue.d.ts +21 -0
  151. package/dist/components/ui/field/FieldDescription.vue.d.ts +21 -0
  152. package/dist/components/ui/field/FieldError.vue.d.ts +24 -0
  153. package/dist/components/ui/field/FieldGroup.vue.d.ts +21 -0
  154. package/dist/components/ui/field/FieldLabel.vue.d.ts +21 -0
  155. package/dist/components/ui/field/FieldLegend.vue.d.ts +22 -0
  156. package/dist/components/ui/field/FieldSeparator.vue.d.ts +21 -0
  157. package/dist/components/ui/field/FieldSet.vue.d.ts +21 -0
  158. package/dist/components/ui/field/FieldTitle.vue.d.ts +21 -0
  159. package/dist/components/ui/field/index.d.ts +15 -0
  160. package/dist/components/ui/input/Input.vue.d.ts +12 -0
  161. package/dist/components/ui/input/index.d.ts +1 -0
  162. package/dist/components/ui/label/Label.vue.d.ts +22 -0
  163. package/dist/components/ui/label/index.d.ts +1 -0
  164. package/dist/components/ui/native-select/NativeSelect.vue.d.ts +27 -0
  165. package/dist/components/ui/native-select/NativeSelectOptGroup.vue.d.ts +21 -0
  166. package/dist/components/ui/native-select/NativeSelectOption.vue.d.ts +21 -0
  167. package/dist/components/ui/native-select/index.d.ts +3 -0
  168. package/dist/components/ui/popover/Popover.vue.d.ts +25 -0
  169. package/dist/components/ui/popover/PopoverAnchor.vue.d.ts +18 -0
  170. package/dist/components/ui/popover/PopoverContent.vue.d.ts +39 -0
  171. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts +18 -0
  172. package/dist/components/ui/popover/index.d.ts +4 -0
  173. package/dist/components/ui/select/Select.vue.d.ts +28 -0
  174. package/dist/components/ui/select/SelectContent.vue.d.ts +32 -0
  175. package/dist/components/ui/select/SelectGroup.vue.d.ts +18 -0
  176. package/dist/components/ui/select/SelectItem.vue.d.ts +24 -0
  177. package/dist/components/ui/select/SelectItemText.vue.d.ts +18 -0
  178. package/dist/components/ui/select/SelectLabel.vue.d.ts +22 -0
  179. package/dist/components/ui/select/SelectScrollDownButton.vue.d.ts +22 -0
  180. package/dist/components/ui/select/SelectScrollUpButton.vue.d.ts +22 -0
  181. package/dist/components/ui/select/SelectSeparator.vue.d.ts +7 -0
  182. package/dist/components/ui/select/SelectTrigger.vue.d.ts +25 -0
  183. package/dist/components/ui/select/SelectValue.vue.d.ts +18 -0
  184. package/dist/components/ui/select/index.d.ts +11 -0
  185. package/dist/components/ui/separator/Separator.vue.d.ts +10 -0
  186. package/dist/components/ui/separator/index.d.ts +1 -0
  187. package/dist/components/ui/sheet/Sheet.vue.d.ts +25 -0
  188. package/dist/components/ui/sheet/SheetClose.vue.d.ts +18 -0
  189. package/dist/components/ui/sheet/SheetContent.vue.d.ts +39 -0
  190. package/dist/components/ui/sheet/SheetDescription.vue.d.ts +22 -0
  191. package/dist/components/ui/sheet/SheetFooter.vue.d.ts +21 -0
  192. package/dist/components/ui/sheet/SheetHeader.vue.d.ts +21 -0
  193. package/dist/components/ui/sheet/SheetOverlay.vue.d.ts +22 -0
  194. package/dist/components/ui/sheet/SheetTitle.vue.d.ts +22 -0
  195. package/dist/components/ui/sheet/SheetTrigger.vue.d.ts +18 -0
  196. package/dist/components/ui/sheet/index.d.ts +8 -0
  197. package/dist/components/ui/sidebar/Sidebar.vue.d.ts +24 -0
  198. package/dist/components/ui/sidebar/SidebarContent.vue.d.ts +21 -0
  199. package/dist/components/ui/sidebar/SidebarFooter.vue.d.ts +21 -0
  200. package/dist/components/ui/sidebar/SidebarGroup.vue.d.ts +21 -0
  201. package/dist/components/ui/sidebar/SidebarGroupAction.vue.d.ts +22 -0
  202. package/dist/components/ui/sidebar/SidebarGroupContent.vue.d.ts +21 -0
  203. package/dist/components/ui/sidebar/SidebarGroupLabel.vue.d.ts +22 -0
  204. package/dist/components/ui/sidebar/SidebarHeader.vue.d.ts +21 -0
  205. package/dist/components/ui/sidebar/SidebarInput.vue.d.ts +21 -0
  206. package/dist/components/ui/sidebar/SidebarInset.vue.d.ts +21 -0
  207. package/dist/components/ui/sidebar/SidebarMenu.vue.d.ts +21 -0
  208. package/dist/components/ui/sidebar/SidebarMenuAction.vue.d.ts +25 -0
  209. package/dist/components/ui/sidebar/SidebarMenuBadge.vue.d.ts +21 -0
  210. package/dist/components/ui/sidebar/SidebarMenuButton.vue.d.ts +27 -0
  211. package/dist/components/ui/sidebar/SidebarMenuButtonChild.vue.d.ts +30 -0
  212. package/dist/components/ui/sidebar/SidebarMenuItem.vue.d.ts +21 -0
  213. package/dist/components/ui/sidebar/SidebarMenuSkeleton.vue.d.ts +7 -0
  214. package/dist/components/ui/sidebar/SidebarMenuSub.vue.d.ts +21 -0
  215. package/dist/components/ui/sidebar/SidebarMenuSubButton.vue.d.ts +27 -0
  216. package/dist/components/ui/sidebar/SidebarMenuSubItem.vue.d.ts +21 -0
  217. package/dist/components/ui/sidebar/SidebarProvider.vue.d.ts +30 -0
  218. package/dist/components/ui/sidebar/SidebarRail.vue.d.ts +21 -0
  219. package/dist/components/ui/sidebar/SidebarSeparator.vue.d.ts +21 -0
  220. package/dist/components/ui/sidebar/SidebarTrigger.vue.d.ts +6 -0
  221. package/dist/components/ui/sidebar/index.d.ts +37 -0
  222. package/dist/components/ui/sidebar/utils.d.ts +56 -0
  223. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +6 -0
  224. package/dist/components/ui/skeleton/index.d.ts +1 -0
  225. package/dist/components/ui/slider/Slider.vue.d.ts +13 -0
  226. package/dist/components/ui/slider/index.d.ts +1 -0
  227. package/dist/components/ui/switch/Switch.vue.d.ts +29 -0
  228. package/dist/components/ui/switch/index.d.ts +1 -0
  229. package/dist/components/ui/tooltip/Tooltip.vue.d.ts +24 -0
  230. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +30 -0
  231. package/dist/components/ui/tooltip/TooltipProvider.vue.d.ts +20 -0
  232. package/dist/components/ui/tooltip/TooltipTrigger.vue.d.ts +18 -0
  233. package/dist/components/ui/tooltip/index.d.ts +4 -0
  234. package/dist/confirm-dialog.d.ts +2 -0
  235. package/dist/confirm-dialog.js +9 -0
  236. package/dist/createLucideIcon-CCMB2vDW.js +130 -0
  237. package/dist/dashboard-shell.d.ts +6 -0
  238. package/dist/dashboard-shell.js +5 -0
  239. package/dist/date-picker.d.ts +6 -0
  240. package/dist/date-picker.js +5 -0
  241. package/dist/dialog.d.ts +2 -0
  242. package/dist/dialog.js +14 -0
  243. package/dist/field.d.ts +2 -0
  244. package/dist/field.js +294 -0
  245. package/dist/index-C1_fxYhb.js +251 -0
  246. package/dist/index-Dfi5ESP2.js +299 -0
  247. package/dist/index-FpH8cK6B.js +44 -0
  248. package/dist/index.d.ts +28 -0
  249. package/dist/index.js +171 -0
  250. package/dist/info-DZrSmi42.js +15 -0
  251. package/dist/input.d.ts +2 -0
  252. package/dist/input.js +4 -0
  253. package/dist/label.d.ts +2 -0
  254. package/dist/label.js +4 -0
  255. package/dist/lib/utils.d.ts +2 -0
  256. package/dist/message-dialog.d.ts +2 -0
  257. package/dist/message-dialog.js +8 -0
  258. package/dist/native-select.d.ts +2 -0
  259. package/dist/native-select.js +25 -0
  260. package/dist/popover.d.ts +2 -0
  261. package/dist/popover.js +8 -0
  262. package/dist/select.d.ts +2 -0
  263. package/dist/select.js +14 -0
  264. package/dist/separator.d.ts +2 -0
  265. package/dist/separator.js +4 -0
  266. package/dist/sheet.d.ts +2 -0
  267. package/dist/sheet.js +12 -0
  268. package/dist/sidebar.d.ts +2 -0
  269. package/dist/sidebar.js +813 -0
  270. package/dist/skeleton.d.ts +2 -0
  271. package/dist/skeleton.js +4 -0
  272. package/dist/slider-form-component.d.ts +6 -0
  273. package/dist/slider-form-component.js +5 -0
  274. package/dist/slider.d.ts +2 -0
  275. package/dist/slider.js +4 -0
  276. package/dist/style.css +4021 -0
  277. package/dist/switch-form-component.d.ts +6 -0
  278. package/dist/switch-form-component.js +5 -0
  279. package/dist/switch.d.ts +2 -0
  280. package/dist/switch.js +4 -0
  281. package/dist/tooltip.d.ts +2 -0
  282. package/dist/tooltip.js +8 -0
  283. package/dist/useDirection-SIyEYNxv.js +12 -0
  284. package/dist/useFocusGuards-tgErlvMF.js +29 -0
  285. package/dist/useFormControl-7ytzz-r7.js +11 -0
  286. package/dist/useForwardExpose-CNVHwdF2.js +58 -0
  287. package/dist/useForwardPropsEmits-DmumnZO5.js +63 -0
  288. package/dist/useKbd-JjFOu4f7.js +41 -0
  289. package/dist/usePrimitiveElement-CijaRBgF.js +16 -0
  290. package/dist/useSize-DO9Z3wC4.js +51 -0
  291. package/dist/useTypeahead-Dqe1QXq1.js +159 -0
  292. package/dist/utils-Bz4m9VPB.js +3192 -0
  293. package/dist/utils-RRmyeqLm.js +16 -0
  294. package/dist/utils.d.ts +2 -0
  295. package/dist/utils.js +4 -0
  296. package/dist/x-2_VzbDS9.js +48 -0
  297. package/package.json +186 -0
@@ -0,0 +1,2124 @@
1
+ import { ref, computed, defineComponent, toRefs, openBlock, createBlock, unref, withCtx, renderSlot, createElementBlock, createCommentVNode, Fragment, renderList, mergeProps, watch, createElementVNode, watchEffect, createVNode, withModifiers, resolveDynamicComponent, onMounted, nextTick, normalizeStyle, normalizeProps, guardReactiveProps, Teleport, createTextVNode, onUnmounted, onBeforeUnmount, toDisplayString, normalizeClass } from "vue";
2
+ import { c as createContext, a as useForwardProps, u as useForwardPropsEmits } from "./useForwardPropsEmits-DmumnZO5.js";
3
+ import { i as isNullish, D as DismissableLayer_default, P as Presence_default, u as useId, h as handleAndDispatchCustomEvent, T as Teleport_default } from "./Teleport-CuUn4UkG.js";
4
+ import { u as useForwardExpose } from "./useForwardExpose-CNVHwdF2.js";
5
+ import { P as Primitive } from "./Primitive-D3IcFg81.js";
6
+ import { i as injectConfigProviderContext } from "./ConfigProvider-D2O0Jles.js";
7
+ import { c as cn } from "./utils-Bz4m9VPB.js";
8
+ import { r as reactiveOmit } from "./index-Dfi5ESP2.js";
9
+ import { C as ChevronDown } from "./chevron-down-DP-oz-sL.js";
10
+ import { C as Check } from "./check-iejznCzf.js";
11
+ import { u as useBodyScrollLock, a as useHideOthers, F as FocusScope_default, g as getActiveElement } from "./FocusScope-C3mcVwsf.js";
12
+ import { u as useCollection } from "./Collection-CmOoLBo7.js";
13
+ import { c as clamp } from "./clamp-D5Ye0kJT.js";
14
+ import { u as useFocusGuards } from "./useFocusGuards-tgErlvMF.js";
15
+ import { i as isEqual, u as useTypeahead } from "./useTypeahead-Dqe1QXq1.js";
16
+ import { f as focusFirst } from "./utils-RRmyeqLm.js";
17
+ import { a as PopperRoot_default, b as PopperContent_default, P as PopperAnchor_default } from "./PopperContent-BiM0YLO3.js";
18
+ import { u as useVModel, a as unrefElement, h as useResizeObserver } from "./index-C1_fxYhb.js";
19
+ import { c as createLucideIcon } from "./createLucideIcon-CCMB2vDW.js";
20
+ import { u as useDirection } from "./useDirection-SIyEYNxv.js";
21
+ import { u as useFormControl } from "./useFormControl-7ytzz-r7.js";
22
+ import { V as VisuallyHidden_default } from "./VisuallyHidden-udQT2Fmo.js";
23
+ function useNonce(nonce) {
24
+ const context = injectConfigProviderContext({ nonce: ref() });
25
+ return computed(() => {
26
+ var _a;
27
+ return (nonce == null ? void 0 : nonce.value) || ((_a = context.nonce) == null ? void 0 : _a.value);
28
+ });
29
+ }
30
+ const OPEN_KEYS = [
31
+ " ",
32
+ "Enter",
33
+ "ArrowUp",
34
+ "ArrowDown"
35
+ ];
36
+ const SELECTION_KEYS = [" ", "Enter"];
37
+ const CONTENT_MARGIN = 10;
38
+ function valueComparator(value, currentValue, comparator) {
39
+ if (value === void 0) return false;
40
+ else if (Array.isArray(value)) return value.some((val) => compare(val, currentValue, comparator));
41
+ else return compare(value, currentValue, comparator);
42
+ }
43
+ function compare(value, currentValue, comparator) {
44
+ if (value === void 0 || currentValue === void 0) return false;
45
+ if (typeof value === "string") return value === currentValue;
46
+ if (typeof comparator === "function") return comparator(value, currentValue);
47
+ if (typeof comparator === "string") return (value == null ? void 0 : value[comparator]) === (currentValue == null ? void 0 : currentValue[comparator]);
48
+ return isEqual(value, currentValue);
49
+ }
50
+ function shouldShowPlaceholder(value) {
51
+ return value === void 0 || value === null || value === "" || Array.isArray(value) && value.length === 0;
52
+ }
53
+ const _hoisted_1$2 = {
54
+ key: 0,
55
+ value: ""
56
+ };
57
+ const [injectSelectRootContext, provideSelectRootContext] = createContext("SelectRoot");
58
+ var SelectRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
59
+ inheritAttrs: false,
60
+ __name: "SelectRoot",
61
+ props: {
62
+ open: {
63
+ type: Boolean,
64
+ required: false,
65
+ default: void 0
66
+ },
67
+ defaultOpen: {
68
+ type: Boolean,
69
+ required: false
70
+ },
71
+ defaultValue: {
72
+ type: null,
73
+ required: false
74
+ },
75
+ modelValue: {
76
+ type: null,
77
+ required: false,
78
+ default: void 0
79
+ },
80
+ by: {
81
+ type: [String, Function],
82
+ required: false
83
+ },
84
+ dir: {
85
+ type: String,
86
+ required: false
87
+ },
88
+ multiple: {
89
+ type: Boolean,
90
+ required: false
91
+ },
92
+ autocomplete: {
93
+ type: String,
94
+ required: false
95
+ },
96
+ disabled: {
97
+ type: Boolean,
98
+ required: false
99
+ },
100
+ name: {
101
+ type: String,
102
+ required: false
103
+ },
104
+ required: {
105
+ type: Boolean,
106
+ required: false
107
+ }
108
+ },
109
+ emits: ["update:modelValue", "update:open"],
110
+ setup(__props, { emit: __emit }) {
111
+ const props = __props;
112
+ const emits = __emit;
113
+ const { required, disabled, multiple, dir: propDir } = toRefs(props);
114
+ const modelValue = useVModel(props, "modelValue", emits, {
115
+ defaultValue: props.defaultValue ?? (multiple.value ? [] : void 0),
116
+ passive: props.modelValue === void 0,
117
+ deep: true
118
+ });
119
+ const open = useVModel(props, "open", emits, {
120
+ defaultValue: props.defaultOpen,
121
+ passive: props.open === void 0
122
+ });
123
+ const triggerElement = ref();
124
+ const valueElement = ref();
125
+ const triggerPointerDownPosRef = ref({
126
+ x: 0,
127
+ y: 0
128
+ });
129
+ const isEmptyModelValue = computed(() => {
130
+ var _a;
131
+ if (multiple.value && Array.isArray(modelValue.value)) return ((_a = modelValue.value) == null ? void 0 : _a.length) === 0;
132
+ else return isNullish(modelValue.value);
133
+ });
134
+ useCollection({ isProvider: true });
135
+ const dir = useDirection(propDir);
136
+ const isFormControl = useFormControl(triggerElement);
137
+ const optionsSet = ref(/* @__PURE__ */ new Set());
138
+ const nativeSelectKey = computed(() => {
139
+ return Array.from(optionsSet.value).map((option) => option.value).join(";");
140
+ });
141
+ function handleValueChange(value) {
142
+ if (multiple.value) {
143
+ const array = Array.isArray(modelValue.value) ? [...modelValue.value] : [];
144
+ const index = array.findIndex((i) => compare(i, value, props.by));
145
+ index === -1 ? array.push(value) : array.splice(index, 1);
146
+ modelValue.value = [...array];
147
+ } else modelValue.value = value;
148
+ }
149
+ function getOption(value) {
150
+ return Array.from(optionsSet.value).find((option) => valueComparator(value, option.value, props.by));
151
+ }
152
+ provideSelectRootContext({
153
+ triggerElement,
154
+ onTriggerChange: (node) => {
155
+ triggerElement.value = node;
156
+ },
157
+ valueElement,
158
+ onValueElementChange: (node) => {
159
+ valueElement.value = node;
160
+ },
161
+ contentId: "",
162
+ modelValue,
163
+ onValueChange: handleValueChange,
164
+ by: props.by,
165
+ open,
166
+ multiple,
167
+ required,
168
+ onOpenChange: (value) => {
169
+ open.value = value;
170
+ },
171
+ dir,
172
+ triggerPointerDownPosRef,
173
+ disabled,
174
+ isEmptyModelValue,
175
+ optionsSet,
176
+ onOptionAdd: (option) => {
177
+ const existingOption = getOption(option.value);
178
+ if (existingOption) optionsSet.value.delete(existingOption);
179
+ optionsSet.value.add(option);
180
+ },
181
+ onOptionRemove: (option) => {
182
+ const existingOption = getOption(option.value);
183
+ if (existingOption) optionsSet.value.delete(existingOption);
184
+ }
185
+ });
186
+ return (_ctx, _cache) => {
187
+ return openBlock(), createBlock(unref(PopperRoot_default), null, {
188
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
189
+ modelValue: unref(modelValue),
190
+ open: unref(open)
191
+ }), unref(isFormControl) ? (openBlock(), createBlock(BubbleSelect_default, {
192
+ key: nativeSelectKey.value,
193
+ "aria-hidden": "true",
194
+ tabindex: "-1",
195
+ multiple: unref(multiple),
196
+ required: unref(required),
197
+ name: _ctx.name,
198
+ autocomplete: _ctx.autocomplete,
199
+ disabled: unref(disabled),
200
+ value: unref(modelValue)
201
+ }, {
202
+ default: withCtx(() => [unref(isNullish)(unref(modelValue)) ? (openBlock(), createElementBlock("option", _hoisted_1$2)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(Array.from(optionsSet.value), (option) => {
203
+ return openBlock(), createElementBlock("option", mergeProps({ key: option.value ?? "" }, { ref_for: true }, option), null, 16);
204
+ }), 128))]),
205
+ _: 1
206
+ }, 8, [
207
+ "multiple",
208
+ "required",
209
+ "name",
210
+ "autocomplete",
211
+ "disabled",
212
+ "value"
213
+ ])) : createCommentVNode("v-if", true)]),
214
+ _: 3
215
+ });
216
+ };
217
+ }
218
+ });
219
+ var SelectRoot_default = SelectRoot_vue_vue_type_script_setup_true_lang_default;
220
+ var BubbleSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
221
+ __name: "BubbleSelect",
222
+ props: {
223
+ autocomplete: {
224
+ type: String,
225
+ required: false
226
+ },
227
+ autofocus: {
228
+ type: Boolean,
229
+ required: false
230
+ },
231
+ disabled: {
232
+ type: Boolean,
233
+ required: false
234
+ },
235
+ form: {
236
+ type: String,
237
+ required: false
238
+ },
239
+ multiple: {
240
+ type: Boolean,
241
+ required: false
242
+ },
243
+ name: {
244
+ type: String,
245
+ required: false
246
+ },
247
+ required: {
248
+ type: Boolean,
249
+ required: false
250
+ },
251
+ size: {
252
+ type: Number,
253
+ required: false
254
+ },
255
+ value: {
256
+ type: null,
257
+ required: false
258
+ }
259
+ },
260
+ setup(__props) {
261
+ const props = __props;
262
+ const selectElement = ref();
263
+ const rootContext = injectSelectRootContext();
264
+ watch(() => props.value, (cur, prev) => {
265
+ const selectProto = window.HTMLSelectElement.prototype;
266
+ const descriptor = Object.getOwnPropertyDescriptor(selectProto, "value");
267
+ const setValue = descriptor.set;
268
+ if (cur !== prev && setValue && selectElement.value) {
269
+ const event = new Event("change", { bubbles: true });
270
+ setValue.call(selectElement.value, cur);
271
+ selectElement.value.dispatchEvent(event);
272
+ }
273
+ });
274
+ function handleInput(event) {
275
+ rootContext.onValueChange(event.target.value);
276
+ }
277
+ return (_ctx, _cache) => {
278
+ return openBlock(), createBlock(unref(VisuallyHidden_default), { "as-child": "" }, {
279
+ default: withCtx(() => [createElementVNode("select", mergeProps({
280
+ ref_key: "selectElement",
281
+ ref: selectElement
282
+ }, props, { onInput: handleInput }), [renderSlot(_ctx.$slots, "default")], 16)]),
283
+ _: 3
284
+ });
285
+ };
286
+ }
287
+ });
288
+ var BubbleSelect_default = BubbleSelect_vue_vue_type_script_setup_true_lang_default;
289
+ var SelectPopperPosition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
290
+ __name: "SelectPopperPosition",
291
+ props: {
292
+ side: {
293
+ type: null,
294
+ required: false
295
+ },
296
+ sideOffset: {
297
+ type: Number,
298
+ required: false
299
+ },
300
+ sideFlip: {
301
+ type: Boolean,
302
+ required: false
303
+ },
304
+ align: {
305
+ type: null,
306
+ required: false,
307
+ default: "start"
308
+ },
309
+ alignOffset: {
310
+ type: Number,
311
+ required: false
312
+ },
313
+ alignFlip: {
314
+ type: Boolean,
315
+ required: false
316
+ },
317
+ avoidCollisions: {
318
+ type: Boolean,
319
+ required: false
320
+ },
321
+ collisionBoundary: {
322
+ type: null,
323
+ required: false
324
+ },
325
+ collisionPadding: {
326
+ type: [Number, Object],
327
+ required: false,
328
+ default: CONTENT_MARGIN
329
+ },
330
+ arrowPadding: {
331
+ type: Number,
332
+ required: false
333
+ },
334
+ hideShiftedArrow: {
335
+ type: Boolean,
336
+ required: false
337
+ },
338
+ sticky: {
339
+ type: String,
340
+ required: false
341
+ },
342
+ hideWhenDetached: {
343
+ type: Boolean,
344
+ required: false
345
+ },
346
+ positionStrategy: {
347
+ type: String,
348
+ required: false
349
+ },
350
+ updatePositionStrategy: {
351
+ type: String,
352
+ required: false
353
+ },
354
+ disableUpdateOnLayoutShift: {
355
+ type: Boolean,
356
+ required: false
357
+ },
358
+ prioritizePosition: {
359
+ type: Boolean,
360
+ required: false
361
+ },
362
+ reference: {
363
+ type: null,
364
+ required: false
365
+ },
366
+ asChild: {
367
+ type: Boolean,
368
+ required: false
369
+ },
370
+ as: {
371
+ type: null,
372
+ required: false
373
+ }
374
+ },
375
+ setup(__props) {
376
+ const props = __props;
377
+ const forwarded = useForwardProps(props);
378
+ return (_ctx, _cache) => {
379
+ return openBlock(), createBlock(unref(PopperContent_default), mergeProps(unref(forwarded), { style: {
380
+ "boxSizing": "border-box",
381
+ "--reka-select-content-transform-origin": "var(--reka-popper-transform-origin)",
382
+ "--reka-select-content-available-width": "var(--reka-popper-available-width)",
383
+ "--reka-select-content-available-height": "var(--reka-popper-available-height)",
384
+ "--reka-select-trigger-width": "var(--reka-popper-anchor-width)",
385
+ "--reka-select-trigger-height": "var(--reka-popper-anchor-height)"
386
+ } }), {
387
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
388
+ _: 3
389
+ }, 16);
390
+ };
391
+ }
392
+ });
393
+ var SelectPopperPosition_default = SelectPopperPosition_vue_vue_type_script_setup_true_lang_default;
394
+ const SelectContentDefaultContextValue = {
395
+ onViewportChange: () => {
396
+ },
397
+ itemTextRefCallback: () => {
398
+ },
399
+ itemRefCallback: () => {
400
+ }
401
+ };
402
+ const [injectSelectContentContext, provideSelectContentContext] = createContext("SelectContent");
403
+ var SelectContentImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
404
+ __name: "SelectContentImpl",
405
+ props: {
406
+ position: {
407
+ type: String,
408
+ required: false,
409
+ default: "item-aligned"
410
+ },
411
+ bodyLock: {
412
+ type: Boolean,
413
+ required: false,
414
+ default: true
415
+ },
416
+ side: {
417
+ type: null,
418
+ required: false
419
+ },
420
+ sideOffset: {
421
+ type: Number,
422
+ required: false
423
+ },
424
+ sideFlip: {
425
+ type: Boolean,
426
+ required: false
427
+ },
428
+ align: {
429
+ type: null,
430
+ required: false,
431
+ default: "start"
432
+ },
433
+ alignOffset: {
434
+ type: Number,
435
+ required: false
436
+ },
437
+ alignFlip: {
438
+ type: Boolean,
439
+ required: false
440
+ },
441
+ avoidCollisions: {
442
+ type: Boolean,
443
+ required: false
444
+ },
445
+ collisionBoundary: {
446
+ type: null,
447
+ required: false
448
+ },
449
+ collisionPadding: {
450
+ type: [Number, Object],
451
+ required: false
452
+ },
453
+ arrowPadding: {
454
+ type: Number,
455
+ required: false
456
+ },
457
+ hideShiftedArrow: {
458
+ type: Boolean,
459
+ required: false
460
+ },
461
+ sticky: {
462
+ type: String,
463
+ required: false
464
+ },
465
+ hideWhenDetached: {
466
+ type: Boolean,
467
+ required: false
468
+ },
469
+ positionStrategy: {
470
+ type: String,
471
+ required: false
472
+ },
473
+ updatePositionStrategy: {
474
+ type: String,
475
+ required: false
476
+ },
477
+ disableUpdateOnLayoutShift: {
478
+ type: Boolean,
479
+ required: false
480
+ },
481
+ prioritizePosition: {
482
+ type: Boolean,
483
+ required: false
484
+ },
485
+ reference: {
486
+ type: null,
487
+ required: false
488
+ },
489
+ asChild: {
490
+ type: Boolean,
491
+ required: false
492
+ },
493
+ as: {
494
+ type: null,
495
+ required: false
496
+ },
497
+ disableOutsidePointerEvents: {
498
+ type: Boolean,
499
+ required: false,
500
+ default: true
501
+ }
502
+ },
503
+ emits: [
504
+ "closeAutoFocus",
505
+ "escapeKeyDown",
506
+ "pointerDownOutside"
507
+ ],
508
+ setup(__props, { emit: __emit }) {
509
+ const props = __props;
510
+ const emits = __emit;
511
+ const rootContext = injectSelectRootContext();
512
+ useFocusGuards();
513
+ useBodyScrollLock(props.bodyLock);
514
+ const { CollectionSlot, getItems } = useCollection();
515
+ const content = ref();
516
+ useHideOthers(content);
517
+ const { search, handleTypeaheadSearch } = useTypeahead();
518
+ const viewport = ref();
519
+ const selectedItem = ref();
520
+ const selectedItemText = ref();
521
+ const isPositioned = ref(false);
522
+ const firstValidItemFoundRef = ref(false);
523
+ const firstSelectedItemInArrayFoundRef = ref(false);
524
+ function focusSelectedItem() {
525
+ if (selectedItem.value && content.value) focusFirst([selectedItem.value, content.value]);
526
+ }
527
+ watch(isPositioned, () => {
528
+ focusSelectedItem();
529
+ });
530
+ const { onOpenChange, triggerPointerDownPosRef } = rootContext;
531
+ watchEffect((cleanupFn) => {
532
+ if (!content.value) return;
533
+ let pointerMoveDelta = {
534
+ x: 0,
535
+ y: 0
536
+ };
537
+ const handlePointerMove = (event) => {
538
+ var _a, _b;
539
+ pointerMoveDelta = {
540
+ x: Math.abs(Math.round(event.pageX) - (((_a = triggerPointerDownPosRef.value) == null ? void 0 : _a.x) ?? 0)),
541
+ y: Math.abs(Math.round(event.pageY) - (((_b = triggerPointerDownPosRef.value) == null ? void 0 : _b.y) ?? 0))
542
+ };
543
+ };
544
+ const handlePointerUp = (event) => {
545
+ var _a;
546
+ if (event.pointerType === "touch") return;
547
+ if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) event.preventDefault();
548
+ else if (!((_a = content.value) == null ? void 0 : _a.contains(event.target))) onOpenChange(false);
549
+ document.removeEventListener("pointermove", handlePointerMove);
550
+ triggerPointerDownPosRef.value = null;
551
+ };
552
+ if (triggerPointerDownPosRef.value !== null) {
553
+ document.addEventListener("pointermove", handlePointerMove);
554
+ document.addEventListener("pointerup", handlePointerUp, {
555
+ capture: true,
556
+ once: true
557
+ });
558
+ }
559
+ cleanupFn(() => {
560
+ document.removeEventListener("pointermove", handlePointerMove);
561
+ document.removeEventListener("pointerup", handlePointerUp, { capture: true });
562
+ });
563
+ });
564
+ function handleKeyDown(event) {
565
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
566
+ if (event.key === "Tab") event.preventDefault();
567
+ if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key, getItems());
568
+ if ([
569
+ "ArrowUp",
570
+ "ArrowDown",
571
+ "Home",
572
+ "End"
573
+ ].includes(event.key)) {
574
+ const collectionItems = getItems().map((i) => i.ref);
575
+ let candidateNodes = [...collectionItems];
576
+ if (["ArrowUp", "End"].includes(event.key)) candidateNodes = candidateNodes.slice().reverse();
577
+ if (["ArrowUp", "ArrowDown"].includes(event.key)) {
578
+ const currentElement = event.target;
579
+ const currentIndex = candidateNodes.indexOf(currentElement);
580
+ candidateNodes = candidateNodes.slice(currentIndex + 1);
581
+ }
582
+ setTimeout(() => focusFirst(candidateNodes));
583
+ event.preventDefault();
584
+ }
585
+ }
586
+ const pickedProps = computed(() => {
587
+ if (props.position === "popper") return props;
588
+ else return {};
589
+ });
590
+ const forwardedProps = useForwardProps(pickedProps.value);
591
+ provideSelectContentContext({
592
+ content,
593
+ viewport,
594
+ onViewportChange: (node) => {
595
+ viewport.value = node;
596
+ },
597
+ itemRefCallback: (node, value, disabled) => {
598
+ const isFirstValidItem = !firstValidItemFoundRef.value && !disabled;
599
+ const isSelectedItem = valueComparator(rootContext.modelValue.value, value, rootContext.by);
600
+ if (rootContext.multiple.value) {
601
+ if (firstSelectedItemInArrayFoundRef.value) return;
602
+ if (isSelectedItem || isFirstValidItem) {
603
+ selectedItem.value = node;
604
+ if (isSelectedItem) firstSelectedItemInArrayFoundRef.value = true;
605
+ }
606
+ } else if (isSelectedItem || isFirstValidItem) selectedItem.value = node;
607
+ if (isFirstValidItem) firstValidItemFoundRef.value = true;
608
+ },
609
+ selectedItem,
610
+ selectedItemText,
611
+ onItemLeave: () => {
612
+ var _a;
613
+ (_a = content.value) == null ? void 0 : _a.focus();
614
+ },
615
+ itemTextRefCallback: (node, value, disabled) => {
616
+ const isFirstValidItem = !firstValidItemFoundRef.value && !disabled;
617
+ const isSelectedItem = valueComparator(rootContext.modelValue.value, value, rootContext.by);
618
+ if (isSelectedItem || isFirstValidItem) selectedItemText.value = node;
619
+ },
620
+ focusSelectedItem,
621
+ position: props.position,
622
+ isPositioned,
623
+ searchRef: search
624
+ });
625
+ return (_ctx, _cache) => {
626
+ return openBlock(), createBlock(unref(CollectionSlot), null, {
627
+ default: withCtx(() => [createVNode(unref(FocusScope_default), {
628
+ "as-child": "",
629
+ onMountAutoFocus: _cache[6] || (_cache[6] = withModifiers(() => {
630
+ }, ["prevent"])),
631
+ onUnmountAutoFocus: _cache[7] || (_cache[7] = (event) => {
632
+ var _a;
633
+ emits("closeAutoFocus", event);
634
+ if (event.defaultPrevented) return;
635
+ (_a = unref(rootContext).triggerElement.value) == null ? void 0 : _a.focus({ preventScroll: true });
636
+ event.preventDefault();
637
+ })
638
+ }, {
639
+ default: withCtx(() => [createVNode(unref(DismissableLayer_default), {
640
+ "as-child": "",
641
+ "disable-outside-pointer-events": _ctx.disableOutsidePointerEvents,
642
+ onFocusOutside: _cache[2] || (_cache[2] = withModifiers(() => {
643
+ }, ["prevent"])),
644
+ onDismiss: _cache[3] || (_cache[3] = ($event) => unref(rootContext).onOpenChange(false)),
645
+ onEscapeKeyDown: _cache[4] || (_cache[4] = ($event) => emits("escapeKeyDown", $event)),
646
+ onPointerDownOutside: _cache[5] || (_cache[5] = ($event) => emits("pointerDownOutside", $event))
647
+ }, {
648
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(_ctx.position === "popper" ? SelectPopperPosition_default : SelectItemAlignedPosition_default), mergeProps({
649
+ ..._ctx.$attrs,
650
+ ...unref(forwardedProps)
651
+ }, {
652
+ id: unref(rootContext).contentId,
653
+ ref: (vnode) => {
654
+ const el = unref(unrefElement)(vnode);
655
+ if (el == null ? void 0 : el.hasAttribute("data-reka-popper-content-wrapper")) content.value = el.firstElementChild;
656
+ else content.value = el;
657
+ return void 0;
658
+ },
659
+ role: "listbox",
660
+ "data-state": unref(rootContext).open.value ? "open" : "closed",
661
+ dir: unref(rootContext).dir.value,
662
+ style: {
663
+ display: "flex",
664
+ flexDirection: "column",
665
+ outline: "none"
666
+ },
667
+ onContextmenu: _cache[0] || (_cache[0] = withModifiers(() => {
668
+ }, ["prevent"])),
669
+ onPlaced: _cache[1] || (_cache[1] = ($event) => isPositioned.value = true),
670
+ onKeydown: handleKeyDown
671
+ }), {
672
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
673
+ _: 3
674
+ }, 16, [
675
+ "id",
676
+ "data-state",
677
+ "dir",
678
+ "onKeydown"
679
+ ]))]),
680
+ _: 3
681
+ }, 8, ["disable-outside-pointer-events"])]),
682
+ _: 3
683
+ })]),
684
+ _: 3
685
+ });
686
+ };
687
+ }
688
+ });
689
+ var SelectContentImpl_default = SelectContentImpl_vue_vue_type_script_setup_true_lang_default;
690
+ const [injectSelectItemAlignedPositionContext, provideSelectItemAlignedPositionContext] = createContext("SelectItemAlignedPosition");
691
+ var SelectItemAlignedPosition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
692
+ inheritAttrs: false,
693
+ __name: "SelectItemAlignedPosition",
694
+ props: {
695
+ asChild: {
696
+ type: Boolean,
697
+ required: false
698
+ },
699
+ as: {
700
+ type: null,
701
+ required: false
702
+ }
703
+ },
704
+ emits: ["placed"],
705
+ setup(__props, { emit: __emit }) {
706
+ const props = __props;
707
+ const emits = __emit;
708
+ const { getItems } = useCollection();
709
+ const rootContext = injectSelectRootContext();
710
+ const contentContext = injectSelectContentContext();
711
+ const shouldExpandOnScrollRef = ref(false);
712
+ const shouldRepositionRef = ref(true);
713
+ const contentWrapperElement = ref();
714
+ const { forwardRef, currentElement: contentElement } = useForwardExpose();
715
+ const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;
716
+ function position() {
717
+ if (rootContext.triggerElement.value && rootContext.valueElement.value && contentWrapperElement.value && contentElement.value && (viewport == null ? void 0 : viewport.value) && (selectedItem == null ? void 0 : selectedItem.value) && (selectedItemText == null ? void 0 : selectedItemText.value)) {
718
+ const triggerRect = rootContext.triggerElement.value.getBoundingClientRect();
719
+ const contentRect = contentElement.value.getBoundingClientRect();
720
+ const valueNodeRect = rootContext.valueElement.value.getBoundingClientRect();
721
+ const itemTextRect = selectedItemText.value.getBoundingClientRect();
722
+ if (rootContext.dir.value !== "rtl") {
723
+ const itemTextOffset = itemTextRect.left - contentRect.left;
724
+ const left = valueNodeRect.left - itemTextOffset;
725
+ const leftDelta = triggerRect.left - left;
726
+ const minContentWidth = triggerRect.width + leftDelta;
727
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
728
+ const rightEdge = window.innerWidth - CONTENT_MARGIN;
729
+ const clampedLeft = clamp(left, CONTENT_MARGIN, Math.max(CONTENT_MARGIN, rightEdge - contentWidth));
730
+ contentWrapperElement.value.style.minWidth = `${minContentWidth}px`;
731
+ contentWrapperElement.value.style.left = `${clampedLeft}px`;
732
+ } else {
733
+ const itemTextOffset = contentRect.right - itemTextRect.right;
734
+ const right = window.innerWidth - valueNodeRect.right - itemTextOffset;
735
+ const rightDelta = window.innerWidth - triggerRect.right - right;
736
+ const minContentWidth = triggerRect.width + rightDelta;
737
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
738
+ const leftEdge = window.innerWidth - CONTENT_MARGIN;
739
+ const clampedRight = clamp(right, CONTENT_MARGIN, Math.max(CONTENT_MARGIN, leftEdge - contentWidth));
740
+ contentWrapperElement.value.style.minWidth = `${minContentWidth}px`;
741
+ contentWrapperElement.value.style.right = `${clampedRight}px`;
742
+ }
743
+ const items = getItems().map((i) => i.ref);
744
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
745
+ const itemsHeight = viewport.value.scrollHeight;
746
+ const contentStyles = window.getComputedStyle(contentElement.value);
747
+ const contentBorderTopWidth = Number.parseInt(contentStyles.borderTopWidth, 10);
748
+ const contentPaddingTop = Number.parseInt(contentStyles.paddingTop, 10);
749
+ const contentBorderBottomWidth = Number.parseInt(contentStyles.borderBottomWidth, 10);
750
+ const contentPaddingBottom = Number.parseInt(contentStyles.paddingBottom, 10);
751
+ const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;
752
+ const minContentHeight = Math.min(selectedItem.value.offsetHeight * 5, fullContentHeight);
753
+ const viewportStyles = window.getComputedStyle(viewport.value);
754
+ const viewportPaddingTop = Number.parseInt(viewportStyles.paddingTop, 10);
755
+ const viewportPaddingBottom = Number.parseInt(viewportStyles.paddingBottom, 10);
756
+ const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;
757
+ const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;
758
+ const selectedItemHalfHeight = selectedItem.value.offsetHeight / 2;
759
+ const itemOffsetMiddle = selectedItem.value.offsetTop + selectedItemHalfHeight;
760
+ const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;
761
+ const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;
762
+ const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;
763
+ if (willAlignWithoutTopOverflow) {
764
+ const isLastItem = selectedItem.value === items[items.length - 1];
765
+ contentWrapperElement.value.style.bottom = `0px`;
766
+ const viewportOffsetBottom = contentElement.value.clientHeight - viewport.value.offsetTop - viewport.value.offsetHeight;
767
+ const clampedTriggerMiddleToBottomEdge = Math.max(triggerMiddleToBottomEdge, selectedItemHalfHeight + (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth);
768
+ const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;
769
+ contentWrapperElement.value.style.height = `${height}px`;
770
+ } else {
771
+ const isFirstItem = selectedItem.value === items[0];
772
+ contentWrapperElement.value.style.top = `0px`;
773
+ const clampedTopEdgeToTriggerMiddle = Math.max(topEdgeToTriggerMiddle, contentBorderTopWidth + viewport.value.offsetTop + (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight);
774
+ const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;
775
+ contentWrapperElement.value.style.height = `${height}px`;
776
+ viewport.value.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.value.offsetTop;
777
+ }
778
+ contentWrapperElement.value.style.margin = `${CONTENT_MARGIN}px 0`;
779
+ contentWrapperElement.value.style.minHeight = `${minContentHeight}px`;
780
+ contentWrapperElement.value.style.maxHeight = `${availableHeight}px`;
781
+ emits("placed");
782
+ requestAnimationFrame(() => shouldExpandOnScrollRef.value = true);
783
+ }
784
+ }
785
+ const contentZIndex = ref("");
786
+ onMounted(async () => {
787
+ await nextTick();
788
+ position();
789
+ if (contentElement.value) contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex;
790
+ });
791
+ function handleScrollButtonChange(node) {
792
+ if (node && shouldRepositionRef.value === true) {
793
+ position();
794
+ focusSelectedItem == null ? void 0 : focusSelectedItem();
795
+ shouldRepositionRef.value = false;
796
+ }
797
+ }
798
+ useResizeObserver(rootContext.triggerElement, () => {
799
+ position();
800
+ });
801
+ provideSelectItemAlignedPositionContext({
802
+ contentWrapper: contentWrapperElement,
803
+ shouldExpandOnScrollRef,
804
+ onScrollButtonChange: handleScrollButtonChange
805
+ });
806
+ return (_ctx, _cache) => {
807
+ return openBlock(), createElementBlock("div", {
808
+ ref_key: "contentWrapperElement",
809
+ ref: contentWrapperElement,
810
+ style: normalizeStyle({
811
+ display: "flex",
812
+ flexDirection: "column",
813
+ position: "fixed",
814
+ zIndex: contentZIndex.value
815
+ })
816
+ }, [createVNode(unref(Primitive), mergeProps({
817
+ ref: unref(forwardRef),
818
+ style: {
819
+ boxSizing: "border-box",
820
+ maxHeight: "100%"
821
+ }
822
+ }, {
823
+ ..._ctx.$attrs,
824
+ ...props
825
+ }), {
826
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
827
+ _: 3
828
+ }, 16)], 4);
829
+ };
830
+ }
831
+ });
832
+ var SelectItemAlignedPosition_default = SelectItemAlignedPosition_vue_vue_type_script_setup_true_lang_default;
833
+ var SelectProvider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
834
+ inheritAttrs: false,
835
+ __name: "SelectProvider",
836
+ props: { context: {
837
+ type: Object,
838
+ required: true
839
+ } },
840
+ setup(__props) {
841
+ const props = __props;
842
+ provideSelectRootContext(props.context);
843
+ provideSelectContentContext(SelectContentDefaultContextValue);
844
+ return (_ctx, _cache) => {
845
+ return renderSlot(_ctx.$slots, "default");
846
+ };
847
+ }
848
+ });
849
+ var SelectProvider_default = SelectProvider_vue_vue_type_script_setup_true_lang_default;
850
+ const _hoisted_1$1 = { key: 1 };
851
+ var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
852
+ inheritAttrs: false,
853
+ __name: "SelectContent",
854
+ props: {
855
+ forceMount: {
856
+ type: Boolean,
857
+ required: false
858
+ },
859
+ position: {
860
+ type: String,
861
+ required: false
862
+ },
863
+ bodyLock: {
864
+ type: Boolean,
865
+ required: false
866
+ },
867
+ side: {
868
+ type: null,
869
+ required: false
870
+ },
871
+ sideOffset: {
872
+ type: Number,
873
+ required: false
874
+ },
875
+ sideFlip: {
876
+ type: Boolean,
877
+ required: false
878
+ },
879
+ align: {
880
+ type: null,
881
+ required: false
882
+ },
883
+ alignOffset: {
884
+ type: Number,
885
+ required: false
886
+ },
887
+ alignFlip: {
888
+ type: Boolean,
889
+ required: false
890
+ },
891
+ avoidCollisions: {
892
+ type: Boolean,
893
+ required: false
894
+ },
895
+ collisionBoundary: {
896
+ type: null,
897
+ required: false
898
+ },
899
+ collisionPadding: {
900
+ type: [Number, Object],
901
+ required: false
902
+ },
903
+ arrowPadding: {
904
+ type: Number,
905
+ required: false
906
+ },
907
+ hideShiftedArrow: {
908
+ type: Boolean,
909
+ required: false
910
+ },
911
+ sticky: {
912
+ type: String,
913
+ required: false
914
+ },
915
+ hideWhenDetached: {
916
+ type: Boolean,
917
+ required: false
918
+ },
919
+ positionStrategy: {
920
+ type: String,
921
+ required: false
922
+ },
923
+ updatePositionStrategy: {
924
+ type: String,
925
+ required: false
926
+ },
927
+ disableUpdateOnLayoutShift: {
928
+ type: Boolean,
929
+ required: false
930
+ },
931
+ prioritizePosition: {
932
+ type: Boolean,
933
+ required: false
934
+ },
935
+ reference: {
936
+ type: null,
937
+ required: false
938
+ },
939
+ asChild: {
940
+ type: Boolean,
941
+ required: false
942
+ },
943
+ as: {
944
+ type: null,
945
+ required: false
946
+ },
947
+ disableOutsidePointerEvents: {
948
+ type: Boolean,
949
+ required: false
950
+ }
951
+ },
952
+ emits: [
953
+ "closeAutoFocus",
954
+ "escapeKeyDown",
955
+ "pointerDownOutside"
956
+ ],
957
+ setup(__props, { emit: __emit }) {
958
+ const props = __props;
959
+ const emits = __emit;
960
+ const forwarded = useForwardPropsEmits(props, emits);
961
+ const rootContext = injectSelectRootContext();
962
+ const fragment = ref();
963
+ onMounted(() => {
964
+ fragment.value = new DocumentFragment();
965
+ });
966
+ const presenceRef = ref();
967
+ const present = computed(() => props.forceMount || rootContext.open.value);
968
+ const renderPresence = ref(present.value);
969
+ watch(present, () => {
970
+ setTimeout(() => renderPresence.value = present.value);
971
+ });
972
+ return (_ctx, _cache) => {
973
+ var _a;
974
+ return present.value || renderPresence.value || ((_a = presenceRef.value) == null ? void 0 : _a.present) ? (openBlock(), createBlock(unref(Presence_default), {
975
+ key: 0,
976
+ ref_key: "presenceRef",
977
+ ref: presenceRef,
978
+ present: present.value
979
+ }, {
980
+ default: withCtx(() => [createVNode(SelectContentImpl_default, normalizeProps(guardReactiveProps({
981
+ ...unref(forwarded),
982
+ ..._ctx.$attrs
983
+ })), {
984
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
985
+ _: 3
986
+ }, 16)]),
987
+ _: 3
988
+ }, 8, ["present"])) : fragment.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [(openBlock(), createBlock(Teleport, { to: fragment.value }, [createVNode(SelectProvider_default, { context: unref(rootContext) }, {
989
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
990
+ _: 3
991
+ }, 8, ["context"])], 8, ["to"]))])) : createCommentVNode("v-if", true);
992
+ };
993
+ }
994
+ });
995
+ var SelectContent_default = SelectContent_vue_vue_type_script_setup_true_lang_default;
996
+ const [injectSelectGroupContext, provideSelectGroupContext] = createContext("SelectGroup");
997
+ var SelectGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
998
+ __name: "SelectGroup",
999
+ props: {
1000
+ asChild: {
1001
+ type: Boolean,
1002
+ required: false
1003
+ },
1004
+ as: {
1005
+ type: null,
1006
+ required: false
1007
+ }
1008
+ },
1009
+ setup(__props) {
1010
+ const props = __props;
1011
+ const id = useId(void 0, "reka-select-group");
1012
+ provideSelectGroupContext({ id });
1013
+ return (_ctx, _cache) => {
1014
+ return openBlock(), createBlock(unref(Primitive), mergeProps({ role: "group" }, props, { "aria-labelledby": unref(id) }), {
1015
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1016
+ _: 3
1017
+ }, 16, ["aria-labelledby"]);
1018
+ };
1019
+ }
1020
+ });
1021
+ var SelectGroup_default = SelectGroup_vue_vue_type_script_setup_true_lang_default;
1022
+ var SelectIcon_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1023
+ __name: "SelectIcon",
1024
+ props: {
1025
+ asChild: {
1026
+ type: Boolean,
1027
+ required: false
1028
+ },
1029
+ as: {
1030
+ type: null,
1031
+ required: false,
1032
+ default: "span"
1033
+ }
1034
+ },
1035
+ setup(__props) {
1036
+ return (_ctx, _cache) => {
1037
+ return openBlock(), createBlock(unref(Primitive), {
1038
+ "aria-hidden": "true",
1039
+ as: _ctx.as,
1040
+ "as-child": _ctx.asChild
1041
+ }, {
1042
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, () => [_cache[0] || (_cache[0] = createTextVNode("▼"))])]),
1043
+ _: 3
1044
+ }, 8, ["as", "as-child"]);
1045
+ };
1046
+ }
1047
+ });
1048
+ var SelectIcon_default = SelectIcon_vue_vue_type_script_setup_true_lang_default;
1049
+ const [injectSelectItemContext, provideSelectItemContext] = createContext("SelectItem");
1050
+ var SelectItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1051
+ __name: "SelectItem",
1052
+ props: {
1053
+ value: {
1054
+ type: null,
1055
+ required: true
1056
+ },
1057
+ disabled: {
1058
+ type: Boolean,
1059
+ required: false
1060
+ },
1061
+ textValue: {
1062
+ type: String,
1063
+ required: false
1064
+ },
1065
+ asChild: {
1066
+ type: Boolean,
1067
+ required: false
1068
+ },
1069
+ as: {
1070
+ type: null,
1071
+ required: false
1072
+ }
1073
+ },
1074
+ emits: ["select"],
1075
+ setup(__props, { emit: __emit }) {
1076
+ const props = __props;
1077
+ const emits = __emit;
1078
+ const { disabled } = toRefs(props);
1079
+ const rootContext = injectSelectRootContext();
1080
+ const contentContext = injectSelectContentContext();
1081
+ const { forwardRef, currentElement } = useForwardExpose();
1082
+ const { CollectionItem } = useCollection();
1083
+ const isSelected = computed(() => {
1084
+ var _a;
1085
+ return valueComparator((_a = rootContext.modelValue) == null ? void 0 : _a.value, props.value, rootContext.by);
1086
+ });
1087
+ const isFocused = ref(false);
1088
+ const textValue = ref(props.textValue ?? "");
1089
+ const textId = useId(void 0, "reka-select-item-text");
1090
+ const SELECT_SELECT = "select.select";
1091
+ async function handleSelectCustomEvent(ev) {
1092
+ if (ev.defaultPrevented) return;
1093
+ const eventDetail = {
1094
+ originalEvent: ev,
1095
+ value: props.value
1096
+ };
1097
+ handleAndDispatchCustomEvent(SELECT_SELECT, handleSelect, eventDetail);
1098
+ }
1099
+ async function handleSelect(ev) {
1100
+ await nextTick();
1101
+ emits("select", ev);
1102
+ if (ev.defaultPrevented) return;
1103
+ if (!disabled.value) {
1104
+ rootContext.onValueChange(props.value);
1105
+ if (!rootContext.multiple.value) rootContext.onOpenChange(false);
1106
+ }
1107
+ }
1108
+ async function handlePointerMove(event) {
1109
+ var _a, _b;
1110
+ await nextTick();
1111
+ if (event.defaultPrevented) return;
1112
+ if (disabled.value) (_a = contentContext.onItemLeave) == null ? void 0 : _a.call(contentContext);
1113
+ else (_b = event.currentTarget) == null ? void 0 : _b.focus({ preventScroll: true });
1114
+ }
1115
+ async function handlePointerLeave(event) {
1116
+ var _a;
1117
+ await nextTick();
1118
+ if (event.defaultPrevented) return;
1119
+ if (event.currentTarget === getActiveElement()) (_a = contentContext.onItemLeave) == null ? void 0 : _a.call(contentContext);
1120
+ }
1121
+ async function handleKeyDown(event) {
1122
+ var _a;
1123
+ await nextTick();
1124
+ if (event.defaultPrevented) return;
1125
+ const isTypingAhead = ((_a = contentContext.searchRef) == null ? void 0 : _a.value) !== "";
1126
+ if (isTypingAhead && event.key === " ") return;
1127
+ if (SELECTION_KEYS.includes(event.key)) handleSelectCustomEvent(event);
1128
+ if (event.key === " ") event.preventDefault();
1129
+ }
1130
+ if (props.value === "") throw new Error("A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");
1131
+ onMounted(() => {
1132
+ if (!currentElement.value) return;
1133
+ contentContext.itemRefCallback(currentElement.value, props.value, props.disabled);
1134
+ });
1135
+ provideSelectItemContext({
1136
+ value: props.value,
1137
+ disabled,
1138
+ textId,
1139
+ isSelected,
1140
+ onItemTextChange: (node) => {
1141
+ textValue.value = ((textValue.value || (node == null ? void 0 : node.textContent)) ?? "").trim();
1142
+ }
1143
+ });
1144
+ return (_ctx, _cache) => {
1145
+ return openBlock(), createBlock(unref(CollectionItem), { value: { textValue: textValue.value } }, {
1146
+ default: withCtx(() => [createVNode(unref(Primitive), {
1147
+ ref: unref(forwardRef),
1148
+ role: "option",
1149
+ "aria-labelledby": unref(textId),
1150
+ "data-highlighted": isFocused.value ? "" : void 0,
1151
+ "aria-selected": isSelected.value,
1152
+ "data-state": isSelected.value ? "checked" : "unchecked",
1153
+ "aria-disabled": unref(disabled) || void 0,
1154
+ "data-disabled": unref(disabled) ? "" : void 0,
1155
+ tabindex: unref(disabled) ? void 0 : -1,
1156
+ as: _ctx.as,
1157
+ "as-child": _ctx.asChild,
1158
+ onFocus: _cache[0] || (_cache[0] = ($event) => isFocused.value = true),
1159
+ onBlur: _cache[1] || (_cache[1] = ($event) => isFocused.value = false),
1160
+ onPointerup: handleSelectCustomEvent,
1161
+ onPointerdown: _cache[2] || (_cache[2] = (event) => {
1162
+ event.currentTarget.focus({ preventScroll: true });
1163
+ }),
1164
+ onTouchend: _cache[3] || (_cache[3] = withModifiers(() => {
1165
+ }, ["prevent", "stop"])),
1166
+ onPointermove: handlePointerMove,
1167
+ onPointerleave: handlePointerLeave,
1168
+ onKeydown: handleKeyDown
1169
+ }, {
1170
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1171
+ _: 3
1172
+ }, 8, [
1173
+ "aria-labelledby",
1174
+ "data-highlighted",
1175
+ "aria-selected",
1176
+ "data-state",
1177
+ "aria-disabled",
1178
+ "data-disabled",
1179
+ "tabindex",
1180
+ "as",
1181
+ "as-child"
1182
+ ])]),
1183
+ _: 3
1184
+ }, 8, ["value"]);
1185
+ };
1186
+ }
1187
+ });
1188
+ var SelectItem_default = SelectItem_vue_vue_type_script_setup_true_lang_default;
1189
+ var SelectItemIndicator_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1190
+ __name: "SelectItemIndicator",
1191
+ props: {
1192
+ asChild: {
1193
+ type: Boolean,
1194
+ required: false
1195
+ },
1196
+ as: {
1197
+ type: null,
1198
+ required: false,
1199
+ default: "span"
1200
+ }
1201
+ },
1202
+ setup(__props) {
1203
+ const props = __props;
1204
+ const itemContext = injectSelectItemContext();
1205
+ return (_ctx, _cache) => {
1206
+ return unref(itemContext).isSelected.value ? (openBlock(), createBlock(unref(Primitive), mergeProps({
1207
+ key: 0,
1208
+ "aria-hidden": "true"
1209
+ }, props), {
1210
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1211
+ _: 3
1212
+ }, 16)) : createCommentVNode("v-if", true);
1213
+ };
1214
+ }
1215
+ });
1216
+ var SelectItemIndicator_default = SelectItemIndicator_vue_vue_type_script_setup_true_lang_default;
1217
+ var SelectItemText_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1218
+ inheritAttrs: false,
1219
+ __name: "SelectItemText",
1220
+ props: {
1221
+ asChild: {
1222
+ type: Boolean,
1223
+ required: false
1224
+ },
1225
+ as: {
1226
+ type: null,
1227
+ required: false,
1228
+ default: "span"
1229
+ }
1230
+ },
1231
+ setup(__props) {
1232
+ const props = __props;
1233
+ const rootContext = injectSelectRootContext();
1234
+ const contentContext = injectSelectContentContext();
1235
+ const itemContext = injectSelectItemContext();
1236
+ const { forwardRef, currentElement: itemTextElement } = useForwardExpose();
1237
+ const optionProps = computed(() => {
1238
+ var _a, _b;
1239
+ return {
1240
+ value: itemContext.value,
1241
+ disabled: itemContext.disabled.value,
1242
+ textContent: ((_a = itemTextElement.value) == null ? void 0 : _a.textContent) ?? ((_b = itemContext.value) == null ? void 0 : _b.toString()) ?? ""
1243
+ };
1244
+ });
1245
+ onMounted(() => {
1246
+ if (!itemTextElement.value) return;
1247
+ itemContext.onItemTextChange(itemTextElement.value);
1248
+ contentContext.itemTextRefCallback(itemTextElement.value, itemContext.value, itemContext.disabled.value);
1249
+ rootContext.onOptionAdd(optionProps.value);
1250
+ });
1251
+ onUnmounted(() => {
1252
+ rootContext.onOptionRemove(optionProps.value);
1253
+ });
1254
+ return (_ctx, _cache) => {
1255
+ return openBlock(), createBlock(unref(Primitive), mergeProps({
1256
+ id: unref(itemContext).textId,
1257
+ ref: unref(forwardRef)
1258
+ }, {
1259
+ ...props,
1260
+ ..._ctx.$attrs
1261
+ }), {
1262
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1263
+ _: 3
1264
+ }, 16, ["id"]);
1265
+ };
1266
+ }
1267
+ });
1268
+ var SelectItemText_default = SelectItemText_vue_vue_type_script_setup_true_lang_default;
1269
+ var SelectLabel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1270
+ __name: "SelectLabel",
1271
+ props: {
1272
+ for: {
1273
+ type: String,
1274
+ required: false
1275
+ },
1276
+ asChild: {
1277
+ type: Boolean,
1278
+ required: false
1279
+ },
1280
+ as: {
1281
+ type: null,
1282
+ required: false,
1283
+ default: "div"
1284
+ }
1285
+ },
1286
+ setup(__props) {
1287
+ const props = __props;
1288
+ const groupContext = injectSelectGroupContext({ id: "" });
1289
+ return (_ctx, _cache) => {
1290
+ return openBlock(), createBlock(unref(Primitive), mergeProps(props, { id: unref(groupContext).id }), {
1291
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1292
+ _: 3
1293
+ }, 16, ["id"]);
1294
+ };
1295
+ }
1296
+ });
1297
+ var SelectLabel_default = SelectLabel_vue_vue_type_script_setup_true_lang_default;
1298
+ var SelectPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1299
+ __name: "SelectPortal",
1300
+ props: {
1301
+ to: {
1302
+ type: null,
1303
+ required: false
1304
+ },
1305
+ disabled: {
1306
+ type: Boolean,
1307
+ required: false
1308
+ },
1309
+ defer: {
1310
+ type: Boolean,
1311
+ required: false
1312
+ },
1313
+ forceMount: {
1314
+ type: Boolean,
1315
+ required: false
1316
+ }
1317
+ },
1318
+ setup(__props) {
1319
+ const props = __props;
1320
+ return (_ctx, _cache) => {
1321
+ return openBlock(), createBlock(unref(Teleport_default), normalizeProps(guardReactiveProps(props)), {
1322
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1323
+ _: 3
1324
+ }, 16);
1325
+ };
1326
+ }
1327
+ });
1328
+ var SelectPortal_default = SelectPortal_vue_vue_type_script_setup_true_lang_default;
1329
+ var SelectScrollButtonImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1330
+ __name: "SelectScrollButtonImpl",
1331
+ emits: ["autoScroll"],
1332
+ setup(__props, { emit: __emit }) {
1333
+ const emits = __emit;
1334
+ const { getItems } = useCollection();
1335
+ const contentContext = injectSelectContentContext();
1336
+ const autoScrollTimerRef = ref(null);
1337
+ function clearAutoScrollTimer() {
1338
+ if (autoScrollTimerRef.value !== null) {
1339
+ window.clearInterval(autoScrollTimerRef.value);
1340
+ autoScrollTimerRef.value = null;
1341
+ }
1342
+ }
1343
+ watchEffect(() => {
1344
+ const activeItem = getItems().map((i) => i.ref).find((item) => item === getActiveElement());
1345
+ activeItem == null ? void 0 : activeItem.scrollIntoView({ block: "nearest" });
1346
+ });
1347
+ function handlePointerDown() {
1348
+ if (autoScrollTimerRef.value === null) autoScrollTimerRef.value = window.setInterval(() => {
1349
+ emits("autoScroll");
1350
+ }, 50);
1351
+ }
1352
+ function handlePointerMove() {
1353
+ var _a;
1354
+ (_a = contentContext.onItemLeave) == null ? void 0 : _a.call(contentContext);
1355
+ if (autoScrollTimerRef.value === null) autoScrollTimerRef.value = window.setInterval(() => {
1356
+ emits("autoScroll");
1357
+ }, 50);
1358
+ }
1359
+ onBeforeUnmount(() => clearAutoScrollTimer());
1360
+ return (_ctx, _cache) => {
1361
+ var _a;
1362
+ return openBlock(), createBlock(unref(Primitive), mergeProps({
1363
+ "aria-hidden": "true",
1364
+ style: { flexShrink: 0 }
1365
+ }, (_a = _ctx.$parent) == null ? void 0 : _a.$props, {
1366
+ onPointerdown: handlePointerDown,
1367
+ onPointermove: handlePointerMove,
1368
+ onPointerleave: _cache[0] || (_cache[0] = () => {
1369
+ clearAutoScrollTimer();
1370
+ })
1371
+ }), {
1372
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1373
+ _: 3
1374
+ }, 16);
1375
+ };
1376
+ }
1377
+ });
1378
+ var SelectScrollButtonImpl_default = SelectScrollButtonImpl_vue_vue_type_script_setup_true_lang_default;
1379
+ var SelectScrollDownButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1380
+ __name: "SelectScrollDownButton",
1381
+ props: {
1382
+ asChild: {
1383
+ type: Boolean,
1384
+ required: false
1385
+ },
1386
+ as: {
1387
+ type: null,
1388
+ required: false
1389
+ }
1390
+ },
1391
+ setup(__props) {
1392
+ const contentContext = injectSelectContentContext();
1393
+ const alignedPositionContext = contentContext.position === "item-aligned" ? injectSelectItemAlignedPositionContext() : void 0;
1394
+ const { forwardRef, currentElement } = useForwardExpose();
1395
+ const canScrollDown = ref(false);
1396
+ watchEffect((cleanupFn) => {
1397
+ var _a, _b;
1398
+ if (((_a = contentContext.viewport) == null ? void 0 : _a.value) && ((_b = contentContext.isPositioned) == null ? void 0 : _b.value)) {
1399
+ let handleScroll = function() {
1400
+ const maxScroll = viewport.scrollHeight - viewport.clientHeight;
1401
+ canScrollDown.value = Math.ceil(viewport.scrollTop) < maxScroll;
1402
+ };
1403
+ const viewport = contentContext.viewport.value;
1404
+ handleScroll();
1405
+ viewport.addEventListener("scroll", handleScroll);
1406
+ cleanupFn(() => viewport.removeEventListener("scroll", handleScroll));
1407
+ }
1408
+ });
1409
+ watch(currentElement, () => {
1410
+ if (currentElement.value) alignedPositionContext == null ? void 0 : alignedPositionContext.onScrollButtonChange(currentElement.value);
1411
+ });
1412
+ return (_ctx, _cache) => {
1413
+ return canScrollDown.value ? (openBlock(), createBlock(SelectScrollButtonImpl_default, {
1414
+ key: 0,
1415
+ ref: unref(forwardRef),
1416
+ onAutoScroll: _cache[0] || (_cache[0] = () => {
1417
+ const { viewport, selectedItem } = unref(contentContext);
1418
+ if ((viewport == null ? void 0 : viewport.value) && (selectedItem == null ? void 0 : selectedItem.value)) viewport.value.scrollTop = viewport.value.scrollTop + selectedItem.value.offsetHeight;
1419
+ })
1420
+ }, {
1421
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1422
+ _: 3
1423
+ }, 512)) : createCommentVNode("v-if", true);
1424
+ };
1425
+ }
1426
+ });
1427
+ var SelectScrollDownButton_default = SelectScrollDownButton_vue_vue_type_script_setup_true_lang_default;
1428
+ var SelectScrollUpButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1429
+ __name: "SelectScrollUpButton",
1430
+ props: {
1431
+ asChild: {
1432
+ type: Boolean,
1433
+ required: false
1434
+ },
1435
+ as: {
1436
+ type: null,
1437
+ required: false
1438
+ }
1439
+ },
1440
+ setup(__props) {
1441
+ const contentContext = injectSelectContentContext();
1442
+ const alignedPositionContext = contentContext.position === "item-aligned" ? injectSelectItemAlignedPositionContext() : void 0;
1443
+ const { forwardRef, currentElement } = useForwardExpose();
1444
+ const canScrollUp = ref(false);
1445
+ watchEffect((cleanupFn) => {
1446
+ var _a, _b;
1447
+ if (((_a = contentContext.viewport) == null ? void 0 : _a.value) && ((_b = contentContext.isPositioned) == null ? void 0 : _b.value)) {
1448
+ let handleScroll = function() {
1449
+ canScrollUp.value = viewport.scrollTop > 0;
1450
+ };
1451
+ const viewport = contentContext.viewport.value;
1452
+ handleScroll();
1453
+ viewport.addEventListener("scroll", handleScroll);
1454
+ cleanupFn(() => viewport.removeEventListener("scroll", handleScroll));
1455
+ }
1456
+ });
1457
+ watch(currentElement, () => {
1458
+ if (currentElement.value) alignedPositionContext == null ? void 0 : alignedPositionContext.onScrollButtonChange(currentElement.value);
1459
+ });
1460
+ return (_ctx, _cache) => {
1461
+ return canScrollUp.value ? (openBlock(), createBlock(SelectScrollButtonImpl_default, {
1462
+ key: 0,
1463
+ ref: unref(forwardRef),
1464
+ onAutoScroll: _cache[0] || (_cache[0] = () => {
1465
+ const { viewport, selectedItem } = unref(contentContext);
1466
+ if ((viewport == null ? void 0 : viewport.value) && (selectedItem == null ? void 0 : selectedItem.value)) viewport.value.scrollTop = viewport.value.scrollTop - selectedItem.value.offsetHeight;
1467
+ })
1468
+ }, {
1469
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1470
+ _: 3
1471
+ }, 512)) : createCommentVNode("v-if", true);
1472
+ };
1473
+ }
1474
+ });
1475
+ var SelectScrollUpButton_default = SelectScrollUpButton_vue_vue_type_script_setup_true_lang_default;
1476
+ var SelectSeparator_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1477
+ __name: "SelectSeparator",
1478
+ props: {
1479
+ asChild: {
1480
+ type: Boolean,
1481
+ required: false
1482
+ },
1483
+ as: {
1484
+ type: null,
1485
+ required: false
1486
+ }
1487
+ },
1488
+ setup(__props) {
1489
+ const props = __props;
1490
+ return (_ctx, _cache) => {
1491
+ return openBlock(), createBlock(unref(Primitive), mergeProps({ "aria-hidden": "true" }, props), {
1492
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1493
+ _: 3
1494
+ }, 16);
1495
+ };
1496
+ }
1497
+ });
1498
+ var SelectSeparator_default = SelectSeparator_vue_vue_type_script_setup_true_lang_default;
1499
+ var SelectTrigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1500
+ __name: "SelectTrigger",
1501
+ props: {
1502
+ disabled: {
1503
+ type: Boolean,
1504
+ required: false
1505
+ },
1506
+ reference: {
1507
+ type: null,
1508
+ required: false
1509
+ },
1510
+ asChild: {
1511
+ type: Boolean,
1512
+ required: false
1513
+ },
1514
+ as: {
1515
+ type: null,
1516
+ required: false,
1517
+ default: "button"
1518
+ }
1519
+ },
1520
+ setup(__props) {
1521
+ const props = __props;
1522
+ const rootContext = injectSelectRootContext();
1523
+ const { forwardRef, currentElement: triggerElement } = useForwardExpose();
1524
+ const isDisabled = computed(() => {
1525
+ var _a;
1526
+ return ((_a = rootContext.disabled) == null ? void 0 : _a.value) || props.disabled;
1527
+ });
1528
+ rootContext.contentId || (rootContext.contentId = useId(void 0, "reka-select-content"));
1529
+ onMounted(() => {
1530
+ rootContext.onTriggerChange(triggerElement.value);
1531
+ });
1532
+ const { getItems } = useCollection();
1533
+ const { search, handleTypeaheadSearch, resetTypeahead } = useTypeahead();
1534
+ function handleOpen() {
1535
+ if (!isDisabled.value) {
1536
+ rootContext.onOpenChange(true);
1537
+ resetTypeahead();
1538
+ }
1539
+ }
1540
+ function handlePointerOpen(event) {
1541
+ handleOpen();
1542
+ rootContext.triggerPointerDownPosRef.value = {
1543
+ x: Math.round(event.pageX),
1544
+ y: Math.round(event.pageY)
1545
+ };
1546
+ }
1547
+ return (_ctx, _cache) => {
1548
+ return openBlock(), createBlock(unref(PopperAnchor_default), {
1549
+ "as-child": "",
1550
+ reference: _ctx.reference
1551
+ }, {
1552
+ default: withCtx(() => {
1553
+ var _a, _b, _c, _d;
1554
+ return [createVNode(unref(Primitive), {
1555
+ ref: unref(forwardRef),
1556
+ role: "combobox",
1557
+ type: _ctx.as === "button" ? "button" : void 0,
1558
+ "aria-controls": unref(rootContext).contentId,
1559
+ "aria-expanded": unref(rootContext).open.value || false,
1560
+ "aria-required": (_a = unref(rootContext).required) == null ? void 0 : _a.value,
1561
+ "aria-autocomplete": "none",
1562
+ disabled: isDisabled.value,
1563
+ dir: (_b = unref(rootContext)) == null ? void 0 : _b.dir.value,
1564
+ "data-state": ((_c = unref(rootContext)) == null ? void 0 : _c.open.value) ? "open" : "closed",
1565
+ "data-disabled": isDisabled.value ? "" : void 0,
1566
+ "data-placeholder": unref(shouldShowPlaceholder)((_d = unref(rootContext).modelValue) == null ? void 0 : _d.value) ? "" : void 0,
1567
+ "as-child": _ctx.asChild,
1568
+ as: _ctx.as,
1569
+ onClick: _cache[0] || (_cache[0] = (event) => {
1570
+ var _a2;
1571
+ (_a2 = event == null ? void 0 : event.currentTarget) == null ? void 0 : _a2.focus();
1572
+ }),
1573
+ onPointerdown: _cache[1] || (_cache[1] = (event) => {
1574
+ if (event.pointerType === "touch") return event.preventDefault();
1575
+ const target = event.target;
1576
+ if (target.hasPointerCapture(event.pointerId)) target.releasePointerCapture(event.pointerId);
1577
+ if (event.button === 0 && event.ctrlKey === false) {
1578
+ handlePointerOpen(event);
1579
+ event.preventDefault();
1580
+ }
1581
+ }),
1582
+ onPointerup: _cache[2] || (_cache[2] = withModifiers((event) => {
1583
+ if (event.pointerType === "touch") handlePointerOpen(event);
1584
+ }, ["prevent"])),
1585
+ onKeydown: _cache[3] || (_cache[3] = (event) => {
1586
+ const isTypingAhead = unref(search) !== "";
1587
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
1588
+ if (!isModifierKey && event.key.length === 1) {
1589
+ if (isTypingAhead && event.key === " ") return;
1590
+ }
1591
+ unref(handleTypeaheadSearch)(event.key, unref(getItems)());
1592
+ if (unref(OPEN_KEYS).includes(event.key)) {
1593
+ handleOpen();
1594
+ event.preventDefault();
1595
+ }
1596
+ })
1597
+ }, {
1598
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1599
+ _: 3
1600
+ }, 8, [
1601
+ "type",
1602
+ "aria-controls",
1603
+ "aria-expanded",
1604
+ "aria-required",
1605
+ "disabled",
1606
+ "dir",
1607
+ "data-state",
1608
+ "data-disabled",
1609
+ "data-placeholder",
1610
+ "as-child",
1611
+ "as"
1612
+ ])];
1613
+ }),
1614
+ _: 3
1615
+ }, 8, ["reference"]);
1616
+ };
1617
+ }
1618
+ });
1619
+ var SelectTrigger_default = SelectTrigger_vue_vue_type_script_setup_true_lang_default;
1620
+ var SelectValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1621
+ __name: "SelectValue",
1622
+ props: {
1623
+ placeholder: {
1624
+ type: String,
1625
+ required: false,
1626
+ default: ""
1627
+ },
1628
+ asChild: {
1629
+ type: Boolean,
1630
+ required: false
1631
+ },
1632
+ as: {
1633
+ type: null,
1634
+ required: false,
1635
+ default: "span"
1636
+ }
1637
+ },
1638
+ setup(__props) {
1639
+ const props = __props;
1640
+ const { forwardRef, currentElement } = useForwardExpose();
1641
+ const rootContext = injectSelectRootContext();
1642
+ onMounted(() => {
1643
+ rootContext.valueElement = currentElement;
1644
+ });
1645
+ const selectedLabel = computed(() => {
1646
+ var _a;
1647
+ let list = [];
1648
+ const options = Array.from(rootContext.optionsSet.value);
1649
+ const getOption = (value) => options.find((option) => valueComparator(value, option.value, rootContext.by));
1650
+ if (Array.isArray(rootContext.modelValue.value)) list = rootContext.modelValue.value.map((value) => {
1651
+ var _a2;
1652
+ return ((_a2 = getOption(value)) == null ? void 0 : _a2.textContent) ?? "";
1653
+ });
1654
+ else list = [((_a = getOption(rootContext.modelValue.value)) == null ? void 0 : _a.textContent) ?? ""];
1655
+ return list.filter(Boolean);
1656
+ });
1657
+ const slotText = computed(() => {
1658
+ return selectedLabel.value.length ? selectedLabel.value.join(", ") : props.placeholder;
1659
+ });
1660
+ return (_ctx, _cache) => {
1661
+ return openBlock(), createBlock(unref(Primitive), {
1662
+ ref: unref(forwardRef),
1663
+ as: _ctx.as,
1664
+ "as-child": _ctx.asChild,
1665
+ style: { pointerEvents: "none" },
1666
+ "data-placeholder": selectedLabel.value.length ? void 0 : props.placeholder
1667
+ }, {
1668
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
1669
+ selectedLabel: selectedLabel.value,
1670
+ modelValue: unref(rootContext).modelValue.value
1671
+ }, () => [createTextVNode(toDisplayString(slotText.value), 1)])]),
1672
+ _: 3
1673
+ }, 8, [
1674
+ "as",
1675
+ "as-child",
1676
+ "data-placeholder"
1677
+ ]);
1678
+ };
1679
+ }
1680
+ });
1681
+ var SelectValue_default = SelectValue_vue_vue_type_script_setup_true_lang_default;
1682
+ var SelectViewport_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1683
+ __name: "SelectViewport",
1684
+ props: {
1685
+ nonce: {
1686
+ type: String,
1687
+ required: false
1688
+ },
1689
+ asChild: {
1690
+ type: Boolean,
1691
+ required: false
1692
+ },
1693
+ as: {
1694
+ type: null,
1695
+ required: false
1696
+ }
1697
+ },
1698
+ setup(__props) {
1699
+ const props = __props;
1700
+ const { nonce: propNonce } = toRefs(props);
1701
+ const nonce = useNonce(propNonce);
1702
+ const contentContext = injectSelectContentContext();
1703
+ const alignedPositionContext = contentContext.position === "item-aligned" ? injectSelectItemAlignedPositionContext() : void 0;
1704
+ const { forwardRef, currentElement } = useForwardExpose();
1705
+ onMounted(() => {
1706
+ contentContext == null ? void 0 : contentContext.onViewportChange(currentElement.value);
1707
+ });
1708
+ const prevScrollTopRef = ref(0);
1709
+ function handleScroll(event) {
1710
+ const viewport = event.currentTarget;
1711
+ const { shouldExpandOnScrollRef, contentWrapper } = alignedPositionContext ?? {};
1712
+ if ((shouldExpandOnScrollRef == null ? void 0 : shouldExpandOnScrollRef.value) && (contentWrapper == null ? void 0 : contentWrapper.value)) {
1713
+ const scrolledBy = Math.abs(prevScrollTopRef.value - viewport.scrollTop);
1714
+ if (scrolledBy > 0) {
1715
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
1716
+ const cssMinHeight = Number.parseFloat(contentWrapper.value.style.minHeight);
1717
+ const cssHeight = Number.parseFloat(contentWrapper.value.style.height);
1718
+ const prevHeight = Math.max(cssMinHeight, cssHeight);
1719
+ if (prevHeight < availableHeight) {
1720
+ const nextHeight = prevHeight + scrolledBy;
1721
+ const clampedNextHeight = Math.min(availableHeight, nextHeight);
1722
+ const heightDiff = nextHeight - clampedNextHeight;
1723
+ contentWrapper.value.style.height = `${clampedNextHeight}px`;
1724
+ if (contentWrapper.value.style.bottom === "0px") {
1725
+ viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;
1726
+ contentWrapper.value.style.justifyContent = "flex-end";
1727
+ }
1728
+ }
1729
+ }
1730
+ }
1731
+ prevScrollTopRef.value = viewport.scrollTop;
1732
+ }
1733
+ return (_ctx, _cache) => {
1734
+ return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(Primitive), mergeProps({
1735
+ ref: unref(forwardRef),
1736
+ "data-reka-select-viewport": "",
1737
+ role: "presentation"
1738
+ }, {
1739
+ ..._ctx.$attrs,
1740
+ ...props
1741
+ }, {
1742
+ style: {
1743
+ position: "relative",
1744
+ flex: 1,
1745
+ overflow: "hidden auto"
1746
+ },
1747
+ onScroll: handleScroll
1748
+ }), {
1749
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1750
+ _: 3
1751
+ }, 16), createVNode(unref(Primitive), {
1752
+ as: "style",
1753
+ nonce: unref(nonce)
1754
+ }, {
1755
+ default: withCtx(() => _cache[0] || (_cache[0] = [createTextVNode(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } ")])),
1756
+ _: 1,
1757
+ __: [0]
1758
+ }, 8, ["nonce"])], 64);
1759
+ };
1760
+ }
1761
+ });
1762
+ var SelectViewport_default = SelectViewport_vue_vue_type_script_setup_true_lang_default;
1763
+ /**
1764
+ * @license lucide-vue-next v1.0.0 - ISC
1765
+ *
1766
+ * This source code is licensed under the ISC license.
1767
+ * See the LICENSE file in the root directory of this source tree.
1768
+ */
1769
+ const ChevronUp = createLucideIcon("chevron-up", [
1770
+ ["path", { d: "m18 15-6-6-6 6", key: "153udz" }]
1771
+ ]);
1772
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
1773
+ __name: "Select",
1774
+ props: {
1775
+ open: { type: Boolean },
1776
+ defaultOpen: { type: Boolean },
1777
+ defaultValue: {},
1778
+ modelValue: {},
1779
+ by: { type: [String, Function] },
1780
+ dir: {},
1781
+ multiple: { type: Boolean },
1782
+ autocomplete: {},
1783
+ disabled: { type: Boolean },
1784
+ name: {},
1785
+ required: { type: Boolean }
1786
+ },
1787
+ emits: ["update:modelValue", "update:open"],
1788
+ setup(__props, { emit: __emit }) {
1789
+ const props = __props;
1790
+ const emits = __emit;
1791
+ const forwarded = useForwardPropsEmits(props, emits);
1792
+ return (_ctx, _cache) => {
1793
+ return openBlock(), createBlock(unref(SelectRoot_default), mergeProps({ "data-slot": "select" }, unref(forwarded)), {
1794
+ default: withCtx((slotProps) => [
1795
+ renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(slotProps)))
1796
+ ]),
1797
+ _: 3
1798
+ }, 16);
1799
+ };
1800
+ }
1801
+ });
1802
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
1803
+ ...{
1804
+ inheritAttrs: false
1805
+ },
1806
+ __name: "SelectContent",
1807
+ props: {
1808
+ forceMount: { type: Boolean },
1809
+ position: { default: "popper" },
1810
+ bodyLock: { type: Boolean },
1811
+ side: {},
1812
+ sideOffset: {},
1813
+ sideFlip: { type: Boolean },
1814
+ align: {},
1815
+ alignOffset: {},
1816
+ alignFlip: { type: Boolean },
1817
+ avoidCollisions: { type: Boolean },
1818
+ collisionBoundary: {},
1819
+ collisionPadding: {},
1820
+ arrowPadding: {},
1821
+ hideShiftedArrow: { type: Boolean },
1822
+ sticky: {},
1823
+ hideWhenDetached: { type: Boolean },
1824
+ positionStrategy: {},
1825
+ updatePositionStrategy: {},
1826
+ disableUpdateOnLayoutShift: { type: Boolean },
1827
+ prioritizePosition: { type: Boolean },
1828
+ reference: {},
1829
+ asChild: { type: Boolean },
1830
+ as: {},
1831
+ disableOutsidePointerEvents: { type: Boolean },
1832
+ class: {}
1833
+ },
1834
+ emits: ["closeAutoFocus", "escapeKeyDown", "pointerDownOutside"],
1835
+ setup(__props, { emit: __emit }) {
1836
+ const props = __props;
1837
+ const emits = __emit;
1838
+ const delegatedProps = reactiveOmit(props, "class");
1839
+ const forwarded = useForwardPropsEmits(delegatedProps, emits);
1840
+ return (_ctx, _cache) => {
1841
+ return openBlock(), createBlock(unref(SelectPortal_default), null, {
1842
+ default: withCtx(() => [
1843
+ createVNode(unref(SelectContent_default), mergeProps({ "data-slot": "select-content" }, { ..._ctx.$attrs, ...unref(forwarded) }, {
1844
+ class: unref(cn)(
1845
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded border border-border transition-colors duration-300 ease-in-out",
1846
+ _ctx.position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
1847
+ props.class
1848
+ )
1849
+ }), {
1850
+ default: withCtx(() => [
1851
+ createVNode(unref(_sfc_main$3)),
1852
+ createVNode(unref(SelectViewport_default), {
1853
+ class: normalizeClass(unref(cn)("p-1", _ctx.position === "popper" && "h-(--reka-select-trigger-height) w-full min-w-(--reka-select-trigger-width) scroll-my-1"))
1854
+ }, {
1855
+ default: withCtx(() => [
1856
+ renderSlot(_ctx.$slots, "default")
1857
+ ]),
1858
+ _: 3
1859
+ }, 8, ["class"]),
1860
+ createVNode(unref(_sfc_main$4))
1861
+ ]),
1862
+ _: 3
1863
+ }, 16, ["class"])
1864
+ ]),
1865
+ _: 3
1866
+ });
1867
+ };
1868
+ }
1869
+ });
1870
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
1871
+ __name: "SelectGroup",
1872
+ props: {
1873
+ asChild: { type: Boolean },
1874
+ as: {}
1875
+ },
1876
+ setup(__props) {
1877
+ const props = __props;
1878
+ return (_ctx, _cache) => {
1879
+ return openBlock(), createBlock(unref(SelectGroup_default), mergeProps({ "data-slot": "select-group" }, props), {
1880
+ default: withCtx(() => [
1881
+ renderSlot(_ctx.$slots, "default")
1882
+ ]),
1883
+ _: 3
1884
+ }, 16);
1885
+ };
1886
+ }
1887
+ });
1888
+ const _hoisted_1 = { class: "absolute right-2 flex size-3.5 items-center justify-center" };
1889
+ const _hoisted_2 = { class: "sr-only" };
1890
+ const _hoisted_3 = { class: "flex min-w-0 flex-1 flex-col" };
1891
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1892
+ __name: "SelectItem",
1893
+ props: {
1894
+ value: {},
1895
+ disabled: { type: Boolean },
1896
+ textValue: {},
1897
+ asChild: { type: Boolean },
1898
+ as: {},
1899
+ class: {}
1900
+ },
1901
+ setup(__props) {
1902
+ const props = __props;
1903
+ const delegatedProps = reactiveOmit(props, "class");
1904
+ const forwardedProps = useForwardProps(delegatedProps);
1905
+ return (_ctx, _cache) => {
1906
+ return openBlock(), createBlock(unref(SelectItem_default), mergeProps({ "data-slot": "select-item" }, unref(forwardedProps), {
1907
+ class: unref(cn)(
1908
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-2.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
1909
+ props.class
1910
+ )
1911
+ }), {
1912
+ default: withCtx(() => [
1913
+ createElementVNode("span", _hoisted_1, [
1914
+ createVNode(unref(SelectItemIndicator_default), null, {
1915
+ default: withCtx(() => [
1916
+ renderSlot(_ctx.$slots, "indicator-icon", {}, () => [
1917
+ createVNode(unref(Check), { class: "size-4" })
1918
+ ])
1919
+ ]),
1920
+ _: 3
1921
+ })
1922
+ ]),
1923
+ props.textValue ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1924
+ createVNode(unref(SelectItemText_default), null, {
1925
+ default: withCtx(() => [
1926
+ createElementVNode("span", _hoisted_2, toDisplayString(props.textValue), 1)
1927
+ ]),
1928
+ _: 1
1929
+ }),
1930
+ createElementVNode("div", _hoisted_3, [
1931
+ renderSlot(_ctx.$slots, "default")
1932
+ ])
1933
+ ], 64)) : (openBlock(), createBlock(unref(SelectItemText_default), { key: 1 }, {
1934
+ default: withCtx(() => [
1935
+ renderSlot(_ctx.$slots, "default")
1936
+ ]),
1937
+ _: 3
1938
+ }))
1939
+ ]),
1940
+ _: 3
1941
+ }, 16, ["class"]);
1942
+ };
1943
+ }
1944
+ });
1945
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1946
+ __name: "SelectItemText",
1947
+ props: {
1948
+ asChild: { type: Boolean },
1949
+ as: {}
1950
+ },
1951
+ setup(__props) {
1952
+ const props = __props;
1953
+ return (_ctx, _cache) => {
1954
+ return openBlock(), createBlock(unref(SelectItemText_default), mergeProps({ "data-slot": "select-item-text" }, props), {
1955
+ default: withCtx(() => [
1956
+ renderSlot(_ctx.$slots, "default")
1957
+ ]),
1958
+ _: 3
1959
+ }, 16);
1960
+ };
1961
+ }
1962
+ });
1963
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1964
+ __name: "SelectLabel",
1965
+ props: {
1966
+ for: {},
1967
+ asChild: { type: Boolean },
1968
+ as: {},
1969
+ class: {}
1970
+ },
1971
+ setup(__props) {
1972
+ const props = __props;
1973
+ return (_ctx, _cache) => {
1974
+ return openBlock(), createBlock(unref(SelectLabel_default), {
1975
+ "data-slot": "select-label",
1976
+ class: normalizeClass(unref(cn)("text-muted-foreground px-2 py-1.5 text-xs", props.class))
1977
+ }, {
1978
+ default: withCtx(() => [
1979
+ renderSlot(_ctx.$slots, "default")
1980
+ ]),
1981
+ _: 3
1982
+ }, 8, ["class"]);
1983
+ };
1984
+ }
1985
+ });
1986
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1987
+ __name: "SelectScrollDownButton",
1988
+ props: {
1989
+ asChild: { type: Boolean },
1990
+ as: {},
1991
+ class: {}
1992
+ },
1993
+ setup(__props) {
1994
+ const props = __props;
1995
+ const delegatedProps = reactiveOmit(props, "class");
1996
+ const forwardedProps = useForwardProps(delegatedProps);
1997
+ return (_ctx, _cache) => {
1998
+ return openBlock(), createBlock(unref(SelectScrollDownButton_default), mergeProps({ "data-slot": "select-scroll-down-button" }, unref(forwardedProps), {
1999
+ class: unref(cn)("flex cursor-default items-center justify-center py-1", props.class)
2000
+ }), {
2001
+ default: withCtx(() => [
2002
+ renderSlot(_ctx.$slots, "default", {}, () => [
2003
+ createVNode(unref(ChevronDown), { class: "size-4" })
2004
+ ])
2005
+ ]),
2006
+ _: 3
2007
+ }, 16, ["class"]);
2008
+ };
2009
+ }
2010
+ });
2011
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
2012
+ __name: "SelectScrollUpButton",
2013
+ props: {
2014
+ asChild: { type: Boolean },
2015
+ as: {},
2016
+ class: {}
2017
+ },
2018
+ setup(__props) {
2019
+ const props = __props;
2020
+ const delegatedProps = reactiveOmit(props, "class");
2021
+ const forwardedProps = useForwardProps(delegatedProps);
2022
+ return (_ctx, _cache) => {
2023
+ return openBlock(), createBlock(unref(SelectScrollUpButton_default), mergeProps({ "data-slot": "select-scroll-up-button" }, unref(forwardedProps), {
2024
+ class: unref(cn)("flex cursor-default items-center justify-center py-1", props.class)
2025
+ }), {
2026
+ default: withCtx(() => [
2027
+ renderSlot(_ctx.$slots, "default", {}, () => [
2028
+ createVNode(unref(ChevronUp), { class: "size-4" })
2029
+ ])
2030
+ ]),
2031
+ _: 3
2032
+ }, 16, ["class"]);
2033
+ };
2034
+ }
2035
+ });
2036
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2037
+ __name: "SelectSeparator",
2038
+ props: {
2039
+ asChild: { type: Boolean },
2040
+ as: {},
2041
+ class: {}
2042
+ },
2043
+ setup(__props) {
2044
+ const props = __props;
2045
+ const delegatedProps = reactiveOmit(props, "class");
2046
+ return (_ctx, _cache) => {
2047
+ return openBlock(), createBlock(unref(SelectSeparator_default), mergeProps({ "data-slot": "select-separator" }, unref(delegatedProps), {
2048
+ class: unref(cn)("bg-border pointer-events-none -mx-1 my-1 h-px", props.class)
2049
+ }), null, 16, ["class"]);
2050
+ };
2051
+ }
2052
+ });
2053
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2054
+ __name: "SelectTrigger",
2055
+ props: {
2056
+ disabled: { type: Boolean },
2057
+ reference: {},
2058
+ asChild: { type: Boolean },
2059
+ as: {},
2060
+ class: {},
2061
+ size: { default: "default" }
2062
+ },
2063
+ setup(__props) {
2064
+ const props = __props;
2065
+ const delegatedProps = reactiveOmit(props, "class", "size");
2066
+ const forwardedProps = useForwardProps(delegatedProps);
2067
+ return (_ctx, _cache) => {
2068
+ return openBlock(), createBlock(unref(SelectTrigger_default), mergeProps({
2069
+ "data-slot": "select-trigger",
2070
+ "data-size": _ctx.size
2071
+ }, unref(forwardedProps), {
2072
+ class: unref(cn)(
2073
+ "data-[placeholder]:text-(--text-secondary-light) [&_svg:not([class*='text-'])]:text-(--text-secondary-light) flex w-fit cursor-pointer items-center justify-between gap-2 rounded border border-(--border-light) bg-(--button-secondary-light) px-4 py-3 text-xs font-medium whitespace-nowrap text-(--text-primary-light) transition-all duration-300 ease-in-out outline-none disabled:cursor-not-allowed disabled:opacity-60 data-[size=default]:h-[52px] data-[size=sm]:h-10 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 dark:border-(--border-dark) dark:bg-(--button-secondary-dark) dark:text-(--text-primary-dark) dark:data-[placeholder]:text-(--text-secondary-dark) dark:[&_svg:not([class*='text-'])]:text-(--text-secondary-dark) sm:text-sm",
2074
+ "focus-visible:border-(--border-hover-light) focus-visible:ring-0 dark:focus-visible:border-(--border-hover-dark)",
2075
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
2076
+ props.class
2077
+ )
2078
+ }), {
2079
+ default: withCtx(() => [
2080
+ renderSlot(_ctx.$slots, "default"),
2081
+ createVNode(unref(SelectIcon_default), { "as-child": "" }, {
2082
+ default: withCtx(() => [
2083
+ createVNode(unref(ChevronDown), { class: "size-4 opacity-50" })
2084
+ ]),
2085
+ _: 1
2086
+ })
2087
+ ]),
2088
+ _: 3
2089
+ }, 16, ["data-size", "class"]);
2090
+ };
2091
+ }
2092
+ });
2093
+ const _sfc_main = /* @__PURE__ */ defineComponent({
2094
+ __name: "SelectValue",
2095
+ props: {
2096
+ placeholder: {},
2097
+ asChild: { type: Boolean },
2098
+ as: {}
2099
+ },
2100
+ setup(__props) {
2101
+ const props = __props;
2102
+ return (_ctx, _cache) => {
2103
+ return openBlock(), createBlock(unref(SelectValue_default), mergeProps({ "data-slot": "select-value" }, props), {
2104
+ default: withCtx(() => [
2105
+ renderSlot(_ctx.$slots, "default")
2106
+ ]),
2107
+ _: 3
2108
+ }, 16);
2109
+ };
2110
+ }
2111
+ });
2112
+ export {
2113
+ _sfc_main$a as _,
2114
+ _sfc_main$9 as a,
2115
+ _sfc_main$8 as b,
2116
+ _sfc_main$7 as c,
2117
+ _sfc_main$6 as d,
2118
+ _sfc_main$5 as e,
2119
+ _sfc_main$4 as f,
2120
+ _sfc_main$3 as g,
2121
+ _sfc_main$2 as h,
2122
+ _sfc_main$1 as i,
2123
+ _sfc_main as j
2124
+ };