ropav 0.1.6 → 0.1.7

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 (208) hide show
  1. package/README.md +6 -0
  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/aria.js +14 -0
  7. package/dist/aspect-ratio.js +1 -1
  8. package/dist/attributes.js +9 -0
  9. package/dist/attributes2.js +29 -0
  10. package/dist/avatar.css +19 -19
  11. package/dist/avatar.js +9 -17
  12. package/dist/badge.css +16 -16
  13. package/dist/badge.js +5 -5
  14. package/dist/button-group.js +1 -1
  15. package/dist/button-link.js +4 -3
  16. package/dist/button.js +4 -3
  17. package/dist/button.scss_vue_type_style_index_0_src_true_lang.js +1 -1
  18. package/dist/card.js +1 -1
  19. package/dist/checkbox.css +32 -32
  20. package/dist/checkbox.js +22 -28
  21. package/dist/collapse.css +6 -6
  22. package/dist/collapse.js +7 -6
  23. package/dist/collectionNavigation.js +2 -99
  24. package/dist/color-input.css +19 -19
  25. package/dist/color-input.js +14 -13
  26. package/dist/color-picker.css +40 -40
  27. package/dist/color-picker.js +221 -200
  28. package/dist/color-picker2.js +1 -9
  29. package/dist/color-swatch.css +4 -4
  30. package/dist/color-swatch.js +6 -8
  31. package/dist/color.js +5 -10
  32. package/dist/componentColors.js +125 -84
  33. package/dist/componentRef.js +26 -0
  34. package/dist/components/accordion/accordionContext.d.ts +3 -0
  35. package/dist/components/accordion/accordionModel.d.ts +14 -0
  36. package/dist/components/accordion/index.d.ts +2 -1
  37. package/dist/components/accordion/index.js +1 -1
  38. package/dist/components/accordion/types.d.ts +1 -2
  39. package/dist/components/accordion/useAccordion.d.ts +2 -2
  40. package/dist/components/accordion/useAccordionItem.d.ts +2 -0
  41. package/dist/components/checkbox/useCheckbox.d.ts +1 -2
  42. package/dist/components/color-picker/index.js +2 -2
  43. package/dist/components/color-picker/types.d.ts +2 -2
  44. package/dist/components/color-picker/useColorPickerSaturation.d.ts +22 -0
  45. package/dist/components/color-picker/useColorPickerSlider.d.ts +20 -0
  46. package/dist/components/color-picker/useColorPickerValue.d.ts +1 -1
  47. package/dist/components/dialog/{dialog-core.d.ts → dialogContext.d.ts} +1 -5
  48. package/dist/components/dialog/useDialogContentInteractions.d.ts +18 -0
  49. package/dist/components/dialog/useDialogRootState.d.ts +19 -0
  50. package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +1 -1
  51. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +1 -1
  52. package/dist/components/dropdown-menu/dropdown-menu-model.d.ts +8 -0
  53. package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +2 -2
  54. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +1 -1
  55. package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +1 -1
  56. package/dist/components/dropdown-menu/{dropdown-menu-primitive-core.d.ts → dropdownMenuContext.d.ts} +16 -18
  57. package/dist/components/dropdown-menu/dropdownMenuDataModel.d.ts +20 -0
  58. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -0
  59. package/dist/components/dropdown-menu/dropdownMenuInteractionNavigation.d.ts +24 -0
  60. package/dist/components/dropdown-menu/dropdownMenuInteractionRegistry.d.ts +42 -0
  61. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +85 -0
  62. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -11
  63. package/dist/components/dropdown-menu/useDropdownMenuContextTrigger.d.ts +9 -0
  64. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +34 -0
  65. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +22 -0
  66. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +6 -5
  67. package/dist/components/dropdown-menu/useDropdownMenuInteractionDismissal.d.ts +17 -0
  68. package/dist/components/dropdown-menu/useDropdownMenuInteractionKeyboard.d.ts +19 -0
  69. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +0 -1
  70. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +29 -0
  71. package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +2 -2
  72. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +1 -1
  73. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +19 -0
  74. package/dist/components/floating/hoverDisclosureInteractionModel.d.ts +42 -0
  75. package/dist/components/floating/index.js +1 -1
  76. package/dist/components/floating/useFloatingPosition.d.ts +0 -1
  77. package/dist/components/floating/useHoverDisclosureInteractions.d.ts +32 -0
  78. package/dist/components/floating/useHoverDisclosureOpenState.d.ts +25 -0
  79. package/dist/components/floating/useHoverDisclosureTargetBinding.d.ts +27 -0
  80. package/dist/components/number-input/numberInputModel.d.ts +15 -0
  81. package/dist/components/number-input/useNumberInput.d.ts +3 -17
  82. package/dist/components/pagination/index.d.ts +1 -1
  83. package/dist/components/pagination/index.js +1 -1
  84. package/dist/components/pagination/paginationModel.d.ts +4 -0
  85. package/dist/components/pagination/types.d.ts +15 -0
  86. package/dist/components/pagination/usePagination.d.ts +3 -19
  87. package/dist/components/popover/usePopoverBindings.d.ts +16 -0
  88. package/dist/components/progress/progressModel.d.ts +8 -0
  89. package/dist/components/progress/useProgress.d.ts +0 -6
  90. package/dist/components/radio/useRadio.d.ts +1 -2
  91. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  92. package/dist/components/scroll-area/scrollAreaModel.d.ts +64 -0
  93. package/dist/components/scroll-area/useScrollArea.d.ts +70 -53
  94. package/dist/components/scroll-area/{useScrollAreaPresentation.d.ts → useScrollAreaAttributes.d.ts} +37 -17
  95. package/dist/components/scroll-area/useScrollAreaDerivedState.d.ts +8 -0
  96. package/dist/components/scroll-area/useScrollAreaMeasurement.d.ts +35 -0
  97. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +10 -8
  98. package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +15 -20
  99. package/dist/components/slider/rangeSliderModel.d.ts +41 -0
  100. package/dist/components/slider/{sliderCore.d.ts → sliderModel.d.ts} +0 -1
  101. package/dist/components/slider/useRangeSlider.d.ts +8 -16
  102. package/dist/components/slider/useRangeSliderValueState.d.ts +40 -0
  103. package/dist/components/slider/useSlider.d.ts +7 -13
  104. package/dist/components/slider/useSliderPointerPreview.d.ts +22 -0
  105. package/dist/components/slider/useSliderTooltipState.d.ts +40 -0
  106. package/dist/components/slider/useSliderValueState.d.ts +33 -0
  107. package/dist/components/teleport-provider/index.js +1 -1
  108. package/dist/components/teleport-provider/useTeleportTarget.d.ts +1 -2
  109. package/dist/components/toast/useToastLifecycle.d.ts +19 -0
  110. package/dist/components/tooltip/useTooltip.d.ts +1 -2
  111. package/dist/css.js +12 -0
  112. package/dist/dialog.js +226 -218
  113. package/dist/dropdown-menu.js +1458 -1097
  114. package/dist/events.js +59 -0
  115. package/dist/field.css +8 -8
  116. package/dist/field.js +13 -25
  117. package/dist/floating.js +548 -319
  118. package/dist/floatingOffset.js +11 -0
  119. package/dist/focus-trap.js +7 -5
  120. package/dist/focusNavigation.js +37 -0
  121. package/dist/icon-button.css +8 -8
  122. package/dist/icon-button.js +7 -6
  123. package/dist/index.js +6 -6
  124. package/dist/input.css +24 -24
  125. package/dist/input.js +19 -31
  126. package/dist/interactive.js +18 -0
  127. package/dist/modal.js +1 -1
  128. package/dist/number-input.css +18 -18
  129. package/dist/number-input.js +14 -12
  130. package/dist/number.js +22 -0
  131. package/dist/overlay.js +3 -2
  132. package/dist/pagination.css +28 -28
  133. package/dist/pagination.js +65 -63
  134. package/dist/pointer.js +9 -0
  135. package/dist/popover.css +34 -34
  136. package/dist/popover.js +85 -86
  137. package/dist/progress.js +10 -13
  138. package/dist/query.js +40 -0
  139. package/dist/radio.css +18 -18
  140. package/dist/radio.js +30 -36
  141. package/dist/rafScheduler.js +34 -0
  142. package/dist/scroll-area.css +28 -28
  143. package/dist/scroll-area.js +512 -516
  144. package/dist/select.css +45 -45
  145. package/dist/select.js +36 -44
  146. package/dist/slider.css +191 -191
  147. package/dist/slider.js +691 -618
  148. package/dist/styles-api.d.ts +0 -1
  149. package/dist/styles-api.js +1 -4
  150. package/dist/switch.css +17 -17
  151. package/dist/switch.js +14 -15
  152. package/dist/tabs.css +43 -43
  153. package/dist/tabs.js +29 -56
  154. package/dist/text.js +17 -0
  155. package/dist/textarea.css +26 -26
  156. package/dist/textarea.js +21 -32
  157. package/dist/toast.css +26 -26
  158. package/dist/toast.js +141 -118
  159. package/dist/tooltip.css +12 -12
  160. package/dist/tooltip.js +36 -40
  161. package/dist/useCollapse.js +8 -11
  162. package/dist/useControlState.js +3 -6
  163. package/dist/useFloatingPosition.js +140 -10
  164. package/dist/useOverlayZIndex.js +1 -5
  165. package/dist/useTeleportTarget.js +3 -14
  166. package/dist/useTypeahead.js +94 -0
  167. package/dist/utils/aria.d.ts +3 -0
  168. package/dist/utils/attributes.d.ts +2 -0
  169. package/dist/utils/bem.d.ts +3 -0
  170. package/dist/utils/collectionNavigation.d.ts +2 -0
  171. package/dist/utils/color.d.ts +7 -0
  172. package/dist/{components/color-picker/color-picker-utils.d.ts → utils/colorPicker.d.ts} +5 -4
  173. package/dist/utils/componentColors.d.ts +7 -0
  174. package/dist/utils/css.d.ts +3 -0
  175. package/dist/utils/dom/ancestry.d.ts +7 -0
  176. package/dist/utils/dom/attributes.d.ts +16 -0
  177. package/dist/utils/dom/componentRef.d.ts +4 -0
  178. package/dist/utils/dom/events.d.ts +5 -0
  179. package/dist/utils/dom/focusNavigation.d.ts +7 -0
  180. package/dist/utils/dom/interactive.d.ts +2 -0
  181. package/dist/utils/dom/pointer.d.ts +2 -0
  182. package/dist/utils/dom/query.d.ts +4 -0
  183. package/dist/utils/dom/scroll.d.ts +23 -0
  184. package/dist/utils/floatingOffset.d.ts +10 -0
  185. package/dist/utils/geometry.d.ts +14 -0
  186. package/dist/utils/indexPath.d.ts +6 -0
  187. package/dist/utils/number.d.ts +4 -0
  188. package/dist/utils/rafScheduler.d.ts +4 -0
  189. package/dist/utils/text.d.ts +2 -0
  190. package/docs/code-architecture.md +118 -0
  191. package/docs/public-floating-api.md +6 -5
  192. package/package.json +13 -12
  193. package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +0 -3
  194. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -21
  195. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +0 -36
  196. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +0 -29
  197. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +0 -52
  198. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +0 -17
  199. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +0 -18
  200. package/dist/components/scroll-area/scrollAreaCore.d.ts +0 -30
  201. package/dist/components/scroll-area/useScrollAreaControls.d.ts +0 -25
  202. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +0 -38
  203. /package/dist/components/alert/{useAlertColor.d.ts → alertColor.d.ts} +0 -0
  204. /package/dist/components/avatar/{useAvatarColor.d.ts → avatarColor.d.ts} +0 -0
  205. /package/dist/components/badge/{useBadgeColor.d.ts → badgeColor.d.ts} +0 -0
  206. /package/dist/components/button/{useButtonColor.d.ts → buttonColor.d.ts} +0 -0
  207. /package/dist/components/color-swatch/{useColorSwatchColor.d.ts → colorSwatchColor.d.ts} +0 -0
  208. /package/dist/components/toast/{useToastColor.d.ts → toastColor.d.ts} +0 -0
