ropav 0.0.10 → 0.0.12

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 (276) hide show
  1. package/README.md +9 -0
  2. package/dist/accordion.css +115 -111
  3. package/dist/accordion.js +60 -16
  4. package/dist/alert.css +110 -108
  5. package/dist/alert.js +48 -26
  6. package/dist/aspect-ratio.css +17 -15
  7. package/dist/aspect-ratio.js +20 -6
  8. package/dist/avatar.css +98 -96
  9. package/dist/avatar.js +27 -16
  10. package/dist/badge.css +95 -93
  11. package/dist/badge.js +29 -16
  12. package/dist/base.css +672 -671
  13. package/dist/button-group.css +39 -37
  14. package/dist/button-group.js +23 -12
  15. package/dist/button-link.css +160 -158
  16. package/dist/button-link.js +43 -24
  17. package/dist/button.css +160 -158
  18. package/dist/button.js +37 -19
  19. package/dist/card.css +109 -107
  20. package/dist/card.js +42 -17
  21. package/dist/checkbox.css +139 -137
  22. package/dist/checkbox.js +103 -33
  23. package/dist/collapse.css +29 -27
  24. package/dist/collapse.js +44 -10
  25. package/dist/color-input.css +137 -107
  26. package/dist/color-input.js +117 -30
  27. package/dist/color-picker.css +309 -303
  28. package/dist/color-picker.js +147 -54
  29. package/dist/color-picker2.js +9 -1
  30. package/dist/color-swatch.css +48 -46
  31. package/dist/color-swatch.js +15 -11
  32. package/dist/color-swatch2.js +4 -0
  33. package/dist/components/accordion/accordion-item.d.ts +13 -1
  34. package/dist/components/accordion/index.d.ts +2 -1
  35. package/dist/components/accordion/index.js +2 -2
  36. package/dist/components/accordion/types.d.ts +9 -4
  37. package/dist/components/alert/alert.d.ts +2 -2
  38. package/dist/components/alert/index.d.ts +2 -2
  39. package/dist/components/alert/index.js +2 -2
  40. package/dist/components/alert/types.d.ts +4 -1
  41. package/dist/components/aspect-ratio/index.d.ts +2 -1
  42. package/dist/components/aspect-ratio/index.js +2 -2
  43. package/dist/components/aspect-ratio/types.d.ts +4 -1
  44. package/dist/components/avatar/index.d.ts +2 -2
  45. package/dist/components/avatar/index.js +2 -2
  46. package/dist/components/avatar/types.d.ts +4 -1
  47. package/dist/components/badge/index.d.ts +2 -2
  48. package/dist/components/badge/index.js +2 -2
  49. package/dist/components/badge/types.d.ts +4 -1
  50. package/dist/components/button/index.d.ts +2 -1
  51. package/dist/components/button/index.js +2 -2
  52. package/dist/components/button/types.d.ts +4 -1
  53. package/dist/components/button-group/index.d.ts +2 -1
  54. package/dist/components/button-group/index.js +2 -2
  55. package/dist/components/button-group/types.d.ts +4 -1
  56. package/dist/components/button-link/index.d.ts +2 -1
  57. package/dist/components/button-link/index.js +2 -2
  58. package/dist/components/button-link/types.d.ts +4 -1
  59. package/dist/components/card/index.d.ts +2 -1
  60. package/dist/components/card/index.js +2 -2
  61. package/dist/components/card/types.d.ts +5 -1
  62. package/dist/components/checkbox/checkbox.d.ts +4 -1
  63. package/dist/components/checkbox/index.d.ts +2 -1
  64. package/dist/components/checkbox/index.js +2 -2
  65. package/dist/components/checkbox/types.d.ts +11 -2
  66. package/dist/components/checkbox/useCheckbox.d.ts +3 -1
  67. package/dist/components/collapse/collapse.d.ts +2 -2
  68. package/dist/components/collapse/index.d.ts +2 -1
  69. package/dist/components/collapse/index.js +2 -2
  70. package/dist/components/collapse/types.d.ts +9 -2
  71. package/dist/components/color-input/index.d.ts +2 -1
  72. package/dist/components/color-input/index.js +2 -2
  73. package/dist/components/color-input/types.d.ts +8 -2
  74. package/dist/components/color-input/useColorInput.d.ts +1 -1
  75. package/dist/components/color-input/useColorInputValue.d.ts +1 -1
  76. package/dist/components/color-picker/index.d.ts +2 -2
  77. package/dist/components/color-picker/index.js +2 -2
  78. package/dist/components/color-picker/types.d.ts +13 -1
  79. package/dist/components/color-swatch/index.d.ts +2 -1
  80. package/dist/components/color-swatch/index.js +2 -1
  81. package/dist/components/color-swatch/types.d.ts +4 -1
  82. package/dist/components/dialog/dialog-close.d.ts +21 -0
  83. package/dist/components/dialog/dialog-content.d.ts +32 -0
  84. package/dist/components/dialog/dialog-core.d.ts +27 -0
  85. package/dist/components/dialog/dialog-description.d.ts +21 -0
  86. package/dist/components/dialog/dialog-overlay.d.ts +21 -0
  87. package/dist/components/dialog/dialog-portal.d.ts +21 -0
  88. package/dist/components/dialog/dialog-root.d.ts +28 -0
  89. package/dist/components/dialog/dialog-title.d.ts +21 -0
  90. package/dist/components/dialog/dialog-trigger.d.ts +23 -0
  91. package/dist/components/dialog/index.d.ts +9 -0
  92. package/dist/components/dialog/index.js +2 -0
  93. package/dist/components/dialog/types.d.ts +61 -0
  94. package/dist/components/dropdown-menu/dropdown-menu-checkbox-item.d.ts +24 -0
  95. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +34 -0
  96. package/dist/components/dropdown-menu/dropdown-menu-context-trigger.d.ts +23 -0
  97. package/dist/components/dropdown-menu/dropdown-menu-item-indicator.d.ts +24 -0
  98. package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +28 -0
  99. package/dist/components/dropdown-menu/dropdown-menu-item.d.ts +23 -0
  100. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +24 -22
  101. package/dist/components/dropdown-menu/dropdown-menu-label.d.ts +21 -0
  102. package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +3 -0
  103. package/dist/components/dropdown-menu/dropdown-menu-portal.d.ts +21 -0
  104. package/dist/components/dropdown-menu/dropdown-menu-primitive-core.d.ts +110 -0
  105. package/dist/components/dropdown-menu/dropdown-menu-primitives.d.ts +15 -0
  106. package/dist/components/dropdown-menu/dropdown-menu-radio-group.d.ts +25 -0
  107. package/dist/components/dropdown-menu/dropdown-menu-radio-item.d.ts +23 -0
  108. package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +30 -0
  109. package/dist/components/dropdown-menu/dropdown-menu-separator.d.ts +19 -0
  110. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +34 -0
  111. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +28 -0
  112. package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +28 -0
  113. package/dist/components/dropdown-menu/dropdown-menu-trigger.d.ts +23 -0
  114. package/dist/components/dropdown-menu/dropdown-menu.d.ts +6 -3
  115. package/dist/components/dropdown-menu/index.d.ts +32 -1
  116. package/dist/components/dropdown-menu/index.js +2 -2
  117. package/dist/components/dropdown-menu/types.d.ts +145 -6
  118. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +15 -3
  119. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +10 -3
  120. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +2 -1
  121. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +4 -4
  122. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +19 -0
  123. package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +27 -0
  124. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +14 -2
  125. package/dist/components/field/index.d.ts +2 -1
  126. package/dist/components/field/index.js +2 -2
  127. package/dist/components/field/types.d.ts +4 -1
  128. package/dist/components/floating/index.d.ts +3 -0
  129. package/dist/components/floating/index.js +3 -0
  130. package/dist/components/floating/types.d.ts +105 -0
  131. package/dist/components/floating/useFloatingPosition.d.ts +15 -0
  132. package/dist/components/floating/useHoverDisclosure.d.ts +2 -0
  133. package/dist/components/focus-trap/focus-trap.d.ts +31 -0
  134. package/dist/components/focus-trap/index.d.ts +4 -0
  135. package/dist/components/focus-trap/index.js +3 -0
  136. package/dist/components/focus-trap/types.d.ts +41 -0
  137. package/dist/components/focus-trap/useFocusTrap.d.ts +2 -0
  138. package/dist/components/icon-button/index.d.ts +2 -1
  139. package/dist/components/icon-button/index.js +2 -1
  140. package/dist/components/icon-button/types.d.ts +4 -1
  141. package/dist/components/input/index.d.ts +2 -1
  142. package/dist/components/input/index.js +2 -1
  143. package/dist/components/input/input.d.ts +4 -1
  144. package/dist/components/input/types.d.ts +7 -2
  145. package/dist/components/modal/index.d.ts +2 -1
  146. package/dist/components/modal/index.js +2 -2
  147. package/dist/components/modal/modal.d.ts +3 -1
  148. package/dist/components/modal/types.d.ts +11 -1
  149. package/dist/components/modal/useModal.d.ts +7 -4
  150. package/dist/components/number-input/index.d.ts +2 -1
  151. package/dist/components/number-input/index.js +2 -2
  152. package/dist/components/number-input/types.d.ts +7 -2
  153. package/dist/components/number-input/useNumberInput.d.ts +2 -1
  154. package/dist/components/overlay/index.d.ts +2 -1
  155. package/dist/components/overlay/index.js +2 -1
  156. package/dist/components/overlay/types.d.ts +4 -1
  157. package/dist/components/popover/index.d.ts +2 -2
  158. package/dist/components/popover/index.js +2 -2
  159. package/dist/components/popover/popover.d.ts +2 -2
  160. package/dist/components/popover/types.d.ts +20 -11
  161. package/dist/components/popover/usePopover.d.ts +9 -1
  162. package/dist/components/progress/index.d.ts +2 -2
  163. package/dist/components/progress/index.js +2 -2
  164. package/dist/components/progress/types.d.ts +4 -1
  165. package/dist/components/radio/index.d.ts +2 -1
  166. package/dist/components/radio/index.js +2 -2
  167. package/dist/components/radio/radio.d.ts +8 -3
  168. package/dist/components/radio/types.d.ts +37 -4
  169. package/dist/components/radio/useRadio.d.ts +12 -4
  170. package/dist/components/select/index.d.ts +2 -1
  171. package/dist/components/select/index.js +2 -2
  172. package/dist/components/select/select.d.ts +4 -1
  173. package/dist/components/select/types.d.ts +10 -2
  174. package/dist/components/select/useSelect.d.ts +3 -1
  175. package/dist/components/slider/index.d.ts +2 -2
  176. package/dist/components/slider/index.js +2 -2
  177. package/dist/components/slider/range-slider-tooltip.d.ts +3 -0
  178. package/dist/components/slider/range-slider.d.ts +7 -4
  179. package/dist/components/slider/slider.d.ts +4 -1
  180. package/dist/components/slider/sliderCore.d.ts +4 -4
  181. package/dist/components/slider/types.d.ts +22 -4
  182. package/dist/components/slider/useRangeSlider.d.ts +2 -2
  183. package/dist/components/slider/useSlider.d.ts +2 -2
  184. package/dist/components/switch/index.d.ts +2 -1
  185. package/dist/components/switch/index.js +2 -2
  186. package/dist/components/switch/switch.d.ts +4 -1
  187. package/dist/components/switch/types.d.ts +11 -2
  188. package/dist/components/switch/useSwitch.d.ts +3 -1
  189. package/dist/components/tabs/index.d.ts +2 -1
  190. package/dist/components/tabs/index.js +2 -2
  191. package/dist/components/tabs/types.d.ts +13 -4
  192. package/dist/components/teleport-provider/index.d.ts +3 -0
  193. package/dist/components/teleport-provider/index.js +3 -0
  194. package/dist/components/teleport-provider/teleport-provider.d.ts +21 -0
  195. package/dist/components/teleport-provider/types.d.ts +4 -0
  196. package/dist/components/teleport-provider/useTeleportTarget.d.ts +6 -0
  197. package/dist/components/textarea/index.d.ts +2 -1
  198. package/dist/components/textarea/index.js +2 -2
  199. package/dist/components/textarea/textarea.d.ts +4 -1
  200. package/dist/components/textarea/types.d.ts +10 -2
  201. package/dist/components/textarea/useTextarea.d.ts +2 -1
  202. package/dist/components/toast/index.d.ts +3 -2
  203. package/dist/components/toast/index.js +2 -2
  204. package/dist/components/toast/toast-store.d.ts +2 -0
  205. package/dist/components/toast/toast.d.ts +2 -2
  206. package/dist/components/toast/types.d.ts +20 -10
  207. package/dist/components/toast/useToast.d.ts +2 -2
  208. package/dist/components/tooltip/index.d.ts +2 -1
  209. package/dist/components/tooltip/index.js +2 -1
  210. package/dist/components/tooltip/tooltip.d.ts +2 -2
  211. package/dist/components/tooltip/types.d.ts +13 -12
  212. package/dist/components/tooltip/useTooltip.d.ts +12 -2
  213. package/dist/composables/useOverlayLayer.d.ts +32 -0
  214. package/dist/dialog.js +510 -0
  215. package/dist/dropdown-menu.css +191 -108
  216. package/dist/dropdown-menu.js +1954 -198
  217. package/dist/field.css +41 -39
  218. package/dist/field.js +40 -16
  219. package/dist/floating.js +403 -0
  220. package/dist/focus-trap.js +80 -0
  221. package/dist/icon-button.css +193 -189
  222. package/dist/icon-button.js +23 -18
  223. package/dist/icon-button2.js +8 -0
  224. package/dist/index.d.ts +5 -0
  225. package/dist/index.js +39 -32
  226. package/dist/input.css +122 -120
  227. package/dist/input.js +63 -40
  228. package/dist/input2.js +9 -0
  229. package/dist/legacy-unlayered.css +5382 -0
  230. package/dist/modal.css +129 -127
  231. package/dist/modal.js +182 -281
  232. package/dist/number-input.css +87 -85
  233. package/dist/number-input.js +98 -26
  234. package/dist/overlay.css +26 -24
  235. package/dist/overlay.js +17 -9
  236. package/dist/overlay2.js +4 -0
  237. package/dist/popover.css +140 -107
  238. package/dist/popover.js +276 -196
  239. package/dist/popover2.js +6 -1
  240. package/dist/progress.css +101 -99
  241. package/dist/progress.js +50 -28
  242. package/dist/radio.css +114 -105
  243. package/dist/radio.js +237 -61
  244. package/dist/select.css +255 -242
  245. package/dist/select.js +257 -94
  246. package/dist/slider.css +1090 -1031
  247. package/dist/slider.js +443 -175
  248. package/dist/styles-api.d.ts +22 -0
  249. package/dist/styles-api.js +49 -0
  250. package/dist/switch.css +120 -108
  251. package/dist/switch.js +112 -38
  252. package/dist/tabs.css +286 -278
  253. package/dist/tabs.js +60 -21
  254. package/dist/teleport-provider.js +15 -0
  255. package/dist/textarea.css +132 -130
  256. package/dist/textarea.js +83 -31
  257. package/dist/toast.css +229 -225
  258. package/dist/toast.js +189 -118
  259. package/dist/tooltip.css +61 -106
  260. package/dist/tooltip.js +184 -228
  261. package/dist/tooltip2.js +8 -0
  262. package/dist/useControlState.js +4 -0
  263. package/dist/useFloatingPosition.js +1317 -0
  264. package/dist/useFocusTrap.js +130 -0
  265. package/dist/useFormControl.js +107 -0
  266. package/dist/useOverlayLayer.js +262 -0
  267. package/dist/useTeleportTarget.js +40 -0
  268. package/docs/public-floating-api.md +148 -0
  269. package/docs/public-styles-api.md +134 -0
  270. package/docs/public-tokens.md +545 -0
  271. package/package.json +37 -9
  272. package/src/styles/_tokens.scss +33 -28
  273. package/src/styles/_utilities.scss +11 -9
  274. package/src/styles/styles-manifest.json +4125 -0
  275. package/dist/rafScheduler.js +0 -34
  276. package/dist/useClickOutside.js +0 -24
