ropav 0.1.1 → 0.1.3

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 (56) hide show
  1. package/README.md +79 -0
  2. package/dist/accordion.css +5 -16
  3. package/dist/accordion.js +11 -28
  4. package/dist/button-link.js +2 -2
  5. package/dist/button.js +2 -2
  6. package/dist/collapse.js +1 -4
  7. package/dist/components/accordion/index.d.ts +1 -1
  8. package/dist/components/accordion/types.d.ts +0 -4
  9. package/dist/components/dialog/dialog-core.d.ts +4 -2
  10. package/dist/components/scroll-area/index.d.ts +3 -0
  11. package/dist/components/scroll-area/index.js +3 -0
  12. package/dist/components/scroll-area/scroll-area.d.ts +42 -0
  13. package/dist/components/scroll-area/scrollAreaCore.d.ts +25 -0
  14. package/dist/components/scroll-area/types.d.ts +33 -0
  15. package/dist/components/scroll-area/useScrollArea.d.ts +54 -0
  16. package/dist/components/scroll-area/useScrollAreaControls.d.ts +21 -0
  17. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +35 -0
  18. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +17 -0
  19. package/dist/components/scroll-area/useScrollAreaPresentation.d.ts +49 -0
  20. package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +27 -0
  21. package/dist/components/select/useSelect.d.ts +7 -5
  22. package/dist/components/select/useSelectNativeControl.d.ts +9 -0
  23. package/dist/components/select/useSelectNativeValue.d.ts +15 -0
  24. package/dist/components/slider/index.d.ts +1 -1
  25. package/dist/components/slider/range-slider.d.ts +7 -11
  26. package/dist/components/slider/slider.d.ts +7 -14
  27. package/dist/components/slider/sliderCore.d.ts +7 -4
  28. package/dist/components/slider/types.d.ts +46 -4
  29. package/dist/components/slider/useRangeSlider.d.ts +2 -1
  30. package/dist/components/slider/useSlider.d.ts +13 -3
  31. package/dist/dialog.js +23 -6
  32. package/dist/field.js +1 -1
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.js +3 -1
  35. package/dist/input.js +1 -1
  36. package/dist/modal.css +28 -29
  37. package/dist/modal.js +11 -12
  38. package/dist/number-input.css +3 -6
  39. package/dist/popover.js +1 -4
  40. package/dist/progress.js +1 -1
  41. package/dist/scroll-area.css +131 -0
  42. package/dist/scroll-area.js +696 -0
  43. package/dist/scroll-area2.js +23 -0
  44. package/dist/select.css +47 -45
  45. package/dist/select.js +168 -130
  46. package/dist/slider.css +256 -166
  47. package/dist/slider.js +334 -140
  48. package/dist/switch.css +17 -17
  49. package/dist/switch.js +10 -5
  50. package/dist/tabs.css +23 -18
  51. package/dist/tabs.js +16 -14
  52. package/dist/tooltip.js +1 -4
  53. package/dist/unplugin-icons.d.ts +5 -0
  54. package/dist/unplugin-icons.js +40 -0
  55. package/docs/public-styles-api.md +6 -3
  56. package/package.json +55 -35
@@ -0,0 +1,49 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ import { ScrollAreaController } from './useScrollArea.js';
3
+ import { ScrollAreaOrientation, ScrollAreaProps, ScrollAreaSlotProps } from './types.js';
4
+ export declare function useScrollAreaPresentation(props: Readonly<ScrollAreaProps>, scrollArea: ScrollAreaController): {
5
+ rootAttrs: import('vue').ComputedRef<Record<string, unknown>>;
6
+ viewportAttrs: import('vue').ComputedRef<HTMLAttributes>;
7
+ contentAttrs: import('vue').ComputedRef<Pick<HTMLAttributes, "class" | "style">>;
8
+ horizontalScrollbarAttrs: import('vue').ComputedRef<{
9
+ role: string;
10
+ tabindex: number;
11
+ 'aria-controls': string | undefined;
12
+ 'aria-orientation': ScrollAreaOrientation;
13
+ 'aria-valuemin': number;
14
+ 'aria-valuemax': number;
15
+ 'aria-valuenow': number;
16
+ 'aria-disabled': true | undefined;
17
+ 'aria-hidden': true | undefined;
18
+ 'data-orientation': string;
19
+ 'data-active': "" | undefined;
20
+ 'data-visible': "" | undefined;
21
+ class?: import('vue').ClassValue;
22
+ style?: import('vue').StyleValue;
23
+ }>;
24
+ verticalScrollbarAttrs: import('vue').ComputedRef<{
25
+ role: string;
26
+ tabindex: number;
27
+ 'aria-controls': string | undefined;
28
+ 'aria-orientation': ScrollAreaOrientation;
29
+ 'aria-valuemin': number;
30
+ 'aria-valuemax': number;
31
+ 'aria-valuenow': number;
32
+ 'aria-disabled': true | undefined;
33
+ 'aria-hidden': true | undefined;
34
+ 'data-orientation': string;
35
+ 'data-active': "" | undefined;
36
+ 'data-visible': "" | undefined;
37
+ class?: import('vue').ClassValue;
38
+ style?: import('vue').StyleValue;
39
+ }>;
40
+ horizontalThumbAttrs: import('vue').ComputedRef<Pick<HTMLAttributes, "class" | "style">>;
41
+ verticalThumbAttrs: import('vue').ComputedRef<Pick<HTMLAttributes, "class" | "style">>;
42
+ cornerAttrs: import('vue').ComputedRef<{
43
+ 'aria-hidden': boolean;
44
+ 'data-visible': "" | undefined;
45
+ class?: import('vue').ClassValue;
46
+ style?: import('vue').StyleValue;
47
+ }>;
48
+ slotProps: import('vue').ComputedRef<ScrollAreaSlotProps>;
49
+ };
@@ -0,0 +1,27 @@
1
+ import { Ref } from 'vue';
2
+ import { ScrollAxis } from './scrollAreaCore.js';
3
+ import { ScrollAreaProps } from './types.js';
4
+ interface UseScrollAreaVisibilityOptions {
5
+ props: Readonly<ScrollAreaProps>;
6
+ rootRef: Ref<HTMLElement | null>;
7
+ horizontalEnabled: Readonly<Ref<boolean>>;
8
+ verticalEnabled: Readonly<Ref<boolean>>;
9
+ overflowX: () => boolean;
10
+ overflowY: () => boolean;
11
+ }
12
+ export declare function useScrollAreaVisibility(options: UseScrollAreaVisibilityOptions): {
13
+ renderHorizontalScrollbar: import('vue').ComputedRef<boolean>;
14
+ renderVerticalScrollbar: import('vue').ComputedRef<boolean>;
15
+ horizontalScrollbarActive: import('vue').ComputedRef<boolean>;
16
+ verticalScrollbarActive: import('vue').ComputedRef<boolean>;
17
+ horizontalScrollbarVisible: import('vue').ComputedRef<boolean>;
18
+ verticalScrollbarVisible: import('vue').ComputedRef<boolean>;
19
+ showDuringScroll: () => void;
20
+ setDraggingAxis: (axis: ScrollAxis | null) => void;
21
+ onPointerenter: () => void;
22
+ onPointerleave: () => void;
23
+ onFocusin: () => void;
24
+ onFocusout: (event: FocusEvent) => void;
25
+ };
26
+ export type ScrollAreaVisibilityController = ReturnType<typeof useScrollAreaVisibility>;
27
+ export {};
@@ -1,15 +1,16 @@
1
+ import { Ref } from 'vue';
1
2
  import { SelectOption, SelectProps } from './types.js';
