ropav 0.1.6 → 0.1.8

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 (310) hide show
  1. package/README.md +7 -1
  2. package/dist/accordion.css +17 -17
  3. package/dist/accordion.js +123 -155
  4. package/dist/alert.css +18 -18
  5. package/dist/alert.js +10 -11
  6. package/dist/ancestry.js +136 -0
  7. package/dist/aria.js +14 -0
  8. package/dist/aspect-ratio.js +1 -1
  9. package/dist/attributes.js +9 -0
  10. package/dist/attributes2.js +29 -0
  11. package/dist/avatar.css +19 -19
  12. package/dist/avatar.js +9 -17
  13. package/dist/badge.css +16 -16
  14. package/dist/badge.js +5 -5
  15. package/dist/button-group.js +1 -1
  16. package/dist/button-link.js +4 -3
  17. package/dist/button.js +4 -3
  18. package/dist/button.scss_vue_type_style_index_0_src_true_lang.js +1 -1
  19. package/dist/calendar.css +173 -0
  20. package/dist/calendar.js +714 -0
  21. package/dist/calendar2.js +37 -0
  22. package/dist/card.js +1 -1
  23. package/dist/checkbox.css +32 -32
  24. package/dist/checkbox.js +22 -28
  25. package/dist/chevron-left.js +12 -0
  26. package/dist/collapse.css +6 -6
  27. package/dist/collapse.js +7 -6
  28. package/dist/collectionNavigation.js +2 -99
  29. package/dist/color-input.css +19 -19
  30. package/dist/color-input.js +14 -13
  31. package/dist/color-picker.css +40 -40
  32. package/dist/color-picker.js +247 -276
  33. package/dist/color-picker2.js +1 -9
  34. package/dist/color-swatch.css +4 -4
  35. package/dist/color-swatch.js +6 -8
  36. package/dist/color.js +5 -10
  37. package/dist/combobox.css +251 -0
  38. package/dist/combobox.js +410 -0
  39. package/dist/componentColors.js +125 -84
  40. package/dist/componentRef.js +26 -0
  41. package/dist/components/accordion/accordionContext.d.ts +3 -0
  42. package/dist/components/accordion/accordionModel.d.ts +14 -0
  43. package/dist/components/accordion/index.d.ts +2 -1
  44. package/dist/components/accordion/index.js +1 -1
  45. package/dist/components/accordion/types.d.ts +1 -2
  46. package/dist/components/accordion/useAccordion.d.ts +2 -2
  47. package/dist/components/accordion/useAccordionItem.d.ts +2 -0
  48. package/dist/components/calendar/calendar.d.ts +30 -0
  49. package/dist/components/calendar/calendarBehavior.d.ts +49 -0
  50. package/dist/components/calendar/index.d.ts +3 -0
  51. package/dist/components/calendar/index.js +3 -0
  52. package/dist/components/calendar/types.d.ts +53 -0
  53. package/dist/components/calendar/useCalendar.d.ts +24 -0
  54. package/dist/components/checkbox/useCheckbox.d.ts +1 -2
  55. package/dist/components/color-picker/index.js +2 -2
  56. package/dist/components/color-picker/types.d.ts +2 -2
  57. package/dist/components/color-picker/useColorPickerDrag.d.ts +1 -1
  58. package/dist/components/color-picker/useColorPickerSaturation.d.ts +22 -0
  59. package/dist/components/color-picker/useColorPickerSlider.d.ts +20 -0
  60. package/dist/components/color-picker/useColorPickerValue.d.ts +1 -1
  61. package/dist/components/combobox/combobox.d.ts +29 -0
  62. package/dist/components/combobox/comboboxModel.d.ts +4 -0
  63. package/dist/components/combobox/index.d.ts +3 -0
  64. package/dist/components/combobox/index.js +2 -0
  65. package/dist/components/combobox/types.d.ts +43 -0
  66. package/dist/components/combobox/useCombobox.d.ts +45 -0
  67. package/dist/components/date-picker/date-picker.d.ts +33 -0
  68. package/dist/components/date-picker/datePickerModel.d.ts +10 -0
  69. package/dist/components/date-picker/index.d.ts +4 -0
  70. package/dist/components/date-picker/index.js +2 -0
  71. package/dist/components/date-picker/types.d.ts +57 -0
  72. package/dist/components/date-picker/useDatePicker.d.ts +29 -0
  73. package/dist/components/date-picker/useDatePickerValueState.d.ts +21 -0
  74. package/dist/components/dialog/{dialog-core.d.ts → dialogContext.d.ts} +1 -5
  75. package/dist/components/dialog/useDialogContentInteractions.d.ts +18 -0
  76. package/dist/components/dialog/useDialogRootState.d.ts +19 -0
  77. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  78. package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +1 -1
  79. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +1 -1
  80. package/dist/components/dropdown-menu/dropdown-menu-model.d.ts +8 -0
  81. package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +2 -2
  82. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  83. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +1 -1
  84. package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +1 -1
  85. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  86. package/dist/components/dropdown-menu/{dropdown-menu-primitive-core.d.ts → dropdownMenuContext.d.ts} +17 -30
  87. package/dist/components/dropdown-menu/dropdownMenuDataModel.d.ts +20 -0
  88. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -0
  89. package/dist/components/dropdown-menu/dropdownMenuInteractionNavigation.d.ts +24 -0
  90. package/dist/components/dropdown-menu/dropdownMenuInteractionRegistry.d.ts +42 -0
  91. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +114 -0
  92. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -11
  93. package/dist/components/dropdown-menu/useDropdownMenuContextTrigger.d.ts +9 -0
  94. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +35 -0
  95. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +24 -0
  96. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +6 -5
  97. package/dist/components/dropdown-menu/useDropdownMenuInteractionDismissal.d.ts +17 -0
  98. package/dist/components/dropdown-menu/useDropdownMenuInteractionKeyboard.d.ts +19 -0
  99. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +0 -1
  100. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +28 -0
  101. package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +2 -2
  102. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +1 -1
  103. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +19 -0
  104. package/dist/components/dropzone/dropzone.d.ts +31 -0
  105. package/dist/components/dropzone/dropzoneModel.d.ts +16 -0
  106. package/dist/components/dropzone/index.d.ts +3 -0
  107. package/dist/components/dropzone/index.js +2 -0
  108. package/dist/components/dropzone/types.d.ts +56 -0
  109. package/dist/components/dropzone/useDropzone.d.ts +25 -0
  110. package/dist/components/file-input/file-input.d.ts +29 -0
  111. package/dist/components/file-input/index.d.ts +3 -0
  112. package/dist/components/file-input/index.js +2 -0
  113. package/dist/components/file-input/types.d.ts +37 -0
  114. package/dist/components/file-input/useFileInput.d.ts +15 -0
  115. package/dist/components/floating/index.js +2 -2
  116. package/dist/components/floating/useFloatingPosition.d.ts +1 -14
  117. package/dist/components/floating/useFloatingTargetLifecycle.d.ts +32 -0
  118. package/dist/components/floating/useHoverDisclosure.d.ts +10 -0
  119. package/dist/components/hover-card/hover-card.d.ts +25 -0
  120. package/dist/components/hover-card/index.d.ts +3 -0
  121. package/dist/components/hover-card/index.js +2 -0
  122. package/dist/components/hover-card/types.d.ts +45 -0
  123. package/dist/components/hover-card/useHoverCard.d.ts +22 -0
  124. package/dist/components/hover-card/useHoverCardDisclosure.d.ts +19 -0
  125. package/dist/components/multi-select/index.d.ts +3 -0
  126. package/dist/components/multi-select/index.js +2 -0
  127. package/dist/components/multi-select/multi-select.d.ts +30 -0
  128. package/dist/components/multi-select/multiSelectModel.d.ts +3 -0
  129. package/dist/components/multi-select/types.d.ts +49 -0
  130. package/dist/components/multi-select/useMultiSelect.d.ts +46 -0
  131. package/dist/components/number-input/numberInputModel.d.ts +15 -0
  132. package/dist/components/number-input/useNumberInput.d.ts +3 -19
  133. package/dist/components/pagination/index.d.ts +1 -1
  134. package/dist/components/pagination/index.js +1 -1
  135. package/dist/components/pagination/paginationModel.d.ts +4 -0
  136. package/dist/components/pagination/types.d.ts +15 -0
  137. package/dist/components/pagination/usePagination.d.ts +3 -19
  138. package/dist/components/popover/usePopoverBindings.d.ts +13 -0
  139. package/dist/components/progress/progressModel.d.ts +8 -0
  140. package/dist/components/progress/useProgress.d.ts +0 -6
  141. package/dist/components/radio/useRadio.d.ts +1 -2
  142. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  143. package/dist/components/scroll-area/scrollAreaModel.d.ts +64 -0
  144. package/dist/components/scroll-area/useScrollArea.d.ts +70 -53
  145. package/dist/components/scroll-area/{useScrollAreaPresentation.d.ts → useScrollAreaAttributes.d.ts} +37 -17
  146. package/dist/components/scroll-area/useScrollAreaDerivedState.d.ts +8 -0
  147. package/dist/components/scroll-area/useScrollAreaMeasurement.d.ts +35 -0
  148. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +11 -9
  149. package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +15 -20
  150. package/dist/components/segmented-control/index.d.ts +3 -0
  151. package/dist/components/segmented-control/index.js +2 -0
  152. package/dist/components/segmented-control/segmented-control.d.ts +26 -0
  153. package/dist/components/segmented-control/types.d.ts +47 -0
  154. package/dist/components/segmented-control/useSegmentedControl.d.ts +15 -0
  155. package/dist/components/select/useSelect.d.ts +31 -19
  156. package/dist/components/slider/rangeSliderModel.d.ts +41 -0
  157. package/dist/components/slider/{sliderCore.d.ts → sliderModel.d.ts} +0 -1
  158. package/dist/components/slider/useRangeSlider.d.ts +9 -17
  159. package/dist/components/slider/useRangeSliderPointer.d.ts +1 -1
  160. package/dist/components/slider/useRangeSliderValueState.d.ts +40 -0
  161. package/dist/components/slider/useSlider.d.ts +7 -13
  162. package/dist/components/slider/useSliderPointerPreview.d.ts +22 -0
  163. package/dist/components/slider/useSliderTooltipState.d.ts +40 -0
  164. package/dist/components/slider/useSliderValueState.d.ts +33 -0
  165. package/dist/components/tags-input/index.d.ts +3 -0
  166. package/dist/components/tags-input/index.js +2 -0
  167. package/dist/components/tags-input/tags-input.d.ts +27 -0
  168. package/dist/components/tags-input/tagsInputModel.d.ts +12 -0
  169. package/dist/components/tags-input/types.d.ts +37 -0
  170. package/dist/components/tags-input/useTagsInput.d.ts +23 -0
  171. package/dist/components/teleport-provider/index.js +1 -1
  172. package/dist/components/teleport-provider/useTeleportTarget.d.ts +1 -2
  173. package/dist/components/toast/useToastLifecycle.d.ts +19 -0
  174. package/dist/components/tooltip/useTooltip.d.ts +1 -2
  175. package/dist/components/tooltip/useTooltipTargetBindings.d.ts +12 -0
  176. package/dist/css.js +12 -0
  177. package/dist/date-picker.css +49 -0
  178. package/dist/date-picker.js +809 -0
  179. package/dist/dialog.js +215 -218
  180. package/dist/direction.js +6 -0
  181. package/dist/dropdown-menu.css +21 -3
  182. package/dist/dropdown-menu.js +1626 -1185
  183. package/dist/dropzone.css +135 -0
  184. package/dist/dropzone.js +431 -0
  185. package/dist/events.js +59 -0
  186. package/dist/field.css +8 -8
  187. package/dist/field.js +13 -25
  188. package/dist/file-input.css +135 -0
  189. package/dist/file-input.js +198 -0
  190. package/dist/floatingOffset.js +11 -0
  191. package/dist/focus-trap.js +7 -5
  192. package/dist/focusNavigation.js +37 -0
  193. package/dist/hover-card.css +80 -0
  194. package/dist/hover-card.js +402 -0
  195. package/dist/icon-button.css +8 -8
  196. package/dist/icon-button.js +7 -6
  197. package/dist/index.d.ts +9 -0
  198. package/dist/index.js +20 -9
  199. package/dist/input.css +24 -24
  200. package/dist/input.js +19 -31
  201. package/dist/interactive.js +18 -0
  202. package/dist/internal/composables/useOverlayLayer.d.ts +12 -0
  203. package/dist/modal.js +2 -2
  204. package/dist/multi-select.css +316 -0
  205. package/dist/multi-select.js +481 -0
  206. package/dist/nativeChoice.js +169 -0
  207. package/dist/number-input.css +18 -18
  208. package/dist/number-input.js +44 -44
  209. package/dist/number.js +22 -0
  210. package/dist/overlay.js +3 -2
  211. package/dist/pagination.css +28 -28
  212. package/dist/pagination.js +66 -73
  213. package/dist/pointerSession.js +130 -0
  214. package/dist/popover.css +55 -37
  215. package/dist/popover.js +75 -101
  216. package/dist/progress.js +10 -13
  217. package/dist/query.js +40 -0
  218. package/dist/radio.css +18 -18
  219. package/dist/radio.js +30 -36
  220. package/dist/rafScheduler.js +34 -0
  221. package/dist/scroll-area.css +28 -28
  222. package/dist/scroll-area.js +540 -554
  223. package/dist/segmented-control.css +176 -0
  224. package/dist/segmented-control.js +382 -0
  225. package/dist/select.css +50 -48
  226. package/dist/select.js +131 -289
  227. package/dist/slider.css +191 -191
  228. package/dist/slider.js +720 -706
  229. package/dist/styles-api.d.ts +0 -1
  230. package/dist/styles-api.js +1 -4
  231. package/dist/switch.css +17 -17
  232. package/dist/switch.js +14 -15
  233. package/dist/tabs.css +43 -43
  234. package/dist/tabs.js +29 -56
  235. package/dist/tags-input.css +197 -0
  236. package/dist/tags-input.js +380 -0
  237. package/dist/text.js +17 -0
  238. package/dist/textarea.css +26 -26
  239. package/dist/textarea.js +21 -32
  240. package/dist/toast.css +26 -26
  241. package/dist/toast.js +141 -118
  242. package/dist/tooltip.css +12 -12
  243. package/dist/tooltip.js +64 -63
  244. package/dist/useCollapse.js +8 -11
  245. package/dist/useControlState.js +3 -6
  246. package/dist/useEditableOptionList.js +216 -0
  247. package/dist/useFlatOptionCollection.js +134 -0
  248. package/dist/useFloatingPosition.js +14 -40
  249. package/dist/useFloatingTargetLifecycle.js +127 -0
  250. package/dist/useFormControl.js +1 -0
  251. package/dist/useHoverDisclosure.js +561 -0
  252. package/dist/useNativeChoiceTransaction.js +46 -0
  253. package/dist/useNativeFileSelection.js +86 -0
  254. package/dist/useOverlayZIndex.js +246 -19
  255. package/dist/useTeleportTarget.js +3 -14
  256. package/dist/useTypeahead.js +94 -0
  257. package/dist/utils/aria.d.ts +3 -0
  258. package/dist/utils/attributes.d.ts +2 -0
  259. package/dist/utils/bem.d.ts +3 -0
  260. package/dist/utils/collectionNavigation.d.ts +2 -0
  261. package/dist/utils/color.d.ts +7 -0
  262. package/dist/{components/color-picker/color-picker-utils.d.ts → utils/colorPicker.d.ts} +5 -4
  263. package/dist/utils/componentColors.d.ts +7 -0
  264. package/dist/utils/css.d.ts +3 -0
  265. package/dist/utils/date.d.ts +13 -0
  266. package/dist/utils/dateAvailability.d.ts +7 -0
  267. package/dist/utils/dom/ancestry.d.ts +8 -0
  268. package/dist/utils/dom/attributes.d.ts +16 -0
  269. package/dist/utils/dom/componentRef.d.ts +4 -0
  270. package/dist/utils/dom/direction.d.ts +2 -0
  271. package/dist/utils/dom/events.d.ts +5 -0
  272. package/dist/utils/dom/files.d.ts +3 -0
  273. package/dist/utils/dom/focusNavigation.d.ts +7 -0
  274. package/dist/utils/dom/interactive.d.ts +2 -0
  275. package/dist/utils/dom/nativeChoice.d.ts +17 -0
  276. package/dist/utils/dom/pointerSession.d.ts +20 -0
  277. package/dist/utils/dom/query.d.ts +4 -0
  278. package/dist/utils/dom/scroll.d.ts +24 -0
  279. package/dist/utils/floatingOffset.d.ts +10 -0
  280. package/dist/utils/geometry.d.ts +14 -0
  281. package/dist/utils/indexPath.d.ts +6 -0
  282. package/dist/utils/number.d.ts +4 -0
  283. package/dist/utils/optionFilter.d.ts +5 -0
  284. package/dist/utils/rafScheduler.d.ts +4 -0
  285. package/dist/utils/text.d.ts +2 -0
  286. package/docs/code-architecture.md +118 -0
  287. package/docs/public-floating-api.md +13 -9
  288. package/docs/public-styles-api.md +25 -12
  289. package/package.json +51 -14
  290. package/src/styles/_mixins.scss +26 -0
  291. package/src/styles/styles-manifest.json +1 -2
  292. package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +0 -3
  293. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -21
  294. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +0 -36
  295. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +0 -29
  296. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +0 -52
  297. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +0 -17
  298. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +0 -18
  299. package/dist/components/scroll-area/scrollAreaCore.d.ts +0 -30
  300. package/dist/components/scroll-area/useScrollAreaControls.d.ts +0 -25
  301. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +0 -38
  302. package/dist/components/select/useSelectNativeControl.d.ts +0 -9
  303. package/dist/components/select/useSelectNativeValue.d.ts +0 -9
  304. package/dist/floating.js +0 -415
  305. /package/dist/components/alert/{useAlertColor.d.ts → alertColor.d.ts} +0 -0
  306. /package/dist/components/avatar/{useAvatarColor.d.ts → avatarColor.d.ts} +0 -0
  307. /package/dist/components/badge/{useBadgeColor.d.ts → badgeColor.d.ts} +0 -0
  308. /package/dist/components/button/{useButtonColor.d.ts → buttonColor.d.ts} +0 -0
  309. /package/dist/components/color-swatch/{useColorSwatchColor.d.ts → colorSwatchColor.d.ts} +0 -0
  310. /package/dist/components/toast/{useToastColor.d.ts → toastColor.d.ts} +0 -0