package/dist/tabs.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import './tabs.css';
2
2
  import { t as useControllableValue } from "./useControllableValue.js";
3
- import { n as useStylesApi, t as presence } from "./styles-api.js";
4
- import { t as useRequiredInject } from "./useRequiredInject.js";
3
+ import { t as useStylesApi } from "./styles-api.js";
4
+ import { n as toPresenceAttribute, t as toOptionalAttribute } from "./attributes.js";
5
5
  import { t as bem } from "./bem.js";
6
+ import { t as getFocusNavigationTarget } from "./focusNavigation.js";
7
+ import { t as useRequiredInject } from "./useRequiredInject.js";
6
8
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
7
9
  import { t as scroll_area_default } from "./scroll-area.js";
8
10
  import { computed, createComponent, createIf, createSlot, defineVaporComponent, extend, mergeProps, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, shallowRef, template, unref, useId, watch } from "vue";
@@ -15,19 +17,6 @@ var DEFAULT_ORIENTATION = "horizontal";
15
17
  var DEFAULT_PLACEMENT = "left";
16
18
  var DEFAULT_ACTIVATION_MODE = "automatic";
17
19
  var tabsKey = Symbol("tabs");
18
- var ORIENTATION_NAVIGATION_KEYS = {
19
- horizontal: {
20
- ArrowRight: 1,
21
- ArrowLeft: -1
22
- },
23
- vertical: {
24
- ArrowDown: 1,
25
- ArrowUp: -1
26
- }
27
- };
28
- function optionalAttr(value) {
29
- return value || void 0;
30
- }
31
20
  function toTabsState(active) {
32
21
  return active ? "active" : "inactive";
33
22
  }
