ropav 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +20 -0
  2. package/dist/accordion.js +11 -8
  3. package/dist/alert.css +18 -18
  4. package/dist/alert.js +27 -21
  5. package/dist/avatar.css +19 -19
  6. package/dist/avatar.js +16 -11
  7. package/dist/badge.css +16 -16
  8. package/dist/badge.js +14 -9
  9. package/dist/base.css +214 -69
  10. package/dist/button-group.js +1 -1
  11. package/dist/button-link.js +16 -14
  12. package/dist/button.css +37 -28
  13. package/dist/button.js +16 -14
  14. package/dist/{useButtonColor.js → button.scss_vue_type_style_index_0_src_true_lang.js} +8 -4
  15. package/dist/card.js +1 -1
  16. package/dist/checkbox.css +32 -32
  17. package/dist/checkbox.js +19 -11
  18. package/dist/chevron-right.js +12 -0
  19. package/dist/collapse.css +6 -6
  20. package/dist/collapse.js +4 -4
  21. package/dist/collectionNavigation.js +120 -0
  22. package/dist/color-input.css +19 -19
  23. package/dist/color-input.js +6 -5
  24. package/dist/color-picker.css +7 -7
  25. package/dist/color-picker.js +4 -5
  26. package/dist/color-swatch.js +1 -1
  27. package/dist/componentColors.js +135 -23
  28. package/dist/components/alert/types.d.ts +1 -0
  29. package/dist/components/alert/useAlertColor.d.ts +1 -1
  30. package/dist/components/avatar/types.d.ts +1 -0
  31. package/dist/components/avatar/useAvatarColor.d.ts +1 -1
  32. package/dist/components/badge/types.d.ts +1 -0
  33. package/dist/components/badge/useBadgeColor.d.ts +1 -1
  34. package/dist/components/button/types.d.ts +1 -0
  35. package/dist/components/button/useButtonColor.d.ts +1 -1
  36. package/dist/components/button-link/types.d.ts +1 -0
  37. package/dist/components/checkbox/types.d.ts +1 -0
  38. package/dist/components/checkbox/useCheckbox.d.ts +1 -1
  39. package/dist/components/color-input/color-input.d.ts +2 -2
  40. package/dist/components/color-input/useColorInput.d.ts +1 -1
  41. package/dist/components/dialog/dialog-core.d.ts +1 -1
  42. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  43. package/dist/components/dropdown-menu/dropdown-menu-primitive-core.d.ts +2 -1
  44. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  45. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -2
  46. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -3
  47. package/dist/components/dropdown-menu/index.d.ts +1 -0
  48. package/dist/components/dropdown-menu/types.d.ts +4 -0
  49. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +3 -4
  50. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +2 -1
  51. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +1 -0
  52. package/dist/components/icon-button/types.d.ts +1 -0
  53. package/dist/components/input/useInput.d.ts +1 -1
  54. package/dist/components/number-input/useNumberInput.d.ts +1 -1
  55. package/dist/components/pagination/index.d.ts +4 -0
  56. package/dist/components/pagination/index.js +2 -0
  57. package/dist/components/pagination/pagination.d.ts +49 -0
  58. package/dist/components/pagination/types.d.ts +54 -0
  59. package/dist/components/pagination/usePagination.d.ts +19 -0
  60. package/dist/components/progress/useProgress.d.ts +1 -1
  61. package/dist/components/radio/types.d.ts +3 -0
  62. package/dist/components/radio/useRadio.d.ts +2 -2
  63. package/dist/components/scroll-area/scrollAreaCore.d.ts +5 -0
  64. package/dist/components/scroll-area/types.d.ts +4 -0
  65. package/dist/components/scroll-area/useScrollArea.d.ts +1 -0
  66. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +3 -0
  67. package/dist/components/scroll-area/useScrollAreaPresentation.d.ts +3 -0
  68. package/dist/components/select/useSelect.d.ts +3 -2
  69. package/dist/components/select/useSelectNativeValue.d.ts +1 -7
  70. package/dist/components/slider/range-slider-tooltip.d.ts +2 -0
  71. package/dist/components/slider/sliderCore.d.ts +2 -1
  72. package/dist/components/slider/types.d.ts +1 -1
  73. package/dist/components/slider/useRangeSlider.d.ts +3 -1
  74. package/dist/components/slider/useSlider.d.ts +3 -1
  75. package/dist/components/switch/useSwitch.d.ts +1 -1
  76. package/dist/components/textarea/useTextarea.d.ts +1 -1
  77. package/dist/components/toast/types.d.ts +2 -0
  78. package/dist/components/toast/useToastColor.d.ts +1 -1
  79. package/dist/components/tooltip/types.d.ts +1 -0
  80. package/dist/components/tooltip/useTooltip.d.ts +1 -1
  81. package/dist/composables/index.d.ts +2 -0
  82. package/dist/composables/index.js +2 -0
  83. package/dist/composables/useControllableValue.d.ts +14 -0
  84. package/dist/dialog.js +8 -5
  85. package/dist/dropdown-menu.js +98 -59
  86. package/dist/field.js +1 -1
  87. package/dist/floating.js +19 -7
  88. package/dist/icon-button.css +12 -169
  89. package/dist/icon-button.js +11 -7
  90. package/dist/index.d.ts +6 -4
  91. package/dist/index.js +8 -5
  92. package/dist/input.css +24 -24
  93. package/dist/input.js +6 -5
  94. package/dist/modal.js +11 -7
  95. package/dist/number-input.css +18 -18
  96. package/dist/number-input.js +8 -7
  97. package/dist/overlay.js +1 -1
  98. package/dist/pagination.css +140 -0
  99. package/dist/pagination.js +442 -0
  100. package/dist/popover.js +9 -6
  101. package/dist/progress.css +29 -21
  102. package/dist/progress.js +17 -10
  103. package/dist/radio.js +17 -7
  104. package/dist/scroll-area.css +10 -1
  105. package/dist/scroll-area.js +82 -25
  106. package/dist/select.css +45 -45
  107. package/dist/select.js +111 -70
  108. package/dist/slider.css +191 -191
  109. package/dist/slider.js +58 -46
  110. package/dist/switch.css +17 -17
  111. package/dist/switch.js +7 -6
  112. package/dist/tabs.css +3 -3
  113. package/dist/tabs.js +25 -15
  114. package/dist/textarea.css +26 -26
  115. package/dist/textarea.js +5 -4
  116. package/dist/toast.css +26 -26
  117. package/dist/toast.js +35 -23
  118. package/dist/tooltip.css +12 -12
  119. package/dist/tooltip.js +24 -16
  120. package/dist/unplugin-icons.js +38 -25
  121. package/dist/useCollapse.js +12 -7
  122. package/dist/useControlState.js +1 -1
  123. package/dist/useControllableValue.js +33 -0
  124. package/dist/useFloatingPosition.js +4 -1140
  125. package/dist/useFormControl.js +5 -29
  126. package/dist/useOverlayZIndex.js +1 -1
  127. package/dist/useRequiredInject.js +1 -1
  128. package/dist/utils/componentColors.d.ts +14 -1
  129. package/docs/public-composables-api.md +52 -0
  130. package/docs/public-styles-api.md +1 -1
  131. package/docs/public-tokens.md +648 -508
  132. package/package.json +49 -36
  133. package/src/styles/_mixins.scss +4 -0
  134. package/src/styles/_tokens.scss +460 -320
  135. package/src/styles/_variables.scss +1 -1
  136. package/src/styles/styles-manifest.json +1122 -2
  137. package/dist/button-link.css +0 -163
  138. /package/dist/{composables → internal/composables}/useOverlayLayer.d.ts +0 -0