package/dist/popover.js CHANGED
@@ -1,54 +1,56 @@
1
1
  import './popover.css';
2
2
  import { t as useControllableValue } from "./useControllableValue.js";
3
- import { n as useStylesApi, t as presence } from "./styles-api.js";
3
+ import { t as useStylesApi } from "./styles-api.js";
4
+ import { n as toPresenceAttribute } from "./attributes.js";
4
5
  import { t as bem } from "./bem.js";
5
6
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
7
+ import { n as mergeAriaIdRefs } from "./aria.js";
8
+ import { i as isNodeWithinElement } from "./events.js";
6
9
  import { n as useOverlayZIndex, r as useOverlayLayer } from "./useOverlayZIndex.js";
10
+ import { t as getFloatingOffsetStyle } from "./floatingOffset.js";
7
11
  import { t as useFocusTrap } from "./useFocusTrap.js";
8
- import { n as useFloatingPosition, r as useFloatingTarget, t as isElementReference } from "./useFloatingPosition.js";
9
- import { n as useTeleportPositioningKey, r as useTeleportTarget } from "./useTeleportTarget.js";
10
- import { VaporTeleport, VaporTransition, applyVShow, computed, createComponent, createIf, createInvoker, createSlot, createTemplateRefSetter, defineVaporComponent, delegateEvents, extend, isRef, nextTick, ref, renderEffect, setAttr, setDynamicProps, setInsertionState, setStaticTemplateRef, setStyle, template, unref, useAttrs, useId, useSlots, watch } from "vue";
11
- //#region src/components/popover/usePopover.ts
12
- var DEFAULT_PLACEMENT = "bottom";
13
- var DEFAULT_ROLE = "dialog";
12
+ import { t as useFloatingPosition } from "./useFloatingPosition.js";
13
+ import { t as useFloatingTargetLifecycle } from "./useFloatingTargetLifecycle.js";
14
+ import { n as useTeleportTarget } from "./useTeleportTarget.js";
15
+ import { VaporTeleport, VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, isRef, nextTick, on, onBeforeUnmount, ref, renderEffect, setAttr, setDynamicProps, setInsertionState, setStyle, setTemplateRefBinding, template, unref, useAttrs, useId, useSlots, watch } from "vue";
16
+ //#region src/components/popover/usePopoverBindings.ts
14
17
  var TARGET_ATTRIBUTES = [
15
18
  "aria-controls",
16
19
  "aria-expanded",
17
20
  "aria-haspopup"
18
21
  ];