@@ -36,9 +25,9 @@ function getDefaultAlign(orientation) {
36
25
  }
37
26
  function getAriaProps(label, labelledby, describedby) {
38
27
  return {
39
- "aria-label": optionalAttr(label),
40
- "aria-labelledby": optionalAttr(labelledby),
41
- "aria-describedby": optionalAttr(describedby)
28
+ "aria-label": toOptionalAttribute(label),
29
+ "aria-labelledby": toOptionalAttribute(labelledby),
30
+ "aria-describedby": toOptionalAttribute(describedby)
42
31
  };
43
32
  }
44
33
  function getOrientationClasses(disabled, orientation) {
@@ -101,24 +90,6 @@ function useTabsRegistration(getRegistration, register, unregister, watchSource)
101
90
  if (registeredId.value) unregister(registeredId.value);
102
91
  });
103
92
  }
104
- function getTabsTrigger(event, list) {
105
- const target = event.target;
106
- const trigger = target instanceof Element ? target.closest(TRIGGER_SELECTOR) : void 0;
107
- return trigger?.closest(TABLIST_SELECTOR) === list ? trigger : void 0;
108
- }
109
- function getTabsTriggers(list) {
110
- return Array.from(list.querySelectorAll(TRIGGER_SELECTOR)).filter((trigger) => trigger.closest(TABLIST_SELECTOR) === list && !trigger.disabled);
111
- }
112
- function getNextTrigger(list, currentTrigger, key, orientation) {
113
- const triggers = getTabsTriggers(list);
114
- const currentIndex = triggers.indexOf(currentTrigger);
115
- if (currentIndex === -1 || triggers.length === 0) return void 0;
116
- if (key === "Home") return triggers[0];
117
- if (key === "End") return triggers[triggers.length - 1];
118
- const direction = ORIENTATION_NAVIGATION_KEYS[orientation][key];
119
- if (!direction) return void 0;
120
- return triggers[(currentIndex + (orientation === "horizontal" && list.ownerDocument.defaultView?.getComputedStyle(list).direction === "rtl" ? -direction : direction) + triggers.length) % triggers.length];
121
- }
122
93
  function useTabsItem(componentName, props, suffix) {
123
94
  const group = useRequiredInject(tabsKey, componentName);
124
95
  const generatedId = useId();
@@ -160,11 +131,11 @@ function useTabs(props, emitUpdate) {
160
131
  const rootProps = computed(() => ({
161
132
  id: props.id,
162
133
  class: rootClass.value,
163
- "data-disabled": optionalAttr(isDisabled.value),
134
+ "data-disabled": toOptionalAttribute(isDisabled.value),
164
135
  "data-size": size.value,
165
136
  "data-variant": variant.value,
166
137
  "data-orientation": orientation.value,
167
- "data-placement": optionalAttr(orientation.value === "vertical" ? placement.value : void 0),
138
+ "data-placement": toOptionalAttribute(orientation.value === "vertical" ? placement.value : void 0),
168
139
  "data-activation-mode": activationMode.value,
169
140
  ...getAriaProps(props.ariaLabel, props.labelledby, props.describedby)
170
141
  }));
@@ -208,9 +179,11 @@ function useTabs(props, emitUpdate) {
208
179
  function onListKeydown(event) {
209
180
  const list = event.currentTarget;
210
181
  if (!list || isDisabled.value) return;
211
- const trigger = getTabsTrigger(event, list);
212
- if (!trigger) return;
213
- const nextTrigger = getNextTrigger(list, trigger, event.key, orientation.value);
182
+ const nextTrigger = getFocusNavigationTarget(event, list, {
183
+ itemSelector: TRIGGER_SELECTOR,
184
+ collectionSelector: TABLIST_SELECTOR,
185
+ orientation: orientation.value
186
+ });
214
187
  if (!nextTrigger) return;
215
188
  event.preventDefault();
216
189
  nextTrigger.focus();
@@ -285,10 +258,10 @@ function useTabsList(props) {
285
258
  id: props.id,
286
259
  class: rootClass.value,
287
260
  role: "tablist",
288
- "data-disabled": optionalAttr(group.disabled),
261
+ "data-disabled": toOptionalAttribute(group.disabled),
289
262
  "data-variant": group.variant,
290
263
  "data-orientation": group.orientation,
291
- "data-placement": optionalAttr(group.orientation === "vertical" ? group.placement : void 0),
264
+ "data-placement": toOptionalAttribute(group.orientation === "vertical" ? group.placement : void 0),
292
265
  "aria-orientation": group.orientation,
293
266
  ...getAriaProps(props.ariaLabel ?? group.ariaLabel, props.ariaLabelledby ?? group.labelledby, props.ariaDescribedby ?? group.describedby),
294
267
  onKeydown: group.onListKeydown
@@ -313,15 +286,15 @@ function useTabsTrigger(props) {
313
286
  class: rootClass.value,
314
287
  role: "tab",
315
288
  type: "button",
316
- disabled: optionalAttr(isDisabled.value),
289
+ disabled: toOptionalAttribute(isDisabled.value),
317
290
  tabIndex: isFocusable.value ? 0 : -1,
318
291
  "data-state": state.value,
319
- "data-disabled": optionalAttr(isDisabled.value),
292
+ "data-disabled": toOptionalAttribute(isDisabled.value),
320
293
  "data-variant": group.variant,
321
- "data-align": optionalAttr(align.value),
294
+ "data-align": toOptionalAttribute(align.value),
322
295
  "aria-selected": isSelected.value,
323
296
  "aria-controls": group.getContentId(props.value),
324
- "aria-disabled": optionalAttr(isDisabled.value),
297
+ "aria-disabled": toOptionalAttribute(isDisabled.value),
325
298
  onClick: select,
326
299
  onFocus,
327
300
  onKeydown
@@ -376,7 +349,7 @@ function useTabsContent(props) {
376
349
  class: rootClass.value,
377
350
  role: "tabpanel",
378
351
  tabIndex: 0,
379
- hidden: optionalAttr(!isSelected.value),
352
+ hidden: toOptionalAttribute(!isSelected.value),
380
353
  "data-state": state.value,
381
354
  ...getAriaProps(props.ariaLabel, props.ariaLabelledby ?? group.getTriggerId(props.value), props.ariaDescribedby)
382
355
  }));
@@ -400,7 +373,7 @@ function useTabsContent(props) {
400
373
  }
401
374
  //#endregion
402
375
  //#region src/components/tabs/tabs.vue?vue&type=script&setup=true&vapor=true&lang.ts
403
- var t0$2 = template("<div data-v-163486d1>", 1);
376
+ var t0$2 = template("<div data-v-6c4b3ab7>", 1);
404
377
  //#endregion
405
378
  //#region src/components/tabs/tabs.vue
406
379
  var tabs_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -441,7 +414,7 @@ var tabs_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
441
414
  const { getRootAttrs } = useStylesApi(props, "root");
442
415
  const rootAttrs = computed(() => getRootAttrs({
443
416
  ...internalRootProps.value,
444
- "data-disabled": presence(props.disabled)
417
+ "data-disabled": toPresenceAttribute(props.disabled)
445
418
  }));
446
419
  const n1 = t0$2();
447
420
  renderEffect(() => setDynamicProps(n1, [rootAttrs.value]));
@@ -449,7 +422,7 @@ var tabs_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
449
422
  createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
450
423
  return n1;
451
424
  }
452
- }), [["__scopeId", "data-v-163486d1"]]);
425
+ }), [["__scopeId", "data-v-6c4b3ab7"]]);
453
426
  //#endregion
