ropav 0.0.13 → 0.1.2

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 (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -1
  3. package/dist/accordion.js +1 -4
  4. package/dist/button-link.js +2 -2
  5. package/dist/button.js +2 -2
  6. package/dist/card.css +26 -26
  7. package/dist/card.js +6 -16
  8. package/dist/collapse.js +1 -4
  9. package/dist/components/card/types.d.ts +0 -3
  10. package/dist/components/dialog/types.d.ts +1 -0
  11. package/dist/components/dropdown-menu/types.d.ts +2 -6
  12. package/dist/components/modal/types.d.ts +1 -0
  13. package/dist/components/overlay/index.d.ts +3 -0
  14. package/dist/components/overlay/index.js +3 -2
  15. package/dist/components/overlay/overlay-layer-provider.d.ts +21 -0
  16. package/dist/components/overlay/types.d.ts +10 -1
  17. package/dist/components/overlay/useOverlayZIndex.d.ts +4 -0
  18. package/dist/components/popover/types.d.ts +1 -0
  19. package/dist/components/slider/index.d.ts +1 -1
  20. package/dist/components/slider/range-slider.d.ts +7 -11
  21. package/dist/components/slider/slider.d.ts +7 -14
  22. package/dist/components/slider/sliderCore.d.ts +7 -4
  23. package/dist/components/slider/types.d.ts +46 -4
  24. package/dist/components/slider/useRangeSlider.d.ts +2 -1
  25. package/dist/components/slider/useSlider.d.ts +13 -3
  26. package/dist/components/toast/types.d.ts +1 -0
  27. package/dist/components/tooltip/types.d.ts +1 -0
  28. package/dist/composables/useOverlayLayer.d.ts +1 -1
  29. package/dist/dialog.js +7 -2
  30. package/dist/dropdown-menu.js +18 -21
  31. package/dist/field.js +1 -1
  32. package/dist/index.js +3 -2
  33. package/dist/input.js +1 -1
  34. package/dist/modal.css +28 -28
  35. package/dist/modal.js +6 -7
  36. package/dist/overlay2.js +16 -1
  37. package/dist/popover.js +8 -6
  38. package/dist/progress.js +1 -1
  39. package/dist/select.js +1 -1
  40. package/dist/slider.css +256 -166
  41. package/dist/slider.js +334 -140
  42. package/dist/switch.css +17 -17
  43. package/dist/switch.js +10 -5
  44. package/dist/toast.css +21 -21
  45. package/dist/toast.js +10 -2
  46. package/dist/tooltip.js +9 -5
  47. package/dist/unplugin-icons.d.ts +5 -0
  48. package/dist/unplugin-icons.js +40 -0
  49. package/dist/{useOverlayLayer.js → useOverlayZIndex.js} +29 -4
  50. package/docs/public-overlay-layer-api.md +65 -0
  51. package/docs/public-styles-api.md +5 -6
  52. package/package.json +25 -12
  53. package/dist/legacy-unlayered.css +0 -5382
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 daopk
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -37,11 +37,90 @@ Import the components you need:
37
37
  import { Button } from 'ropav';
38
38
  ```
39
39
 
40
+ ## Progress and interactive ranges
41
+
42
+ Use `Progress` for read-only status and `Slider` when the user can change the value. A media seek
43
+ control can draw buffered ranges below the played range, reveal its thumb during interaction, and
44
+ preview the value under the pointer:
45
+
46
+ ```vue
47
+ <Slider
48
+ v-model="currentTime"
49
+ :max="duration"
50
+ thumb="interaction"
51
+ :tooltip="{ anchor: 'pointer' }"
52
+ :format-value="formatTime"
53
+ >
54
+ <template #track-underlay="{ getPercent }">
55
+ <span
56
+ v-for="range in bufferedRanges"
57
+ :key="range.start"
58
+ class="buffered-range"
59
+ :style="{
60
+ left: `${getPercent(range.start)}%`,
61
+ width: `${getPercent(range.end) - getPercent(range.start)}%`,
62
+ }"
63
+ />
64
+ </template>
65
+ <template #tooltip-content="{ formattedValue }">
66
+ {{ formattedValue }}
67
+ </template>
68
+ </Slider>
69
+ ```
70
+
71
+ `track-underlay` and `track-overlay` are decorative layers below and above the selected range. Both
72
+ receive the normalized slider state and a clamped `getPercent(value)` helper, so consumers can draw
73
+ segments, markers, waveforms, or other track content without replacing slider behavior. Their
74
+ coordinate space follows the thumb travel, so percentage positions stay aligned with the control.
75
+ Set `:thumb="false"` to hide only the visual thumb while preserving the native input, hit area, and
76
+ keyboard behavior. An object can combine visibility and geometry, for example
77
+ `:thumb="{ visibility: 'interaction', size: 20 }"`.
78
+
79
+ ## Icons
80
+
81
+ Ropav provides a compiler for
82
+ [`unplugin-icons`](https://github.com/unplugin/unplugin-icons) that emits each
83
+ icon as a zero-VDOM Vue Vapor component.
84
+
85
+ Install `unplugin-icons`, a matching version of `@vue/compiler-vapor`, and the
86
+ Iconify collection you want to use:
87
+
88
+ ```bash
89
+ pnpm add -D unplugin-icons @vue/compiler-vapor @iconify-json/lucide
90
+ ```
91
+
92
+ Pass `vaporIconCompiler` to `unplugin-icons`:
93
+
94
+ ```ts
95
+ // vite.config.ts
96
+ import vue from '@vitejs/plugin-vue';
97
+ import { defineConfig } from 'vite';
98
+ import Icons from 'unplugin-icons/vite';
99
+ import { vaporIconCompiler } from 'ropav/unplugin-icons';
100
+
101
+ export default defineConfig({
102
+ plugins: [vue({ features: { vapor: true } }), Icons({ compiler: vaporIconCompiler() })],
103
+ });
104
+ ```
105
+
106
+ Icons can then be imported on demand. Only imported icons are included in the
107
+ application bundle.
108
+
109
+ ```vue
110
+ <script setup lang="ts" vapor>
111
+ import IconSearch from '~icons/lucide/search';
112
+ </script>
113
+
114
+ <template>
115
+ <IconSearch aria-hidden="true" />
116
+ </template>
117
+ ```
118
+
40
119
  ## Styling contract
41
120
 
42
121
  Use typed `classNames` and `styles`, documented state attributes, and variables listed in the packaged styles manifest. DOM nesting, internal selectors and undocumented variables are private implementation details.
43
122
 
44
- See the [Public Styles API](./docs/public-styles-api.md) and [public token table](./docs/public-tokens.md). Layered consumers should declare `reset, ropav.tokens, ropav.components, app`; `ropav/legacy-unlayered.css` is the temporary compatibility import for unlayered resets.
123
+ See the [Public Styles API](./docs/public-styles-api.md) and [public token table](./docs/public-tokens.md). Consumers can declare `reset, ropav.tokens, ropav.components, app` to establish their cascade layer order.
45
124
 
46
125
  For headless Tooltip, HoverCard and custom menu markup, see the
47
126
  [public floating API](./docs/public-floating-api.md).
package/dist/accordion.js CHANGED
@@ -381,10 +381,7 @@ var accordion_item_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
381
381
  return n8;
382
382
  }, 1);
383
383
  setInsertionState(n16, null, 1);
384
- createComponent(VaporTransition, {
385
- name: "rp-accordion-content",
386
- persisted: ""
387
- }, extend(() => {
384
+ createComponent(VaporTransition, { name: "rp-accordion-content" }, extend(() => {
388
385
  return createIf(() => unref(shouldRenderContent), () => {
389
386
  const n14 = t2();
390
387
  const n13 = child(n14);
@@ -82,7 +82,7 @@ var button_link_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
82
82
  const n16 = child(n17, 1);
83
83
  const n11 = child(n16, 1);
84
84
  renderEffect(() => setDynamicProps(n17, [rootAttrs.value]));
85
- setInsertionState(n17, 0, 0);
85
+ setInsertionState(n17, 0);
86
86
  createIf(() => __props.loading, () => {
87
87
  const n5 = t0();
88
88
  renderEffect(() => setDynamicProps(n5, [unref(getPartAttrs)("loader", { class: "rp-button__loading" }), { "aria-hidden": "true" }]));
@@ -92,7 +92,7 @@ var button_link_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
92
92
  }, 1);
93
93
  return n5;
94
94
  });
95
- setInsertionState(n16, 0, 0);
95
+ setInsertionState(n16, 0);
96
96
  createIf(() => $slots.left, () => {
97
97
  const n9 = t0();
98
98
  renderEffect(() => setDynamicProps(n9, [unref(getPartAttrs)("left", { class: "rp-button__left" })]));
package/dist/button.js CHANGED
@@ -54,7 +54,7 @@ var button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
54
54
  const n16 = child(n17, 1);
55
55
  const n11 = child(n16, 1);
56
56
  renderEffect(() => setDynamicProps(n17, [rootAttrs.value]));
57
- setInsertionState(n17, 0, 0);
57
+ setInsertionState(n17, 0);
58
58
  createIf(() => __props.loading, () => {
59
59
  const n5 = t0();
60
60
  renderEffect(() => setDynamicProps(n5, [unref(getPartAttrs)("loader", { class: "rp-button__loading" }), { "aria-hidden": "true" }]));
@@ -64,7 +64,7 @@ var button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
64
64
  }, 1);
65
65
  return n5;
66
66
  });
67
- setInsertionState(n16, 0, 0);
67
+ setInsertionState(n16, 0);
68
68
  createIf(() => $slots.left, () => {
69
69
  const n9 = t0();
70
70
  renderEffect(() => setDynamicProps(n9, [unref(getPartAttrs)("left", { class: "rp-button__left" })]));
package/dist/card.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-card[data-v-2c467155] {
2
+ .rp-card[data-v-114f8e01] {
3
3
  --_rp-card-bg: var(--rp-color-default);
4
4
  --_rp-card-border: var(--rp-color-default-border);
5
5
  --_rp-card-fg: var(--rp-color-text);
@@ -19,89 +19,89 @@
19
19
  border-radius: var(--_rp-card-radius);
20
20
  transition: background-color var(--rp-transition-fast), border-color var(--rp-transition-fast);
21
21
  }
22
- .rp-card--layer-base[data-v-2c467155] {
22
+ .rp-card--layer-base[data-v-114f8e01] {
23
23
  --_rp-card-bg: var(--rp-color-body);
24
24
  }
25
- .rp-card--layer-surface[data-v-2c467155] {
25
+ .rp-card--layer-surface[data-v-114f8e01] {
26
26
  --_rp-card-bg: var(--rp-color-default);
27
27
  }
28
- .rp-card--layer-raised[data-v-2c467155] {
28
+ .rp-card--layer-raised[data-v-114f8e01] {
29
29
  --_rp-card-bg: var(--rp-color-default);
30
30
  }
31
- .rp-card--borderless[data-v-2c467155] {
31
+ .rp-card--borderless[data-v-114f8e01] {
32
32
  --_rp-card-border: transparent;
33
33
  }
34
- .rp-card--header-bordered .rp-card__header[data-v-2c467155] {
34
+ .rp-card--header-bordered .rp-card__header[data-v-114f8e01] {
35
35
  border-bottom: var(--rp-border-width-thin) solid var(--_rp-card-header-border);
36
36
  }
37
- .rp-card--footer-bordered .rp-card__footer[data-v-2c467155] {
37
+ .rp-card--footer-bordered .rp-card__footer[data-v-114f8e01] {
38
38
  border-top: var(--rp-border-width-thin) solid var(--_rp-card-footer-border);
39
39
  }
40
- .rp-card--header-compact .rp-card__header[data-v-2c467155] {
40
+ .rp-card--header-compact .rp-card__header[data-v-114f8e01] {
41
41
  padding-block-end: calc(var(--_rp-card-padding) / 2);
42
42
  }
43
- .rp-card--header-compact .rp-card__body[data-v-2c467155] {
43
+ .rp-card--header-compact .rp-card__body[data-v-114f8e01] {
44
44
  padding-block-start: calc(var(--_rp-card-padding) / 2);
45
45
  }
46
- .rp-card--footer-compact .rp-card__body[data-v-2c467155] {
46
+ .rp-card--footer-compact .rp-card__body[data-v-114f8e01] {
47
47
  padding-block-end: calc(var(--_rp-card-padding) / 2);
48
48
  }
49
- .rp-card--footer-compact .rp-card__footer[data-v-2c467155] {
49
+ .rp-card--footer-compact .rp-card__footer[data-v-114f8e01] {
50
50
  padding-block-start: calc(var(--_rp-card-padding) / 2);
51
51
  }
52
- .rp-card--padding-none[data-v-2c467155] {
52
+ .rp-card--padding-none[data-v-114f8e01] {
53
53
  --_rp-card-padding: var(--rp-spacing-0);
54
54
  }
55
- .rp-card--padding-sm[data-v-2c467155] {
55
+ .rp-card--padding-sm[data-v-114f8e01] {
56
56
  --_rp-card-padding: var(--rp-spacing-3);
57
57
  }
58
- .rp-card--padding-md[data-v-2c467155] {
58
+ .rp-card--padding-md[data-v-114f8e01] {
59
59
  --_rp-card-padding: var(--rp-spacing-5);
60
60
  }
61
- .rp-card--padding-lg[data-v-2c467155] {
61
+ .rp-card--padding-lg[data-v-114f8e01] {
62
62
  --_rp-card-padding: var(--rp-spacing-6);
63
63
  }
64
- .rp-card--radius-none[data-v-2c467155] {
64
+ .rp-card--radius-none[data-v-114f8e01] {
65
65
  --_rp-card-radius: var(--rp-radius-none);
66
66
  }
67
- .rp-card--radius-xs[data-v-2c467155] {
67
+ .rp-card--radius-xs[data-v-114f8e01] {
68
68
  --_rp-card-radius: var(--rp-radius-xs);
69
69
  }
70
- .rp-card--radius-sm[data-v-2c467155] {
70
+ .rp-card--radius-sm[data-v-114f8e01] {
71
71
  --_rp-card-radius: var(--rp-radius-sm);
72
72
  }
73
- .rp-card--radius-md[data-v-2c467155] {
73
+ .rp-card--radius-md[data-v-114f8e01] {
74
74
  --_rp-card-radius: var(--rp-radius-md);
75
75
  }
76
- .rp-card--radius-lg[data-v-2c467155] {
76
+ .rp-card--radius-lg[data-v-114f8e01] {
77
77
  --_rp-card-radius: var(--rp-radius-lg);
78
78
  }
79
- .rp-card--radius-xl[data-v-2c467155] {
79
+ .rp-card--radius-xl[data-v-114f8e01] {
80
80
  --_rp-card-radius: var(--rp-radius-xl);
81
81
  }
82
- .rp-card__header[data-v-2c467155], .rp-card__body[data-v-2c467155], .rp-card__footer[data-v-2c467155] {
82
+ .rp-card__header[data-v-114f8e01], .rp-card__body[data-v-114f8e01], .rp-card__footer[data-v-114f8e01] {
83
83
  box-sizing: border-box;
84
84
  padding: var(--_rp-card-padding);
85
85
  }
86
- .rp-card__header[data-v-2c467155], .rp-card__footer[data-v-2c467155] {
86
+ .rp-card__header[data-v-114f8e01], .rp-card__footer[data-v-114f8e01] {
87
87
  display: grid;
88
88
  gap: var(--rp-spacing-1);
89
89
  }
90
- .rp-card__body[data-v-2c467155] {
90
+ .rp-card__body[data-v-114f8e01] {
91
91
  flex: 1 1 auto;
92
92
  min-width: 0;
93
93
  color: var(--rp-color-text);
94
94
  font-size: var(--rp-font-size-md);
95
95
  line-height: var(--rp-line-height-md);
96
96
  }
97
- .rp-card__title[data-v-2c467155] {
97
+ .rp-card__title[data-v-114f8e01] {
98
98
  margin: 0;
99
99
  color: var(--rp-color-text);
100
100
  font-size: var(--rp-font-size-lg);
101
101
  font-weight: var(--rp-font-weight-semibold);
102
102
  line-height: var(--rp-line-height-xs);
103
103
  }
104
- .rp-card__description[data-v-2c467155] {
104
+ .rp-card__description[data-v-114f8e01] {
105
105
  margin: 0;
106
106
  color: var(--rp-color-dimmed);
107
107
  font-size: var(--rp-font-size-sm);
package/dist/card.js CHANGED
@@ -4,10 +4,10 @@ import { n as useStylesApi } from "./styles-api.js";
4
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
5
  import { computed, createIf, createSlot, defineVaporComponent, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, txt, unref, useSlots } from "vue";
6
6
  //#region src/components/card/card.vue?vue&type=script&setup=true&vapor=true&lang.ts
7
- var t0 = template("<div data-v-2c467155> ");
8
- var t1 = template("<p data-v-2c467155> ");
9
- var t2 = template("<div data-v-2c467155>");
10
- var t3 = template("<div data-v-2c467155>", 1);
7
+ var t0 = template("<div data-v-114f8e01> ");
8
+ var t1 = template("<p data-v-114f8e01> ");
9
+ var t2 = template("<div data-v-114f8e01>");
10
+ var t3 = template("<div data-v-114f8e01>", 1);
11
11
  //#endregion
12
12
  //#region src/components/card/card.vue
13
13
  var card_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -32,13 +32,6 @@ var card_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
32
32
  },
33
33
  title: { default: "" },
34
34
  description: { default: "" },
35
- bodyClass: { type: [
36
- Boolean,
37
- null,
38
- String,
39
- Object,
40
- Array
41
- ] },
42
35
  classNames: {},
43
36
  styles: {}
44
37
  },
@@ -95,10 +88,7 @@ var card_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
95
88
  setInsertionState(n19, null, 1);
96
89
  createIf(() => hasBody.value, () => {
97
90
  const n14 = t2();
98
- renderEffect(() => setDynamicProps(n14, [unref(getPartAttrs)("body", {
99
- class: "rp-card__body",
100
- compatibilityClass: __props.bodyClass
101
- })]));
91
+ renderEffect(() => setDynamicProps(n14, [unref(getPartAttrs)("body", { class: "rp-card__body" })]));
102
92
  setInsertionState(n14, null, 0);
103
93
  createSlot("default", null, null, 1);
104
94
  return n14;
@@ -113,7 +103,7 @@ var card_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
113
103
  });
114
104
  return n19;
115
105
  }
116
- }), [["__scopeId", "data-v-2c467155"]]);
106
+ }), [["__scopeId", "data-v-114f8e01"]]);
117
107
  //#endregion
118
108
  //#region src/components/card/types.ts
119
109
  var cardParts = [
package/dist/collapse.js CHANGED
@@ -68,10 +68,7 @@ var collapse_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
68
68
  setInsertionState(n7, null, 0);
69
69
  createSlot("trigger", { $: [() => publicTriggerSlotProps.value] }, null, 1);
70
70
  setInsertionState(n7, null, 1);
71
- createComponent(VaporTransition, {
72
- name: "rp-collapse-content",
73
- persisted: ""
74
- }, extend(() => {
71
+ createComponent(VaporTransition, { name: "rp-collapse-content" }, extend(() => {
75
72
  return createIf(() => unref(shouldRenderContent), () => {
76
73
  const n5 = t0();
77
74
  const n4 = child(n5);
@@ -1,4 +1,3 @@
1
- import { HTMLAttributes } from 'vue';
2
1
  import { StylesApiProps } from '../../styles-api.js';
3
2
  export declare const cardParts: readonly ["root", "header", "title", "description", "body", "footer"];
4
3
  export type CardPart = (typeof cardParts)[number];
@@ -14,6 +13,4 @@ export interface CardProps extends StylesApiProps<CardPart> {
14
13
  footerBorder?: boolean;
15
14
  title?: string;
16
15
  description?: string;
17
- /** @deprecated Use `classNames.body` instead. */
18
- bodyClass?: HTMLAttributes['class'];
19
16
  }
@@ -12,6 +12,7 @@ export type DialogFocusTrapOptions = Omit<FocusTrapOptions, 'allowOutsideClick'
12
12
  export interface DialogRootProps {
13
13
  open?: boolean;
14
14
  defaultOpen?: boolean;
15
+ baseZIndex?: number;
15
16
  modal?: boolean;
16
17
  closeOnEscape?: boolean;
17
18
  closeOnOutsideClick?: boolean;
@@ -107,6 +107,7 @@ export interface DropdownMenuRenderedItem {
107
107
  }
108
108
  export interface DropdownMenuProps extends FloatingPositionProps<DropdownMenuPlacement>, StylesApiProps<DropdownMenuPart> {
109
109
  id?: string;
110
+ baseZIndex?: number;
110
111
  items?: DropdownMenuItem[];
111
112
  open?: boolean;
112
113
  disabled?: boolean;
@@ -114,10 +115,6 @@ export interface DropdownMenuProps extends FloatingPositionProps<DropdownMenuPla
114
115
  ariaLabel?: string;
115
116
  modal?: boolean;
116
117
  ignore?: readonly DropdownMenuInteractOutsideTarget[];
117
- /** @deprecated Use `teleport` instead. */
118
- portal?: boolean;
119
- /** @deprecated Use `teleportTo` instead. */
120
- portalTo?: string | HTMLElement;
121
118
  }
122
119
  export type DropdownMenuAs = string | Component;
123
120
  export type DropdownMenuCheckedState = boolean | 'indeterminate';
@@ -142,6 +139,7 @@ export interface DropdownMenuRootPrimitiveProps {
142
139
  id?: string;
143
140
  open?: boolean;
144
141
  defaultOpen?: boolean;
142
+ baseZIndex?: number;
145
143
  disabled?: boolean;
146
144
  modal?: boolean;
147
145
  target?: FloatingTarget | null;
@@ -182,8 +180,6 @@ export interface DropdownMenuContentPrimitiveProps {
182
180
  collisionPadding?: FloatingCollisionPadding;
183
181
  autoUpdateOptions?: FloatingAutoUpdateOptions;
184
182
  arrow?: boolean;
185
- /** @deprecated Use `flip` and `shift` instead. */
186
- avoidCollisions?: boolean;
187
183
  forceMount?: boolean;
188
184
  ignore?: readonly DropdownMenuInteractOutsideTarget[];
189
185
  ariaLabel?: string;
@@ -21,6 +21,7 @@ export interface ModalSlotProps {
21
21
  export interface ModalProps extends TeleportProps, StylesApiProps<ModalPart> {
22
22
  id?: string;
23
23
  open?: boolean;
24
+ baseZIndex?: number;
24
25
  title?: string;
25
26
  description?: string;
26
27
  ariaLabel?: string;
@@ -1,3 +1,6 @@
1
1
  export { default as Overlay } from './overlay.js';
2
+ export { default as OverlayLayerProvider } from './overlay-layer-provider.js';
2
3
  export { overlayParts } from './types.js';
4
+ export { useOverlayZIndex } from './useOverlayZIndex.js';
5
+ export type { OverlayLayerProviderProps, UseOverlayZIndexOptions } from './types.js';
3
6
  export type { OverlayBlur, OverlayPart, OverlayProps, OverlayZIndex } from './types.js';
@@ -1,3 +1,4 @@
1
+ import { n as useOverlayZIndex } from "../../useOverlayZIndex.js";
1
2
  import { t as overlay_default } from "../../overlay.js";
2
- import { t as overlayParts } from "../../overlay2.js";
3
- export { overlay_default as Overlay, overlayParts };
3
+ import { n as overlay_layer_provider_default, t as overlayParts } from "../../overlay2.js";
4
+ export { overlay_default as Overlay, overlay_layer_provider_default as OverlayLayerProvider, overlayParts, useOverlayZIndex };
@@ -0,0 +1,21 @@
1
+ import { OverlayLayerProviderProps } from './types.js';
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
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<OverlayLayerProviderProps> & (typeof globalThis extends {
4
+ __VLS_PROPS_FALLBACK: infer P;
5
+ } ? P : {});
6
+ expose: (exposed: {}) => void;
7
+ attrs: any;
8
+ slots: {
9
+ default?: (props: {}) => any;
10
+ };
11
+ emit: {};
12
+ }>) => import('vue').VNode & {
13
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
14
+ };
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
18
+ [K in keyof T]: T[K];
19
+ } : {
20
+ [K in keyof T as K]: T[K];
21
+ }) & {};
@@ -1,4 +1,4 @@
1
- import { CSSProperties } from 'vue';
1
+ import { CSSProperties, MaybeRefOrGetter } from 'vue';
2
2
  import { StylesApiProps } from '../../styles-api.js';
3
3
  export declare const overlayParts: readonly ["root"];
4
4
  export type OverlayPart = (typeof overlayParts)[number];
@@ -13,3 +13,12 @@ export interface OverlayProps extends StylesApiProps<OverlayPart> {
13
13
  interactive?: boolean;
14
14
  disabled?: boolean;
15
15
  }
16
+ export interface OverlayLayerProviderProps {
17
+ baseZIndex: number;
18
+ }
19
+ export interface UseOverlayZIndexOptions {
20
+ baseZIndex?: MaybeRefOrGetter<number | null | undefined>;
21
+ defaultBaseZIndex?: number;
22
+ offset?: MaybeRefOrGetter<number>;
23
+ aboveParent?: MaybeRefOrGetter<boolean>;
24
+ }
@@ -0,0 +1,4 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from 'vue';
2
+ import { UseOverlayZIndexOptions } from './types.js';
3
+ export declare function provideOverlayZIndex(baseZIndex: MaybeRefOrGetter<number>): ComputedRef<number>;
4
+ export declare function useOverlayZIndex(options?: UseOverlayZIndexOptions): ComputedRef<number>;
@@ -37,6 +37,7 @@ export interface PopoverContentSlotProps {
37
37
  }
38
38
  export interface PopoverProps extends FloatingPositionProps<PopoverPlacement>, StylesApiProps<PopoverPart> {
39
39
  id?: string;
40
+ baseZIndex?: number;
40
41
  contentClass?: string;
41
42
  open?: boolean;
42
43
  disabled?: boolean;
@@ -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 {};