2
3
  type SelectValue = string | number | null;
3
4
  type SelectBehaviorProps = Omit<SelectProps, 'classNames' | 'styles' | 'inputAttrs'>;
4
- export declare function useSelect(props: Readonly<SelectBehaviorProps>, emitUpdate: (value: SelectValue) => void, getValue?: () => SelectValue): {
5
- selectRef: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
6
- triggerRef: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
7
- isOpen: import('vue').Ref<boolean, boolean>;
5
+ export declare function useSelect(props: Readonly<SelectBehaviorProps>, emitUpdate: (value: SelectValue) => void, getValue?: () => SelectValue, triggerRef?: Ref<HTMLElement | null>): {
6
+ selectRef: Ref<HTMLElement | null, HTMLElement | null>;
7
+ triggerRef: Ref<HTMLElement | null, HTMLElement | null>;
8
+ isOpen: Ref<boolean, boolean>;
8
9
  selectId: string;
9
10
  listboxId: string;
10
11
  control: import('../../composables/useControlState.js').ControlState;
11
12
  visibleOptions: import('vue').ComputedRef<SelectOption[]>;
12
- focusedIndex: import('vue').Ref<number, number>;
13
+ focusedIndex: Ref<number, number>;
13
14
  activeDescendantId: import('vue').ComputedRef<string | undefined>;
14
15
  rootClass: import('vue').ComputedRef<string[]>;
15
16
  hasValue: import('vue').ComputedRef<boolean>;
@@ -20,6 +21,7 @@ export declare function useSelect(props: Readonly<SelectBehaviorProps>, emitUpda
20
21
  selectOption: (option: SelectOption) => void;
21
22
  clearSelection: () => void;
22
23
  onOptionMouseenter: (option: SelectOption, index: number) => void;
24
+ onFocusout: (event: FocusEvent) => void;
23
25
  onTriggerKeydown: (e: KeyboardEvent) => void;
24
26
  };
25
27
  export {};
@@ -0,0 +1,9 @@
1
+ import { Ref, SelectHTMLAttributes } from 'vue';
2
+ import { SelectProps } from './types.js';
3
+ import { SelectValue } from './useSelectNativeValue.js';
4
+ export declare function useSelectNativeControl(props: Readonly<SelectProps>, emitUpdate: (value: SelectValue) => void, triggerRef: Readonly<Ref<HTMLElement | null>>): {
5
+ nativeSelectRef: Ref<HTMLSelectElement | null, HTMLSelectElement | null>;
6
+ selectedValue: import('vue').ComputedRef<SelectValue>;
7
+ nativeInputAttrs: import('vue').ComputedRef<SelectHTMLAttributes>;
8
+ requestValueUpdate: (value: SelectValue) => void;
9
+ };
@@ -0,0 +1,15 @@
1
+ import { SelectProps } from './types.js';
2
+ export type SelectValue = string | number | null;
3
+ export declare function useSelectNativeValue(props: Readonly<SelectProps>, emitUpdate: (value: SelectValue) => void): {
4
+ nativeSelectRef: import('vue').Ref<HTMLSelectElement | null, HTMLSelectElement | null>;
5
+ controllable: {
6
+ initialValue: SelectValue;
7
+ isControlled: import('vue').ComputedRef<boolean>;
8
+ value: import('vue').ComputedRef<SelectValue>;
9
+ setValue: (nextValue: SelectValue) => void;
10
+ resetValue: (nextValue?: SelectValue) => void;
11
+ };
12
+ getNativeValue: (select: HTMLSelectElement) => string | number | null;
13
+ syncNativeSelection: (value: SelectValue) => void;
14
+ requestValueUpdate: (value: SelectValue) => void;
15
+ };
@@ -1,4 +1,4 @@
1
1
  export { default as Slider } from './slider.js';
2
2
  export { default as RangeSlider } from './range-slider.js';
3
3
  export { rangeSliderParts, sliderColors, sliderOrientations, sliderParts, sliderSizes, } from './types.js';
4
- export type { RangeSliderAriaValueText, RangeSliderEndpointValueText, RangeSliderInputAttrs, RangeSliderPart, RangeSliderProps, RangeSliderThumb, RangeSliderValue, RangeSliderValidationMessage, SliderColor, SliderInputAttrs, SliderMark, SliderMarkColor, SliderMarkInput, SliderOrientation, SliderPart, SliderProps, SliderPresetColor, SliderSize, SliderThumbStyle, SliderTooltip, SliderTooltipMode, SliderTooltipOptions, SliderValueFormatter, } from './types.js';
4
+ export type { RangeSliderAriaValueText, RangeSliderEndpointValueText, RangeSliderInputAttrs, RangeSliderPart, RangeSliderProps, RangeSliderThumb, RangeSliderThumbOptions, RangeSliderTrackSlotProps, RangeSliderTooltip, RangeSliderTooltipOptions, RangeSliderValue, RangeSliderValidationMessage, SliderColor, SliderInputAttrs, SliderMark, SliderMarkColor, SliderMarkInput, SliderOrientation, SliderPart, SliderProps, SliderPresetColor, SliderSize, SliderThumb, SliderThumbMode, SliderThumbOptions, SliderTrackSlotProps, SliderTooltip, SliderTooltipAnchor, SliderTooltipMode, SliderTooltipOptions, SliderTooltipSlotProps, SliderValueFormatter, } from './types.js';
@@ -1,4 +1,4 @@
1
- import { RangeSliderProps, RangeSliderValue } from './types.js';
1
+ import { RangeSliderProps, RangeSliderTrackSlotProps } from './types.js';
2
2
  declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
3
  props: import('vue').PublicProps & __VLS_PrettifyLocal<RangeSliderProps & {
4
4
  "onUpdate:modelValue"?: ((value: [number, number]) => any) | undefined;
@@ -11,21 +11,17 @@ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup
11
11
  }>) => void;
12
12
  attrs: any;
13
13
  slots: {
14
- default?: (props: {}) => any;
15
- } & {
16
- value?: (props: {
17
- value: RangeSliderValue;
18
- formattedValue: [string | number, string | number];
19
- percent: RangeSliderValue;
20
- }) => any;
21
- } & {
22
- thumb?: (props: {
14
+ default?(): unknown;
15
+ value?(props: Pick<RangeSliderTrackSlotProps, "value" | "formattedValue" | "percent">): unknown;
16
+ 'track-underlay'?(props: RangeSliderTrackSlotProps): unknown;
17
+ 'track-overlay'?(props: RangeSliderTrackSlotProps): unknown;
18
+ thumb?(props: {
23
19
  thumb: "lower" | "upper";
24
20
  index: number;
25
21
  value: number;
26
22
  formattedValue: string | number;
27
23
  percent: number;
28
- }) => any;
24
+ }): unknown;
29
25
  };
30
26
  emit: (evt: "update:modelValue", value: [number, number]) => void;
31
27
  }>) => import('vue').VNode & {
@@ -1,4 +1,4 @@
1
- import { SliderProps } from './types.js';
1
+ import { SliderProps, SliderTooltipSlotProps, SliderTrackSlotProps } from './types.js';
2
2
  declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
3
  props: import('vue').PublicProps & __VLS_PrettifyLocal<SliderProps & {
4
4
  "onUpdate:modelValue"?: ((value: number) => any) | undefined;
@@ -11,19 +11,12 @@ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup
11
11
  }>) => void;