454
427
  //#region src/components/tabs/tabs-content.vue?vue&type=script&setup=true&vapor=true&lang.ts
455
428
  var t0$1 = template("<div data-v-741d0283>", 1);
@@ -511,7 +484,7 @@ var tabs_list_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
511
484
  return getRootAttrs({
512
485
  id: internal.id,
513
486
  class: internal.class,
514
- "data-disabled": presence(internal["data-disabled"]),
487
+ "data-disabled": toPresenceAttribute(internal["data-disabled"]),
515
488
  "data-variant": internal["data-variant"],
516
489
  "data-orientation": internal["data-orientation"],
517
490
  "data-placement": internal["data-placement"]
@@ -547,10 +520,10 @@ var tabs_list_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
547
520
  return createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
548
521
  }, { _: 8 }), true);
549
522
  }
550
- }), [["__scopeId", "data-v-9bb1525b"]]);
523
+ }), [["__scopeId", "data-v-5266c337"]]);
551
524
  //#endregion
552
525
  //#region src/components/tabs/tabs-trigger.vue?vue&type=script&setup=true&vapor=true&lang.ts
553
- var t0 = template("<button data-v-6df68725>", 1);
526
+ var t0 = template("<button data-v-20d5c2eb>", 1);
554
527
  //#endregion
555
528
  //#region src/components/tabs/tabs-trigger.vue
556
529
  var tabs_trigger_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -574,7 +547,7 @@ var tabs_trigger_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
574
547
  const { getRootAttrs } = useStylesApi(props, "root");
575
548
  const rootAttrs = computed(() => getRootAttrs({
576
549
  ...internalRootProps.value,
577
- "data-disabled": presence(internalRootProps.value["data-disabled"])
550
+ "data-disabled": toPresenceAttribute(internalRootProps.value["data-disabled"])
578
551
  }));