package/dist/floating.js CHANGED
@@ -1,4 +1,5 @@
1
- import { computed, onBeforeUnmount, onMounted, ref, shallowRef, toValue, watch } from "vue";
1
+ import { t as useControllableValue } from "./useControllableValue.js";
2
+ import { computed, onBeforeUnmount, onMounted, shallowRef, toValue, watch } from "vue";
2
3
  //#region src/components/floating/useHoverDisclosure.ts
3
4
  var DEFAULT_OPEN_DELAY = 0;
4
5
  var DEFAULT_CLOSE_DELAY = 0;
@@ -36,12 +37,19 @@ function focusLeavesCurrentTarget(event) {
36
37
  return !(currentTarget && typeof Node !== "undefined" && nextTarget instanceof Node && currentTarget.contains(nextTarget));
37
38
  }
38
39
  function useHoverDisclosure(options = {}) {
39
- const uncontrolledOpen = ref(options.defaultOpen === true && !toValue(options.disabled));
40
40
  const resolvedInteractionTarget = shallowRef(null);
41
41
  const resolvedContentTarget = shallowRef(null);
42
42
  const controlledOpen = computed(() => toValue(options.open));
43
43
  const isDisabled = computed(() => Boolean(toValue(options.disabled)));
44
- const openState = computed(() => controlledOpen.value ?? uncontrolledOpen.value);
44
+ let pendingChangeDetails;
45
+ const controllableOpen = useControllableValue({
46
+ modelValue: () => controlledOpen.value,
47
+ defaultValue: () => options.defaultOpen === true && !isDisabled.value,
48
+ onChange: (nextOpen) => {
49
+ if (pendingChangeDetails) options.onOpenChange?.(nextOpen, pendingChangeDetails);
50
+ }
51
+ });
52
+ const openState = controllableOpen.value;
45
53
  const isOpen = computed(() => !isDisabled.value && openState.value);
46
54
  const state = computed(() => isOpen.value ? "open" : "closed");
47
55
  let requestedOpen = openState.value;
@@ -87,11 +95,15 @@ function useHoverDisclosure(options = {}) {
87
95
  function setOpen(nextOpen, reason, event) {
88
96
  if (disposed || nextOpen && isDisabled.value || requestedOpen === nextOpen) return;
89
97
  requestedOpen = nextOpen;
90
- if (controlledOpen.value === void 0) uncontrolledOpen.value = nextOpen;
91
- options.onOpenChange?.(nextOpen, {
98
+ pendingChangeDetails = {
92
99
  reason,
93
100
  event
94
- });
101
+ };
102
+ try {
103
+ controllableOpen.setValue(nextOpen);
104
+ } finally {
105
+ pendingChangeDetails = void 0;
106
+ }
95
107
  }
96
108
  function openImmediately(reason, event) {
97
109
  clearTimers();
@@ -328,7 +340,7 @@ function useHoverDisclosure(options = {}) {
328
340
  onFocusout: onContentFocusout,
329
341
  onKeydown
330
342
  }));
331
- watch(openState, (value) => {
343
+ watch([openState, controllableOpen.isControlled], ([value]) => {
332
344
  requestedOpen = value;
333
345
  if (!value) {
334
346
  contentHovered = false;
@@ -1,195 +1,38 @@
1
1
  @layer ropav.components {
2
- .rp-button[data-v-cda9a84b] {
3
- --_rp-button-bg: var(--rp-color-default);
4
- --_rp-button-bg-hover: var(--rp-color-default-hover);
5
- --_rp-button-bg-active: var(--rp-color-disabled);
6
- --_rp-button-border: var(--rp-color-default-border);
7
- --_rp-button-border-hover: var(--_rp-button-border);
8
- --_rp-button-border-active: var(--_rp-button-border-hover);
9
- --_rp-button-fg: var(--rp-color-default-color);
10
- --_rp-button-height: var(--rp-size-control-md);
11
- --_rp-button-padding-x: 22px;
12
- --_rp-button-font-size: var(--rp-font-size-md);
13
- --_rp-button-radius: var(--rp-radius-sm);
14
- --_rp-button-shadow: var(--rp-shadow-sm);
15
- --_rp-button-shadow-hover: var(--rp-shadow-base);
16
- --_rp-button-shadow-active: var(--rp-shadow-sm);
17
- display: inline-flex;
18
- align-items: center;
19
- justify-content: center;
20
- position: relative;
21
- box-sizing: border-box;
22
- font-family: var(--rp-font-family);
23
- font-weight: var(--rp-font-weight-medium);
24
- line-height: 1;
25
- appearance: none;
26
- background-color: var(--_rp-button-bg);
27
- border: var(--rp-border-width-thin) solid var(--_rp-button-border);
28
- box-shadow: var(--_rp-button-shadow);
29
- color: var(--_rp-button-fg);
30
- cursor: pointer;
31
- text-decoration: none;
32
- transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast), transform var(--rp-transition-fast);
33
- white-space: nowrap;
34
- user-select: none;
35
- height: var(--_rp-button-height);
36
- padding: 0 var(--_rp-button-padding-x);
37
- font-size: var(--_rp-button-font-size);
38
- border-radius: var(--_rp-button-radius);
39
- }
40
- .rp-button[data-v-cda9a84b]:hover:not(:disabled):not(.rp-button--disabled) {
41
- background-color: var(--_rp-button-bg-hover);
42
- border-color: var(--_rp-button-border-hover);
43
- box-shadow: var(--_rp-button-shadow-hover);
44
- }
45
- .rp-button[data-v-cda9a84b]:active:not(:disabled):not(.rp-button--disabled) {
46
- background-color: var(--_rp-button-bg-active);
47
- border-color: var(--_rp-button-border-active);
48
- box-shadow: var(--_rp-button-shadow-active);
49
- transform: translateY(1px);
50
- }
51
- .rp-button--size-xs[data-v-cda9a84b] {
52
- --_rp-button-height: var(--rp-size-control-xs);
53
- --_rp-button-padding-x: 14px;
54
- --_rp-button-font-size: var(--rp-font-size-xs);
55
- }
56
- .rp-button--size-sm[data-v-cda9a84b] {
57
- --_rp-button-height: var(--rp-size-control-sm);
58
- --_rp-button-padding-x: 18px;
59
- --_rp-button-font-size: var(--rp-font-size-sm);
60
- }
61
- .rp-button--size-md[data-v-cda9a84b] {
62
- --_rp-button-height: var(--rp-size-control-md);
63
- --_rp-button-padding-x: 22px;
64
- --_rp-button-font-size: var(--rp-font-size-md);
65
- }
66
- .rp-button--size-lg[data-v-cda9a84b] {
67
- --_rp-button-height: var(--rp-size-control-lg);
68
- --_rp-button-padding-x: 26px;
69
- --_rp-button-font-size: var(--rp-font-size-lg);
70
- }
71
- .rp-button--size-xl[data-v-cda9a84b] {
72
- --_rp-button-height: var(--rp-size-control-xl);
73
- --_rp-button-padding-x: 32px;
74
- --_rp-button-font-size: var(--rp-font-size-xl);
75
- }
76
- .rp-button--radius-xs[data-v-cda9a84b] {
77
- --_rp-button-radius: var(--rp-radius-xs);
78
- }
79
- .rp-button--radius-sm[data-v-cda9a84b] {
80
- --_rp-button-radius: var(--rp-radius-sm);
81
- }
82
- .rp-button--radius-md[data-v-cda9a84b] {
83
- --_rp-button-radius: var(--rp-radius-md);
84
- }
85
- .rp-button--radius-lg[data-v-cda9a84b] {
86
- --_rp-button-radius: var(--rp-radius-lg);
87
- }
88
- .rp-button--radius-xl[data-v-cda9a84b] {
89
- --_rp-button-radius: var(--rp-radius-xl);
90
- }
91
- .rp-button--subtle[data-v-cda9a84b] {
92
- --_rp-button-shadow: none;
93
- --_rp-button-shadow-hover: none;
94
- --_rp-button-shadow-active: none;
95
- }
96
- .rp-button--surface[data-v-cda9a84b] {
97
- --_rp-button-shadow: none;
98
- --_rp-button-shadow-hover: none;
99
- --_rp-button-shadow-active: none;
100
- }
101
- .rp-button--outline[data-v-cda9a84b] {
102
- --_rp-button-shadow: none;
103
- --_rp-button-shadow-hover: none;
104
- --_rp-button-shadow-active: none;
105
- }
106
- .rp-button--ghost[data-v-cda9a84b] {
107
- --_rp-button-shadow: none;
108
- --_rp-button-shadow-hover: none;
109
- --_rp-button-shadow-active: none;
110
- }
111
- .rp-button--plain[data-v-cda9a84b] {
112
- --_rp-button-shadow: none;
113
- --_rp-button-shadow-hover: none;
114
- --_rp-button-shadow-active: none;
115
- }
116
- .rp-button[data-v-cda9a84b]:disabled, .rp-button--disabled[data-v-cda9a84b] {
117
- opacity: var(--rp-opacity-disabled);
118
- cursor: not-allowed;
119
- box-shadow: none;
120
- transform: none;
121
- }
122
- .rp-button[data-v-cda9a84b]:focus-visible {
123
- outline: none;
124
- border-color: var(--rp-color-control-border-focus);
125
- box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
126
- }
127
- .rp-button--loading .rp-button__content[data-v-cda9a84b] {
128
- opacity: 0;
129
- }
130
- .rp-button__content[data-v-cda9a84b] {
131
- display: inline-flex;
132
- align-items: center;
133
- justify-content: center;
134
- gap: var(--rp-spacing-2);
135
- }
136
- .rp-button__left[data-v-cda9a84b], .rp-button__right[data-v-cda9a84b] {
137
- display: inline-flex;
138
- align-items: center;
139
- flex-shrink: 0;
140
- }
141
- .rp-button__loading[data-v-cda9a84b] {
142
- display: inline-flex;
143
- align-items: center;
144
- justify-content: center;
145
- position: absolute;
146
- top: 50%;
147
- left: 50%;
148
- translate: -50% -50%;
149
- }
150
- .rp-button__spinner[data-v-cda9a84b] {
151
- display: block;
152
- width: 1em;
153
- height: 1em;
154
- flex-shrink: 0;
155
- transform-origin: center;
156
- animation: rp-spinner-spin-cda9a84b 700ms linear infinite;
157
- }
158
- @keyframes rp-spinner-spin-cda9a84b {
159
- to {
160
- transform: rotate(360deg);
161
- }
162
- }
163
- }@layer ropav.components {
164
- .rp-icon-button[data-v-cda9a84b] {
2
+ .rp-icon-button[data-v-135bc879] {
165
3
  width: var(--_rp-button-height);
166
4
  padding: 0;
167
5
  }
168
- .rp-icon-button__icon[data-v-cda9a84b] {
6
+ .rp-icon-button__icon[data-v-135bc879] {
169
7
  width: 1em;
170
8
  height: 1em;
171
9
  flex-shrink: 0;
172
10
  }
173
- .rp-icon-button__icon[data-v-cda9a84b] {
11
+ .rp-icon-button__icon[data-v-135bc879] {
174
12
  display: inline-flex;
175
13
  align-items: center;
176
14
  justify-content: center;
177
15
  line-height: 0;
178
16
  }
179
- .rp-icon-button__icon[data-v-cda9a84b] > svg {
17
+ .rp-icon-button__icon[data-v-135bc879] > svg {
180
18
  display: block;
181
19
  width: 1em;
182
20
  height: 1em;
183
21
  }
184
- .rp-icon-button__spinner[data-v-cda9a84b] {
22
+ .rp-icon-button__spinner[data-v-135bc879] {
185
23
  display: block;
186
24
  width: 1em;
187
25
  height: 1em;
188
26
  flex-shrink: 0;
189
27
  transform-origin: center;
190
- animation: rp-spinner-spin-cda9a84b 700ms linear infinite;
28
+ animation: rp-spinner-spin-135bc879 700ms linear infinite;
29
+ }
30
+ @media (prefers-reduced-motion: reduce) {
31
+ .rp-icon-button__spinner[data-v-135bc879] {
32
+ animation: none;
33
+ }
191
34
  }
192
- @keyframes rp-spinner-spin-cda9a84b {
35
+ @keyframes rp-spinner-spin-135bc879 {
193
36
  to {
194
37
  transform: rotate(360deg);
195
38
  }
@@ -1,12 +1,12 @@
1
1
  import './icon-button.css';
2
- import { t as bem } from "./bem.js";
3
2
  import { n as useStylesApi, t as presence } from "./styles-api.js";
3
+ import { t as bem } from "./bem.js";
4
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
- import { n as loader_circle_default, t as getButtonColorStyle } from "./useButtonColor.js";
5
+ import { n as loader_circle_default, t as getButtonColorStyle } from "./button.scss_vue_type_style_index_0_src_true_lang.js";
6
6
  import { computed, createComponent, createIf, createSlot, defineVaporComponent, renderEffect, setDynamicProps, setInsertionState, template, unref } from "vue";
7
7
  //#region src/components/icon-button/icon-button.vue?vue&type=script&setup=true&vapor=true&lang.ts
8
- var t0 = template("<span data-v-cda9a84b>");
9
- var t1 = template("<button data-v-cda9a84b>", 1);
8
+ var t0 = template("<span data-v-135bc879>");
9
+ var t1 = template("<button data-v-135bc879>", 1);
10
10
  //#endregion
11
11
  //#region src/components/icon-button/icon-button.vue
12
12
  var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -17,7 +17,11 @@ var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
17
17
  ariaLabel: {},
18
18
  variant: {},
19
19
  color: {},
20
- autoContrast: { type: Boolean },
20
+ autoContrast: {
21
+ type: Boolean,
22
+ default: true
23
+ },
24
+ contrastColor: {},
21
25
  size: {},
22
26
  radius: {},
23
27
  type: { default: "button" },
@@ -39,7 +43,7 @@ var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
39
43
  [`size-${props.size}`]: Boolean(props.size),
40
44
  [`radius-${props.radius}`]: Boolean(props.radius)
41
45
  }), "rp-icon-button"]);
42
- const rootStyle = computed(() => getButtonColorStyle(props.color, props.variant, props.autoContrast));
46
+ const rootStyle = computed(() => getButtonColorStyle(props.color, props.variant, props.autoContrast, props.contrastColor));
43
47
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
44
48
  const rootAttrs = computed(() => getRootAttrs({
45
49
  class: rootClass.value,
@@ -65,6 +69,6 @@ var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
65
69
  }, 261);
66
70
  return n6;
67
71
  }
68
- }), [["__scopeId", "data-v-cda9a84b"]]);
72
+ }), [["__scopeId", "data-v-135bc879"]]);
69
73
  //#endregion
70
74
  export { icon_button_default as t };
package/dist/index.d.ts CHANGED
@@ -1,28 +1,30 @@
1
1
  export type { StylesApiClassNames, StylesApiProps, StylesApiStyles } from './styles-api.js';
2
- export * from './components/alert/index.js';
2
+ export * from './composables/index.js';
3
3
  export * from './components/accordion/index.js';
4
+ export * from './components/alert/index.js';
4
5
  export * from './components/aspect-ratio/index.js';
5
6
  export * from './components/avatar/index.js';
6
7
  export * from './components/badge/index.js';
7
8
  export * from './components/button/index.js';
8
- export * from './components/button-link/index.js';
9
9
  export * from './components/button-group/index.js';
10
+ export * from './components/button-link/index.js';
10
11
  export * from './components/card/index.js';
11
12
  export * from './components/checkbox/index.js';
12
13
  export * from './components/collapse/index.js';
13
14
  export * from './components/color-input/index.js';
14
15
  export * from './components/color-picker/index.js';
15
16
  export * from './components/color-swatch/index.js';
16
- export * from './components/dropdown-menu/index.js';
17
17
  export * from './components/dialog/index.js';
18
+ export * from './components/dropdown-menu/index.js';
18
19
  export * from './components/field/index.js';
19
- export * from './components/focus-trap/index.js';
20
20
  export * from './components/floating/index.js';
21
+ export * from './components/focus-trap/index.js';
21
22
  export * from './components/icon-button/index.js';
22
23
  export * from './components/input/index.js';
23
24
  export * from './components/modal/index.js';
24
25
  export * from './components/number-input/index.js';
25
26
  export * from './components/overlay/index.js';
27
+ export * from './components/pagination/index.js';
26
28
  export * from './components/popover/index.js';
27
29
  export * from './components/progress/index.js';
28
30
  export * from './components/radio/index.js';
package/dist/index.js CHANGED
@@ -1,12 +1,14 @@
1
- import { a as alert_default, i as alertVariants, n as alertParts, r as alertRadiuses, t as alertColors } from "./alert.js";
1
+ import { t as useControllableValue } from "./useControllableValue.js";
2
+ import "./composables/index.js";
2
3
  import { t as useCollapse } from "./useCollapse.js";
3
4
  import { a as accordionItemParts, i as useAccordionItem, n as accordion_default, o as accordionParts, r as useAccordion, t as accordion_item_default } from "./accordion.js";
5
+ import { a as alert_default, i as alertVariants, n as alertParts, r as alertRadiuses, t as alertColors } from "./alert.js";
4
6
  import { n as aspect_ratio_default, t as aspectRatioParts } from "./aspect-ratio.js";
5
7
  import { a as avatarVariants, i as avatarSizes, n as avatarParts, o as avatar_default, r as avatarRadiuses, t as avatarColors } from "./avatar.js";
6
8
  import { a as badgeVariants, i as badgeSizes, n as badgeParts, o as badge_default, r as badgeRadiuses, t as badgeColors } from "./badge.js";
7
9
  import { n as button_default, t as buttonParts } from "./button.js";
8
- import { n as button_link_default, t as buttonLinkParts } from "./button-link.js";
9
10
  import { n as button_group_default, t as buttonGroupParts } from "./button-group.js";
11
+ import { n as button_link_default, t as buttonLinkParts } from "./button-link.js";
10
12
  import { n as card_default, t as cardParts } from "./card.js";
11
13
  import { n as checkbox_default, t as checkboxParts } from "./checkbox.js";
12
14
  import { n as collapse_default, t as collapseParts } from "./collapse.js";
@@ -21,11 +23,11 @@ import { r as useTeleportTarget } from "./useTeleportTarget.js";
21
23
  import { t as popover_default } from "./popover.js";
22
24
  import { n as colorPickerParts, r as colorPickerSizes, t as colorPickerFormats } from "./color-picker2.js";
23
25
  import { t as colorSwatchParts } from "./color-swatch2.js";
24
- import { _ as dropdown_menu_content_default, a as dropdown_menu_trigger_default, c as dropdown_menu_sub_default, d as dropdown_menu_radio_item_default, f as dropdown_menu_radio_group_default, g as dropdown_menu_context_trigger_default, h as dropdown_menu_item_indicator_default, i as useDropdownMenu, l as dropdown_menu_separator_default, m as dropdown_menu_label_default, n as dropdownMenuParts, o as dropdown_menu_sub_trigger_default, p as dropdown_menu_portal_default, r as dropdown_menu_default, s as dropdown_menu_sub_content_default, t as DropdownMenuItem, u as dropdown_menu_root_default, v as dropdown_menu_checkbox_item_default } from "./dropdown-menu.js";
25
26
  import { a as dialog_overlay_default, c as dialog_close_default, i as dialog_portal_default, n as dialog_title_default, o as dialog_description_default, r as dialog_root_default, s as dialog_content_default, t as dialog_trigger_default } from "./dialog.js";
27
+ import { _ as dropdown_menu_content_default, a as dropdown_menu_trigger_default, c as dropdown_menu_sub_default, d as dropdown_menu_radio_item_default, f as dropdown_menu_radio_group_default, g as dropdown_menu_context_trigger_default, h as dropdown_menu_item_indicator_default, i as useDropdownMenu, l as dropdown_menu_separator_default, m as dropdown_menu_label_default, n as dropdownMenuParts, o as dropdown_menu_sub_trigger_default, p as dropdown_menu_portal_default, r as dropdown_menu_default, s as dropdown_menu_sub_content_default, t as DropdownMenuItem, u as dropdown_menu_root_default, v as dropdown_menu_checkbox_item_default } from "./dropdown-menu.js";
26
28
  import { n as field_default, t as fieldParts } from "./field.js";
27
- import { n as focus_trap_default, t as focusTrapParts } from "./focus-trap.js";
28
29
  import { t as useHoverDisclosure } from "./floating.js";
30
+ import { n as focus_trap_default, t as focusTrapParts } from "./focus-trap.js";
29
31
  import { t as icon_button_default } from "./icon-button.js";
30
32
  import { t as iconButtonParts } from "./icon-button2.js";
31
33
  import { t as inputParts } from "./input2.js";
@@ -34,6 +36,7 @@ import { t as scroll_area_default } from "./scroll-area.js";
34
36
  import { n as modal_default, t as modalParts } from "./modal.js";
35
37
  import { n as number_input_default, t as numberInputParts } from "./number-input.js";
36
38
  import { n as overlay_layer_provider_default, t as overlayParts } from "./overlay2.js";
39
+ import { a as pagination_default, c as normalizePaginationTotal, i as paginationSizes, l as usePagination, n as paginationParts, o as getPaginationItems, r as paginationRadiuses, s as normalizePaginationPage, t as paginationColors } from "./pagination.js";
37
40
  import { n as popoverPlacements, t as popoverParts } from "./popover2.js";
38
41
  import { a as progress_default, i as progressSizes, n as progressParts, r as progressRadiuses, t as progressColors } from "./progress.js";
39
42
  import { i as radioParts, n as radio_default, r as radioGroupParts, t as radio_group_default } from "./radio.js";
@@ -47,4 +50,4 @@ import { t as teleport_provider_default } from "./teleport-provider.js";
47
50
  import { n as textarea_default, t as textareaParts } from "./textarea.js";
48
51
  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";
49
52
  import { t as tooltipParts } from "./tooltip2.js";
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 };
53
+ 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, pagination_default as Pagination, 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, getPaginationItems, iconButtonParts, inputParts, modalParts, normalizePaginationPage, normalizePaginationTotal, numberInputParts, overlayParts, paginationColors, paginationParts, paginationRadiuses, paginationSizes, 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, useControllableValue, useDropdownMenu, useFloatingPosition, useFocusTrap, useHoverDisclosure, useOverlayZIndex, usePagination, useTabs, useTabsContent, useTabsList, useTabsTrigger, useTeleportTarget, useToast, useToastState };
package/dist/input.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-input[data-v-3dd93444] {
2
+ .rp-input[data-v-51eae1ef] {
3
3
  --_rp-input-height: var(--rp-size-control-md);
4
4
  --_rp-input-padding-x: calc(var(--rp-size-control-md) / 3);
5
5
  --_rp-input-font-size: var(--rp-font-size-md);
@@ -20,81 +20,81 @@
20
20
  cursor: text;
21
21
  transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
22
22
  }
23
- .rp-input[data-v-3dd93444]:hover:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
23
+ .rp-input[data-v-51eae1ef]:hover:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
24
24
  border-color: var(--rp-color-control-border-hover);
25
25
  }
26
- .rp-input[data-v-3dd93444]:focus-within:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
26
+ .rp-input[data-v-51eae1ef]:focus-within:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
27
27
  border-color: var(--rp-color-control-border-focus);
28
28
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
29
29
  }