19
- function addIdReference(currentValue, id) {
20
- const ids = (currentValue ?? "").split(/\s+/).filter(Boolean);
21
- if (!ids.includes(id)) ids.push(id);
22
- return ids.join(" ");
23
- }
24
- function snapshotAttributes(element) {
25
- const snapshot = {};
26
- for (const attribute of TARGET_ATTRIBUTES) snapshot[attribute] = element.getAttribute(attribute);
27
- return snapshot;
28
- }
29
- function restoreAttributes(element, snapshot) {
30
- for (const attribute of TARGET_ATTRIBUTES) {
31
- const value = snapshot[attribute];
32
- if (value == null) element.removeAttribute(attribute);
33
- else element.setAttribute(attribute, value);
34
- }
35
- }
36
22
  function applyTargetAttributes(element, snapshot, options) {
37
- element.setAttribute("aria-controls", addIdReference(snapshot["aria-controls"], options.id));
23
+ element.setAttribute("aria-controls", mergeAriaIdRefs(snapshot.get("aria-controls"), options.id) ?? "");
38
24
  element.setAttribute("aria-expanded", String(options.expanded));
39
25
  element.setAttribute("aria-haspopup", options.role);
40
26
  }
27
+ function usePopoverBindings({ targetLifecycle, popoverId, popoverRole, isVisible, isDisabled, onTriggerClick }) {
28
+ targetLifecycle.bindTarget({
29
+ listeners: [["click", onTriggerClick]],
30
+ attributes: {
31
+ names: TARGET_ATTRIBUTES,
32
+ isActive: () => !isDisabled.value,
33
+ apply: (target, snapshot) => {
34
+ applyTargetAttributes(target, snapshot, {
35
+ id: popoverId.value,
36
+ expanded: isVisible.value,
37
+ role: popoverRole.value
38
+ });
39
+ }
40
+ }
41
+ });
42
+ }
43
+ //#endregion
44
+ //#region src/components/popover/usePopover.ts
45
+ var DEFAULT_PLACEMENT = "bottom";
46
+ var DEFAULT_ROLE = "dialog";
47
+ var POPOVER_OFFSET_PROPERTIES = {
48
+ mainAxis: "--_rp-popover-main-axis-offset",
49
+ crossAxis: "--_rp-popover-cross-axis-offset"
50
+ };
41
51
  function isFocusTrapContainer(value) {
42
52
  return typeof HTMLElement !== "undefined" && value instanceof HTMLElement || typeof SVGElement !== "undefined" && value instanceof SVGElement;
43
53
  }