package/dist/field.css CHANGED
@@ -1,40 +1,42 @@
1
- .rp-field[data-v-f9e37351] {
2
- --_rp-field-danger: var(--rp-color-red-filled);
3
- display: grid;
4
- gap: var(--rp-spacing-1);
5
- min-width: 0;
6
- font-family: var(--rp-font-family);
7
- color: var(--rp-color-text);
8
- }
9
- html.dark .rp-field[data-v-f9e37351], [data-rp-color-scheme=dark] .rp-field[data-v-f9e37351] {
10
- --_rp-field-danger: var(--rp-color-red-light-color);
11
- }
12
- .rp-field__label[data-v-f9e37351] {
13
- display: inline-flex;
14
- width: fit-content;
15
- align-items: center;
16
- gap: var(--rp-spacing-1);
17
- color: var(--rp-color-text);
18
- font-size: var(--rp-font-size-sm);
19
- font-weight: var(--rp-font-weight-medium);
20
- line-height: var(--rp-line-height-md);
21
- }
22
- .rp-field__required[data-v-f9e37351] {
23
- color: var(--_rp-field-danger);
24
- line-height: 1;
25
- }
26
- .rp-field__label + .rp-field__control[data-v-f9e37351] {
27
- margin-block-start: var(--rp-spacing-1);
28
- }
29
- .rp-field__control[data-v-f9e37351] {
30
- min-width: 0;
31
- }
32
- .rp-field__description[data-v-f9e37351] {
33
- margin: 0;
34
- color: var(--rp-color-dimmed);
35
- font-size: var(--rp-font-size-sm);
36
- line-height: var(--rp-line-height-md);
37
- }
38
- .rp-field--disabled .rp-field__label[data-v-f9e37351], .rp-field--disabled .rp-field__description[data-v-f9e37351] {
39
- color: var(--rp-color-disabled-color);
1
+ @layer ropav.components {
2
+ .rp-field[data-v-cbd66c2e] {
3
+ --_rp-field-danger: var(--rp-color-red-filled);
4
+ display: grid;
5
+ gap: var(--rp-spacing-1);
6
+ min-width: 0;
7
+ font-family: var(--rp-font-family);
8
+ color: var(--rp-color-text);
9
+ }
10
+ html.dark .rp-field[data-v-cbd66c2e], [data-rp-color-scheme=dark] .rp-field[data-v-cbd66c2e] {
11
+ --_rp-field-danger: var(--rp-color-red-light-color);
12
+ }
13
+ .rp-field__label[data-v-cbd66c2e] {
14
+ display: inline-flex;
15
+ width: fit-content;
16
+ align-items: center;
17
+ gap: var(--rp-spacing-1);
18
+ color: var(--rp-color-text);
19
+ font-size: var(--rp-font-size-sm);
20
+ font-weight: var(--rp-font-weight-medium);
21
+ line-height: var(--rp-line-height-md);
22
+ }
23
+ .rp-field__required[data-v-cbd66c2e] {
24
+ color: var(--_rp-field-danger);
25
+ line-height: 1;
26
+ }
27
+ .rp-field__label + .rp-field__control[data-v-cbd66c2e] {
28
+ margin-block-start: var(--rp-spacing-1);
29
+ }
30
+ .rp-field__control[data-v-cbd66c2e] {
31
+ min-width: 0;
32
+ }
33
+ .rp-field__description[data-v-cbd66c2e] {
34
+ margin: 0;
35
+ color: var(--rp-color-dimmed);
36
+ font-size: var(--rp-font-size-sm);
37
+ line-height: var(--rp-line-height-md);
38
+ }
39
+ .rp-field--disabled .rp-field__label[data-v-cbd66c2e], .rp-field--disabled .rp-field__description[data-v-cbd66c2e] {
40
+ color: var(--rp-color-disabled-color);
41
+ }
40
42
  }
package/dist/field.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import './field.css';
2
2
  import { t as bem } from "./bem.js";
3
+ import { n as useStylesApi, t as presence } from "./styles-api.js";
3
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
- import { child, computed, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, renderEffect, setClass, setInsertionState, setProp, setText, template, toDisplayString, unref, useId, useSlots } from "vue";
5
+ import { child, computed, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, unref, useId, useSlots } from "vue";
5
6
  //#region src/components/field/useField.ts
6
7
  var INTERACTIVE_LABEL_SELECTOR = [
7
8
  "button",
@@ -66,15 +67,16 @@ function useField(props) {
66
67
  //#endregion
67
68
  //#region src/components/field/field.vue?vue&type=script&setup=true&vapor=true&lang.ts
68
69
  var t0 = template(" ");
69
- var t1 = template("<span data-v-f9e37351 class=rp-field__required aria-hidden=true>*", 2);
70
- var t2 = template("<label data-v-f9e37351 class=rp-field__label>");
71
- var t3 = template("<p data-v-f9e37351 class=rp-field__description>");
72
- var t4 = template("<div data-v-f9e37351><div data-v-f9e37351 class=rp-field__control></div>", 1);
70
+ var t1 = template("<span data-v-cbd66c2e>*");
71
+ var t2 = template("<label data-v-cbd66c2e>");
72
+ var t3 = template("<p data-v-cbd66c2e>");
73
+ var t4 = template("<div data-v-cbd66c2e><div data-v-cbd66c2e></div>", 1);
73
74
  delegateEvents("mousedown");
74
75
  //#endregion
75
76
  //#region src/components/field/field.vue
76
77
  var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
77
78
  name: "RpField",
79
+ inheritAttrs: false,
78
80
  __name: "field",
79
81
  props: {
80
82
  id: {},
@@ -91,20 +93,30 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
91
93
  invalid: {
92
94
  type: Boolean,
93
95
  default: void 0
94
- }
96
+ },
97
+ classNames: {},
98
+ styles: {}
95
99
  },
96
100
  setup(__props) {
97
- const { controlId, labelId, descriptionId, isInvalid, hasLabel, hasDescription, hasMessage, controlLabelledby, controlDescribedby, rootClass, controlProps, focusControl } = useField(__props);
101
+ const props = __props;
102
+ const { controlId, labelId, descriptionId, isInvalid, hasLabel, hasDescription, hasMessage, controlLabelledby, controlDescribedby, rootClass, controlProps, focusControl } = useField(props);
103
+ const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
104
+ const rootAttrs = computed(() => getRootAttrs({
105
+ class: rootClass.value,
106
+ "data-disabled": presence(props.disabled),
107
+ "data-invalid": presence(isInvalid.value)
108
+ }));
98
109
  const n20 = t4();
99
110
  const n10 = child(n20, 1);
100
- renderEffect(() => setClass(n20, unref(rootClass)));
111
+ renderEffect(() => setDynamicProps(n20, [rootAttrs.value]));
101
112
  setInsertionState(n20, 0, 0);
102
113
  createIf(() => unref(hasLabel), () => {
103
114
  const n8 = t2();
104
- renderEffect(() => {
105
- setProp(n8, "id", unref(labelId));
106
- setProp(n8, "for", unref(controlId));
107
- });
115
+ renderEffect(() => setDynamicProps(n8, [
116
+ { id: unref(labelId) },
117
+ unref(getPartAttrs)("label", { class: "rp-field__label" }),
118
+ { for: unref(controlId) }
119
+ ]));
108
120
  setInsertionState(n8, null, 0);
109
121
  createSlot("label", null, () => {
110
122
  const n4 = t0();
@@ -113,11 +125,14 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
113
125
  }, 1);
114
126
  setInsertionState(n8, null, 1);
115
127
  createIf(() => __props.required, () => {
116
- return t1();
128
+ const n7 = t1();
129
+ renderEffect(() => setDynamicProps(n7, [unref(getPartAttrs)("required", { class: "rp-field__required" }), { "aria-hidden": "true" }]));
130
+ return n7;
117
131
  });
118
132
  n8.$evtmousedown = createInvoker((e) => unref(focusControl)(e));
119
133
  return n8;
120
134
  });
135
+ renderEffect(() => setDynamicProps(n10, [unref(getPartAttrs)("control", { class: "rp-field__control" })]));
121
136
  setInsertionState(n10, null, 0);
122
137
  createSlot("default", {
123
138
  id: () => unref(controlId),
@@ -131,7 +146,7 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
131
146
  setInsertionState(n20, null, 2);
132
147
  createIf(() => unref(hasDescription), () => {
133
148
  const n16 = t3();
134
- renderEffect(() => setProp(n16, "id", unref(descriptionId)));
149
+ renderEffect(() => setDynamicProps(n16, [{ id: unref(descriptionId) }, unref(getPartAttrs)("description", { class: "rp-field__description" })]));
135
150
  setInsertionState(n16, null, 0);
136
151
  createSlot("description", null, () => {
137
152
  const n15 = t0();
@@ -146,6 +161,15 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
146
161
  });
147
162
  return n20;
148
163
  }
149
- }), [["__scopeId", "data-v-f9e37351"]]);
164
+ }), [["__scopeId", "data-v-cbd66c2e"]]);
165
+ //#endregion
166
+ //#region src/components/field/types.ts
167
+ var fieldParts = [
168
+ "root",
169
+ "label",
170
+ "required",
171
+ "control",
172
+ "description"
173
+ ];
150
174
  //#endregion