579
552
  const n1 = t0();
580
553
  renderEffect(() => setDynamicProps(n1, [rootAttrs.value]));
@@ -582,7 +555,7 @@ var tabs_trigger_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
582
555
  createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
583
556
  return n1;
584
557
  }
585
- }), [["__scopeId", "data-v-6df68725"]]);
558
+ }), [["__scopeId", "data-v-20d5c2eb"]]);
586
559
  //#endregion
587
560
  //#region src/components/tabs/types.ts
588
561
  var tabsParts = ["root"];
package/dist/text.js ADDED
@@ -0,0 +1,17 @@
1
+ //#region src/utils/text.ts
2
+ var COMBINING_MARKS = /\p{M}/gu;
3
+ var WHITESPACE = /\s+/g;
4
+ function getNameInitials(name) {
5
+ if (!name) return "";
6
+ const parts = name.trim().split(WHITESPACE).filter(Boolean);
7
+ const firstPart = parts[0];
8
+ if (!firstPart) return "";
9
+ if (parts.length === 1) return Array.from(firstPart).slice(0, 2).join("").toLocaleUpperCase();
10
+ const lastPart = parts.at(-1) ?? firstPart;
11
+ return `${Array.from(firstPart)[0] ?? ""}${Array.from(lastPart)[0] ?? ""}`.toLocaleUpperCase();
12
+ }
13
+ function normalizeTypeaheadText(value, locales) {
14
+ return value.toLocaleLowerCase(locales).normalize("NFKD").replace(COMBINING_MARKS, "").replace(WHITESPACE, " ").trim();
15
+ }
16
+ //#endregion
17
+ export { normalizeTypeaheadText as n, getNameInitials as t };
package/dist/textarea.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-textarea[data-v-b604b69c] {
2
+ .rp-textarea[data-v-da9cf2c9] {
3
3
  --_rp-textarea-padding-y: 7px;
4
4
  --_rp-textarea-padding-x: calc(var(--rp-size-control-md) / 3);
5
5
  --_rp-textarea-font-size: var(--rp-font-size-md);
@@ -17,58 +17,58 @@
17
17
  cursor: text;
18
18
  transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
19
19
  }
20
- .rp-textarea[data-v-b604b69c]:hover:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
20
+ .rp-textarea[data-v-da9cf2c9]:hover:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
21
21
  border-color: var(--rp-color-control-border-hover);
22
22
  }
23
- .rp-textarea[data-v-b604b69c]:focus-within:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
23
+ .rp-textarea[data-v-da9cf2c9]:focus-within:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
24
24
  border-color: var(--rp-color-control-border-focus);
25
25
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
26
26
  }