44
- function resolveOffsetStyle(offset) {
45
- if (offset == null) return void 0;
46
- if (typeof offset === "number") return { "--_rp-popover-main-axis-offset": `${offset}px` };
47
- const style = {};
48
- if (offset.mainAxis != null) style["--_rp-popover-main-axis-offset"] = `${offset.mainAxis}px`;
49
- if (offset.crossAxis != null) style["--_rp-popover-cross-axis-offset"] = `${offset.crossAxis}px`;
50
- return Object.keys(style).length > 0 ? style : void 0;
51
- }
52
54
  function usePopover(props, emitOpenChange) {
53
55
  const slots = useSlots();
54
56
  const attrs = useAttrs();
@@ -65,9 +67,11 @@ function usePopover(props, emitOpenChange) {
65
67
  const placement = computed(() => props.placement ?? DEFAULT_PLACEMENT);
66
68
  const popoverRole = computed(() => props.role ?? DEFAULT_ROLE);
67
69
  const teleportTo = useTeleportTarget(() => props.teleportTo);
68
- const teleportPositioningKey = useTeleportPositioningKey();
69
- const { isExplicitTarget, reference, resolvedTarget } = useFloatingTarget(() => props.target, rootRef);
70
- const targetElement = computed(() => isElementReference(resolvedTarget.value) ? resolvedTarget.value : null);
70
+ const targetLifecycle = useFloatingTargetLifecycle({
71
+ target: () => props.target,
72
+ fallback: rootRef
73
+ });
74
+ const { isExplicitTarget, reference, targetElement } = targetLifecycle;
71
75
  const hasContent = computed(() => Boolean(slots.content || isExplicitTarget.value && slots.default));
72
76
  const isDisabled = computed(() => Boolean(props.disabled || !hasContent.value));
73
77
  const isOpen = controllableOpen.value;
@@ -108,12 +112,7 @@ function usePopover(props, emitOpenChange) {
108
112
  flipOptions: () => props.flipOptions,
109
113
  shift: () => props.shift !== false,
110
114
  collisionPadding: () => props.collisionPadding ?? 8,
111
- autoUpdateOptions: () => props.autoUpdateOptions,
112
- restartKey: () => [
113
- Boolean(props.teleport),
114
- teleportTo.value,
115
- teleportPositioningKey.value
116
- ]
115
+ autoUpdateOptions: () => props.autoUpdateOptions
117
116
  });
118
117
  const placementSide = computed(() => floating.actualPlacement.value.split("-")[0]);
119
118
  const rootClass = computed(() => bem("rp-popover", {
@@ -125,7 +124,7 @@ function usePopover(props, emitOpenChange) {
125
124
  }));
126
125
  const contentStyle = computed(() => ({
127
126
  ...floating.floatingStyle.value,
128
- ...resolveOffsetStyle(props.offset),
127
+ ...getFloatingOffsetStyle(props.offset, POPOVER_OFFSET_PROPERTIES),
129
128
  zIndex: layer.zIndex.value
130
129
  }));
131
130
  const triggerProps = computed(() => ({
@@ -187,31 +186,31 @@ function usePopover(props, emitOpenChange) {
187
186
  event.stopPropagation();
188
187
  closePopover();
189
188
  }
190
- function isEventInsidePopover(event) {
191
- return layer.isInside(event, [rootRef.value, targetElement.value]);
192
- }
193
189
  function onCompositeFocusout(event) {
194
190
  const nextTarget = event.relatedTarget;
195
- if (nextTarget instanceof Node && (rootRef.value?.contains(nextTarget) || contentRef.value?.contains(nextTarget) || targetElement.value?.contains(nextTarget))) return;
191
+ if (isNodeWithinElement(nextTarget, rootRef.value) || isNodeWithinElement(nextTarget, contentRef.value) || isNodeWithinElement(nextTarget, targetElement.value)) return;
196
192
  const listener = attrs.onFocusout;
197
193
  const listeners = Array.isArray(listener) ? listener : [listener];
198
194
  for (const current of listeners) if (typeof current === "function") current(event);
199
195
  }
200
- function onDocumentClick(event) {
201
- if (!layer.isTopLayer()) return;
202
- if (props.closeOnOutsideClick === false || isEventInsidePopover(event)) return;
196
+ function onDocumentClick() {
197
+ if (props.closeOnOutsideClick === false) return;
203
198
  closePopoverWithoutReturnFocus();
204
199
  }
205
- function onDocumentPointerDown(event) {
206
- if (!layer.isTopLayer()) return;
207
- if (props.closeOnOutsideClick === false || isEventInsidePopover(event)) return;
200
+ function onDocumentPointerDown() {
201
+ if (props.closeOnOutsideClick === false) return;
208
202
  closePopoverWithoutReturnFocus();
209
203
  }
210
- function onDocumentKeydown(event) {
211
- if (!layer.isTopLayer()) return;
212
- if (props.closeOnEscape === false || event.key !== "Escape") return;
204
+ function onDocumentKeydown() {
205
+ if (props.closeOnEscape === false) return;
213
206
  closePopover();
214
207
  }
208
+ const disconnectLayerInteraction = layer.connectInteraction({
209
+ inside: () => [rootRef.value, targetElement.value],
210
+ clickOutside: onDocumentClick,
211
+ pointerDownOutside: onDocumentPointerDown,
212
+ escapeKeyDown: onDocumentKeydown
213
+ });
215
214
  watch(isDisabled, (disabled) => {
216
215
  if (disabled) closePopover();
217
216
  });
@@ -227,44 +226,15 @@ function usePopover(props, emitOpenChange) {
227
226
  flush: "post",
228
227
  immediate: true
229
228
  });
230
- watch([isExplicitTarget, targetElement], ([explicit, target], _previous, onCleanup) => {
231
- if (!explicit || !target) return;
232
- target.addEventListener("click", onTriggerClick);
233
- onCleanup(() => target.removeEventListener("click", onTriggerClick));
234
- }, { flush: "sync" });
235
- watch([
236
- isExplicitTarget,
237
- targetElement,
229
+ usePopoverBindings({
230
+ targetLifecycle,
238
231
  popoverId,
239
232
  popoverRole,
240
233
  isVisible,
241
- isDisabled
242
- ], ([explicit, target, id, role, visible, disabled], _previous, onCleanup) => {
243
- if (!explicit || !target || disabled) return;
244
- const snapshot = snapshotAttributes(target);
245
- applyTargetAttributes(target, snapshot, {
246
- id,
247
- expanded: visible,
248
- role
249
- });
250
- onCleanup(() => restoreAttributes(target, snapshot));
251
- }, { flush: "sync" });
252
- watch(isVisible, (visible, _previous, onCleanup) => {
253
- if (!visible || typeof document === "undefined") return;
254
- document.addEventListener("click", onDocumentClick, true);
255
- document.addEventListener("mousedown", onDocumentPointerDown, true);
256
- document.addEventListener("touchstart", onDocumentPointerDown, true);
257
- document.addEventListener("keydown", onDocumentKeydown);
258
- onCleanup(() => {
259
- document.removeEventListener("click", onDocumentClick, true);
260
- document.removeEventListener("mousedown", onDocumentPointerDown, true);
261
- document.removeEventListener("touchstart", onDocumentPointerDown, true);
262
- document.removeEventListener("keydown", onDocumentKeydown);
263
- });
264
- }, {
265
- flush: "sync",
266
- immediate: true
234
+ isDisabled,
235
+ onTriggerClick
267
236
  });
237
+ onBeforeUnmount(disconnectLayerInteraction);
268
238
  return {
269
239
  rootRef,
270
240
  contentRef,
@@ -298,10 +268,9 @@ function usePopover(props, emitOpenChange) {
298
268
  }
299
269
  //#endregion
300
270
  //#region src/components/popover/popover.vue?vue&type=script&setup=true&vapor=true&lang.ts
301
- var t0 = template("<span data-v-8af57bff class=rp-popover__arrow aria-hidden=true>");
302
- var t1 = template("<section data-v-8af57bff>");
303
- var t2 = template("<span data-v-8af57bff>", 1);
304
- delegateEvents("focusout");
271
+ var t0 = template("<span data-v-519e9856 class=rp-popover__arrow aria-hidden=true>");
272
+ var t1 = template("<section data-v-519e9856>");
273
+ var t2 = template("<span data-v-519e9856>", 1);
305
274
  //#endregion
306
275
  //#region src/components/popover/popover.vue
307
276
  var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -380,12 +349,17 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
380
349
  const { rootRef, contentRef, arrowRef, popoverId, isDisabled, isTargetMode, popoverRole, ariaLabel, ariaLabelledby, ariaDescribedby, shouldRenderContent, shouldShowContent, rootClass, contentStyle, slotProps, contentSlotProps, actualPlacement, placementSide, arrowStyle, teleportTo, onCompositeFocusout } = usePopover(props, (open) => {
381
350
  emit("update:open", open);
382
351
  });
352
+ const templateRefs = {
353
+ root: rootRef,
354
+ content: contentRef,
355
+ arrow: arrowRef
356
+ };
383
357
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
384
358
  const publicRootAttrs = computed(() => getRootAttrs({
385
359
  class: rootClass.value,
386
360
  onFocusout: onCompositeFocusout,
387
361
  "data-state": slotProps.value.isOpen ? "open" : "closed",
388
- "data-disabled": presence(isDisabled.value)
362
+ "data-disabled": toPresenceAttribute(isDisabled.value)
389
363
  }, {}, ["onFocusout"]));
390
364
  const styledTriggerProps = computed(() => {
391
365
  const partAttrs = getPartAttrs("trigger");
@@ -394,7 +368,7 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
394
368
  ...props.classNames?.trigger !== void 0 ? { class: partAttrs.class } : {},
395
369
  ...props.styles?.trigger !== void 0 ? { style: partAttrs.style } : {},
396
370
  "data-state": slotProps.value.isOpen ? "open" : "closed",
397
- "data-disabled": presence(isDisabled.value)
371
+ "data-disabled": toPresenceAttribute(isDisabled.value)
398
372
  };
399
373
  });
400
374
  const contentAttrs = computed(() => ({
@@ -458,23 +432,23 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
458
432
  setInsertionState(n13, null, 1);
459
433
  createIf(() => __props.arrow, () => {
460
434
  const n12 = t0();
461
- _setTemplateRef(n12, arrowRef, null, "arrowRef");
462
435
  renderEffect(() => {
463
436
  setAttr(n12, "data-side", unref(placementSide));
464
437
  setStyle(n12, unref(arrowStyle));
438
+ _setTemplateRef(n12, templateRefs.arrow);
465
439
  });
466
440
  return n12;
467
441
  });
468
442
  applyVShow(n13, () => unref(shouldShowContent));
469
- n13.$evtfocusout = createInvoker((e) => unref(onCompositeFocusout)(e));
470
- _setTemplateRef(n13, contentRef, null, "contentRef");
443
+ on(n13, "focusout", (e) => unref(onCompositeFocusout)(e));
444
+ setTemplateRefBinding(n13, () => templateRefs.content, _setTemplateRef);
471
445
  return n13;
472
446
  }, null, 129);
473
447
  }, { _: 8 }));
474
448
  });
475
- setStaticTemplateRef(n16, rootRef, null, "rootRef");
449
+ setTemplateRefBinding(n16, () => templateRefs.root);
476
450
  return n16;
477
451
  }
478
- }), [["__scopeId", "data-v-8af57bff"]]);
452
+ }), [["__scopeId", "data-v-519e9856"]]);
479
453
  //#endregion
