ropav 0.0.9 → 0.0.10

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 (159) hide show
  1. package/dist/color-input.css +19 -19
  2. package/dist/color-input.js +8 -3
  3. package/dist/color-picker.css +20 -20
  4. package/dist/color-picker.js +107 -27
  5. package/dist/components/accordion/accordion-item.d.ts +4 -4
  6. package/dist/components/accordion/accordion.d.ts +1 -1
  7. package/dist/components/accordion/index.d.ts +4 -4
  8. package/dist/components/accordion/types.d.ts +1 -1
  9. package/dist/components/accordion/useAccordion.d.ts +1 -1
  10. package/dist/components/alert/alert.d.ts +1 -1
  11. package/dist/components/alert/index.d.ts +3 -3
  12. package/dist/components/alert/types.d.ts +1 -1
  13. package/dist/components/alert/useAlertColor.d.ts +1 -1
  14. package/dist/components/aspect-ratio/aspect-ratio.d.ts +1 -1
  15. package/dist/components/aspect-ratio/index.d.ts +2 -2
  16. package/dist/components/avatar/avatar.d.ts +1 -1
  17. package/dist/components/avatar/index.d.ts +3 -3
  18. package/dist/components/avatar/types.d.ts +1 -1
  19. package/dist/components/avatar/useAvatarColor.d.ts +1 -1
  20. package/dist/components/badge/badge.d.ts +1 -1
  21. package/dist/components/badge/index.d.ts +3 -3
  22. package/dist/components/badge/types.d.ts +1 -1
  23. package/dist/components/badge/useBadgeColor.d.ts +1 -1
  24. package/dist/components/button/button.d.ts +1 -1
  25. package/dist/components/button/index.d.ts +2 -2
  26. package/dist/components/button/types.d.ts +1 -1
  27. package/dist/components/button/useButtonColor.d.ts +1 -1
  28. package/dist/components/button-group/button-group.d.ts +1 -1
  29. package/dist/components/button-group/index.d.ts +2 -2
  30. package/dist/components/button-link/button-link.d.ts +1 -1
  31. package/dist/components/button-link/index.d.ts +2 -2
  32. package/dist/components/button-link/types.d.ts +1 -1
  33. package/dist/components/card/card.d.ts +1 -1
  34. package/dist/components/card/index.d.ts +2 -2
  35. package/dist/components/checkbox/checkbox.d.ts +1 -1
  36. package/dist/components/checkbox/index.d.ts +2 -2
  37. package/dist/components/checkbox/types.d.ts +1 -1
  38. package/dist/components/checkbox/useCheckbox.d.ts +2 -2
  39. package/dist/components/collapse/collapse.d.ts +2 -2
  40. package/dist/components/collapse/index.d.ts +3 -3
  41. package/dist/components/collapse/useCollapse.d.ts +1 -1
  42. package/dist/components/color-input/color-input.d.ts +1 -1
  43. package/dist/components/color-input/index.d.ts +2 -2
  44. package/dist/components/color-input/types.d.ts +4 -3
  45. package/dist/components/color-input/useColorInput.d.ts +5 -5
  46. package/dist/components/color-input/useColorInputEyeDropper.d.ts +1 -1
  47. package/dist/components/color-input/useColorInputPopover.d.ts +2 -2
  48. package/dist/components/color-input/useColorInputValue.d.ts +1 -1
  49. package/dist/components/color-picker/color-picker-saturation.d.ts +1 -1
  50. package/dist/components/color-picker/color-picker-slider.d.ts +1 -1
  51. package/dist/components/color-picker/color-picker-utils.d.ts +1 -1
  52. package/dist/components/color-picker/color-picker.d.ts +1 -1
  53. package/dist/components/color-picker/index.d.ts +3 -3
  54. package/dist/components/color-picker/useColorPickerDrag.d.ts +7 -2
  55. package/dist/components/color-picker/useColorPickerSwatches.d.ts +1 -1
  56. package/dist/components/color-picker/useColorPickerValue.d.ts +2 -2
  57. package/dist/components/color-swatch/color-swatch.d.ts +1 -1
  58. package/dist/components/color-swatch/index.d.ts +2 -2
  59. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +15 -6
  60. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +1 -1
  61. package/dist/components/dropdown-menu/dropdown-menu.d.ts +1 -1
  62. package/dist/components/dropdown-menu/index.d.ts +3 -3
  63. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -10
  64. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +2 -2
  65. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +2 -2
  66. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +2 -2
  67. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +2 -2
  68. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +3 -3
  69. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +12 -4
  70. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +3 -3
  71. package/dist/components/field/field.d.ts +2 -2
  72. package/dist/components/field/index.d.ts +2 -2
  73. package/dist/components/field/useField.d.ts +1 -1
  74. package/dist/components/icon-button/icon-button.d.ts +1 -1
  75. package/dist/components/icon-button/index.d.ts +2 -2
  76. package/dist/components/icon-button/types.d.ts +1 -1
  77. package/dist/components/input/index.d.ts +2 -2
  78. package/dist/components/input/input.d.ts +1 -1
  79. package/dist/components/input/useInput.d.ts +2 -2
  80. package/dist/components/modal/index.d.ts +2 -2
  81. package/dist/components/modal/modal.d.ts +1 -1
  82. package/dist/components/modal/types.d.ts +1 -1
  83. package/dist/components/modal/useModal.d.ts +1 -1
  84. package/dist/components/number-input/index.d.ts +2 -2
  85. package/dist/components/number-input/number-input.d.ts +1 -1
  86. package/dist/components/number-input/types.d.ts +1 -1
  87. package/dist/components/number-input/useNumberInput.d.ts +2 -2
  88. package/dist/components/overlay/index.d.ts +2 -2
  89. package/dist/components/overlay/overlay.d.ts +1 -1
  90. package/dist/components/overlay/useOverlay.d.ts +1 -1
  91. package/dist/components/popover/index.d.ts +3 -3
  92. package/dist/components/popover/popover.d.ts +2 -2
  93. package/dist/components/popover/types.d.ts +1 -0
  94. package/dist/components/popover/usePopover.d.ts +2 -1
  95. package/dist/components/progress/index.d.ts +3 -3
  96. package/dist/components/progress/progress.d.ts +1 -1
  97. package/dist/components/progress/types.d.ts +1 -1
  98. package/dist/components/progress/useProgress.d.ts +2 -2
  99. package/dist/components/radio/index.d.ts +3 -3
  100. package/dist/components/radio/radio-group.d.ts +1 -1
  101. package/dist/components/radio/radio.d.ts +1 -1
  102. package/dist/components/radio/types.d.ts +1 -1
  103. package/dist/components/radio/useRadio.d.ts +2 -2
  104. package/dist/components/select/index.d.ts +2 -2
  105. package/dist/components/select/select.d.ts +1 -1
  106. package/dist/components/select/useSelect.d.ts +2 -2
  107. package/dist/components/slider/index.d.ts +4 -4
  108. package/dist/components/slider/range-slider-tooltip.d.ts +34 -0
  109. package/dist/components/slider/range-slider.d.ts +4 -12
  110. package/dist/components/slider/slider.d.ts +1 -1
  111. package/dist/components/slider/sliderCore.d.ts +35 -0
  112. package/dist/components/slider/types.d.ts +2 -5
  113. package/dist/components/slider/useRangeSlider.d.ts +5 -7
  114. package/dist/components/slider/useRangeSliderPointer.d.ts +19 -0
  115. package/dist/components/slider/useRangeSliderTooltipCollision.d.ts +31 -2
  116. package/dist/components/slider/useRangeSliderTooltipState.d.ts +23 -0
  117. package/dist/components/slider/useSlider.d.ts +11 -15
  118. package/dist/components/switch/index.d.ts +2 -2
  119. package/dist/components/switch/switch.d.ts +1 -1
  120. package/dist/components/switch/types.d.ts +1 -1
  121. package/dist/components/switch/useSwitch.d.ts +2 -2
  122. package/dist/components/tabs/index.d.ts +6 -6
  123. package/dist/components/tabs/tabs-content.d.ts +2 -2
  124. package/dist/components/tabs/tabs-list.d.ts +4 -4
  125. package/dist/components/tabs/tabs-trigger.d.ts +5 -5
  126. package/dist/components/tabs/tabs.d.ts +5 -5
  127. package/dist/components/tabs/useTabs.d.ts +1 -1
  128. package/dist/components/textarea/index.d.ts +2 -2
  129. package/dist/components/textarea/textarea.d.ts +1 -1
  130. package/dist/components/textarea/useTextarea.d.ts +2 -2
  131. package/dist/components/toast/defaults.d.ts +7 -0
  132. package/dist/components/toast/index.d.ts +7 -0
  133. package/dist/components/toast/index.js +2 -0
  134. package/dist/components/toast/toast-provider.d.ts +21 -0
  135. package/dist/components/toast/toast-viewport.d.ts +34 -0
  136. package/dist/components/toast/toast.d.ts +31 -0
  137. package/dist/components/toast/types.d.ts +106 -0
  138. package/dist/components/toast/useToast.d.ts +4 -0
  139. package/dist/components/toast/useToastColor.d.ts +3 -0
  140. package/dist/components/toast/useToastState.d.ts +2 -0
  141. package/dist/components/tooltip/index.d.ts +2 -2
  142. package/dist/components/tooltip/tooltip.d.ts +2 -2
  143. package/dist/components/tooltip/types.d.ts +1 -1
  144. package/dist/components/tooltip/useTooltip.d.ts +3 -1
  145. package/dist/dropdown-menu.js +160 -39
  146. package/dist/index.d.ts +31 -30
  147. package/dist/index.js +2 -1
  148. package/dist/popover.css +28 -28
  149. package/dist/popover.js +25 -14
  150. package/dist/rafScheduler.js +34 -0
  151. package/dist/slider.css +355 -228
  152. package/dist/slider.js +890 -862
  153. package/dist/textarea.js +8 -2
  154. package/dist/toast.css +232 -0
  155. package/dist/toast.js +679 -0
  156. package/dist/tooltip.js +17 -10
  157. package/dist/utils/componentColors.d.ts +60 -0
  158. package/package.json +17 -9
  159. package/dist/components/slider/useRangeSliderTooltipTransition.d.ts +0 -4