12
12
  attrs: any;
13
13
  slots: {
14
- default?: (props: {}) => any;
15
- } & {
16
- value?: (props: {
17
- value: number;
18
- formattedValue: string | number;
19
- percent: number;
20
- }) => any;
21
- } & {
22
- thumb?: (props: {
23
- value: number;
24
- formattedValue: string | number;
25
- percent: number;
26
- }) => any;
14
+ default?(): unknown;
15
+ value?(props: Pick<SliderTrackSlotProps, "value" | "formattedValue" | "percent">): unknown;
16
+ 'track-underlay'?(props: SliderTrackSlotProps): unknown;
17
+ 'track-overlay'?(props: SliderTrackSlotProps): unknown;
18
+ thumb?(props: Pick<SliderTrackSlotProps, "value" | "formattedValue" | "percent">): unknown;
19
+ 'tooltip-content'?(props: SliderTooltipSlotProps): unknown;
27
20
  };
28
21
  emit: (evt: "update:modelValue", value: number) => void;
29
22
  }>) => import('vue').VNode & {
@@ -1,5 +1,5 @@
1
1
  import { CSSProperties } from 'vue';
2
- import { SliderMarkInput, SliderProps, SliderThumbStyle, SliderTooltipMode, SliderTooltipOptions } from './types.js';
2
+ import { RangeSliderTooltip, RangeSliderThumbOptions, SliderMarkInput, SliderProps, SliderThumb, SliderThumbMode, SliderThumbOptions, SliderTooltip, SliderTooltipAnchor, SliderTooltipMode, SliderTooltipOptions } from './types.js';
3
3
  export interface SliderBounds {
4
4
  min: number;
5
5
  max: number;
@@ -19,7 +19,9 @@ export declare function normalizeSliderStep(step: number | 'any'): number | "any
19
19
  export declare function normalizeSliderValue(value: number, min: number, max: number, step: number | 'any'): number;
20
20
  export declare function getSliderValuePercent(value: number, min: number, max: number): number;
21
21
  export declare function setSliderStyleValue(style: CSSProperties, property: `--${string}`, value: string | undefined): void;
22
- export declare function applySliderThumbStyle(style: CSSProperties, thumbStyle: SliderThumbStyle | undefined, properties: SliderThumbStyleProperties): void;
22
+ export declare function applySliderThumbStyle(style: CSSProperties, thumb: RangeSliderThumbOptions | undefined, properties: SliderThumbStyleProperties): void;
23
+ export declare function getSliderThumbOptions(thumb: SliderThumb): SliderThumbOptions;
24
+ export declare function getSliderThumbMode(thumb: SliderThumb): SliderThumbMode | false;
23
25
  export declare function createSliderMarkItems(marks: SliderMarkInput[] | undefined, min: number, max: number, isFilled: (value: number, percent: number) => boolean, properties: SliderMarkStyleProperties): {
24
26
  key: string;
25
27
  value: number;
@@ -30,6 +32,7 @@ export declare function createSliderMarkItems(marks: SliderMarkInput[] | undefin
30
32
  }[];
31
33
  export declare function getFormattedSliderValue(value: number, formatter: SliderProps['formatValue']): string | number;
32
34
  export declare function getSliderAriaValueText(value: number, ariaValueText: string | SliderProps['formatValue'] | undefined, formatter: SliderProps['formatValue']): string | undefined;
33
- export declare function getSliderTooltipOptions(tooltip: NonNullable<SliderProps['tooltip']>): SliderTooltipOptions;
34
- export declare function getSliderTooltipMode(tooltip: NonNullable<SliderProps['tooltip']>): SliderTooltipMode | false;
35
+ export declare function getSliderTooltipOptions(tooltip: SliderTooltip | RangeSliderTooltip): SliderTooltipOptions | Exclude<RangeSliderTooltip, false | SliderTooltipMode>;
36
+ export declare function getSliderTooltipMode(tooltip: SliderTooltip | RangeSliderTooltip): SliderTooltipMode | false;
37
+ export declare function getSliderTooltipAnchor(tooltip: SliderTooltip): SliderTooltipAnchor;
35
38
  export {};
@@ -14,6 +14,7 @@ export type SliderColor = ComponentColorValue;
14
14
  export type SliderSize = (typeof sliderSizes)[number];
15
15
  export type SliderOrientation = (typeof sliderOrientations)[number];
16
16
  export type SliderValueFormatter = (value: number) => string | number;
17
+ export type SliderThumbMode = 'always' | 'interaction';
17
18
  export type RangeSliderValue = [number, number];
18
19
  export type RangeSliderThumb = 'lower' | 'upper';
19
20
  export type SliderInputAttrs = InputHTMLAttributes;
@@ -22,10 +23,44 @@ export type RangeSliderEndpointValueText = string | SliderValueFormatter;
22
23
  export type RangeSliderAriaValueText = RangeSliderEndpointValueText | [RangeSliderEndpointValueText, RangeSliderEndpointValueText];
23
24
  export type RangeSliderValidationMessage = string | [string | undefined, string | undefined];
24
25
  export type SliderTooltipMode = 'hover' | 'always';
25
- export type SliderTooltipOptions = Pick<TooltipProps, 'id' | 'placement' | 'color' | 'offset' | 'openDelay' | 'arrow'> & {
26
+ type SliderTooltipBaseOptions = Pick<TooltipProps, 'id' | 'placement' | 'color' | 'offset' | 'openDelay' | 'arrow'>;
27
+ export type SliderTooltipAnchor = 'thumb' | 'pointer';
28
+ export type SliderTooltipOptions = (SliderTooltipBaseOptions & {
29
+ anchor?: 'thumb';
30
+ mode?: SliderTooltipMode;
31
+ }) | (SliderTooltipBaseOptions & {
32
+ anchor: 'pointer';
33
+ mode?: 'hover';
34
+ });
35
+ export type RangeSliderTooltipOptions = SliderTooltipBaseOptions & {
26
36
  mode?: SliderTooltipMode;
27
37
  };
28
38
  export type SliderTooltip = false | SliderTooltipMode | SliderTooltipOptions;
39
+ export type RangeSliderTooltip = false | SliderTooltipMode | RangeSliderTooltipOptions;
40
+ export interface SliderTooltipSlotProps {
41
+ value: number;
42
+ formattedValue: string | number;
43
+ percent: number;
44
+ anchor: SliderTooltipAnchor;
45
+ }
46
+ export interface SliderTrackSlotProps {
47
+ value: number;
48
+ formattedValue: string | number;
49
+ percent: number;
50
+ min: number;
51
+ max: number;
52
+ orientation: SliderOrientation;
53
+ getPercent: (value: number) => number;
54
+ }
55
+ export interface RangeSliderTrackSlotProps {
56
+ value: RangeSliderValue;
57
+ formattedValue: [string | number, string | number];
58
+ percent: RangeSliderValue;
59
+ min: number;
60
+ max: number;
61
+ orientation: SliderOrientation;
62
+ getPercent: (value: number) => number;
63
+ }
29
64
  export type SliderMarkColor = SliderColor;
30
65
  export interface SliderMark {
31
66
  value: number;
@@ -34,11 +69,15 @@ export interface SliderMark {
34
69
  hidden?: boolean;
35
70
  }
36
71
  export type SliderMarkInput = number | SliderMark;
37
- export interface SliderThumbStyle {
72
+ export interface RangeSliderThumbOptions {
38
73
  size?: number | string;
39
74
  border?: number | string;
40
75
  padding?: number | string;
41
76
  }
77
+ export interface SliderThumbOptions extends RangeSliderThumbOptions {
78
+ visibility?: SliderThumbMode;
79
+ }
80
+ export type SliderThumb = false | SliderThumbMode | SliderThumbOptions;
42
81
  export interface SliderProps extends StylesApiProps<SliderPart> {
43
82
  id?: string;
44
83
  name?: string;
@@ -49,7 +88,7 @@ export interface SliderProps extends StylesApiProps<SliderPart> {
49
88
  max?: number;
50
89
  step?: number | 'any';
51
90
  marks?: SliderMarkInput[];
52
- thumbStyle?: SliderThumbStyle;
91
+ thumb?: SliderThumb;
53
92
  tooltip?: SliderTooltip;
54
93
  formatValue?: SliderValueFormatter;
55
94
  color?: SliderColor;
@@ -65,13 +104,16 @@ export interface SliderProps extends StylesApiProps<SliderPart> {
65
104
  inputAttrs?: SliderInputAttrs;
66
105
  validationMessage?: string;
67
106
  }
68
- export interface RangeSliderProps extends Omit<SliderProps, 'modelValue' | 'defaultValue' | 'name' | 'ariaLabel' | 'ariaValueText' | 'inputAttrs' | 'validationMessage' | 'classNames' | 'styles'>, StylesApiProps<RangeSliderPart> {
107
+ export interface RangeSliderProps extends Omit<SliderProps, 'modelValue' | 'defaultValue' | 'name' | 'ariaLabel' | 'ariaValueText' | 'inputAttrs' | 'validationMessage' | 'thumb' | 'tooltip' | 'classNames' | 'styles'>, StylesApiProps<RangeSliderPart> {
69
108
  modelValue?: RangeSliderValue;
70
109
  defaultValue?: RangeSliderValue;
71
110
  minRange?: number;
111
+ thumb?: RangeSliderThumbOptions;
112
+ tooltip?: RangeSliderTooltip;
72
113
  name?: string | [string, string];
73
114
  ariaLabel?: [string, string];
74
115
  ariaValueText?: RangeSliderAriaValueText;
75
116
  inputAttrs?: RangeSliderInputAttrs;
76
117
  validationMessage?: RangeSliderValidationMessage;
77
118
  }
119
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { CSSProperties } from 'vue';
2
- import { RangeSliderProps, RangeSliderThumb, RangeSliderValue } from './types.js';
2
+ import { RangeSliderProps, RangeSliderTrackSlotProps, RangeSliderThumb, RangeSliderValue } from './types.js';
3
3
  type RangeSliderStateProps = Readonly<RangeSliderProps & {
4
4
  min: number;
5
5
  max: number;
@@ -33,6 +33,7 @@ export declare function useRangeSlider(props: RangeSliderStateProps, emitUpdate:
33
33
  filled: boolean;
34
34
  style: CSSProperties;
35
35
  }[]>;
36
+ trackSlotProps: import('vue').ComputedRef<RangeSliderTrackSlotProps>;
36
37
  trackStyle: import('vue').ComputedRef<CSSProperties>;
37
38
  activeThumb: import('vue').Ref<RangeSliderThumb | undefined, RangeSliderThumb | undefined>;
38
39
  tooltipVisible: import('vue').ComputedRef<boolean>;
@@ -1,11 +1,12 @@
1
1
  import { CSSProperties } from 'vue';
2
- import { SliderProps } from './types.js';
2
+ import { SliderProps, SliderTrackSlotProps } from './types.js';
3
3
  export { getSliderValuePercent, normalizeSliderBounds, normalizeSliderStep, normalizeSliderValue, } from './sliderCore.js';
4
4
  type SliderStateProps = Readonly<SliderProps & {
5
5
  min: number;
6
6
  max: number;
7
7
  step: number | 'any';
8
8
  tooltip: NonNullable<SliderProps['tooltip']>;
9
+ thumb: NonNullable<SliderProps['thumb']>;
9
10
  orientation: NonNullable<SliderProps['orientation']>;
10
11
  }>;
11
12
  export declare function useSlider(props: SliderStateProps, emitUpdate: (value: number) => void, getValue?: () => number): {
@@ -26,20 +27,29 @@ export declare function useSlider(props: SliderStateProps, emitUpdate: (value: n
26
27
  filled: boolean;
27
28
  style: CSSProperties;
28
29
  }[]>;
30
+ thumbMode: import('vue').ComputedRef<false | import('./types.js').SliderThumbMode>;
31
+ trackSlotProps: import('vue').ComputedRef<SliderTrackSlotProps>;
29
32
  trackStyle: import('vue').ComputedRef<CSSProperties>;
33
+ trackHovered: import('vue').Ref<boolean, boolean>;
34
+ dragging: import('vue').Ref<boolean, boolean>;
30
35
  tooltipVisible: import('vue').ComputedRef<boolean>;
31
36
  tooltipOpen: import('vue').ComputedRef<boolean>;
37
+ tooltipAnchor: import('vue').ComputedRef<import('./types.js').SliderTooltipAnchor>;
32
38
  tooltipPlacement: import('vue').ComputedRef<import('../tooltip/index.js').TooltipPlacement>;
33
39
  tooltipId: import('vue').ComputedRef<string | undefined>;
34
40
  tooltipColor: import('vue').ComputedRef<import('../../utils/componentColors.js').ComponentColorValue | undefined>;
35
41
  tooltipOffset: import('vue').ComputedRef<import('../floating/index.js').FloatingOffset | undefined>;
36
42
  tooltipOpenDelay: import('vue').ComputedRef<number>;
37
43
  tooltipArrow: import('vue').ComputedRef<boolean>;
44
+ tooltipValue: import('vue').ComputedRef<number>;
45
+ tooltipPercent: import('vue').ComputedRef<number>;
46
+ tooltipFormattedValue: import('vue').ComputedRef<string | number>;
38
47
  tooltipContent: import('vue').ComputedRef<string>;
39
48
  onInput: (e: Event) => void;
40
49
  onTooltipPointerDown: (event: PointerEvent) => void;
41
- onTooltipMouseEnter: () => void;
42
- onTooltipMouseLeave: () => void;
50
+ onTooltipPointerMove: (event: PointerEvent) => void;
51
+ onTooltipTrackEnter: (event: PointerEvent) => void;
52
+ onTooltipTrackLeave: () => void;
43
53
  onTooltipFocusIn: () => void;
44
54
  onTooltipFocusOut: () => void;
45
55
  onTooltipKeydown: (event: KeyboardEvent) => void;
package/dist/dialog.js CHANGED
@@ -11,8 +11,18 @@ function resolveDialogCloseReason(reason) {
11
11
  function toDialogHTMLElement(value) {
12
12
  if (typeof HTMLElement !== "undefined" && value instanceof HTMLElement) return value;
13
13
  if (value == null || typeof Element !== "undefined" && value instanceof Element) return null;
14
- const element = value.$el;
15
- return element instanceof HTMLElement ? element : null;
14
+ const vdomElement = value.$el;
15
+ if (vdomElement instanceof HTMLElement) return vdomElement;
16
+ const vaporBlock = value.block;
17
+ return vaporBlock instanceof HTMLElement ? vaporBlock : null;
18
+ }
19
+ function resolveDialogHTMLElementRef(value, fallbackId, resolve) {
20
+ const element = toDialogHTMLElement(value) ?? (typeof document !== "undefined" ? document.getElementById(fallbackId) : null);
21
+ resolve(element);
22
+ if (element || !value) return;
23
+ nextTick(() => {
24
+ resolve(toDialogHTMLElement(value) ?? (typeof document !== "undefined" ? document.getElementById(fallbackId) : null));
25
+ });
16
26
  }
17
27
  function createDialogEvent(type, detail, originalEvent) {
18
28
  const target = originalEvent.target;
@@ -118,7 +128,7 @@ var dialog_content_default = /* @__PURE__ */ defineVaporComponent({
118
128
  delayInitialFocus: props.focusTrapOptions.delayInitialFocus ?? false
119
129
  });
120
130
  function setElement(value) {
121
- root.setContent(toDialogHTMLElement(value), id.value);
131
+ resolveDialogHTMLElementRef(value, id.value, (element) => root.setContent(element, id.value));
122
132
  }
123
133
  function onDocumentKeydown(event) {
124
134
  if (event.key !== "Escape" || event.defaultPrevented || !root.closeOnEscape.value || !root.layer.isTopLayer()) return;
@@ -238,14 +248,19 @@ var dialog_overlay_default = /* @__PURE__ */ defineVaporComponent({
238
248
  const attrs = useAttrs();
239
249
  const root = useRequiredInject(dialogRootKey, "RpDialogOverlay");
240
250
  const element = ref(null);
251
+ const generatedId = `${useId()}-overlay`;
252
+ const id = computed(() => typeof attrs.id === "string" ? attrs.id : generatedId);
241
253
  const shouldRender = computed(() => props.forceMount || root.isOpen.value);
242
254
  const rootAttrs = computed(() => mergeProps(attrs, {
255
+ id: id.value,
243
256
  "aria-hidden": "true",
244
257
  "data-state": root.isOpen.value ? "open" : "closed",
245
258
  style: { zIndex: root.layer.zIndex.value - 1 }
246
259
  }));
247
260
  function setElement(value) {
248
- element.value = toDialogHTMLElement(value);
261
+ resolveDialogHTMLElementRef(value, id.value, (resolved) => {
262
+ element.value = resolved;
263
+ });
249
264
  }
250
265
  useOverlayLayerBranch(element, {
251
266
  focus: false,
@@ -484,15 +499,17 @@ var dialog_trigger_default = /* @__PURE__ */ defineVaporComponent({
484
499
  const props = __props;
485
500
  const attrs = useAttrs();
486
501
  const root = useRequiredInject(dialogRootKey, "RpDialogTrigger");
502
+ const generatedId = `${useId()}-trigger`;
503
+ const id = computed(() => props.id ?? generatedId);
487
504
  function setElement(value) {
488
- root.setTrigger(toDialogHTMLElement(value));
505
+ resolveDialogHTMLElementRef(value, id.value, root.setTrigger);
489
506
  }
490
507
  function onClick(event) {
491
508
  if (event.defaultPrevented || props.disabled) return;
492
509
  root.toggle();
493
510
  }
494
511
  const rootAttrs = computed(() => mergeProps(attrs, {
495
- id: props.id,
512
+ id: id.value,
496
513
  type: props.as === "button" ? "button" : void 0,
497
514
  disabled: props.as === "button" ? props.disabled || void 0 : void 0,
498
515
  "aria-controls": root.contentId.value,
package/dist/field.js CHANGED
@@ -109,7 +109,7 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
109
109
  const n20 = t4();
110
110
  const n10 = child(n20, 1);
111
111
  renderEffect(() => setDynamicProps(n20, [rootAttrs.value]));
112
- setInsertionState(n20, 0, 0);
112
+ setInsertionState(n20, 0);
113
113
  createIf(() => unref(hasLabel), () => {
114
114
  const n8 = t2();
115
115
  renderEffect(() => setDynamicProps(n8, [
package/dist/index.d.ts CHANGED
@@ -26,6 +26,7 @@ export * from './components/overlay/index.js';
26
26
  export * from './components/popover/index.js';
27
27
  export * from './components/progress/index.js';
28
28
  export * from './components/radio/index.js';
29
+ export * from './components/scroll-area/index.js';
29
30
  export * from './components/select/index.js';
30
31
  export * from './components/slider/index.js';
31
32
  export * from './components/switch/index.js';
package/dist/index.js CHANGED
@@ -30,12 +30,14 @@ import { t as icon_button_default } from "./icon-button.js";
30
30
  import { t as iconButtonParts } from "./icon-button2.js";
31
31
  import { t as inputParts } from "./input2.js";
32
32
  import { t as overlay_default } from "./overlay.js";
33
+ import { t as scroll_area_default } from "./scroll-area.js";
33
34
  import { n as modal_default, t as modalParts } from "./modal.js";
34
35
  import { n as number_input_default, t as numberInputParts } from "./number-input.js";
35
36
  import { n as overlay_layer_provider_default, t as overlayParts } from "./overlay2.js";
36
37
  import { n as popoverPlacements, t as popoverParts } from "./popover2.js";
37
38
  import { a as progress_default, i as progressSizes, n as progressParts, r as progressRadiuses, t as progressColors } from "./progress.js";
38
39
  import { i as radioParts, n as radio_default, r as radioGroupParts, t as radio_group_default } from "./radio.js";
40
+ import { n as scrollAreaScrollbars, r as scrollAreaTypes, t as scrollAreaParts } from "./scroll-area2.js";
39
41
  import { n as select_default, t as selectParts } from "./select.js";
40
42
  import { t as tooltip_default } from "./tooltip.js";
41
43
  import { a as sliderSizes, i as sliderParts, n as sliderColors, o as range_slider_default, r as sliderOrientations, s as slider_default, t as rangeSliderParts } from "./slider.js";
@@ -45,4 +47,4 @@ import { t as teleport_provider_default } from "./teleport-provider.js";
45
47
  import { n as textarea_default, t as textareaParts } from "./textarea.js";
46
48
  import { a as toastColors, c as toastRadiuses, d as toastViewportParts, f as createToastStore, i as useToast, l as toastTypes, n as toast_viewport_default, o as toastParts, p as toast_default, r as toast_provider_default, s as toastPositions, t as useToastState, u as toastVariants } from "./toast.js";
47
49
  import { t as tooltipParts } from "./tooltip2.js";
48
- export { accordion_default as Accordion, accordion_item_default as AccordionItem, alert_default as Alert, aspect_ratio_default as AspectRatio, avatar_default as Avatar, badge_default as Badge, button_default as Button, button_group_default as ButtonGroup, button_link_default as ButtonLink, card_default as Card, checkbox_default as Checkbox, collapse_default as Collapse, color_input_default as ColorInput, color_picker_default as ColorPicker, color_swatch_default as ColorSwatch, dialog_close_default as DialogClose, dialog_content_default as DialogContent, dialog_description_default as DialogDescription, dialog_overlay_default as DialogOverlay, dialog_portal_default as DialogPortal, dialog_root_default as DialogRoot, dialog_title_default as DialogTitle, dialog_trigger_default as DialogTrigger, dropdown_menu_default as DropdownMenu, dropdown_menu_checkbox_item_default as DropdownMenuCheckboxItem, dropdown_menu_content_default as DropdownMenuContent, dropdown_menu_context_trigger_default as DropdownMenuContextTrigger, DropdownMenuItem, dropdown_menu_item_indicator_default as DropdownMenuItemIndicator, dropdown_menu_label_default as DropdownMenuLabel, dropdown_menu_portal_default as DropdownMenuPortal, dropdown_menu_radio_group_default as DropdownMenuRadioGroup, dropdown_menu_radio_item_default as DropdownMenuRadioItem, dropdown_menu_root_default as DropdownMenuRoot, dropdown_menu_separator_default as DropdownMenuSeparator, dropdown_menu_sub_default as DropdownMenuSub, dropdown_menu_sub_content_default as DropdownMenuSubContent, dropdown_menu_sub_trigger_default as DropdownMenuSubTrigger, dropdown_menu_trigger_default as DropdownMenuTrigger, field_default as Field, focus_trap_default as FocusTrap, icon_button_default as IconButton, input_default as Input, modal_default as Modal, number_input_default as NumberInput, overlay_default as Overlay, overlay_layer_provider_default as OverlayLayerProvider, popover_default as Popover, progress_default as Progress, radio_default as Radio, radio_group_default as RadioGroup, range_slider_default as RangeSlider, select_default as Select, slider_default as Slider, switch_default as Switch, tabs_default as Tabs, tabs_content_default as TabsContent, tabs_list_default as TabsList, tabs_trigger_default as TabsTrigger, teleport_provider_default as TeleportProvider, textarea_default as Textarea, toast_default as Toast, toast_provider_default as ToastProvider, toast_viewport_default as ToastViewport, tooltip_default as Tooltip, accordionItemParts, accordionParts, alertColors, alertParts, alertRadiuses, alertVariants, aspectRatioParts, avatarColors, avatarParts, avatarRadiuses, avatarSizes, avatarVariants, badgeColors, badgeParts, badgeRadiuses, badgeSizes, badgeVariants, buttonGroupParts, buttonLinkParts, buttonParts, cardParts, checkboxParts, collapseParts, colorInputParts, colorPickerFormats, colorPickerParts, colorPickerSizes, colorSwatchParts, createToastStore, dropdownMenuParts, fieldParts, focusTrapParts, iconButtonParts, inputParts, modalParts, numberInputParts, overlayParts, popoverParts, popoverPlacements, progressColors, progressParts, progressRadiuses, progressSizes, radioGroupParts, radioParts, rangeSliderParts, selectParts, sliderColors, sliderOrientations, sliderParts, sliderSizes, switchParts, tabsContentParts, tabsListParts, tabsParts, tabsTriggerParts, textareaParts, toastColors, toastParts, toastPositions, toastRadiuses, toastTypes, toastVariants, toastViewportParts, tooltipParts, useAccordion, useAccordionItem, useCollapse, useDropdownMenu, useFloatingPosition, useFocusTrap, useHoverDisclosure, useOverlayZIndex, useTabs, useTabsContent, useTabsList, useTabsTrigger, useTeleportTarget, useToast, useToastState };
50
+ export { accordion_default as Accordion, accordion_item_default as AccordionItem, alert_default as Alert, aspect_ratio_default as AspectRatio, avatar_default as Avatar, badge_default as Badge, button_default as Button, button_group_default as ButtonGroup, button_link_default as ButtonLink, card_default as Card, checkbox_default as Checkbox, collapse_default as Collapse, color_input_default as ColorInput, color_picker_default as ColorPicker, color_swatch_default as ColorSwatch, dialog_close_default as DialogClose, dialog_content_default as DialogContent, dialog_description_default as DialogDescription, dialog_overlay_default as DialogOverlay, dialog_portal_default as DialogPortal, dialog_root_default as DialogRoot, dialog_title_default as DialogTitle, dialog_trigger_default as DialogTrigger, dropdown_menu_default as DropdownMenu, dropdown_menu_checkbox_item_default as DropdownMenuCheckboxItem, dropdown_menu_content_default as DropdownMenuContent, dropdown_menu_context_trigger_default as DropdownMenuContextTrigger, DropdownMenuItem, dropdown_menu_item_indicator_default as DropdownMenuItemIndicator, dropdown_menu_label_default as DropdownMenuLabel, dropdown_menu_portal_default as DropdownMenuPortal, dropdown_menu_radio_group_default as DropdownMenuRadioGroup, dropdown_menu_radio_item_default as DropdownMenuRadioItem, dropdown_menu_root_default as DropdownMenuRoot, dropdown_menu_separator_default as DropdownMenuSeparator, dropdown_menu_sub_default as DropdownMenuSub, dropdown_menu_sub_content_default as DropdownMenuSubContent, dropdown_menu_sub_trigger_default as DropdownMenuSubTrigger, dropdown_menu_trigger_default as DropdownMenuTrigger, field_default as Field, focus_trap_default as FocusTrap, icon_button_default as IconButton, input_default as Input, modal_default as Modal, number_input_default as NumberInput, overlay_default as Overlay, overlay_layer_provider_default as OverlayLayerProvider, popover_default as Popover, progress_default as Progress, radio_default as Radio, radio_group_default as RadioGroup, range_slider_default as RangeSlider, scroll_area_default as ScrollArea, select_default as Select, slider_default as Slider, switch_default as Switch, tabs_default as Tabs, tabs_content_default as TabsContent, tabs_list_default as TabsList, tabs_trigger_default as TabsTrigger, teleport_provider_default as TeleportProvider, textarea_default as Textarea, toast_default as Toast, toast_provider_default as ToastProvider, toast_viewport_default as ToastViewport, tooltip_default as Tooltip, accordionItemParts, accordionParts, alertColors, alertParts, alertRadiuses, alertVariants, aspectRatioParts, avatarColors, avatarParts, avatarRadiuses, avatarSizes, avatarVariants, badgeColors, badgeParts, badgeRadiuses, badgeSizes, badgeVariants, buttonGroupParts, buttonLinkParts, buttonParts, cardParts, checkboxParts, collapseParts, colorInputParts, colorPickerFormats, colorPickerParts, colorPickerSizes, colorSwatchParts, createToastStore, dropdownMenuParts, fieldParts, focusTrapParts, iconButtonParts, inputParts, modalParts, numberInputParts, overlayParts, popoverParts, popoverPlacements, progressColors, progressParts, progressRadiuses, progressSizes, radioGroupParts, radioParts, rangeSliderParts, scrollAreaParts, scrollAreaScrollbars, scrollAreaTypes, selectParts, sliderColors, sliderOrientations, sliderParts, sliderSizes, switchParts, tabsContentParts, tabsListParts, tabsParts, tabsTriggerParts, textareaParts, toastColors, toastParts, toastPositions, toastRadiuses, toastTypes, toastVariants, toastViewportParts, tooltipParts, useAccordion, useAccordionItem, useCollapse, useDropdownMenu, useFloatingPosition, useFocusTrap, useHoverDisclosure, useOverlayZIndex, useTabs, useTabsContent, useTabsList, useTabsTrigger, useTeleportTarget, useToast, useToastState };
package/dist/input.js CHANGED
@@ -155,7 +155,7 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
155
155
  const n9 = t1();
156
156
  const n4 = child(n9, 1);
157
157
  renderEffect(() => setDynamicProps(n9, [rootAttrs.value]));
158
- setInsertionState(n9, 0, 0);
158
+ setInsertionState(n9, 0);
159
159
  createIf(() => $slots.left, () => {
160
160
  const n3 = t0();
161
161
  renderEffect(() => setDynamicProps(n3, [unref(getPartAttrs)("left", { class: "rp-input__left" })]));