480
454
  export { popover_default as t };
package/dist/progress.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import './progress.css';
2
- import { n as useStylesApi } from "./styles-api.js";
2
+ import { t as useStylesApi } from "./styles-api.js";
3
3
  import { t as bem } from "./bem.js";
4
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
- import { r as getComponentColorValue, t as componentColors } from "./componentColors.js";
5
+ import { n as getValuePercent, t as clamp } from "./number.js";
6
+ import { i as getComponentColorValue, t as componentColors } from "./componentColors.js";
6
7
  import { t as useControlState } from "./useControlState.js";
7
8
  import { child, computed, createIf, createSlot, defineVaporComponent, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, unref, useId, useSlots } from "vue";
8
- //#region src/components/progress/useProgress.ts
9
+ //#region src/components/progress/progressModel.ts
9
10
  function normalizeProgressBounds(min, max) {
10
11
  const safeMin = Number.isFinite(min) ? min : 0;
11
12
  const safeMax = Number.isFinite(max) ? max : 100;
@@ -18,15 +19,9 @@ function normalizeProgressBounds(min, max) {
18
19
  };
19
20
  }
20
21
  function normalizeProgressValue(value, min, max) {
21
- const safeValue = Number.isFinite(value) ? Number(value) : min;
22
- return Math.min(max, Math.max(min, safeValue));
23
- }
24
- function getProgressValuePercent(value, min, max) {
25
- if (max <= min) return 0;
26
- const percent = (value - min) / (max - min) * 100;
27
- return Math.min(100, Math.max(0, percent));
22
+ return clamp(Number.isFinite(value) ? Number(value) : min, min, max);
28
23
  }