151
- export { field_default as t };
175
+ export { field_default as n, fieldParts as t };
@@ -0,0 +1,403 @@
1
+ import { computed, onBeforeUnmount, onMounted, ref, shallowRef, toValue, watch } from "vue";
2
+ //#region src/components/floating/useHoverDisclosure.ts
3
+ var DEFAULT_OPEN_DELAY = 0;
4
+ var DEFAULT_CLOSE_DELAY = 0;
5
+ function isElement(value) {
6
+ return typeof Element !== "undefined" && value instanceof Element;
7
+ }
8
+ function resolveSelector(selector) {
9
+ if (typeof document === "undefined") return null;
10
+ try {
11
+ return document.querySelector(selector);
12
+ } catch {
13
+ return null;
14
+ }
15
+ }
16
+ function resolveInteractionTarget(target) {
17
+ if (!target) return null;
18
+ if (typeof target === "string") return resolveSelector(target);
19
+ if (isElement(target)) return target;
20
+ return isElement(target.contextElement) ? target.contextElement : null;
21
+ }
22
+ function resolveContentTarget(target) {
23
+ if (!target) return null;
24
+ return typeof target === "string" ? resolveSelector(target) : isElement(target) ? target : null;
25
+ }
26
+ function readDelay(value, fallback) {
27
+ if (value == null) return fallback;
28
+ return Number.isFinite(value) ? Math.max(0, value) : fallback;
29
+ }
30
+ function eventElement(event) {
31
+ return isElement(event.currentTarget) ? event.currentTarget : null;
32
+ }
33
+ function focusLeavesCurrentTarget(event) {
34
+ const currentTarget = eventElement(event);
35
+ const nextTarget = event.relatedTarget;
36
+ return !(currentTarget && typeof Node !== "undefined" && nextTarget instanceof Node && currentTarget.contains(nextTarget));
37
+ }
38
+ function useHoverDisclosure(options = {}) {
39
+ const uncontrolledOpen = ref(options.defaultOpen === true && !toValue(options.disabled));
40
+ const resolvedInteractionTarget = shallowRef(null);
41
+ const resolvedContentTarget = shallowRef(null);
42
+ const controlledOpen = computed(() => toValue(options.open));
43
+ const isDisabled = computed(() => Boolean(toValue(options.disabled)));
44
+ const openState = computed(() => controlledOpen.value ?? uncontrolledOpen.value);
45
+ const isOpen = computed(() => !isDisabled.value && openState.value);
46
+ const state = computed(() => isOpen.value ? "open" : "closed");
47
+ let requestedOpen = openState.value;
48
+ let triggerHovered = false;
49
+ let contentHovered = false;
50
+ let triggerFocused = false;
51
+ let contentFocused = false;
52
+ let touchPinned = false;
53
+ let touchPointerActive = false;
54
+ let touchClickPending = false;
55
+ let triggerElement = null;
56
+ let contentElement = null;
57
+ let openTimer;
58
+ let closeTimer;
59
+ let documentListenersActive = false;
60
+ let disposed = false;
61
+ function getOpenDelay() {
62
+ return readDelay(toValue(options.openDelay), DEFAULT_OPEN_DELAY);
63
+ }
64
+ function getCloseDelay() {
65
+ return readDelay(toValue(options.closeDelay), DEFAULT_CLOSE_DELAY);
66
+ }
67
+ function getTouchBehavior() {
68
+ return toValue(options.touchBehavior) ?? "none";
69
+ }
70
+ function clearOpenTimer() {
71
+ if (openTimer === void 0) return;
72
+ clearTimeout(openTimer);
73
+ openTimer = void 0;
74
+ }
75
+ function clearCloseTimer() {
76
+ if (closeTimer === void 0) return;
77
+ clearTimeout(closeTimer);
78
+ closeTimer = void 0;
79
+ }
80
+ function clearTimers() {
81
+ clearOpenTimer();
82
+ clearCloseTimer();
83
+ }
84
+ function hasActiveInteraction() {
85
+ return triggerHovered || contentHovered || triggerFocused || contentFocused || touchPinned;
86
+ }
87
+ function setOpen(nextOpen, reason, event) {
88
+ if (disposed || nextOpen && isDisabled.value || requestedOpen === nextOpen) return;
89
+ requestedOpen = nextOpen;
90
+ if (controlledOpen.value === void 0) uncontrolledOpen.value = nextOpen;
91
+ options.onOpenChange?.(nextOpen, {
92
+ reason,
93
+ event
94
+ });
95
+ }
96
+ function openImmediately(reason, event) {
97
+ clearTimers();
98
+ setOpen(true, reason, event);
99
+ }
100
+ function closeImmediately(reason, event) {
101
+ clearTimers();
102
+ setOpen(false, reason, event);
103
+ }
104
+ function scheduleOpen(reason, event) {
105
+ if (disposed || isDisabled.value) return;
106
+ clearCloseTimer();
107
+ clearOpenTimer();
108
+ if (requestedOpen) return;
109
+ const delay = getOpenDelay();
110
+ if (delay === 0) {
111
+ setOpen(true, reason, event);
112
+ return;
113
+ }
114
+ openTimer = setTimeout(() => {
115
+ openTimer = void 0;
116
+ if (!triggerHovered || isDisabled.value) return;
117
+ setOpen(true, reason, event);
118
+ }, delay);
119
+ }
120
+ function scheduleClose(reason, event) {
121
+ clearOpenTimer();
122
+ clearCloseTimer();
123
+ if (disposed || hasActiveInteraction()) return;
124
+ closeTimer = setTimeout(() => {
125
+ closeTimer = void 0;
126
+ if (hasActiveInteraction()) return;
127
+ setOpen(false, reason, event);
128
+ }, getCloseDelay());
129
+ }
130
+ function rememberTrigger(event) {
131
+ triggerElement = eventElement(event) ?? resolvedInteractionTarget.value ?? triggerElement;
132
+ }
133
+ function rememberContent(event) {
134
+ contentElement = eventElement(event) ?? resolvedContentTarget.value ?? contentElement;
135
+ }
136
+ function onTriggerPointerenter(event) {
137
+ rememberTrigger(event);
138
+ if (event.pointerType === "touch" || isDisabled.value) return;
139
+ triggerHovered = true;
140
+ scheduleOpen("hover", event);
141
+ }
142
+ function onTriggerPointerleave(event) {
143
+ rememberTrigger(event);
144
+ if (event.pointerType === "touch") return;
145
+ triggerHovered = false;
146
+ scheduleClose("hover", event);
147
+ }
148
+ function onContentPointerenter(event) {
149
+ rememberContent(event);
150
+ if (event.pointerType === "touch" || isDisabled.value) return;
151
+ contentHovered = true;
152
+ clearCloseTimer();
153
+ }
154
+ function onContentPointerleave(event) {
155
+ rememberContent(event);
156
+ if (event.pointerType === "touch") return;
157
+ contentHovered = false;
158
+ scheduleClose("hover", event);
159
+ }
160
+ function onTriggerFocusin(event) {
161
+ rememberTrigger(event);
162
+ if (isDisabled.value || toValue(options.openOnFocus) === false) return;
163
+ triggerFocused = true;
164
+ openImmediately("focus", event);
165
+ }
166
+ function onTriggerFocusout(event) {
167
+ rememberTrigger(event);
168
+ if (!focusLeavesCurrentTarget(event)) return;
169
+ triggerFocused = false;
170
+ scheduleClose("focus", event);
171
+ }
172
+ function onContentFocusin(event) {
173
+ rememberContent(event);
174
+ if (isDisabled.value) return;
175
+ contentFocused = true;
176
+ clearCloseTimer();
177
+ }
178
+ function onContentFocusout(event) {
179
+ rememberContent(event);
180
+ if (!focusLeavesCurrentTarget(event)) return;
181
+ contentFocused = false;
182
+ scheduleClose("focus", event);
183
+ }
184
+ function onTriggerPointerdown(event) {
185
+ rememberTrigger(event);
186
+ touchPointerActive = event.pointerType === "touch";
187
+ touchClickPending = false;
188
+ }
189
+ function onTriggerPointerup(event) {
190
+ rememberTrigger(event);
191
+ touchClickPending = event.pointerType === "touch" && touchPointerActive;
192
+ touchPointerActive = false;
193
+ }
194
+ function onTriggerPointercancel(event) {
195
+ rememberTrigger(event);
196
+ touchPointerActive = false;
197
+ touchClickPending = false;
198
+ }
199
+ function onTriggerClick(event) {
200
+ rememberTrigger(event);
201
+ if (!touchClickPending) return;
202
+ touchClickPending = false;
203
+ if (getTouchBehavior() !== "toggle" || isDisabled.value) return;
204
+ event.preventDefault();
205
+ if (touchPinned || requestedOpen) {
206
+ touchPinned = false;
207
+ closeImmediately("touch", event);
208
+ return;
209
+ }
210
+ touchPinned = true;
211
+ openImmediately("touch", event);
212
+ }
213
+ function onContentPointerdown(event) {
214
+ rememberContent(event);
215
+ }
216
+ function onKeydown(event) {
217
+ if (event.key !== "Escape" || toValue(options.closeOnEscape) === false || !isOpen.value) return;
218
+ touchPinned = false;
219
+ closeImmediately("escape", event);
220
+ }
221
+ function open() {
222
+ openImmediately("programmatic");
223
+ }
224
+ function close() {
225
+ touchPinned = false;
226
+ closeImmediately("programmatic");
227
+ }
228
+ function toggle() {
229
+ if (requestedOpen || isOpen.value) close();
230
+ else open();
231
+ }
232
+ function isEventInside(event) {
233
+ const elements = [
234
+ triggerElement,
235
+ contentElement,
236
+ resolvedInteractionTarget.value,
237
+ resolvedContentTarget.value
238
+ ].filter((element) => element !== null);
239
+ const path = typeof event.composedPath === "function" ? event.composedPath() : [];
240
+ if (elements.some((element) => path.includes(element))) return true;
241
+ const target = event.target;
242
+ return typeof Node !== "undefined" && target instanceof Node && elements.some((element) => element.contains(target));
243
+ }
244
+ function onDocumentPointerdown(event) {
245
+ if (!touchPinned || isEventInside(event)) return;
246
+ touchPinned = false;
247
+ closeImmediately("outside", event);
248
+ }
249
+ function setDocumentListeners(active) {
250
+ if (typeof document === "undefined" || active === documentListenersActive) return;
251
+ documentListenersActive = active;
252
+ const method = active ? "addEventListener" : "removeEventListener";
253
+ document[method]("keydown", onKeydown);
254
+ document[method]("pointerdown", onDocumentPointerdown, true);
255
+ }
256
+ function syncInteractionTarget() {
257
+ resolvedInteractionTarget.value = resolveInteractionTarget(toValue(options.interactionTarget));
258
+ }
259
+ function syncContentTarget() {
260
+ resolvedContentTarget.value = resolveContentTarget(toValue(options.contentTarget));
261
+ }
262
+ function bindTriggerTarget(target, cleanup) {
263
+ triggerElement = target;
264
+ target.addEventListener("pointerenter", onTriggerPointerenter);
265
+ target.addEventListener("pointerleave", onTriggerPointerleave);
266
+ target.addEventListener("pointerdown", onTriggerPointerdown);
267
+ target.addEventListener("pointerup", onTriggerPointerup);
268
+ target.addEventListener("pointercancel", onTriggerPointercancel);
269
+ target.addEventListener("click", onTriggerClick);
270
+ target.addEventListener("focusin", onTriggerFocusin);
271
+ target.addEventListener("focusout", onTriggerFocusout);
272
+ target.addEventListener("keydown", onKeydown);
273
+ cleanup(() => {
274
+ target.removeEventListener("pointerenter", onTriggerPointerenter);
275
+ target.removeEventListener("pointerleave", onTriggerPointerleave);
276
+ target.removeEventListener("pointerdown", onTriggerPointerdown);
277
+ target.removeEventListener("pointerup", onTriggerPointerup);
278
+ target.removeEventListener("pointercancel", onTriggerPointercancel);
279
+ target.removeEventListener("click", onTriggerClick);
280
+ target.removeEventListener("focusin", onTriggerFocusin);
281
+ target.removeEventListener("focusout", onTriggerFocusout);
282
+ target.removeEventListener("keydown", onKeydown);
283
+ if (triggerElement === target) triggerElement = null;
284
+ triggerHovered = false;
285
+ triggerFocused = false;
286
+ scheduleClose("hover");
287
+ });
288
+ }
289
+ function bindContentTarget(target, cleanup) {
290
+ contentElement = target;
291
+ target.addEventListener("pointerenter", onContentPointerenter);
292
+ target.addEventListener("pointerleave", onContentPointerleave);
293
+ target.addEventListener("pointerdown", onContentPointerdown);
294
+ target.addEventListener("focusin", onContentFocusin);
295
+ target.addEventListener("focusout", onContentFocusout);
296
+ target.addEventListener("keydown", onKeydown);
297
+ cleanup(() => {
298
+ target.removeEventListener("pointerenter", onContentPointerenter);
299
+ target.removeEventListener("pointerleave", onContentPointerleave);
300
+ target.removeEventListener("pointerdown", onContentPointerdown);
301
+ target.removeEventListener("focusin", onContentFocusin);
302
+ target.removeEventListener("focusout", onContentFocusout);
303
+ target.removeEventListener("keydown", onKeydown);
304
+ if (contentElement === target) contentElement = null;
305
+ contentHovered = false;
306
+ contentFocused = false;
307
+ scheduleClose("hover");
308
+ });
309
+ }
310
+ const triggerProps = computed(() => ({
311
+ "data-state": state.value,
312
+ onPointerenter: onTriggerPointerenter,
313
+ onPointerleave: onTriggerPointerleave,
314
+ onPointerdown: onTriggerPointerdown,
315
+ onPointerup: onTriggerPointerup,
316
+ onPointercancel: onTriggerPointercancel,
317
+ onClick: onTriggerClick,
318
+ onFocusin: onTriggerFocusin,
319
+ onFocusout: onTriggerFocusout,
320
+ onKeydown
321
+ }));
322
+ const contentProps = computed(() => ({
323
+ "data-state": state.value,
324
+ onPointerenter: onContentPointerenter,
325
+ onPointerleave: onContentPointerleave,
326
+ onPointerdown: onContentPointerdown,
327
+ onFocusin: onContentFocusin,
328
+ onFocusout: onContentFocusout,
329
+ onKeydown
330
+ }));
331
+ watch(openState, (value) => {
332
+ requestedOpen = value;
333
+ if (!value) {
334
+ contentHovered = false;
335
+ contentFocused = false;
336
+ contentElement = null;
337
+ touchPinned = false;
338
+ }
339
+ }, { flush: "sync" });
340
+ watch(isDisabled, (disabled) => {
341
+ if (!disabled) return;
342
+ triggerHovered = false;
343
+ contentHovered = false;
344
+ triggerFocused = false;
345
+ contentFocused = false;
346
+ touchPinned = false;
347
+ touchPointerActive = false;
348
+ touchClickPending = false;
349
+ closeImmediately("disabled");
350
+ });
351
+ watch(() => getTouchBehavior(), (behavior) => {
352
+ if (behavior === "toggle" || !touchPinned) return;
353
+ touchPinned = false;
354
+ closeImmediately("touch");
355
+ });
356
+ watch(() => toValue(options.interactionTarget), syncInteractionTarget, {
357
+ flush: "post",
358
+ immediate: true
359
+ });
360
+ watch(() => toValue(options.contentTarget), syncContentTarget, {
361
+ flush: "post",
362
+ immediate: true
363
+ });
364
+ watch(resolvedInteractionTarget, (target, _previous, cleanup) => {
365
+ if (target) bindTriggerTarget(target, cleanup);
366
+ }, {
367
+ flush: "sync",
368
+ immediate: true
369
+ });
370
+ watch(resolvedContentTarget, (target, _previous, cleanup) => {
371
+ if (target) bindContentTarget(target, cleanup);
372
+ }, {
373
+ flush: "sync",
374
+ immediate: true
375
+ });
376
+ watch(isOpen, setDocumentListeners, { flush: "sync" });
377
+ watch(isOpen, () => {
378
+ syncInteractionTarget();
379
+ syncContentTarget();
380
+ }, { flush: "post" });
381
+ onMounted(() => {
382
+ syncInteractionTarget();
383
+ syncContentTarget();
384
+ setDocumentListeners(isOpen.value);
385
+ });
386
+ onBeforeUnmount(() => {
387
+ disposed = true;
388
+ clearTimers();
389
+ setDocumentListeners(false);
390
+ });
391
+ return {
392
+ isOpen,
393
+ isDisabled,
394
+ state,
395
+ triggerProps,
396
+ contentProps,
397
+ open,
398
+ close,
399
+ toggle
400
+ };
401
+ }
402
+ //#endregion
403
+ export { useHoverDisclosure as t };
@@ -0,0 +1,80 @@
1
+ import { n as useStylesApi, t as presence } from "./styles-api.js";
2
+ import { t as useFocusTrap } from "./useFocusTrap.js";
3
+ import { computed, createDynamicComponent, createSlot, defineVaporComponent, extend, ref, setStaticTemplateRef, watch } from "vue";
4
+ //#endregion
5
+ //#region src/components/focus-trap/focus-trap.vue
6
+ var focus_trap_default = /* @__PURE__ */ defineVaporComponent({
7
+ name: "RpFocusTrap",
8
+ inheritAttrs: false,
9
+ __name: "focus-trap",
10
+ props: {
11
+ active: {
12
+ type: Boolean,
13
+ default: true
14
+ },
15
+ paused: {
16
+ type: Boolean,
17
+ default: false
18
+ },
19
+ as: { default: "div" },
20
+ options: { default: () => ({}) },
21
+ classNames: {},
22
+ styles: {}
23
+ },
24
+ emits: ["update:active", "update:paused"],
25
+ setup(__props, { emit: __emit }) {
26
+ const props = __props;
27
+ const emit = __emit;
28
+ const containerRef = ref(null);
29
+ const { isActive, isPaused, activate, deactivate, pause, unpause } = useFocusTrap(containerRef, props.options);
30
+ const slotProps = computed(() => ({
31
+ active: isActive.value,
32
+ paused: isPaused.value,
33
+ activate,
34
+ deactivate,
35
+ pause: pauseTrap,
36
+ unpause: unpauseTrap
37
+ }));
38
+ const { getRootAttrs } = useStylesApi(props, "root");
39
+ const rootAttrs = computed(() => getRootAttrs({
40
+ class: "rp-focus-trap",
41
+ "data-active": presence(isActive.value),
42
+ "data-paused": presence(isPaused.value)
43
+ }));
44
+ function pauseTrap(options) {
45
+ pause(options);
46
+ if (!props.paused) emit("update:paused", true);
47
+ }
48
+ function unpauseTrap(options) {
49
+ unpause(options);
50
+ if (props.paused) emit("update:paused", false);
51
+ }
52
+ watch(() => props.active, (active) => {
53
+ if (active) activate();
54
+ else deactivate();
55
+ }, {
56
+ flush: "post",
57
+ immediate: true
58
+ });
59
+ watch(() => props.paused, (paused) => {
60
+ if (paused) pause();
61
+ else unpause();
62
+ }, {
63
+ flush: "post",
64
+ immediate: true
65
+ });
66
+ watch(isActive, (active) => {
67
+ if (active !== props.active) emit("update:active", active);
68
+ });
69
+ const n1 = createDynamicComponent(() => __props.as, { $: [() => rootAttrs.value] }, extend(() => {
70
+ return createSlot("default", { $: [() => slotProps.value] });
71
+ }, { _: 8 }), 1);
72
+ setStaticTemplateRef(n1, containerRef, null, "containerRef");
73
+ return n1;
74
+ }
75
+ });
76
+ //#endregion
77
+ //#region src/components/focus-trap/types.ts
78
+ var focusTrapParts = ["root"];
79
+ //#endregion
80
+ export { focus_trap_default as n, focusTrapParts as t };