30
- .rp-input[data-v-3dd93444] {
30
+ .rp-input[data-v-51eae1ef] {
31
31
  height: var(--_rp-input-height);
32
32
  padding: 0 var(--_rp-input-padding-x);
33
33
  font-size: var(--_rp-input-font-size);
34
34
  border-radius: var(--_rp-input-radius);
35
35
  }
36
- .rp-input--size-xs[data-v-3dd93444] {
36
+ .rp-input--size-xs[data-v-51eae1ef] {
37
37
  --_rp-input-height: var(--rp-size-control-xs);
38
38
  --_rp-input-padding-x: calc(var(--rp-size-control-xs) / 3);
39
39
  --_rp-input-font-size: var(--rp-font-size-xs);
40
40
  }
41
- .rp-input--size-sm[data-v-3dd93444] {
41
+ .rp-input--size-sm[data-v-51eae1ef] {
42
42
  --_rp-input-height: var(--rp-size-control-sm);
43
43
  --_rp-input-padding-x: calc(var(--rp-size-control-sm) / 3);
44
44
  --_rp-input-font-size: var(--rp-font-size-sm);
45
45
  }
46
- .rp-input--size-md[data-v-3dd93444] {
46
+ .rp-input--size-md[data-v-51eae1ef] {
47
47
  --_rp-input-height: var(--rp-size-control-md);
48
48
  --_rp-input-padding-x: calc(var(--rp-size-control-md) / 3);
49
49
  --_rp-input-font-size: var(--rp-font-size-md);
50
50
  }
51
- .rp-input--size-lg[data-v-3dd93444] {
51
+ .rp-input--size-lg[data-v-51eae1ef] {
52
52
  --_rp-input-height: var(--rp-size-control-lg);
53
53
  --_rp-input-padding-x: calc(var(--rp-size-control-lg) / 3);
54
54
  --_rp-input-font-size: var(--rp-font-size-lg);
55
55
  }
56
- .rp-input--size-xl[data-v-3dd93444] {
56
+ .rp-input--size-xl[data-v-51eae1ef] {
57
57
  --_rp-input-height: var(--rp-size-control-xl);
58
58
  --_rp-input-padding-x: calc(var(--rp-size-control-xl) / 3);
59
59
  --_rp-input-font-size: var(--rp-font-size-xl);
60
60
  }
61
- .rp-input--radius-xs[data-v-3dd93444] {
61
+ .rp-input--radius-xs[data-v-51eae1ef] {
62
62
  --_rp-input-radius: var(--rp-radius-xs);
63
63
  }
64
- .rp-input--radius-sm[data-v-3dd93444] {
64
+ .rp-input--radius-sm[data-v-51eae1ef] {
65
65
  --_rp-input-radius: var(--rp-radius-sm);
66
66
  }
67
- .rp-input--radius-md[data-v-3dd93444] {
67
+ .rp-input--radius-md[data-v-51eae1ef] {
68
68
  --_rp-input-radius: var(--rp-radius-md);
69
69
  }
70
- .rp-input--radius-lg[data-v-3dd93444] {
70
+ .rp-input--radius-lg[data-v-51eae1ef] {
71
71
  --_rp-input-radius: var(--rp-radius-lg);
72
72
  }
73
- .rp-input--radius-xl[data-v-3dd93444] {
73
+ .rp-input--radius-xl[data-v-51eae1ef] {
74
74
  --_rp-input-radius: var(--rp-radius-xl);
75
75
  }
76
- .rp-input--disabled[data-v-3dd93444] {
76
+ .rp-input--disabled[data-v-51eae1ef] {
77
77
  opacity: var(--rp-opacity-disabled);
78
78
  cursor: not-allowed;
79
79
  }
80
- .rp-input--valid[data-v-3dd93444] {
80
+ .rp-input--valid[data-v-51eae1ef] {
81
81
  border-color: var(--_rp-input-valid-border);
82
82
  }
83
- .rp-input--valid[data-v-3dd93444]:focus-within:not(.rp-input--disabled) {
83
+ .rp-input--valid[data-v-51eae1ef]:focus-within:not(.rp-input--disabled) {
84
84
  border-color: var(--_rp-input-valid-border);
85
85
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-input-valid-ring);
86
86
  }
87
- .rp-input--invalid[data-v-3dd93444] {
87
+ .rp-input--invalid[data-v-51eae1ef] {
88
88
  border-color: var(--_rp-input-invalid-border);
89
89
  }
90
- .rp-input--invalid[data-v-3dd93444]:focus-within:not(.rp-input--disabled) {
90
+ .rp-input--invalid[data-v-51eae1ef]:focus-within:not(.rp-input--disabled) {
91
91
  border-color: var(--_rp-input-invalid-border);
92
92
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-input-invalid-ring);
93
93
  }
94
- .rp-input--readonly[data-v-3dd93444] {
94
+ .rp-input--readonly[data-v-51eae1ef] {
95
95
  background-color: var(--rp-color-control-readonly-bg);
96
96
  }
97
- .rp-input__native[data-v-3dd93444] {
97
+ .rp-input__native[data-v-51eae1ef] {
98
98
  box-sizing: border-box;
99
99
  flex: 1;
100
100
  width: 100%;
@@ -108,13 +108,13 @@
108
108
  color: var(--rp-color-control-fg);
109
109
  line-height: 1;
110
110
  }
111
- .rp-input__native[data-v-3dd93444]::placeholder {
111
+ .rp-input__native[data-v-51eae1ef]::placeholder {
112
112
  color: var(--rp-color-control-placeholder);
113
113
  }
114
- .rp-input__native[data-v-3dd93444]:disabled {
114
+ .rp-input__native[data-v-51eae1ef]:disabled {
115
115
  cursor: not-allowed;
116
116
  }
117
- .rp-input__left[data-v-3dd93444], .rp-input__right[data-v-3dd93444] {
117
+ .rp-input__left[data-v-51eae1ef], .rp-input__right[data-v-51eae1ef] {
118
118
  display: inline-flex;
119
119
  align-items: center;
120
120
  flex-shrink: 0;
package/dist/input.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import './input.css';
2
- import { t as bem } from "./bem.js";
2
+ import { t as useControllableValue } from "./useControllableValue.js";
3
3
  import { n as useStylesApi, t as presence } from "./styles-api.js";
4
+ import { t as bem } from "./bem.js";
4
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
- import { a as useTextFormControl, o as useControllableValue, t as claimNestedFormControlOwner } from "./useFormControl.js";
6
+ import { a as useTextFormControl, t as claimNestedFormControlOwner } from "./useFormControl.js";
6
7
  import { t as useControlState } from "./useControlState.js";
7
8
  import { child, computed, createIf, createSlot, defineVaporComponent, ref, renderEffect, setDynamicProps, setInsertionState, setStaticTemplateRef, template, unref } from "vue";
8
9
  //#region src/components/input/useInput.ts
@@ -48,8 +49,8 @@ function useInput(props, emitUpdate) {
48
49
  }
49
50
  //#endregion
50
51
  //#region src/components/input/input.vue?vue&type=script&setup=true&vapor=true&lang.ts
51
- var t0 = template("<span data-v-3dd93444>");
52
- var t1 = template("<label data-v-3dd93444><input data-v-3dd93444>", 1);
52
+ var t0 = template("<span data-v-51eae1ef>");
53
+ var t1 = template("<div data-v-51eae1ef><input data-v-51eae1ef>", 1);
53
54
  //#endregion
54
55
  //#region src/components/input/input.vue
55
56
  var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -175,6 +176,6 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
175
176
  });
176
177
  return n9;
177
178
  }
178
- }), [["__scopeId", "data-v-3dd93444"]]);
179
+ }), [["__scopeId", "data-v-51eae1ef"]]);
179
180
  //#endregion
180
181
  export { input_default as t };
package/dist/modal.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import './modal.css';
2
- import { t as x_default } from "./x.js";
3
- import { t as bem } from "./bem.js";
2
+ import { t as useControllableValue } from "./useControllableValue.js";
4
3
  import { n as useStylesApi } from "./styles-api.js";
4
+ import { t as bem } from "./bem.js";
5
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { t as x_default } from "./x.js";
6
7
  import { a as dialog_overlay_default, c as dialog_close_default, i as dialog_portal_default, l as resolveDialogCloseReason, n as dialog_title_default, o as dialog_description_default, r as dialog_root_default, s as dialog_content_default } from "./dialog.js";
7
8
  import { t as icon_button_default } from "./icon-button.js";
8
9
  import { t as overlay_default } from "./overlay.js";
9
10
  import { t as scroll_area_default } from "./scroll-area.js";
10
- import { VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, defineVaporComponent, extend, mergeProps, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, unref, useId, useSlots } from "vue";
11
+ import { VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, defineVaporComponent, extend, mergeProps, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, unref, useId, useSlots } from "vue";
11
12
  //#region src/components/modal/useModal.ts
12
13
  var DEFAULT_ROLE = "dialog";
13
14
  var DEFAULT_SIZE = "md";
@@ -24,14 +25,18 @@ function isModalPresetSize(size) {
24
25
  function useModal(props, emit = {}) {
25
26
  const slots = useSlots();
26
27
  const generatedId = useId();
27
- const uncontrolledOpen = ref(false);
28
+ const controllableOpen = useControllableValue({
29
+ modelValue: () => props.open,
30
+ defaultValue: () => false,
31
+ onChange: (open) => emit.openChange?.(open)
32
+ });
28
33
  const modalId = computed(() => props.id ?? `${generatedId}-modal`);
29
34
  const titleId = computed(() => `${modalId.value}-title`);
30
35
  const descriptionId = computed(() => `${modalId.value}-description`);
31
36
  const role = computed(() => props.role ?? DEFAULT_ROLE);
32
37
  const size = computed(() => props.size || DEFAULT_SIZE);
33
38
  const isPresetSize = computed(() => isModalPresetSize(size.value));
34
- const isOpen = computed(() => props.open ?? uncontrolledOpen.value);
39
+ const isOpen = controllableOpen.value;
35
40
  const shouldRender = computed(() => Boolean(props.keepMounted || isOpen.value));
36
41
  const hasCustomHeader = computed(() => Boolean(slots.header));
37
42
  const hasHeader = computed(() => Boolean(hasCustomHeader.value || props.title || props.description));
@@ -65,8 +70,7 @@ function useModal(props, emit = {}) {
65
70
  }));
66
71
  function setOpen(nextOpen) {
67
72
  if (nextOpen === isOpen.value) return;
68
- if (props.open === void 0) uncontrolledOpen.value = nextOpen;
69
- emit.openChange?.(nextOpen);
73
+ controllableOpen.setValue(nextOpen);
70
74
  }
71
75
  function openModal() {
72
76
  setOpen(true);