29
- function getFormattedProgressValue(value, percent, formatter) {
24
+ function formatProgressValue(value, percent, formatter) {
30
25
  return formatter ? formatter(value, percent) : `${Math.round(percent)}%`;
31
26
  }
32
27
  function getProgressAriaValueText(value, percent, ariaValueText, formatter) {
@@ -34,13 +29,15 @@ function getProgressAriaValueText(value, percent, ariaValueText, formatter) {
34
29
  if (ariaValueText != null && ariaValueText !== "") return String(ariaValueText);
35
30
  if (formatter) return String(formatter(value, percent));
36
31
  }
32
+ //#endregion
33
+ //#region src/components/progress/useProgress.ts
37
34
  function useProgress(props) {
38
35
  const control = useControlState(props);
39
36
  const bounds = computed(() => normalizeProgressBounds(props.min, props.max));
40
37
  const isIndeterminate = computed(() => props.indeterminate || props.value == null);
41
38
  const normalizedValue = computed(() => normalizeProgressValue(props.value, bounds.value.min, bounds.value.max));
42
- const valuePercent = computed(() => getProgressValuePercent(normalizedValue.value, bounds.value.min, bounds.value.max));
43
- const formattedValue = computed(() => getFormattedProgressValue(normalizedValue.value, valuePercent.value, props.formatValue));
39
+ const valuePercent = computed(() => getValuePercent(normalizedValue.value, bounds.value.min, bounds.value.max));
40
+ const formattedValue = computed(() => formatProgressValue(normalizedValue.value, valuePercent.value, props.formatValue));
44
41
  const ariaValueText = computed(() => isIndeterminate.value ? void 0 : getProgressAriaValueText(normalizedValue.value, valuePercent.value, props.ariaValueText, props.formatValue));
45
42
  return {
46
43
  control,
package/dist/query.js ADDED
@@ -0,0 +1,40 @@
1
+ //#region src/utils/dom/query.ts
2
+ function isElement(value) {
3
+ if (value == null || typeof value !== "object") return false;
4
+ if (typeof Element !== "undefined" && value instanceof Element) return true;
5
+ const candidate = value;
6
+ const ElementConstructor = ("ownerDocument" in value ? candidate.ownerDocument : null)?.defaultView?.Element;
7
+ if (ElementConstructor && value instanceof ElementConstructor) return true;
8
+ return candidate.nodeType === 1 && typeof candidate.getAttribute === "function";
9
+ }
10
+ function matchesSelectorSafe(element, selector) {
11
+ try {
12
+ return element.matches(selector);
13
+ } catch {
14
+ return false;
15
+ }
16
+ }
17
+ function getQueryRoot(root) {
18
+ if (root !== void 0) return root;
19
+ return typeof document !== "undefined" ? document : null;
20
+ }
21
+ function querySelectorSafe(selector, root) {
22
+ const queryRoot = getQueryRoot(root);
23
+ if (!queryRoot) return null;
24
+ try {
25
+ return queryRoot.querySelector(selector);
26
+ } catch {
27
+ return null;
28
+ }
29
+ }
30
+ function querySelectorAllSafe(selector, root) {
31
+ const queryRoot = getQueryRoot(root);
32
+ if (!queryRoot) return [];
33
+ try {
34
+ return Array.from(queryRoot.querySelectorAll(selector));
35
+ } catch {
36
+ return [];
37
+ }
38
+ }
39
+ //#endregion
40
+ export { querySelectorSafe as i, matchesSelectorSafe as n, querySelectorAllSafe as r, isElement as t };
package/dist/radio.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-radio[data-v-0cdcdcfa] {
2
+ .rp-radio[data-v-d1001176] {
3
3
  --_rp-radio-color: var(--rp-color-control-selected-bg);
4
4
  --_rp-radio-on-color: var(--rp-color-control-selected-fg);
5
5
  --_rp-radio-default-size: 24px;
@@ -16,15 +16,15 @@
16
16
  font-family: var(--rp-font-family);
17
17
  user-select: none;
18
18
  }
19
- .rp-radio--disabled[data-v-0cdcdcfa] {
19
+ .rp-radio--disabled[data-v-d1001176] {
20
20
  opacity: var(--rp-opacity-disabled);
21
21
  cursor: not-allowed;
22
22
  }
23
- .rp-radio[data-v-0cdcdcfa] {
23
+ .rp-radio[data-v-d1001176] {
24
24
  gap: var(--rp-spacing-2);
25
25
  font-size: var(--_rp-radio-font-size);
26
26
  }
27
- .rp-radio__native[data-v-0cdcdcfa] {
27
+ .rp-radio__native[data-v-d1001176] {
28
28
  position: absolute;
29
29
  width: 1px;
30
30
  height: 1px;
@@ -36,11 +36,11 @@
36
36
  border-width: 0;
37
37
  pointer-events: none;
38
38
  }
39
- .rp-radio__native:focus-visible + .rp-radio__dot[data-v-0cdcdcfa] {
39
+ .rp-radio__native:focus-visible + .rp-radio__dot[data-v-d1001176] {
40
40
  border-color: var(--rp-color-control-border-focus);
41
41
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
42
42
  }
43
- .rp-radio__dot[data-v-0cdcdcfa] {
43
+ .rp-radio__dot[data-v-d1001176] {
44
44
  display: inline-flex;
45
45
  align-items: center;
46
46
  justify-content: center;
@@ -52,7 +52,7 @@
52
52
  background-color: var(--rp-color-control-bg);
53
53
  transition: background-color var(--rp-transition-fast), border-color var(--rp-transition-fast);
54
54
  }
55
- .rp-radio__dot[data-v-0cdcdcfa]::after {
55
+ .rp-radio__dot[data-v-d1001176]::after {
56
56
  content: "";
57
57
  width: var(--_rp-radio-dot);
58
58
  height: var(--_rp-radio-dot);
@@ -61,55 +61,55 @@
61
61
  transform: scale(0);
62
62
  transition: transform var(--rp-transition-fast);
63
63
  }
64
- .rp-radio--checked .rp-radio__dot[data-v-0cdcdcfa] {
64
+ .rp-radio--checked .rp-radio__dot[data-v-d1001176] {
65
65
  background-color: var(--_rp-radio-checked-bg);
66
66
  border-color: var(--_rp-radio-checked-border);
67
67
  }
68
- .rp-radio--checked .rp-radio__dot[data-v-0cdcdcfa]::after {
68
+ .rp-radio--checked .rp-radio__dot[data-v-d1001176]::after {
69
69
  transform: scale(1);
70
70
  }
71
- .rp-radio__label[data-v-0cdcdcfa] {
71
+ .rp-radio__label[data-v-d1001176] {
72
72
  line-height: var(--rp-line-height-md);
73
73
  color: var(--rp-color-text);
74
74
  }
75
- .rp-radio--outline[data-v-0cdcdcfa] {
75
+ .rp-radio--outline[data-v-d1001176] {
76
76
  --_rp-radio-checked-bg: var(--rp-color-control-bg);
77
77
  --_rp-radio-checked-border: var(--_rp-radio-color);
78
78
  --_rp-radio-checked-dot: var(--_rp-radio-color);
79
79
  }
80
- .rp-radio--size-xs[data-v-0cdcdcfa] {
80
+ .rp-radio--size-xs[data-v-d1001176] {
81
81
  --_rp-radio-default-size: 16px;
82
82
  --_rp-radio-default-dot: 6px;
83
83
  --_rp-radio-font-size: var(--rp-font-size-xs);
84
84
  }
85
- .rp-radio--size-sm[data-v-0cdcdcfa] {
85
+ .rp-radio--size-sm[data-v-d1001176] {
86
86
  --_rp-radio-default-size: 20px;
87
87
  --_rp-radio-default-dot: 8px;
88
88
  --_rp-radio-font-size: var(--rp-font-size-sm);
89
89
  }
90
- .rp-radio--size-md[data-v-0cdcdcfa] {
90
+ .rp-radio--size-md[data-v-d1001176] {
91
91
  --_rp-radio-default-size: 24px;
92
92
  --_rp-radio-default-dot: 10px;
93
93
  --_rp-radio-font-size: var(--rp-font-size-md);
94
94
  }
95
- .rp-radio--size-lg[data-v-0cdcdcfa] {
95
+ .rp-radio--size-lg[data-v-d1001176] {
96
96
  --_rp-radio-default-size: 30px;
97
97
  --_rp-radio-default-dot: 14px;
98
98
  --_rp-radio-font-size: var(--rp-font-size-lg);
99
99
  }
100
- .rp-radio--size-xl[data-v-0cdcdcfa] {
100
+ .rp-radio--size-xl[data-v-d1001176] {
101
101
  --_rp-radio-default-size: 36px;
102
102
  --_rp-radio-default-dot: 16px;
103
103
  --_rp-radio-font-size: var(--rp-font-size-xl);
104
104
  }
105
105
  }@layer ropav.components {
106
- .rp-radio-group[data-v-fc40a22d] {
106
+ .rp-radio-group[data-v-9c16fa9f] {
107
107
  display: flex;
108
108
  flex-direction: column;
109
109
  gap: var(--rp-spacing-3);
110
110
  font-family: var(--rp-font-family);
111
111
  }
112
- .rp-radio-group[data-orientation=horizontal][data-v-fc40a22d] {
112
+ .rp-radio-group[data-orientation=horizontal][data-v-9c16fa9f] {
113
113
  flex-flow: row wrap;
114
114
  }
115
115
  }
package/dist/radio.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import './radio.css';
2
2
  import { t as useControllableValue } from "./useControllableValue.js";
3
- import { n as useStylesApi, t as presence } from "./styles-api.js";
3
+ import { t as useStylesApi } from "./styles-api.js";
4
+ import { n as toPresenceAttribute } from "./attributes.js";
4
5
  import { t as bem } from "./bem.js";
5
6
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
- import { i as getComponentContrastColor, r as getComponentColorValue } from "./componentColors.js";
7
+ import { n as getComponentCheckedColorStyle } from "./componentColors.js";
7
8
  import { i as useFormControl } from "./useFormControl.js";
9
+ import { o as splitCompatibilityAttributes, t as composeEventHandlers } from "./attributes2.js";
8
10
  import { t as useControlState } from "./useControlState.js";
9
11
  import { child, computed, createIf, createSlot, defineVaporComponent, inject, next, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, setStaticTemplateRef, shallowRef, template, unref, useId } from "vue";
10
12
  //#region src/components/radio/types.ts
@@ -18,18 +20,6 @@ var radioGroupParts = ["root"];
18
20
  var radioGroupKey = Symbol("radioGroup");
19
21
  //#endregion
20
22
  //#region src/components/radio/useRadio.ts
21
- function getRadioColorStyle(color, autoContrast, contrastColor) {
22
- const colorValue = getComponentColorValue(color);
23
- if (color && !colorValue) return void 0;
24
- if (!colorValue && autoContrast === false && contrastColor === void 0) return void 0;
25
- const style = {};
26
- if (colorValue) style["--_rp-radio-color"] = colorValue;
27
- if (autoContrast !== false || contrastColor !== void 0) style["--_rp-radio-on-color"] = getComponentContrastColor(color ?? "primary", {
28
- autoContrast,
29
- contrastColor
30
- });
31
- return style;
32
- }
33
23
  function useRadio(props, emitChange) {
34
24
  const inputRef = ref(null);
35
25
  const control = useControlState(props);
@@ -52,7 +42,13 @@ function useRadio(props, emitChange) {
52
42
  [variant.value ?? ""]: Boolean(variant.value),
53
43
  [`size-${size.value}`]: Boolean(size.value)
54
44
  }));
55
- const rootStyle = computed(() => getRadioColorStyle(color.value, autoContrast.value, contrastColor.value));
45
+ const rootStyle = computed(() => getComponentCheckedColorStyle({
46
+ color: color.value,
47
+ autoContrast: autoContrast.value,
48
+ contrastColor: contrastColor.value,
49
+ colorProperty: "--_rp-radio-color",
50
+ checkedColorProperty: "--_rp-radio-on-color"
51
+ }));
56
52
  function onSelect(event) {
57
53
  if (isDisabled.value) return;
58
54
  group?.select(props.value);
@@ -190,8 +186,8 @@ function useRadioGroup(props, emitUpdate) {
190
186
  }
191
187
  //#endregion
192
188
  //#region src/components/radio/radio.vue?vue&type=script&setup=true&vapor=true&lang.ts
193
- var t0$1 = template("<span data-v-0cdcdcfa>");
194
- var t1 = template("<label data-v-0cdcdcfa><input data-v-0cdcdcfa><span data-v-0cdcdcfa></span>", 1);
189
+ var t0$1 = template("<span data-v-d1001176>");
190
+ var t1 = template("<label data-v-d1001176><input data-v-d1001176><span data-v-d1001176></span>", 1);
195
191
  //#endregion
196
192
  //#region src/components/radio/radio.vue
197
193
  var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -244,26 +240,24 @@ var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
244
240
  const rootAttrs = computed(() => getRootAttrs({
245
241
  class: rootClass.value,
246
242
  style: rootStyle.value,
247
- "data-disabled": presence(isDisabled.value),
248
- "data-invalid": presence(isInvalid.value),
243
+ "data-disabled": toPresenceAttribute(isDisabled.value),
244
+ "data-invalid": toPresenceAttribute(isInvalid.value),
249
245
  "data-state": isChecked.value ? "checked" : "unchecked"
250
246
  }));
251
247
  const nativeInputAttrs = computed(() => {
252
- const { class: groupClass, style: groupStyle, onChange: groupOnChange, ...groupForwardedAttrs } = groupInputAttrs.value ?? {};
253
- const { class: itemClass, style: itemStyle, onChange: itemOnChange, ...itemForwardedAttrs } = props.inputAttrs ?? {};
248
+ const groupAttrs = groupInputAttrs.value ?? {};
249
+ const itemAttrs = props.inputAttrs ?? {};
250
+ const { compatibilityClass: groupClass, compatibilityStyle: groupStyle, forwardedAttributes: groupForwardedAttributes } = splitCompatibilityAttributes(groupAttrs);
251
+ const { compatibilityClass: itemClass, compatibilityStyle: itemStyle, forwardedAttributes: itemForwardedAttributes } = splitCompatibilityAttributes(itemAttrs);
254
252
  return {
255
- ...groupForwardedAttrs,
256
- ...itemForwardedAttrs,
253
+ ...groupForwardedAttributes,
254
+ ...itemForwardedAttributes,
257
255
  ...getPartAttrs("input", {
258
256
  class: "rp-radio__native",
259
257
  compatibilityClass: [groupClass, itemClass],
260
258
  compatibilityStyle: [groupStyle, itemStyle]
261
259
  }),
262
- onChange(event) {
263
- onSelect(event);
264
- groupOnChange?.(event);
265
- itemOnChange?.(event);
266
- }
260
+ onChange: composeEventHandlers(onSelect, groupAttrs.onChange, itemAttrs.onChange)
267
261
  };
268
262
  });
269
263
  __expose({
@@ -280,7 +274,7 @@ var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
280
274
  const _isChecked = unref(isChecked);
281
275
  const _isDisabled = unref(isDisabled);
282
276
  const _isInvalid = unref(isInvalid);
283
- const _presence = unref(presence);
277
+ const _toPresenceAttribute = unref(toPresenceAttribute);
284
278
  setDynamicProps(n6, [rootAttrs.value]);
285
279
  setDynamicProps(n0, [_nativeInputAttrs, {
286
280
  id: _control.id,
@@ -296,8 +290,8 @@ var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
296
290
  "aria-describedby": _control.ariaDescribedby,
297
291
  "aria-invalid": _isInvalid || void 0,
298
292
  "aria-required": unref(isRequired) || void 0,
299
- "data-disabled": _presence(_isDisabled),
300
- "data-invalid": _presence(_isInvalid),
293
+ "data-disabled": _toPresenceAttribute(_isDisabled),
294
+ "data-invalid": _toPresenceAttribute(_isInvalid),
301
295
  "data-state": _isChecked ? "checked" : "unchecked"
302
296
  }]);
303
297
  setDynamicProps(n1, [unref(getPartAttrs)("indicator", { class: "rp-radio__dot" })]);
@@ -312,10 +306,10 @@ var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
312
306
  });
313
307
  return n6;
314
308
  }
315
- }), [["__scopeId", "data-v-0cdcdcfa"]]);
309
+ }), [["__scopeId", "data-v-d1001176"]]);
316
310
  //#endregion
317
311
  //#region src/components/radio/radio-group.vue?vue&type=script&setup=true&vapor=true&lang.ts
318
- var t0 = template("<div data-v-fc40a22d>", 1);
312
+ var t0 = template("<div data-v-9c16fa9f>", 1);
319
313
  //#endregion
320
314
  //#region src/components/radio/radio-group.vue
321
315
  var radio_group_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -370,8 +364,8 @@ var radio_group_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
370
364
  class: rootClass.value,
371
365
  role: "radiogroup",
372
366
  "data-orientation": props.orientation,
373
- "data-disabled": presence(control.disabled),
374
- "data-invalid": presence(control.invalid),
367
+ "data-disabled": toPresenceAttribute(control.disabled),
368
+ "data-invalid": toPresenceAttribute(control.invalid),
375
369
  "aria-label": props.ariaLabel || void 0,
376
370
  "aria-labelledby": control.ariaLabelledby,
377
371
  "aria-describedby": control.ariaDescribedby,
@@ -385,6 +379,6 @@ var radio_group_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
385
379
  createSlot("default", null, null, 1);
386
380
  return n1;
387
381
  }
388
- }), [["__scopeId", "data-v-fc40a22d"]]);
382
+ }), [["__scopeId", "data-v-9c16fa9f"]]);
389
383
  //#endregion
390
384
  export { radioParts as i, radio_default as n, radioGroupParts as r, radio_group_default as t };