ropav 0.1.4 → 0.1.6

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 (138) hide show
  1. package/README.md +20 -0
  2. package/dist/accordion.js +11 -8
  3. package/dist/alert.css +18 -18
  4. package/dist/alert.js +27 -21
  5. package/dist/avatar.css +19 -19
  6. package/dist/avatar.js +16 -11
  7. package/dist/badge.css +16 -16
  8. package/dist/badge.js +14 -9
  9. package/dist/base.css +214 -69
  10. package/dist/button-group.js +1 -1
  11. package/dist/button-link.js +16 -14
  12. package/dist/button.css +37 -28
  13. package/dist/button.js +16 -14
  14. package/dist/{useButtonColor.js → button.scss_vue_type_style_index_0_src_true_lang.js} +8 -4
  15. package/dist/card.js +1 -1
  16. package/dist/checkbox.css +32 -32
  17. package/dist/checkbox.js +19 -11
  18. package/dist/chevron-right.js +12 -0
  19. package/dist/collapse.css +6 -6
  20. package/dist/collapse.js +4 -4
  21. package/dist/collectionNavigation.js +120 -0
  22. package/dist/color-input.css +19 -19
  23. package/dist/color-input.js +6 -5
  24. package/dist/color-picker.css +7 -7
  25. package/dist/color-picker.js +4 -5
  26. package/dist/color-swatch.js +1 -1
  27. package/dist/componentColors.js +135 -23
  28. package/dist/components/alert/types.d.ts +1 -0
  29. package/dist/components/alert/useAlertColor.d.ts +1 -1
  30. package/dist/components/avatar/types.d.ts +1 -0
  31. package/dist/components/avatar/useAvatarColor.d.ts +1 -1
  32. package/dist/components/badge/types.d.ts +1 -0
  33. package/dist/components/badge/useBadgeColor.d.ts +1 -1
  34. package/dist/components/button/types.d.ts +1 -0
  35. package/dist/components/button/useButtonColor.d.ts +1 -1
  36. package/dist/components/button-link/types.d.ts +1 -0
  37. package/dist/components/checkbox/types.d.ts +1 -0
  38. package/dist/components/checkbox/useCheckbox.d.ts +1 -1
  39. package/dist/components/color-input/color-input.d.ts +2 -2
  40. package/dist/components/color-input/useColorInput.d.ts +1 -1
  41. package/dist/components/dialog/dialog-core.d.ts +1 -1
  42. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  43. package/dist/components/dropdown-menu/dropdown-menu-primitive-core.d.ts +2 -1
  44. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  45. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -2
  46. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -3
  47. package/dist/components/dropdown-menu/index.d.ts +1 -0
  48. package/dist/components/dropdown-menu/types.d.ts +4 -0
  49. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +3 -4
  50. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +2 -1
  51. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +1 -0
  52. package/dist/components/icon-button/types.d.ts +1 -0
  53. package/dist/components/input/useInput.d.ts +1 -1
  54. package/dist/components/number-input/useNumberInput.d.ts +1 -1
  55. package/dist/components/pagination/index.d.ts +4 -0
  56. package/dist/components/pagination/index.js +2 -0
  57. package/dist/components/pagination/pagination.d.ts +49 -0
  58. package/dist/components/pagination/types.d.ts +54 -0
  59. package/dist/components/pagination/usePagination.d.ts +19 -0
  60. package/dist/components/progress/useProgress.d.ts +1 -1
  61. package/dist/components/radio/types.d.ts +3 -0
  62. package/dist/components/radio/useRadio.d.ts +2 -2
  63. package/dist/components/scroll-area/scrollAreaCore.d.ts +5 -0
  64. package/dist/components/scroll-area/types.d.ts +4 -0
  65. package/dist/components/scroll-area/useScrollArea.d.ts +1 -0
  66. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +3 -0
  67. package/dist/components/scroll-area/useScrollAreaPresentation.d.ts +3 -0
  68. package/dist/components/select/useSelect.d.ts +3 -2
  69. package/dist/components/select/useSelectNativeValue.d.ts +1 -7
  70. package/dist/components/slider/range-slider-tooltip.d.ts +2 -0
  71. package/dist/components/slider/sliderCore.d.ts +2 -1
  72. package/dist/components/slider/types.d.ts +1 -1
  73. package/dist/components/slider/useRangeSlider.d.ts +3 -1
  74. package/dist/components/slider/useSlider.d.ts +3 -1
  75. package/dist/components/switch/useSwitch.d.ts +1 -1
  76. package/dist/components/textarea/useTextarea.d.ts +1 -1
  77. package/dist/components/toast/types.d.ts +2 -0
  78. package/dist/components/toast/useToastColor.d.ts +1 -1
  79. package/dist/components/tooltip/types.d.ts +1 -0
  80. package/dist/components/tooltip/useTooltip.d.ts +1 -1
  81. package/dist/composables/index.d.ts +2 -0
  82. package/dist/composables/index.js +2 -0
  83. package/dist/composables/useControllableValue.d.ts +14 -0
  84. package/dist/dialog.js +8 -5
  85. package/dist/dropdown-menu.js +98 -59
  86. package/dist/field.js +1 -1
  87. package/dist/floating.js +19 -7
  88. package/dist/icon-button.css +12 -169
  89. package/dist/icon-button.js +11 -7
  90. package/dist/index.d.ts +6 -4
  91. package/dist/index.js +8 -5
  92. package/dist/input.css +24 -24
  93. package/dist/input.js +6 -5
  94. package/dist/modal.js +11 -7
  95. package/dist/number-input.css +18 -18
  96. package/dist/number-input.js +8 -7
  97. package/dist/overlay.js +1 -1
  98. package/dist/pagination.css +140 -0
  99. package/dist/pagination.js +442 -0
  100. package/dist/popover.js +9 -6
  101. package/dist/progress.css +29 -21
  102. package/dist/progress.js +17 -10
  103. package/dist/radio.js +17 -7
  104. package/dist/scroll-area.css +10 -1
  105. package/dist/scroll-area.js +82 -25
  106. package/dist/select.css +45 -45
  107. package/dist/select.js +111 -70
  108. package/dist/slider.css +191 -191
  109. package/dist/slider.js +58 -46
  110. package/dist/switch.css +17 -17
  111. package/dist/switch.js +7 -6
  112. package/dist/tabs.css +3 -3
  113. package/dist/tabs.js +25 -15
  114. package/dist/textarea.css +26 -26
  115. package/dist/textarea.js +5 -4
  116. package/dist/toast.css +26 -26
  117. package/dist/toast.js +35 -23
  118. package/dist/tooltip.css +12 -12
  119. package/dist/tooltip.js +24 -16
  120. package/dist/unplugin-icons.js +38 -25
  121. package/dist/useCollapse.js +12 -7
  122. package/dist/useControlState.js +1 -1
  123. package/dist/useControllableValue.js +33 -0
  124. package/dist/useFloatingPosition.js +4 -1140
  125. package/dist/useFormControl.js +5 -29
  126. package/dist/useOverlayZIndex.js +1 -1
  127. package/dist/useRequiredInject.js +1 -1
  128. package/dist/utils/componentColors.d.ts +14 -1
  129. package/docs/public-composables-api.md +52 -0
  130. package/docs/public-styles-api.md +1 -1
  131. package/docs/public-tokens.md +648 -508
  132. package/package.json +49 -36
  133. package/src/styles/_mixins.scss +4 -0
  134. package/src/styles/_tokens.scss +460 -320
  135. package/src/styles/_variables.scss +1 -1
  136. package/src/styles/styles-manifest.json +1122 -2
  137. package/dist/button-link.css +0 -163
  138. /package/dist/{composables → internal/composables}/useOverlayLayer.d.ts +0 -0