package/dist/tooltip.js CHANGED
@@ -2,6 +2,7 @@ import './tooltip.css';
2
2
  import { t as bem } from "./bem.js";
3
3
  import { i as getComponentVariantColorRoles } from "./componentColors.js";
4
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
+ import { t as createRafScheduler } from "./rafScheduler.js";
5
6
  import { VaporTransition, applyVShow, computed, createComponent, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, extend, isRef, on, onBeforeUnmount, onMounted, ref, renderEffect, setAttr, setClass, setInsertionState, setProp, setStyle, setText, template, toDisplayString, unref, useId, useSlots, watch } from "vue";
6
7
  //#region src/composables/useDelayedOpen.ts
7
8
  function readOption(value, fallback) {
@@ -77,7 +78,7 @@ function getTargetPosition(rect, placement) {
77
78
  };
78
79
  }
79
80
  }
80
- function resolveOffsetStyle(offset) {
81
+ function resolveTooltipOffsetStyle(offset) {
81
82
  if (offset == null) return void 0;
82
83
  if (typeof offset === "number") return { "--_rp-tooltip-main-axis-offset": `${offset}px` };
83
84
  const style = {};
@@ -103,6 +104,7 @@ function useTooltip(props, emitOpenChange) {
103
104
  const generatedId = useId();
104
105
  const targetElement = ref(null);
105
106
  const targetPosition = ref(null);
107
+ const positionScheduler = createRafScheduler(updateTargetPosition, () => targetElement.value?.ownerDocument.defaultView);
106
108
  let isMounted = false;
107
109
  let removeTargetListeners;
108
110
  let removePositionListeners;
@@ -135,7 +137,7 @@ function useTooltip(props, emitOpenChange) {
135
137
  const contentAriaHidden = computed(() => isDecorative.value ? "true" : void 0);
136
138
  const contentStyle = computed(() => {
137
139
  const style = {
138
- ...resolveOffsetStyle(props.offset),
140
+ ...resolveTooltipOffsetStyle(props.offset),
139
141
  ...resolveTooltipColorStyleWithContrast(props.color, props.autoContrast)
140
142
  };
141
143
  if (!isTargetMode.value || !targetPosition.value) return Object.keys(style).length > 0 ? style : void 0;
@@ -195,7 +197,6 @@ function useTooltip(props, emitOpenChange) {
195
197
  targetPosition.value = getTargetPosition(targetElement.value.getBoundingClientRect(), placement.value);
196
198
  }
197
199
  function onTargetOpen() {
198
- updateTargetPosition();
199
200
  openTooltip();
200
201
  }
201
202
  function bindTargetListeners(element) {
@@ -217,17 +218,20 @@ function useTooltip(props, emitOpenChange) {
217
218
  function removeViewportListeners() {
218
219
  removePositionListeners?.();
219
220
  removePositionListeners = void 0;
221
+ positionScheduler.cancel();
220
222
  }
221
223
  function bindViewportListeners() {
222
- if (typeof window === "undefined" || removePositionListeners) return;
223
- window.addEventListener("resize", updateTargetPosition);
224
- window.addEventListener("scroll", updateTargetPosition, true);
224
+ const view = targetElement.value?.ownerDocument.defaultView;
225
+ if (!view || removePositionListeners) return;
226
+ view.addEventListener("resize", positionScheduler.schedule);
227
+ view.addEventListener("scroll", positionScheduler.schedule, true);
225
228
  removePositionListeners = () => {
226
- window.removeEventListener("resize", updateTargetPosition);
227
- window.removeEventListener("scroll", updateTargetPosition, true);
229
+ view.removeEventListener("resize", positionScheduler.schedule);
230
+ view.removeEventListener("scroll", positionScheduler.schedule, true);
228
231
  };
229
232
  }
230
233
  function syncTarget() {
234
+ positionScheduler.cancel();
231
235
  if (!isTargetMode.value) {
232
236
  removeTargetListeners?.();
233
237
  removeViewportListeners();
@@ -240,6 +244,7 @@ function useTooltip(props, emitOpenChange) {
240
244
  if (targetElement.value === nextTarget) {
241
245
  syncTargetDescription();
242
246
  updateTargetPosition();
247
+ if (isVisible.value) bindViewportListeners();
243
248
  return;
244
249
  }
245
250
  removeTargetListeners?.();
@@ -253,6 +258,7 @@ function useTooltip(props, emitOpenChange) {
253
258
  bindTargetListeners(nextTarget);
254
259
  syncTargetDescription();
255
260
  updateTargetPosition();
261
+ if (isVisible.value) bindViewportListeners();
256
262
  }
257
263
  watch(isDisabled, (disabled) => {
258
264
  if (disabled) closeTooltip();
@@ -267,12 +273,13 @@ function useTooltip(props, emitOpenChange) {
267
273
  ], () => {
268
274
  if (isMounted) syncTargetDescription();
269
275
  });
270
- watch([placement, isVisible], () => {
276
+ watch(placement, () => {
271
277
  if (isMounted && isVisible.value) updateTargetPosition();
272
278
  });
273
279
  watch(isVisible, (visible) => {
274
280
  if (!isMounted || !isTargetMode.value) return;
275
281
  if (visible) {
282
+ positionScheduler.cancel();
276
283
  updateTargetPosition();
277
284
  bindViewportListeners();
278
285
  } else removeViewportListeners();
@@ -385,4 +392,4 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
385
392
  }
386
393
  }), [["__scopeId", "data-v-13c39164"]]);
387
394
  //#endregion
388
- export { useDelayedOpen as n, tooltip_default as t };
395
+ export { useDelayedOpen as i, resolveTooltipColorStyleWithContrast as n, resolveTooltipOffsetStyle as r, tooltip_default as t };
@@ -0,0 +1,60 @@
1
+ export declare const componentColors: readonly ["dark", "gray", "red", "pink", "grape", "violet", "indigo", "blue", "cyan", "teal", "green", "lime", "yellow", "orange"];
2
+ export declare const componentColorShades: readonly ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
3
+ export type ComponentColor = (typeof componentColors)[number];
4
+ export type ComponentColorShade = (typeof componentColorShades)[number];
5
+ export type ComponentColorShadeValue = `${ComponentColor}.${ComponentColorShade}`;
6
+ export type ComponentColorValue = ComponentColor | ComponentColorShadeValue | (string & {});
7
+ export type ComponentColorVariant = 'solid' | 'subtle' | 'surface' | 'outline' | 'ghost' | 'plain';
8
+ export interface ComponentColorRoles {
9
+ filled: string;
10
+ hover: string;
11
+ active: string;
12
+ contrast: string;
13
+ light: string;
14
+ lightHover: string;
15
+ lightActive: string;
16
+ outline: string;
17
+ outlineHover: string;
18
+ foreground: string;
19
+ }
20
+ export interface ComponentVariantColorRoles {
21
+ background: string;
22
+ hover: string;
23
+ active: string;
24
+ color: string;
25
+ border: string;
26
+ borderHover: string;
27
+ borderActive: string;
28
+ }
29
+ export interface ComponentContrastColorOptions {
30
+ autoContrast?: boolean;
31
+ }
32
+ export interface ComponentVariantColorOptions extends ComponentContrastColorOptions {
33
+ color: ComponentColorValue | undefined;
34
+ variant: ComponentColorVariant | undefined;
35
+ defaultColor?: ComponentColorValue;
36
+ }
37
+ export type ParsedComponentColor = {
38
+ kind: 'empty';
39
+ } | {
40
+ kind: 'preset';
41
+ color: ComponentColor;
42
+ } | {
43
+ kind: 'primary';
44
+ } | {
45
+ kind: 'shade';
46
+ color: ComponentColor;
47
+ shade: ComponentColorShade;
48
+ } | {
49
+ kind: 'custom';
50
+ value: string;
51
+ } | {
52
+ kind: 'invalid';
53
+ value: string;
54
+ };
55
+ export declare function isComponentPresetColor(color: ComponentColorValue | undefined): color is ComponentColor;
56
+ export declare function parseComponentColor(color: ComponentColorValue | undefined): ParsedComponentColor;
57
+ export declare function getComponentColorValue(color: ComponentColorValue | undefined): string | undefined;
58
+ export declare function getComponentContrastColor(color: ComponentColorValue | undefined, options?: ComponentContrastColorOptions): string;
59
+ export declare function getComponentColorRoles(color: ComponentColorValue | undefined): ComponentColorRoles | undefined;
60
+ export declare function getComponentVariantColorRoles({ color, variant, defaultColor, autoContrast, }: ComponentVariantColorOptions): ComponentVariantColorRoles | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ropav",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@11.10.0",
6
6
  "engines": {
@@ -137,6 +137,10 @@
137
137
  "types": "./dist/components/textarea/index.d.ts",
138
138
  "import": "./dist/components/textarea/index.js"
139
139
  },
140
+ "./toast": {
141
+ "types": "./dist/components/toast/index.d.ts",
142
+ "import": "./dist/components/toast/index.js"
143
+ },
140
144
  "./tooltip": {
141
145
  "types": "./dist/components/tooltip/index.d.ts",
142
146
  "import": "./dist/components/tooltip/index.js"
@@ -155,13 +159,17 @@
155
159
  "format": "oxfmt",
156
160
  "format:check": "oxfmt --check",
157
161
  "test": "vitest run --project=unit",
158
- "test:exports": "node scripts/check-exports.mjs",
162
+ "test:consumer-types": "pnpm run test:package",
163
+ "test:consumer-types:built": "tsc -p tests/fixtures/consumer-types/tsconfig.bundler.json && tsc -p tests/fixtures/consumer-types/tsconfig.nodenext.json",
164
+ "test:exports": "pnpm run test:package",
165
+ "test:exports:built": "node scripts/check-exports.mjs",
166
+ "test:package": "pnpm run build && pnpm run test:exports:built && pnpm run test:consumer-types:built",
159
167
  "test:watch": "vitest --project=unit",
160
168
  "test:typecheck": "vitest run --project=unit --typecheck",
161
169
  "test:storybook": "vitest run --project=storybook",
162
170
  "test:all": "pnpm run tokens:check && pnpm test && pnpm test:storybook",
163
171
  "build": "pnpm run tokens:build && pnpm run tokens:check && pnpm run typecheck && vite build",
164
- "prepublishOnly": "pnpm run build && pnpm run tokens:check",
172
+ "prepublishOnly": "pnpm run test:package",
165
173
  "preview": "vite preview",
166
174
  "storybook": "pnpm run tokens:build && storybook dev -p 6006 --no-open",
167
175
  "build-storybook": "pnpm run tokens:build && pnpm run tokens:check && pnpm run typecheck:storybook && storybook build",
@@ -174,27 +182,27 @@
174
182
  },
175
183
  "devDependencies": {
176
184
  "@iconify-json/lucide": "^1.2.116",
177
- "@storybook/addon-themes": "^10.4.6",
178
- "@storybook/addon-vitest": "^10.4.6",
179
- "@storybook/vue3-vite": "^10.4.6",
185
+ "@storybook/addon-themes": "^10.5.0",
186
+ "@storybook/addon-vitest": "^10.5.0",
187
+ "@storybook/vue3-vite": "^10.5.0",
180
188
  "@types/node": "^26.1.1",
181
189
  "@vitejs/plugin-vue": "^6.0.7",
182
190
  "@vitest/browser-playwright": "^4.1.10",
183
191
  "@vue/compiler-vapor": "3.6.0-beta.17",
184
192
  "@vue/tsconfig": "^0.9.1",
185
193
  "bumpp": "^11.1.0",
186
- "conventional-changelog": "^8.0.1",
194
+ "conventional-changelog": "^8.1.0",
187
195
  "conventional-changelog-conventionalcommits": "^10.2.1",
188
196
  "jsdom": "^29.1.1",
189
197
  "oxfmt": "^0.58.0",
190
198
  "oxlint": "^1.73.0",
191
199
  "playwright": "^1.61.1",
192
200
  "sass-embedded": "^1.100.0",
193
- "storybook": "^10.4.6",
201
+ "storybook": "^10.5.0",
194
202
  "style-dictionary": "5.5.0",
195
203
  "typescript": "~6.0.3",
196
204
  "unplugin-icons": "^23.0.1",
197
- "vite": "^8.1.3",
205
+ "vite": "^8.1.4",
198
206
  "vite-plugin-dts": "^5.0.3",
199
207
  "vitest": "^4.1.10",
200
208
  "vue": "3.6.0-beta.17",
@@ -1,4 +0,0 @@
1
- import { Ref } from 'vue';
2
- type EndpointTooltipKind = 'lower' | 'upper';
3
- export declare function useRangeSliderTooltipTransition(root: Ref<HTMLElement | null>, tooltipsOverlapping: Ref<boolean>, value: Ref<readonly [number, number]>, activeThumb: Ref<EndpointTooltipKind | undefined>): void;
4
- export {};