27
- .rp-textarea[data-v-b604b69c] {
27
+ .rp-textarea[data-v-da9cf2c9] {
28
28
  font-size: var(--_rp-textarea-font-size);
29
29
  border-radius: var(--_rp-textarea-radius);
30
30
  }
31
- .rp-textarea--size-xs[data-v-b604b69c] {
31
+ .rp-textarea--size-xs[data-v-da9cf2c9] {
32
32
  --_rp-textarea-padding-y: 4.5px;
33
33
  --_rp-textarea-padding-x: calc(var(--rp-size-control-xs) / 3);
34
34
  --_rp-textarea-font-size: var(--rp-font-size-xs);
35
35
  }
36
- .rp-textarea--size-sm[data-v-b604b69c] {
36
+ .rp-textarea--size-sm[data-v-da9cf2c9] {
37
37
  --_rp-textarea-padding-y: 5.5px;
38
38
  --_rp-textarea-padding-x: calc(var(--rp-size-control-sm) / 3);
39
39
  --_rp-textarea-font-size: var(--rp-font-size-sm);
40
40
  }
41
- .rp-textarea--size-md[data-v-b604b69c] {
41
+ .rp-textarea--size-md[data-v-da9cf2c9] {
42
42
  --_rp-textarea-padding-y: 7px;
43
43
  --_rp-textarea-padding-x: calc(var(--rp-size-control-md) / 3);
44
44
  --_rp-textarea-font-size: var(--rp-font-size-md);
45
45
  }
46
- .rp-textarea--size-lg[data-v-b604b69c] {
46
+ .rp-textarea--size-lg[data-v-da9cf2c9] {
47
47
  --_rp-textarea-padding-y: 9.5px;
48
48
  --_rp-textarea-padding-x: calc(var(--rp-size-control-lg) / 3);
49
49
  --_rp-textarea-font-size: var(--rp-font-size-lg);
50
50
  }
51
- .rp-textarea--size-xl[data-v-b604b69c] {
51
+ .rp-textarea--size-xl[data-v-da9cf2c9] {
52
52
  --_rp-textarea-padding-y: 13px;
53
53
  --_rp-textarea-padding-x: calc(var(--rp-size-control-xl) / 3);
54
54
  --_rp-textarea-font-size: var(--rp-font-size-xl);
55
55
  }
56
- .rp-textarea--radius-xs[data-v-b604b69c] {
56
+ .rp-textarea--radius-xs[data-v-da9cf2c9] {
57
57
  --_rp-textarea-radius: var(--rp-radius-xs);
58
58
  }
59
- .rp-textarea--radius-sm[data-v-b604b69c] {
59
+ .rp-textarea--radius-sm[data-v-da9cf2c9] {
60
60
  --_rp-textarea-radius: var(--rp-radius-sm);
61
61
  }
62
- .rp-textarea--radius-md[data-v-b604b69c] {
62
+ .rp-textarea--radius-md[data-v-da9cf2c9] {
63
63
  --_rp-textarea-radius: var(--rp-radius-md);
64
64
  }
65
- .rp-textarea--radius-lg[data-v-b604b69c] {
65
+ .rp-textarea--radius-lg[data-v-da9cf2c9] {
66
66
  --_rp-textarea-radius: var(--rp-radius-lg);
67
67
  }
68
- .rp-textarea--radius-xl[data-v-b604b69c] {
68
+ .rp-textarea--radius-xl[data-v-da9cf2c9] {
69
69
  --_rp-textarea-radius: var(--rp-radius-xl);
70
70
  }
71
- html.dark .rp-textarea[data-v-b604b69c], [data-rp-color-scheme=dark] .rp-textarea[data-v-b604b69c] {
71
+ html.dark .rp-textarea[data-v-da9cf2c9], [data-rp-color-scheme=dark] .rp-textarea[data-v-da9cf2c9] {
72
72
  --_rp-textarea-valid-border: var(--rp-color-green-light-color);
73
73
  --_rp-textarea-valid-ring: color-mix(
74
74
  in srgb,
@@ -82,34 +82,34 @@ html.dark .rp-textarea[data-v-b604b69c], [data-rp-color-scheme=dark] .rp-textare
82
82
  transparent
83
83
  );
84
84
  }
85
- .rp-textarea--disabled[data-v-b604b69c] {
85
+ .rp-textarea--disabled[data-v-da9cf2c9] {
86
86
  opacity: var(--rp-opacity-disabled);
87
87
  cursor: not-allowed;
88
88
  }
89
- .rp-textarea--valid[data-v-b604b69c] {
89
+ .rp-textarea--valid[data-v-da9cf2c9] {
90
90
  border-color: var(--_rp-textarea-valid-border);
91
91
  }
92
- .rp-textarea--valid[data-v-b604b69c]:focus-within:not(.rp-textarea--disabled) {
92
+ .rp-textarea--valid[data-v-da9cf2c9]:focus-within:not(.rp-textarea--disabled) {
93
93
  border-color: var(--_rp-textarea-valid-border);
94
94
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-textarea-valid-ring);
95
95
  }
96
- .rp-textarea--invalid[data-v-b604b69c] {
96
+ .rp-textarea--invalid[data-v-da9cf2c9] {
97
97
  border-color: var(--_rp-textarea-invalid-border);
98
98
  }
99
- .rp-textarea--invalid[data-v-b604b69c]:focus-within:not(.rp-textarea--disabled) {
99
+ .rp-textarea--invalid[data-v-da9cf2c9]:focus-within:not(.rp-textarea--disabled) {
100
100
  border-color: var(--_rp-textarea-invalid-border);
101
101
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-textarea-invalid-ring);
102
102
  }
103
- .rp-textarea--readonly[data-v-b604b69c] {
103
+ .rp-textarea--readonly[data-v-da9cf2c9] {
104
104
  background-color: var(--rp-color-control-readonly-bg);
105
105
  }
106
- .rp-textarea--resize-vertical .rp-textarea__native[data-v-b604b69c] {
106
+ .rp-textarea--resize-vertical .rp-textarea__native[data-v-da9cf2c9] {
107
107
  resize: vertical;
108
108
  }
109
- .rp-textarea--resize-both .rp-textarea__native[data-v-b604b69c] {
109
+ .rp-textarea--resize-both .rp-textarea__native[data-v-da9cf2c9] {
110
110
  resize: both;
111
111
  }
112
- .rp-textarea__native[data-v-b604b69c] {
112
+ .rp-textarea__native[data-v-da9cf2c9] {
113
113
  box-sizing: border-box;
114
114
  flex: 1;
115
115
  width: 100%;
@@ -124,10 +124,10 @@ html.dark .rp-textarea[data-v-b604b69c], [data-rp-color-scheme=dark] .rp-textare
124
124
  color: var(--rp-color-control-fg);
125
125
  line-height: var(--rp-line-height-md);
126
126
  }
127
- .rp-textarea__native[data-v-b604b69c]::placeholder {
127
+ .rp-textarea__native[data-v-da9cf2c9]::placeholder {
128
128
  color: var(--rp-color-control-placeholder);
129
129
  }
130
- .rp-textarea__native[data-v-b604b69c]:disabled {
130
+ .rp-textarea__native[data-v-da9cf2c9]:disabled {
131
131
  cursor: not-allowed;
132
132
  }
133
133
  }
package/dist/textarea.js CHANGED
@@ -1,25 +1,18 @@
1
1
  import './textarea.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 { t as clamp } from "./number.js";
6
8
  import { a as useTextFormControl } from "./useFormControl.js";
9
+ import { o as splitCompatibilityAttributes, t as composeEventHandlers } from "./attributes2.js";
7
10
  import { t as useControlState } from "./useControlState.js";
11
+ import { t as isInteractiveElement } from "./interactive.js";
8
12
  import { child, computed, defineVaporComponent, nextTick, onMounted, ref, renderEffect, setDynamicProps, setStaticTemplateRef, template, unref, watch } from "vue";
9
13
  //#region src/components/textarea/useTextarea.ts
10
14
  var MIN_ROWS = 1;
11
- var INTERACTIVE_SELECTOR = [
12
- "button",
13
- "a[href]",
14
- "input",
15
- "select",
16
- `textarea:not(.rp-textarea__native)`,
17
- "[contenteditable=\"true\"]",
18
- "[tabindex]:not([tabindex=\"-1\"])"
19
- ].join(",");
20
- function isInteractiveElement(target) {
21
- return Boolean(target.closest(INTERACTIVE_SELECTOR));
22
- }
15
+ var NATIVE_TEXTAREA_SELECTOR = ".rp-textarea__native";
23
16
  function normalizeRows(value, fallback) {
24
17
  if (value === void 0 || !Number.isFinite(value)) return fallback;
25
18
  return Math.max(MIN_ROWS, Math.floor(value));
@@ -98,8 +91,7 @@ function useTextarea(props, emitUpdate, getValue = () => props.modelValue ?? "")
98
91
  }
99
92
  textarea.style.height = "auto";
100
93
  const { contentHeight, minHeight, maxHeight } = getAutosizeMeasurement(textarea, autosizeRows.value);
101
- const heightLimit = maxHeight ?? Number.POSITIVE_INFINITY;
102
- const nextHeight = Math.min(Math.max(contentHeight, minHeight), heightLimit);
94
+ const nextHeight = clamp(contentHeight, minHeight, maxHeight ?? Number.POSITIVE_INFINITY);
103
95
  textarea.style.height = `${nextHeight}px`;
104
96
  textarea.style.overflowY = maxHeight !== void 0 && contentHeight > maxHeight ? "auto" : "hidden";
105
97
  }
@@ -117,8 +109,7 @@ function useTextarea(props, emitUpdate, getValue = () => props.modelValue ?? "")
117
109
  }
118
110
  function focusTextarea(e) {
119
111
  if (control.disabled) return;
120
- const target = e.target;
121
- if (target instanceof Element && isInteractiveElement(target)) return;
112
+ if (isInteractiveElement(e.target, NATIVE_TEXTAREA_SELECTOR)) return;
122
113
  textareaRef.value?.focus();
123
114
  }
124
115
  function focus(options) {
@@ -138,7 +129,7 @@ function useTextarea(props, emitUpdate, getValue = () => props.modelValue ?? "")
138
129
  }
139
130
  //#endregion
140
131
  //#region src/components/textarea/textarea.vue?vue&type=script&setup=true&vapor=true&lang.ts
141
- var t0 = template("<div data-v-b604b69c><textarea data-v-b604b69c>", 1);
132
+ var t0 = template("<div data-v-da9cf2c9><textarea data-v-da9cf2c9>", 1);
142
133
  //#endregion
143
134
  //#region src/components/textarea/textarea.vue
144
135
  var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -205,23 +196,21 @@ var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
205
196
  const rootAttrs = computed(() => getRootAttrs({
206
197
  class: rootClass.value,
207
198
  onMousedown: focusTextarea,
208
- "data-disabled": presence(control.disabled),
209
- "data-readonly": presence(props.readonly),
210
- "data-invalid": presence(control.invalid)
199
+ "data-disabled": toPresenceAttribute(control.disabled),
200
+ "data-readonly": toPresenceAttribute(props.readonly),
201
+ "data-invalid": toPresenceAttribute(control.invalid)
211
202
  }));
212
203
  const nativeInputAttrs = computed(() => {
213
- const { class: compatibilityClass, style: compatibilityStyle, onInput: compatibilityOnInput, ...attrs } = props.inputAttrs ?? {};
204
+ const inputAttrs = props.inputAttrs ?? {};
205
+ const { compatibilityClass, compatibilityStyle, forwardedAttributes } = splitCompatibilityAttributes(inputAttrs);
214
206
  return {
215
- ...attrs,
207
+ ...forwardedAttributes,
216
208
  ...getPartAttrs("input", {
217
209
  class: "rp-textarea__native",
218
210
  compatibilityClass,
219
211
  compatibilityStyle
220
212
  }),
221
- onInput(event) {
222
- onInput(event);
223
- compatibilityOnInput?.(event);
224
- }
213
+ onInput: composeEventHandlers(onInput, inputAttrs.onInput)
225
214
  };
226
215
  });
227
216
  __expose({
@@ -235,7 +224,7 @@ var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
235
224
  const _nativeInputAttrs = nativeInputAttrs.value;
236
225
  const _control = unref(control);
237
226
  const _readonly = __props.readonly;
238
- const _presence = unref(presence);
227
+ const _toPresenceAttribute = unref(toPresenceAttribute);
239
228
  const _control_required = _control.required;
240
229
  setDynamicProps(n1, [rootAttrs.value]);
241
230
  setDynamicProps(n0, [_nativeInputAttrs, {
@@ -253,14 +242,14 @@ var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
253
242
  "aria-describedby": _control.ariaDescribedby,
254
243
  "aria-invalid": _control.invalid || void 0,
255
244
  "aria-required": _control_required || void 0,
256
- "data-disabled": _presence(_control.disabled),
257
- "data-readonly": _presence(_readonly),
258
- "data-invalid": _presence(_control.invalid)
245
+ "data-disabled": _toPresenceAttribute(_control.disabled),
246
+ "data-readonly": _toPresenceAttribute(_readonly),
247
+ "data-invalid": _toPresenceAttribute(_control.invalid)
259
248
  }]);
260
249
  });
261
250
  return n1;
262
251
  }
263
- }), [["__scopeId", "data-v-b604b69c"]]);
252
+ }), [["__scopeId", "data-v-da9cf2c9"]]);
264
253
  //#endregion
265
254
  //#region src/components/textarea/types.ts
266
255
  var textareaParts = ["root", "input"];
package/dist/toast.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-toast[data-v-782b93e5] {
2
+ .rp-toast[data-v-441adf44] {
3
3
  --_rp-toast-bg: var(--rp-color-default);
4
4
  --_rp-toast-fg: var(--rp-color-text);
5
5
  --_rp-toast-title-fg: var(--rp-color-text);
@@ -24,25 +24,25 @@
24
24
  box-shadow: var(--rp-shadow-md);
25
25
  transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast);
26
26
  }
27
- .rp-toast--radius-none[data-v-782b93e5] {
27
+ .rp-toast--radius-none[data-v-441adf44] {
28
28
  --_rp-toast-radius: var(--rp-radius-none);
29
29
  }
30
- .rp-toast--radius-xs[data-v-782b93e5] {
30
+ .rp-toast--radius-xs[data-v-441adf44] {
31
31
  --_rp-toast-radius: var(--rp-radius-xs);
32
32
  }
33
- .rp-toast--radius-sm[data-v-782b93e5] {
33
+ .rp-toast--radius-sm[data-v-441adf44] {
34
34
  --_rp-toast-radius: var(--rp-radius-sm);
35
35
  }
36
- .rp-toast--radius-md[data-v-782b93e5] {
36
+ .rp-toast--radius-md[data-v-441adf44] {
37
37
  --_rp-toast-radius: var(--rp-radius-md);
38
38
  }
39
- .rp-toast--radius-lg[data-v-782b93e5] {
39
+ .rp-toast--radius-lg[data-v-441adf44] {
40
40
  --_rp-toast-radius: var(--rp-radius-lg);
41
41
  }
42
- .rp-toast--radius-xl[data-v-782b93e5] {
42
+ .rp-toast--radius-xl[data-v-441adf44] {
43
43
  --_rp-toast-radius: var(--rp-radius-xl);
44
44
  }
45
- .rp-toast__icon[data-v-782b93e5] {
45
+ .rp-toast__icon[data-v-441adf44] {
46
46
  display: inline-flex;
47
47
  flex: 0 0 auto;
48
48
  align-items: center;
@@ -51,37 +51,37 @@
51
51
  color: var(--_rp-toast-icon-fg);
52
52
  line-height: 0;
53
53
  }
54
- .rp-toast__icon[data-v-782b93e5] > svg {
54
+ .rp-toast__icon[data-v-441adf44] > svg {
55
55
  display: block;
56
56
  width: 1rem;
57
57
  height: 1rem;
58
58
  }
59
- .rp-toast__content[data-v-782b93e5] {
59
+ .rp-toast__content[data-v-441adf44] {
60
60
  display: grid;
61
61
  flex: 1 1 auto;
62
62
  min-width: 0;
63
63
  gap: var(--rp-spacing-1);
64
64
  }
65
- .rp-toast__title[data-v-782b93e5] {
65
+ .rp-toast__title[data-v-441adf44] {
66
66
  color: var(--_rp-toast-title-fg);
67
67
  font-size: var(--rp-font-size-md);
68
68
  font-weight: var(--rp-font-weight-semibold);
69
69
  line-height: var(--rp-line-height-xs);
70
70
  }
71
- .rp-toast__description[data-v-782b93e5] {
71
+ .rp-toast__description[data-v-441adf44] {
72
72
  margin: 0;
73
73
  }
74
- .rp-toast__body[data-v-782b93e5], .rp-toast__description[data-v-782b93e5] {
74
+ .rp-toast__body[data-v-441adf44], .rp-toast__description[data-v-441adf44] {
75
75
  min-width: 0;
76
76
  color: var(--_rp-toast-fg);
77
77
  }
78
- .rp-toast__action[data-v-782b93e5] {
78
+ .rp-toast__action[data-v-441adf44] {
79
79
  display: inline-flex;
80
80
  flex: 0 0 auto;
81
81
  align-items: center;
82
82
  margin-left: auto;
83
83
  }
84
- .rp-toast__close[data-v-782b93e5] {
84
+ .rp-toast__close[data-v-441adf44] {
85
85
  box-sizing: border-box;
86
86
  display: inline-flex;
87
87
  flex: 0 0 auto;
@@ -98,36 +98,36 @@
98
98
  cursor: pointer;
99
99
  transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast);
100
100
  }
101
- .rp-toast__close[data-v-782b93e5]:hover {
101
+ .rp-toast__close[data-v-441adf44]:hover {
102
102
  background-color: color-mix(in srgb, var(--_rp-toast-icon-fg) 12%, transparent);
103
103
  }
104
- .rp-toast__close[data-v-782b93e5]:focus-visible {
104
+ .rp-toast__close[data-v-441adf44]:focus-visible {
105
105
  outline: var(--rp-border-width-medium) solid var(--rp-color-focus-ring);
106
106
  outline-offset: 2px;
107
107
  }
108
- .rp-toast__close[data-v-782b93e5] > svg {
108
+ .rp-toast__close[data-v-441adf44] > svg {
109
109
  display: block;
110
110
  width: 1rem;
111
111
  height: 1rem;
112
112
  }
113
- .rp-toast-enter-active[data-v-782b93e5],
114
- .rp-toast-leave-active[data-v-782b93e5] {
113
+ .rp-toast-enter-active[data-v-441adf44],
114
+ .rp-toast-leave-active[data-v-441adf44] {
115
115
  will-change: opacity, transform;
116
116
  }
117
- .rp-toast-enter-active[data-v-782b93e5] {
117
+ .rp-toast-enter-active[data-v-441adf44] {
118
118
  transition: opacity 180ms ease-out, transform 240ms cubic-bezier(0.16, 1, 0.3, 1);
119
119
  }
120
- .rp-toast-leave-active[data-v-782b93e5] {
120
+ .rp-toast-leave-active[data-v-441adf44] {
121
121
  transition: opacity 120ms ease-in, transform 180ms cubic-bezier(0.4, 0, 1, 1);
122
122
  }
123
- .rp-toast-enter-from[data-v-782b93e5],
124
- .rp-toast-leave-to[data-v-782b93e5] {
123
+ .rp-toast-enter-from[data-v-441adf44],
124
+ .rp-toast-leave-to[data-v-441adf44] {
125
125
  opacity: 0;
126
126
  transform: translate3d(0, calc(var(--rp-spacing-2) * -1), 0) scale(0.98);
127
127
  }
128
128
  @media (prefers-reduced-motion: reduce) {
129
- .rp-toast-enter-active[data-v-782b93e5],
130
- .rp-toast-leave-active[data-v-782b93e5] {
129
+ .rp-toast-enter-active[data-v-441adf44],
130
+ .rp-toast-leave-active[data-v-441adf44] {
131
131
  transition: none;
132
132
  }
133
133
  }