package/dist/textarea.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-textarea[data-v-f2ee1457] {
2
+ .rp-textarea[data-v-b604b69c] {
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-f2ee1457]:hover:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
20
+ .rp-textarea[data-v-b604b69c]: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-f2ee1457]:focus-within:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
23
+ .rp-textarea[data-v-b604b69c]: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-f2ee1457] {
27
+ .rp-textarea[data-v-b604b69c] {
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-f2ee1457] {
31
+ .rp-textarea--size-xs[data-v-b604b69c] {
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-f2ee1457] {
36
+ .rp-textarea--size-sm[data-v-b604b69c] {
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-f2ee1457] {
41
+ .rp-textarea--size-md[data-v-b604b69c] {
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-f2ee1457] {
46
+ .rp-textarea--size-lg[data-v-b604b69c] {
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-f2ee1457] {
51
+ .rp-textarea--size-xl[data-v-b604b69c] {
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-f2ee1457] {
56
+ .rp-textarea--radius-xs[data-v-b604b69c] {
57
57
  --_rp-textarea-radius: var(--rp-radius-xs);
58
58
  }
59
- .rp-textarea--radius-sm[data-v-f2ee1457] {
59
+ .rp-textarea--radius-sm[data-v-b604b69c] {
60
60
  --_rp-textarea-radius: var(--rp-radius-sm);
61
61
  }
62
- .rp-textarea--radius-md[data-v-f2ee1457] {
62
+ .rp-textarea--radius-md[data-v-b604b69c] {
63
63
  --_rp-textarea-radius: var(--rp-radius-md);
64
64
  }
65
- .rp-textarea--radius-lg[data-v-f2ee1457] {
65
+ .rp-textarea--radius-lg[data-v-b604b69c] {
66
66
  --_rp-textarea-radius: var(--rp-radius-lg);
67
67
  }
68
- .rp-textarea--radius-xl[data-v-f2ee1457] {
68
+ .rp-textarea--radius-xl[data-v-b604b69c] {
69
69
  --_rp-textarea-radius: var(--rp-radius-xl);
70
70
  }
71
- html.dark .rp-textarea[data-v-f2ee1457], [data-rp-color-scheme=dark] .rp-textarea[data-v-f2ee1457] {
71
+ html.dark .rp-textarea[data-v-b604b69c], [data-rp-color-scheme=dark] .rp-textarea[data-v-b604b69c] {
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-f2ee1457], [data-rp-color-scheme=dark] .rp-textare
82
82
  transparent
83
83
  );
84
84
  }
85
- .rp-textarea--disabled[data-v-f2ee1457] {
85
+ .rp-textarea--disabled[data-v-b604b69c] {
86
86
  opacity: var(--rp-opacity-disabled);
87
87
  cursor: not-allowed;
88
88
  }
89
- .rp-textarea--valid[data-v-f2ee1457] {
89
+ .rp-textarea--valid[data-v-b604b69c] {
90
90
  border-color: var(--_rp-textarea-valid-border);
91
91
  }
92
- .rp-textarea--valid[data-v-f2ee1457]:focus-within:not(.rp-textarea--disabled) {
92
+ .rp-textarea--valid[data-v-b604b69c]: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-f2ee1457] {
96
+ .rp-textarea--invalid[data-v-b604b69c] {
97
97
  border-color: var(--_rp-textarea-invalid-border);
98
98
  }
99
- .rp-textarea--invalid[data-v-f2ee1457]:focus-within:not(.rp-textarea--disabled) {
99
+ .rp-textarea--invalid[data-v-b604b69c]: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-f2ee1457] {
103
+ .rp-textarea--readonly[data-v-b604b69c] {
104
104
  background-color: var(--rp-color-control-readonly-bg);
105
105
  }
106
- .rp-textarea--resize-vertical .rp-textarea__native[data-v-f2ee1457] {
106
+ .rp-textarea--resize-vertical .rp-textarea__native[data-v-b604b69c] {
107
107
  resize: vertical;
108
108
  }
109
- .rp-textarea--resize-both .rp-textarea__native[data-v-f2ee1457] {
109
+ .rp-textarea--resize-both .rp-textarea__native[data-v-b604b69c] {
110
110
  resize: both;
111
111
  }
112
- .rp-textarea__native[data-v-f2ee1457] {
112
+ .rp-textarea__native[data-v-b604b69c] {
113
113
  box-sizing: border-box;
114
114
  flex: 1;
115
115
  width: 100%;
@@ -124,10 +124,10 @@ html.dark .rp-textarea[data-v-f2ee1457], [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-f2ee1457]::placeholder {
127
+ .rp-textarea__native[data-v-b604b69c]::placeholder {
128
128
  color: var(--rp-color-control-placeholder);
129
129
  }
130
- .rp-textarea__native[data-v-f2ee1457]:disabled {
130
+ .rp-textarea__native[data-v-b604b69c]:disabled {
131
131
  cursor: not-allowed;
132
132
  }
133
133
  }
package/dist/textarea.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import './textarea.css';
2
- import { t as bem } from "./bem.js";
2
+ import { t as useControllableValue } from "./useControllableValue.js";
3
3
  import { n as useStylesApi, t as presence } from "./styles-api.js";
4
+ import { t as bem } from "./bem.js";
4
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
- import { a as useTextFormControl, o as useControllableValue } from "./useFormControl.js";
6
+ import { a as useTextFormControl } from "./useFormControl.js";
6
7
  import { t as useControlState } from "./useControlState.js";
7
8
  import { child, computed, defineVaporComponent, nextTick, onMounted, ref, renderEffect, setDynamicProps, setStaticTemplateRef, template, unref, watch } from "vue";
8
9
  //#region src/components/textarea/useTextarea.ts
@@ -137,7 +138,7 @@ function useTextarea(props, emitUpdate, getValue = () => props.modelValue ?? "")
137
138
  }
138
139
  //#endregion
139
140
  //#region src/components/textarea/textarea.vue?vue&type=script&setup=true&vapor=true&lang.ts
140
- var t0 = template("<div data-v-f2ee1457><textarea data-v-f2ee1457>", 1);
141
+ var t0 = template("<div data-v-b604b69c><textarea data-v-b604b69c>", 1);
141
142
  //#endregion
142
143
  //#region src/components/textarea/textarea.vue
143
144
  var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -259,7 +260,7 @@ var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
259
260
  });
260
261
  return n1;
261
262
  }
262
- }), [["__scopeId", "data-v-f2ee1457"]]);
263
+ }), [["__scopeId", "data-v-b604b69c"]]);
263
264
  //#endregion
264
265
  //#region src/components/textarea/types.ts
265
266
  var textareaParts = ["root", "input"];
package/dist/toast.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-toast[data-v-6944ac43] {
2
+ .rp-toast[data-v-782b93e5] {
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-6944ac43] {
27
+ .rp-toast--radius-none[data-v-782b93e5] {
28
28
  --_rp-toast-radius: var(--rp-radius-none);
29
29
  }
30
- .rp-toast--radius-xs[data-v-6944ac43] {
30
+ .rp-toast--radius-xs[data-v-782b93e5] {
31
31
  --_rp-toast-radius: var(--rp-radius-xs);
32
32
  }
33
- .rp-toast--radius-sm[data-v-6944ac43] {
33
+ .rp-toast--radius-sm[data-v-782b93e5] {
34
34
  --_rp-toast-radius: var(--rp-radius-sm);
35
35
  }
36
- .rp-toast--radius-md[data-v-6944ac43] {
36
+ .rp-toast--radius-md[data-v-782b93e5] {
37
37
  --_rp-toast-radius: var(--rp-radius-md);
38
38
  }
39
- .rp-toast--radius-lg[data-v-6944ac43] {
39
+ .rp-toast--radius-lg[data-v-782b93e5] {
40
40
  --_rp-toast-radius: var(--rp-radius-lg);
41
41
  }
42
- .rp-toast--radius-xl[data-v-6944ac43] {
42
+ .rp-toast--radius-xl[data-v-782b93e5] {
43
43
  --_rp-toast-radius: var(--rp-radius-xl);
44
44
  }
45
- .rp-toast__icon[data-v-6944ac43] {
45
+ .rp-toast__icon[data-v-782b93e5] {
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-6944ac43] > svg {
54
+ .rp-toast__icon[data-v-782b93e5] > svg {
55
55
  display: block;
56
56
  width: 1rem;
57
57
  height: 1rem;
58
58
  }
59
- .rp-toast__content[data-v-6944ac43] {
59
+ .rp-toast__content[data-v-782b93e5] {
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-6944ac43] {
65
+ .rp-toast__title[data-v-782b93e5] {
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-6944ac43] {
71
+ .rp-toast__description[data-v-782b93e5] {
72
72
  margin: 0;
73
73
  }
74
- .rp-toast__body[data-v-6944ac43], .rp-toast__description[data-v-6944ac43] {
74
+ .rp-toast__body[data-v-782b93e5], .rp-toast__description[data-v-782b93e5] {
75
75
  min-width: 0;
76
76
  color: var(--_rp-toast-fg);
77
77
  }
78
- .rp-toast__action[data-v-6944ac43] {
78
+ .rp-toast__action[data-v-782b93e5] {
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-6944ac43] {
84
+ .rp-toast__close[data-v-782b93e5] {
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-6944ac43]:hover {
101
+ .rp-toast__close[data-v-782b93e5]:hover {
102
102
  background-color: color-mix(in srgb, var(--_rp-toast-icon-fg) 12%, transparent);
103
103
  }
104
- .rp-toast__close[data-v-6944ac43]:focus-visible {
104
+ .rp-toast__close[data-v-782b93e5]: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-6944ac43] > svg {
108
+ .rp-toast__close[data-v-782b93e5] > svg {
109
109
  display: block;
110
110
  width: 1rem;
111
111
  height: 1rem;
112
112
  }
113
- .rp-toast-enter-active[data-v-6944ac43],
114
- .rp-toast-leave-active[data-v-6944ac43] {
113
+ .rp-toast-enter-active[data-v-782b93e5],
114
+ .rp-toast-leave-active[data-v-782b93e5] {
115
115
  will-change: opacity, transform;
116
116
  }
117
- .rp-toast-enter-active[data-v-6944ac43] {
117
+ .rp-toast-enter-active[data-v-782b93e5] {
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-6944ac43] {
120
+ .rp-toast-leave-active[data-v-782b93e5] {
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-6944ac43],
124
- .rp-toast-leave-to[data-v-6944ac43] {
123
+ .rp-toast-enter-from[data-v-782b93e5],
124
+ .rp-toast-leave-to[data-v-782b93e5] {
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-6944ac43],
130
- .rp-toast-leave-active[data-v-6944ac43] {
129
+ .rp-toast-enter-active[data-v-782b93e5],
130
+ .rp-toast-leave-active[data-v-782b93e5] {
131
131
  transition: none;
132
132
  }
133
133
  }
package/dist/toast.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import './toast.css';
2
- import { t as x_default } from "./x.js";
3
- import { t as bem } from "./bem.js";
2
+ import { t as useControllableValue } from "./useControllableValue.js";
4
3
  import { n as useStylesApi } from "./styles-api.js";
5
- import { i as getComponentVariantColorRoles, t as componentColors } from "./componentColors.js";
4
+ import { t as bem } from "./bem.js";
6
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { t as x_default } from "./x.js";
7
+ import { a as getComponentVariantColorRoles, t as componentColors } from "./componentColors.js";
7
8
  import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
8
9
  import { r as useTeleportTarget } from "./useTeleportTarget.js";
9
10
  import { VaporTeleport, VaporTransition, VaporTransitionGroup, computed, createComponent, createFor, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, extend, inject, nextTick, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, toValue, txt, unref, useSlots, watch } from "vue";
@@ -13,14 +14,15 @@ var DEFAULT_TOAST_ROLE = "status";
13
14
  var DEFAULT_TOAST_CLOSE_LABEL = "Close toast";
14
15
  //#endregion
15
16
  //#region src/components/toast/useToastColor.ts
16
- function getToastColorStyle(color, variant, autoContrast) {
17
+ function getToastColorStyle(color, variant, autoContrast, contrastColor) {
17
18
  if (!color && !variant) return void 0;
18
19
  const resolvedVariant = variant ?? "surface";
19
20
  const roles = getComponentVariantColorRoles({
20
21
  color,
21
22
  variant: resolvedVariant,
22
23
  defaultColor: "cyan",
23
- autoContrast
24
+ autoContrast,
25
+ contrastColor
24
26
  });
25
27
  if (!roles) return void 0;
26
28
  return {
@@ -33,11 +35,11 @@ function getToastColorStyle(color, variant, autoContrast) {
33
35
  }
34
36
  //#endregion
35
37
  //#region src/components/toast/toast.vue?vue&type=script&setup=true&vapor=true&lang.ts
36
- var t0$1 = template("<div data-v-6944ac43>");
38
+ var t0$1 = template("<div data-v-782b93e5>");
37
39
  var t1 = template(" ");
38
- var t2 = template("<p data-v-6944ac43> ");
39
- var t3 = template("<div data-v-6944ac43 class=rp-toast__content>");
40
- var t4 = template("<button data-v-6944ac43>");
40
+ var t2 = template("<p data-v-782b93e5> ");
41
+ var t3 = template("<div data-v-782b93e5 class=rp-toast__content>");
42
+ var t4 = template("<button data-v-782b93e5>");
41
43
  delegateEvents("click");
42
44
  //#endregion
43
45
  //#region src/components/toast/toast.vue
@@ -54,7 +56,11 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
54
56
  description: { default: "" },
55
57
  variant: {},
56
58
  color: {},
57
- autoContrast: { type: Boolean },
59
+ autoContrast: {
60
+ type: Boolean,
61
+ default: true
62
+ },
63
+ contrastColor: {},
58
64
  radius: {},
59
65
  role: { default: DEFAULT_TOAST_ROLE },
60
66
  duration: { default: DEFAULT_TOAST_DURATION },
@@ -83,7 +89,12 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
83
89
  const props = __props;
84
90
  const emit = __emit;
85
91
  const slots = useSlots();
86
- const localOpen = ref(props.open ?? true);
92
+ const controllableOpen = useControllableValue({
93
+ modelValue: () => props.open,
94
+ defaultValue: () => true,
95
+ onChange: (open) => emit("update:open", open)
96
+ });
97
+ const isOpen = controllableOpen.value;
87
98
  const isMounted = ref(false);
88
99
  const pausedByHover = ref(false);
89
100
  const pausedByFocus = ref(false);
@@ -92,7 +103,6 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
92
103
  let timerStartedAt = 0;
93
104
  let remainingDuration = 0;
94
105
  watch(() => props.open, (open) => {
95
- if (open !== void 0) localOpen.value = open;
96
106
  if (open) closePending = false;
97
107
  });
98
108
  watch(() => props.pauseOnHover, (pauseOnHover) => {
@@ -105,7 +115,6 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
105
115
  pausedByFocus.value = false;
106
116
  resumeTimer();
107
117
  });
108
- const isOpen = computed(() => props.open ?? localOpen.value);
109
118
  const hasTitle = computed(() => Boolean(props.title || slots.title));
110
119
  const hasDescription = computed(() => Boolean(props.description));
111
120
  const hasContent = computed(() => Boolean(hasTitle.value || hasDescription.value || slots.default));
@@ -115,7 +124,7 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
115
124
  [props.variant ?? ""]: Boolean(props.variant),
116
125
  [`radius-${props.radius}`]: Boolean(props.radius)
117
126
  }));
118
- const rootStyle = computed(() => getToastColorStyle(props.color, props.variant, props.autoContrast));
127
+ const rootStyle = computed(() => getToastColorStyle(props.color, props.variant, props.autoContrast, props.contrastColor));
119
128
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
120
129
  const rootAttrs = computed(() => getRootAttrs({
121
130
  class: rootClass.value,
@@ -197,8 +206,7 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
197
206
  if (closePending) return;
198
207
  closePending = true;
199
208
  clearTimer();
200
- localOpen.value = false;
201
- emit("update:open", false);
209
+ controllableOpen.setValue(false);
202
210
  emit("close", reason);
203
211
  if (isOpen.value) {
204
212
  resetTimer();
@@ -212,7 +220,7 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
212
220
  name: "rp-toast",
213
221
  onAfterLeave: () => _on_after_leave
214
222
  }, extend(() => {
215
- return createIf(() => isOpen.value, () => {
223
+ return createIf(() => unref(isOpen), () => {
216
224
  const n30 = t0$1();
217
225
  renderEffect(() => setDynamicProps(n30, [rootAttrs.value]));
218
226
  setInsertionState(n30, null, 0);
@@ -282,7 +290,7 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
282
290
  }, null, 129);
283
291
  }, { _: 8 }), true);
284
292
  }
285
- }), [["__scopeId", "data-v-6944ac43"]]);
293
+ }), [["__scopeId", "data-v-782b93e5"]]);
286
294
  //#endregion
287
295
  //#region src/components/toast/toast-store.ts
288
296
  var TYPE_DEFAULTS = {
@@ -327,6 +335,7 @@ function getStoreDefaults(options) {
327
335
  variant: options.variant,
328
336
  color: options.color,
329
337
  autoContrast: options.autoContrast,
338
+ contrastColor: options.contrastColor,
330
339
  radius: options.radius,
331
340
  role: options.role,
332
341
  pauseOnHover: options.pauseOnHover ?? true,
@@ -560,6 +569,7 @@ var toast_provider_default = /* @__PURE__ */ defineVaporComponent({
560
569
  type: Boolean,
561
570
  default: void 0
562
571
  },
572
+ contrastColor: { default: void 0 },
563
573
  radius: { default: void 0 },
564
574
  role: { default: void 0 },
565
575
  pauseOnHover: {
@@ -704,14 +714,17 @@ function optionValue(value) {
704
714
  return toValue(value);
705
715
  }
706
716
  function useToastState(options = {}) {
707
- const uncontrolledOpen = ref(options.defaultOpen ?? false);
708
717
  const closeReason = ref(null);
709
718
  const controlledOpen = computed(() => optionValue(options.open));
710
- const isOpen = computed(() => controlledOpen.value ?? uncontrolledOpen.value);
719
+ const controllableOpen = useControllableValue({
720
+ modelValue: () => controlledOpen.value,
721
+ defaultValue: () => options.defaultOpen ?? false,
722
+ onChange: (nextOpen) => options.onOpenChange?.(nextOpen)
723
+ });
724
+ const isOpen = controllableOpen.value;
711
725
  const lastCloseReason = computed(() => closeReason.value);
712
726
  watch(controlledOpen, (nextOpen) => {
713
727
  if (nextOpen === void 0) return;
714
- uncontrolledOpen.value = nextOpen;
715
728
  if (nextOpen) closeReason.value = null;
716
729
  }, {
717
730
  flush: "sync",
@@ -724,9 +737,8 @@ function useToastState(options = {}) {
724
737
  }));
725
738
  function setOpen(nextOpen) {
726
739
  if (nextOpen === isOpen.value) return;
727
- if (controlledOpen.value === void 0) uncontrolledOpen.value = nextOpen;
728
740
  if (nextOpen) closeReason.value = null;
729
- options.onOpenChange?.(nextOpen);
741
+ controllableOpen.setValue(nextOpen);
730
742
  }
731
743
  function open() {
732
744
  setOpen(true);
package/dist/tooltip.css CHANGED
@@ -1,11 +1,11 @@
1
1
  @layer ropav.components {
2
- .rp-tooltip[data-v-38bfcb12] {
2
+ .rp-tooltip[data-v-9457a843] {
3
3
  position: relative;
4
4
  display: inline-flex;
5
5
  font-family: var(--rp-font-family);
6
6
  vertical-align: middle;
7
7
  }
8
- .rp-tooltip__content[data-v-38bfcb12] {
8
+ .rp-tooltip__content[data-v-9457a843] {
9
9
  --_rp-tooltip-main-axis-offset: var(--rp-spacing-2);
10
10
  --_rp-tooltip-cross-axis-offset: 0px;
11
11
  --_rp-tooltip-arrow-size: 0.4375rem;
@@ -29,10 +29,10 @@
29
29
  border-radius: var(--rp-radius-sm);
30
30
  box-shadow: var(--rp-shadow-md);
31
31
  }
32
- .rp-tooltip--target[data-v-38bfcb12] {
32
+ .rp-tooltip--target[data-v-9457a843] {
33
33
  display: contents;
34
34
  }
35
- .rp-tooltip__arrow[data-v-38bfcb12] {
35
+ .rp-tooltip__arrow[data-v-9457a843] {
36
36
  position: absolute;
37
37
  width: var(--_rp-tooltip-arrow-size);
38
38
  height: var(--_rp-tooltip-arrow-size);
@@ -40,24 +40,24 @@
40
40
  background-color: inherit;
41
41
  rotate: 45deg;
42
42
  }
43
- .rp-tooltip__arrow[data-side=top][data-v-38bfcb12] {
43
+ .rp-tooltip__arrow[data-side=top][data-v-9457a843] {
44
44
  bottom: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
45
45
  }
46
- .rp-tooltip__arrow[data-side=right][data-v-38bfcb12] {
46
+ .rp-tooltip__arrow[data-side=right][data-v-9457a843] {
47
47
  left: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
48
48
  }
49
- .rp-tooltip__arrow[data-side=bottom][data-v-38bfcb12] {
49
+ .rp-tooltip__arrow[data-side=bottom][data-v-9457a843] {
50
50
  top: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
51
51
  }
52
- .rp-tooltip__arrow[data-side=left][data-v-38bfcb12] {
52
+ .rp-tooltip__arrow[data-side=left][data-v-9457a843] {
53
53
  right: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
54
54
  }
55
- .rp-tooltip-content-enter-active[data-v-38bfcb12],
56
- .rp-tooltip-content-leave-active[data-v-38bfcb12] {
55
+ .rp-tooltip-content-enter-active[data-v-9457a843],
56
+ .rp-tooltip-content-leave-active[data-v-9457a843] {
57
57
  transition: opacity var(--rp-transition-fast);
58
58
  }
59
- .rp-tooltip-content-enter-from[data-v-38bfcb12],
60
- .rp-tooltip-content-leave-to[data-v-38bfcb12] {
59
+ .rp-tooltip-content-enter-from[data-v-9457a843],
60
+ .rp-tooltip-content-leave-to[data-v-9457a843] {
61
61
  opacity: 0;
62
62
  }
63
63
  }
package/dist/tooltip.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import './tooltip.css';
2
- import { t as bem } from "./bem.js";
2
+ import { t as useControllableValue } from "./useControllableValue.js";
3
3
  import { n as useStylesApi, t as presence } from "./styles-api.js";
4
- import { i as getComponentVariantColorRoles } from "./componentColors.js";
4
+ import { t as bem } from "./bem.js";
5
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { a as getComponentVariantColorRoles } from "./componentColors.js";
6
7
  import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
7
8
  import { n as useFloatingPosition, r as useFloatingTarget, t as isElementReference } from "./useFloatingPosition.js";
8
9
  import { n as useTeleportPositioningKey, r as useTeleportTarget } from "./useTeleportTarget.js";
9
10
  import { VaporTeleport, VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, onBeforeUnmount, ref, renderEffect, setAttr, setDynamicProps, setInsertionState, setStaticTemplateRef, setStyle, setText, template, toDisplayString, unref, useId, useSlots, watch } from "vue";
10
- //#region src/composables/useDelayedOpen.ts
11
+ //#region src/internal/composables/useDelayedOpen.ts
11
12
  function readOption(value, fallback) {
12
13
  return typeof value === "function" ? value() ?? fallback : value ?? fallback;
13
14
  }
@@ -15,9 +16,13 @@ function readOptional(value) {
15
16
  return typeof value === "function" ? value() : value;
16
17
  }
17
18
  function useDelayedOpen(options = {}) {
18
- const uncontrolledOpen = ref(false);
19
+ const controllableOpen = useControllableValue({
20
+ modelValue: () => readOptional(options.open),
21
+ defaultValue: () => false,
22
+ onChange: (nextOpen) => options.onOpenChange?.(nextOpen)
23
+ });
19
24
  let openTimer = null;
20
- const isOpen = computed(() => readOptional(options.open) ?? uncontrolledOpen.value);
25
+ const isOpen = controllableOpen.value;
21
26
  function clearTimers() {
22
27
  if (openTimer) {
23
28
  clearTimeout(openTimer);
@@ -28,9 +33,7 @@ function useDelayedOpen(options = {}) {
28
33
  return readOption(options.disabled, false);
29
34
  }
30
35
  function setOpen(nextOpen) {
31
- const previousOpen = isOpen.value;
32
- if (readOptional(options.open) === void 0) uncontrolledOpen.value = nextOpen;
33
- if (previousOpen !== nextOpen) options.onOpenChange?.(nextOpen);
36
+ if (isOpen.value !== nextOpen) controllableOpen.setValue(nextOpen);
34
37
  }
35
38
  function open() {
36
39
  if (isDisabled()) return;
@@ -66,12 +69,13 @@ function resolveTooltipOffsetStyle(offset) {
66
69
  if (offset.crossAxis != null) style["--_rp-tooltip-cross-axis-offset"] = `${offset.crossAxis}px`;
67
70
  return Object.keys(style).length > 0 ? style : void 0;
68
71
  }
69
- function resolveTooltipColorStyleWithContrast(color, autoContrast) {
72
+ function resolveTooltipColorStyleWithContrast(color, autoContrast, contrastColor) {
70
73
  if (!color) return void 0;
71
74
  const roles = getComponentVariantColorRoles({
72
75
  color,
73
76
  variant: "solid",
74
- autoContrast
77
+ autoContrast,
78
+ contrastColor
75
79
  });
76
80
  if (!roles) return void 0;
77
81
  return {
@@ -140,7 +144,7 @@ function useTooltip(props, emitOpenChange) {
140
144
  const contentStyle = computed(() => ({
141
145
  ...floating.floatingStyle.value,
142
146
  ...resolveTooltipOffsetStyle(props.offset),
143
- ...resolveTooltipColorStyleWithContrast(props.color, props.autoContrast),
147
+ ...resolveTooltipColorStyleWithContrast(props.color, props.autoContrast, props.contrastColor),
144
148
  zIndex: zIndex.value
145
149
  }));
146
150
  function openTooltip() {
@@ -212,10 +216,10 @@ function useTooltip(props, emitOpenChange) {
212
216
  }
213
217
  //#endregion
214
218
  //#region src/components/tooltip/tooltip.vue?vue&type=script&setup=true&vapor=true&lang.ts
215
- var t0 = template("<span data-v-38bfcb12 class=rp-tooltip__arrow aria-hidden=true>");
219
+ var t0 = template("<span data-v-9457a843 class=rp-tooltip__arrow aria-hidden=true>");
216
220
  var t1 = template(" ");
217
- var t2 = template("<span data-v-38bfcb12>");
218
- var t3 = template("<span data-v-38bfcb12>", 1);
221
+ var t2 = template("<span data-v-9457a843>");
222
+ var t3 = template("<span data-v-9457a843>", 1);
219
223
  //#endregion
220
224
  //#region src/components/tooltip/tooltip.vue
221
225
  var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -227,7 +231,11 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
227
231
  baseZIndex: {},
228
232
  content: { default: "" },
229
233
  color: {},
230
- autoContrast: { type: Boolean },
234
+ autoContrast: {
235
+ type: Boolean,
236
+ default: true
237
+ },
238
+ contrastColor: {},
231
239
  open: {
232
240
  type: Boolean,
233
241
  default: void 0
@@ -354,6 +362,6 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
354
362
  setStaticTemplateRef(n14, rootRef, null, "rootRef");
355
363
  return n14;
356
364
  }
357
- }), [["__scopeId", "data-v-38bfcb12"]]);
365
+ }), [["__scopeId", "data-v-9457a843"]]);
358
366
  //#endregion
359
367
  export { useDelayedOpen as i, resolveTooltipColorStyleWithContrast as n, resolveTooltipOffsetStyle as r, tooltip_default as t };